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

を実行しておく。