コンパイルアップグレードカーネル2.6.15-2.6.17


まずカーネルコンパイル環境をインストールします。

  
  
  
  
  1. apt-get install debhelper modutils kernel-package libncurses5-dev 
『Debian参考マニュアル第7章-DebianのLinuxカーネル』の方法を参照してください。http://www/kernel.org/pub/linux/kernel 2.

  
  
  
  
  1. debian:~# tar jxf linux-2.6.17.tar.bz2 
  2. debian:~# cd linux-2.6.17 
  3. debian:~/linux-2.6.17# cp /boot/config-2.6.15 .config 
  4. debian:~/linux-2.6.17# make 
  5. debian:~/linux-2.6.17# make modules 
  6. debian:~/linux-2.6.17# make modules_install 
  7. debian:~/linux-2.6.17# make install 
  8. debian:~/linux-2.6.17# mkinitrd -o /boot/initrd.img-2.6.17 2.6.17 
  9. debian:~/linux-2.6.17# update-grub 
方法二:

  
  
  
  
  1. debian:~# tar jxf linux-2.6.17.tar.bz2 
  2. debian:~# cd linux-2.6.17 
  3. debian:~/linux-2.6.17# cp /boot/config-2.6.15 .config 
  4. debian:~/linux-2.6.17#make-kpkg --revision 20060622 --initrd binary 
上位ディレクトリを5つ生成します。debファイル

  
  
  
  
  1. linux-doc-2.6.17_20060622_all.deb 
  2. linux-image-2.6.17_20060622_i386.deb 
  3. linux-source-2.6.17_20060622_all.deb 
  4. linux-headers-2.6.17_20060622_i386.deb 
  5. linux-manual-2.6.17_20060622_all.deb 
 

  
  
  
  
  1. debian:~/linux-2.6.17#dpkg -i linux-image-2.6.17_20060622_i386.deb 
  2. debian:~/linux-2.6.17#mkinitrd -o /boot/initrd.img-2.6.17 2.6.17 
  3. debian:~# update-grub 
ps:「Debian参照マニュアル7章-DebianのLinuxカーネル」7.1.1 Debian標準方式について、ケネル-package、gcc、binutilsとmodutilsに関するエラーレポートに関心を持ってください。必要に応じて新しいバージョンを使用します。Debianシステムでは、カスタムカーネルをソースでコンパイルしますので、特に注意してください。make-kpkgを使う--apend_to_versionオプションで複数のカーネルミラーを作成するのが安全です。

  
  
  
  
  1. # apt-get install debhelper modutils kernel-package libncurses5-dev 
  2. # apt-get install kernel-source-2.4.18 #   
  3. # apt-get install fakeroot 
  4. # vi /etc/kernel-pkg.conf #   email 
  5. $ cd /usr/src #   
  6. $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2 
  7. $ cd kernel-source-2.4.18 #   
  8. $ cp /boot/config-2.4.18-386 .config #   
  9. $ make menuconfig #   
  10. $ make-kpkg clean #  (per: man make-kpkg) 
  11. $ fakeroot make-kpkg --append_to_version -486 --initrd \ 
  12. --revision=rev.01 kernel_image \ 
  13. modules_image # modules_image   pcmcia-cs*  。 
  14. $ cd .. 
  15. # 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のデフォルトの内容は何ですか?

  
  
  
  
  1. # file initrd-2.6.5-1.358.img 
  2. initrd-2.6.5-1.358.img: gzip compressed data, from Unix, max compression 
  3. # mv initrd-2.6.5-1.358.img initrd-2.6.5-1.358.gz 
  4. # gzip -d initrd-2.6.5-1.358.gz 
  5. # ll 
  6. -rw-r--r-- 1 root root 8192000 Jan 14 11:32 initrd-2.6.5-1.358 
  7. # mkdir /mnt/loop 
  8. # mount -o loop initrd-2.6.5-1.356 /mnt/loop 
  9. …………  , ………… 
  10. # umount loop 
  11. # cd /boot 
  12. # gzip -9 initrd-2.6.5-1.356 
  13. # mv initrd-2.6.5-1.356.gz initrd-2.6.5-1.356.img