コンパイルアップグレードカーネル2.6.15-2.6.17
6622 ワード
まずカーネルコンパイル環境をインストールします。
- apt-get install debhelper modutils kernel-package libncurses5-dev
『Debian参考マニュアル第7章-DebianのLinuxカーネル』の方法を参照してください。http://www/kernel.org/pub/linux/kernel 2.
- debian:~# tar jxf linux-2.6.17.tar.bz2
- debian:~# cd linux-2.6.17
- debian:~/linux-2.6.17# cp /boot/config-2.6.15 .config
- debian:~/linux-2.6.17# make
- debian:~/linux-2.6.17# make modules
- debian:~/linux-2.6.17# make modules_install
- debian:~/linux-2.6.17# make install
- debian:~/linux-2.6.17# mkinitrd -o /boot/initrd.img-2.6.17 2.6.17
- debian:~/linux-2.6.17# update-grub
方法二:
- debian:~# tar jxf linux-2.6.17.tar.bz2
- debian:~# cd linux-2.6.17
- debian:~/linux-2.6.17# cp /boot/config-2.6.15 .config
- debian:~/linux-2.6.17#make-kpkg --revision 20060622 --initrd binary
上位ディレクトリを5つ生成します。debファイル
- linux-doc-2.6.17_20060622_all.deb
- linux-image-2.6.17_20060622_i386.deb
- linux-source-2.6.17_20060622_all.deb
- linux-headers-2.6.17_20060622_i386.deb
- linux-manual-2.6.17_20060622_all.deb
- debian:~/linux-2.6.17#dpkg -i linux-image-2.6.17_20060622_i386.deb
- debian:~/linux-2.6.17#mkinitrd -o /boot/initrd.img-2.6.17 2.6.17
- debian:~# update-grub
ps:「Debian参照マニュアル7章-DebianのLinuxカーネル」7.1.1 Debian標準方式について、ケネル-package、gcc、binutilsとmodutilsに関するエラーレポートに関心を持ってください。必要に応じて新しいバージョンを使用します。Debianシステムでは、カスタムカーネルをソースでコンパイルしますので、特に注意してください。make-kpkgを使う--apend_to_versionオプションで複数のカーネルミラーを作成するのが安全です。
- # apt-get install debhelper modutils kernel-package libncurses5-dev
- # apt-get install kernel-source-2.4.18 #
- # apt-get install fakeroot
- # vi /etc/kernel-pkg.conf # email
- $ cd /usr/src #
- $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2
- $ cd kernel-source-2.4.18 #
- $ cp /boot/config-2.4.18-386 .config #
- $ make menuconfig #
- $ make-kpkg clean # (per: man make-kpkg)
- $ fakeroot make-kpkg --append_to_version -486 --initrd \
- --revision=rev.01 kernel_image \
- modules_image # modules_image pcmcia-cs* 。
- $ cd ..
- # dpkg -i kernel-image*.deb pcmcia-cs*.deb #
make-kpkgケネル_イメージは実際にmake oldconfigとmake depを実行しました。initrdを使わないなら、initrdオプションは使わないでください。pcmcia-csモジュールやカーネルpcmciaのソースコードにないモジュールをロードするなら、make menuconfigの後に「General setup-」を選択して「PCMCIA/CadBus support」に入り、「PCMCIA/CardBus support」のオプションを設定するべきです。SMPマシンについては、ケネル-pkg.com(5)の説明を参照してCONCURRENCY_を設定します。LEVELinitrd=init ramdiskは、起動時にメモリに存在するファイルシステムです。initrdの最初の目的は、ケネルの起動を二つの段階に分けることである。ケネルに最低基本的な起動コードを保持し、さまざまなハードウェアデバイスに対するサポートをモジュールとしてinitrdに入れることで、起動中にinitrdでmountのルートファイルシステムから必要なモジュールをロードすることができる。このような利点の一つは、ケネルが変わらないまま、initrdの内容を修正することで、異なるハードウェアを柔軟にサポートできるということです。起動完了の最終段階では、ルートファイルシステムは他のデバイスに再mountすることができます。Linux起動は必ずinitrdを使いますか?いいえ、必要な機能を全部カーネルにコンパイルすれば、カーネルファイルが一つだけ必要です。initrdはカーネルを起動する体積を減らして柔軟性を増すことができます。あなたのカーネルがモジュール方式であるファイルシステム(例えば、ext 3、UFS)をサポートしている場合、起動段階の駆動モジュール(例えば、jbd)がこれらのファイルシステムに置いてあると、カーネルはファイルシステムを読めないので、initrdの仮想ファイルシステムによってのみこれらのモジュールをロードすることができます。ここでは、カーネルはファイルシステムを読み込めないので、カーネルのファイルはどうやってメモリに入れますか?答えは簡単です。Gubはfile-system sensitiveで、よくあるファイルシステムを識別できます。initrdファイルはどうやって生成されますか?mkintitrdコマンドを使用して、このコマンドは実際にはBashスクリプトであり、最初に8 Mの空きファイルを作成し、ここにファイルシステムを構築し、対応するファイルをコピーします。RedHat Fedora Core 2のデフォルトの内容は何ですか?
- # file initrd-2.6.5-1.358.img
- initrd-2.6.5-1.358.img: gzip compressed data, from Unix, max compression
- # mv initrd-2.6.5-1.358.img initrd-2.6.5-1.358.gz
- # gzip -d initrd-2.6.5-1.358.gz
- # ll
- -rw-r--r-- 1 root root 8192000 Jan 14 11:32 initrd-2.6.5-1.358
- # mkdir /mnt/loop
- # mount -o loop initrd-2.6.5-1.356 /mnt/loop
- ………… , …………
- # umount loop
- # cd /boot
- # gzip -9 initrd-2.6.5-1.356
- # mv initrd-2.6.5-1.356.gz initrd-2.6.5-1.356.img