UNIXな生活
更新:2004/1/13  
Linuxな生活  FreeBSDな生活
 Solarisな生活
 JAVAな生活
 Practical use
 掲示版
Linuxでのカーネル再構築方法


Linuxでのカーネル再構築手順

Linuxから、WindowsのNTFSへアクセスしたい場合などは、往々にしてKernelの再構築が必要になります。
*WindowsのNTFSは読み込み専用で使用してください。書き込みはdangerous!とKernelコンフィグレーションにも書い てあります。

今回はRedHatLinuxの例です。Turboの注意点は記載しておきました。
基本的に、Kernel-2.6系でも基本的には同一手順です。

1.まず今使っているカーネルソースのrpmを入れておきます。(あとで楽出来ます。)

2.カーネルのソースとパッチを入手します。
  カーネルソースとカーネルパッチは、www.kernel.orgftp://ftp/kernel/org/pub/linux/kernel/入 手してください。
  tar.gzまたはtar.bz2形式であります。
  パッチはtest版(pre*)でもいいでしょう。
     例)
     linux-2.4.20.tar.gz or linux-2.4.20.tar.bz2
     patch-2.4.21-pre7.gz or patch-2.4.21-pre7.bz2

3.カーネルソースの展開とパッチ適用
  まず、作業環境は"root"になり、LANG設定を英語環境(c)で行ないます。
  %su -
  rootpasswd:
  #LANG=c
  カーネルのソースは/usr/srcに展開します。
  #tar zxvf linux-2.4.20.tar.gz -C /usr/src/
  展開して出来た"/usr/src/linux-2.4.20/"にパッチファイルをコ ピーします。
  #cp
patch-2.4.21-pre7.gz /usr/src/linux-2.4.20/
  パッチを適用します。
  #zcat patch-2.4.21-pre7.gz | patch -p1
  これでパッチが適用されます。
  *bz2の場合は、
  #bzip2 -d patch-2.4.21-pre7.bz2
  #cat
patch-2.4.21-pre7|patch -p1
   
4.カーネルのコンフィグレーション(既存環境の利用)
  ここでカーネルの設定ですが、最初から設定するのはよくわからん!
  そういう人は、現在のカーネル設定を引き継ぐことが出来ます。
  1.で入れたカーネルのソースrpmを利用します。
  RedHatLinuxで、"kernel-2.4.18-i686"を使用している場合、既存カーネルのコンフィグレーションファイルは、
  "/usr/src/linux-2.4.18-14/configs/kernel-2.4.18-i686.config"として存在するはずです。
  これを先程展開した"/usr/src/kerne;-2.4.20/"にコピーします。
  #cp
/usr/src/linux-2.4.18-14/configs/kernel-2.4.18-i686.config/usr/src/kerne;-2.4.20/.config
   
  ただし、このコンフィグレーションファイルは、あくまでkernel-2.4.18のものです。先程入手した"kernel-2.4.20"
とは設定する項目数も違います。
  そこで、古いコンフィグレーションファイルを新しいkernelにマッチングさせます。
  #make oldconfig
  このコマンドを発行すると新しく追加された設定項目の設定をどうするか聞かれます。
  "y"はカーネルに静的に取り込みます。
  "m"はカーネルモジュールとして設定します。(必要な時に読み込むようにします。)
  "n"はこの設定を無効にします。
  "?"でHelpが見られます。

5.カーネルのシンボリックリンクを作成する。
  "/usr/src/"以下にlinuxやlinux-*.*などのシンボリックリンクが作成されています。
  これは、アプリケーションのコンパイルや、動作に/usr/src/linuxなどがあると仮定してあるものを、正常に動作させるために必要です。
  たとえば、"/usr/src/linux"があった場合は、一旦このシンボリックリンクを削除してから、先程展開したkernelのもで作りなおしま す。
  #rm /usr/src/linux
  #ln -s /usr/src/linux-2.4.20 /usr/src/linux

  これでした準備は完了、いよいよカーネルのコンフィグレーションの開始です。

6.カーネルのコンフィグレーション
  GUI環境が使用できるか方は、*kernel2.6で、Gnomeな人は、make gconfig KDEな人は make kconfig
  #make xconfig
  でカーネルコンフィグレーション用設定ツールが起動します。

  GUI環境がないか方は、
  #make menuconfig
  か、
  #make config

  追加したい項目や削除したい項目を設定したら保存してください。

7.コンパイル
  やっとカーネルのコンパイルです。*kernel2.6からmake depは無くなりました。
  #make dep
  #make clean
  #make bzImage
  モジュールをコンパイルします。
  #make modules
  #make modules_install
  #make install

  *TurboLinuxでは、make install時にErrorが出ます。
   これは、make installでGRUBの設定を書き換えようとするんですが、うまく行かないようです。
  理由は、ブートローダーの設定のTurboLinuxで触れています。カーネルのインストール自体は問題ありません。

8.ブートローダーの設定
  RedHatLinux
  GRUBの設定ファイルは、"/boot/grub/grub.conf"です。
  今回入れたkernel-2.4.20ではこんな感じになります。
  title RedHatLinux(2.4.20)
        root (hd0,0)
        kernel /vmlinuz-2.4.20 ro root=/dev/hda1
        initrd /initrd-2.4.20.img

  TurboLinux
   TurboLinux 10 Desktopでは、GRUBから起動するカーネルは、/boot/vmlinuzというシンボリックファイルになります。
   ですが、この方法だと、ひとつのカーネルでしか起動できないので、書き換えます。
   これは、私のgrub.confです。参考まで。
   */bootパーティションを作成してますので、kernel /boot/vmlinuz-2.6.0-test9ではなく、 kernel /vmlinuz-2.6.0-test9になります。
   title Turbolinux(test9)
         root (hd0,0)
         kernel /vmlinuz-2.6.0-test9 ro root=/dev/hda1 acpi=on
         initrd /initrd-2.6.0-test9.img
 
   title Turbolinux
         root (hd0,0)
         kernel /vmlinuz-2.6.0-test5_2 ro root=/dev/hda1 acpi=on
         initrd /initrd-2.6.0-test5_2
 
    title Solaris
         chainloader (hd0,1)0+1
 
    title Windows_OS
         chainloader (hd0,0)0+1


  *注意点
    1,このまま書いてもダメよ!自分の環境に併せて書いてください。もとのカーネルの起動設定を参考に!
    2.もとのカーネルから起動できるように、以前のものは残しておく。
    3.liloを使用している場合は、編集後、必ず"/sbin/lilo"をrootで実行すること。

これで、カーネルのコンパイル、インストールは終了です。
再起動して新しいカーネルを起動してください。

私の思いは、カーネルぐらい自分でコンパイルしたものを使おうよ、です。
ただし、RedHatNetworkにつなぐと、RedHatの配布カーネルじゃないから責任持てないよっていわれます。
でもどーせFTP版だし、Linuxディストリビュータにどうこうしてくれっていっても始まらないし、、、。
いいんです、これで!

カーネルの再構築に関しては、以下の書籍が参考になるでしょう。
日経Linux 2003年2月号  日経Linux
Linuxカーネル設定ガイド 株式会社翔泳社 ISBN4-7981-0088-9

では、素敵なLinuxライフを!



Producted by Tomoya Sakurai