カーネルの構築

日時:2004/09/26 18:20

Gentoo Linuxでは、適用しているパッチによって、複数のカーネルソースを用意している。Gentoo Kernel Guideに、各カーネルソースにどのようなパッチが適用されているかが解説されているので、それを見て目的に合ったものを選べばよい。特に希望がない場合は、gentoo-sourcesがよい。 使用するカーネルソースが決まったら、それをインストールする。
# emerge gentoo-sources
emergeが終わったら、カーネルソースへのシンボリックリンクを確認して、
# ls -l /usr/src/linux
必要に応じてリンクを張りなおす。
# rm /usr/src/linux
# cd /usr/src
# ln -s カーネルソース linux
カーネルの構築は、手動でやる方法とgenkernelというツールを使う方法がある。いまは直っているかもしれないが、一時期genkernelを使うと不具合が発生したので、個人的には手動でカーネル構築を行うことにしている。
# cd /usr/src/linux
# make menuconfig
後は好みに応じて設定すればよいのだが、Gentoo Linuxでは必須のオプションがいくつかある。
Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers
ファイルシステムは、カーネル2.4と2.6で多少異なる。2.4では、
File systems --->
  [*] Virtual memory file system support (former shm fs)
  [*] /proc file system support
  [*] /dev file system support (EXPERIMENTAL)
  [*] Automatically mount at boot
  [ ] /dev/pts file system for Unix98
PTYs
とし、2.6では
File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] /dev file system support (OBSOLETE)
    [*] Automatically mount at boot
    [*] Virtual memory file system support (former shm fs)
とする。また、最低でも
Reiserfs support
Ext3 journalling file system support
JFS filesystem support
Second extended fs support
XFS filesystem support
の中の1つをオン(モジュールではなく)にしなければならない(複数をオンにしてもよい)。次に、2.4の場合は
ATA/IDE/MFM/RLL support --->
  IDE, ATA and ATAPI Block devices --->
    <*>   Include IDE/ATA-2 DISK support
    [ ]     Use multi-mode by default
    [*]     Auto-Geometry Resizing support
を設定する。

これ以外については環境に応じて設定する。ここでのポイントは、余裕のある設定にして「確実に起動すること」を目的にすること。カーネルコンフィグレーションを追求するのは、それからでも遅くはない。

menuconfigを終了したら、カーネルをコンパイルする。2.4の場合は
# make dep && make bzImage modules modules_install
2.6の場合は
# make && make modules_install
コンパイルが終わったら、構築したカーネルとSystem.map、コンフィグレーションファイルを/bootにコピーする。以下の例は、kernel-2.4.26-gentoo-r9の場合。ここは適宜書き換える。
# cp arch/i386/boot/bzImage /boot/kernel-2.4.26-gentoo-r9
# cp System.map /boot/System.map-2.4.26-gentoo-r9
# cp .config /boot/config-2.4.26-gentoo-r9
必要であれば、そのほかのモジュールもコンパイルして/etc/modules.autoload.d/kernel-2.4を書き換え、
# modules-update
を実行しておく。