今度は、OSのコアであるカーネルのコンパイル。そのためにはハードウェア環境を正確に知っておく必要がある。chroot前にも使ったlspciをchroot環境でも使えるように、あらためてインストールする。

# emerge pciutils
# lspci

00:00.0 Host bridge: VIA Technologies, Inc. CN896/VN896/P4M900 Host Bridge
(中略)
80:01.0 Audio device: VIA Technologies, Inc. VT1708/A [Azalia HDAC] (VIA High Definition Audio Controller) (rev 10)

lspciの結果をひかえておくなり、別のsshターミナルで表示しておくなりしておくと、menuconfigの際に便利だ。

次にカーネルソースをインストールする。

# emerge gentoo-sources

/usr/src/linuxというシンボリックリンクが設定されるので、この時点では手動でシンボリックリンクを張る必要はない(今後新しいカーネルソースをインストールした際は、シンボリックリンクを張り直す必要がある)。

menuconfigを起動するため、/usr/src/linuxに移動してmakeを実行。

# cd /usr/src/linux
# make menuconfig

チップセットやHDD、NICのサポートを有効化すること、不要な機能を極力削ることが基本。Gentoo Handbookには、以下の項目を必須として挙げている。

プロセッサファミリの設定。

Processor type and features --->
    Processor family --->

ファイルシステム関係。

File systems --->
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

  <*> Ext3 journalling file system support

マルチプロセッササポート。マルチコア化でSMPも身近になったものだ。

Processor type and features  --->
  [*] Symmetric multi-processing support

Gentoo Handbookには、ほかにもUSBやPCMCIAサポートの説明があるが、このサーバではUSBもPCMCIAも使わないので無視した。

カーネルコンフィグが終わったら、コンパイル。

# make && make modules_install

生成されたカーネルイメージを/bootにコピーする。

# cp arch/i386/boot/bzImage /boot/kernel-2.6.31-gentoo-r6

以上でカーネルのコンパイルは完了。