Kernel 2.6のカーネルコンフィグとコンパイル

日時:2010/02/20 16:14

今度は、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
以上でカーネルのコンパイルは完了。