genkernel(Gentoo Linuxのカーネルビルド支援ツール)に関する覚え書き
Gentoo Linuxではカーネルは自分でビルドすることになるが、これを支援するgenkernelというツールがある。初期RAMディスクイメージ(initrd/initramfs)*1の作成も行える。
詳しい情報はGentoo Linux genkernelガイドに載っているため、ここでは、手動ビルドから移行した際の幾つかのメモをする。
関連記事:
設定ファイルとコマンド行オプションによる制御
genkernelの挙動を制御する設定ファイルは/etc/genkernel.confで、設定項目によっては実行時にコマンド行オプションで指定することもできる。
実行例とccacheを使用する設定
下はfbsplashを使用し、fbsplash*2に「livecd-2007.0」のテーマを使用する場合の実行例。
$ sudo bash -c 'CCACHE_DIR="[ccacheのキャッシュファイル用ディレクトリ]" genkernel --splash=livecd-2007.0 all'
ccacheを使用する場合、キャッシュディレクトリ指定の他に、コンパイラを指定する変数を下のように設定する。コマンド行オプションでも指定できるが、毎回指定する手間を省くために設定ファイルに記述することにする。
ファイル名: /etc/genkernel.conf
KERNEL_CC="ccache gcc" UTILS_CC="ccache gcc"
関連記事:
カーネルソースと設定など
項目 | 設定ファイルの変数 | コマンドラインオプション |
---|---|---|
カーネルソースツリーの最上位ディレクトリ | DEFAULT_KERNEL_SOURCE | --kerneldir |
カーネルのビルド設定ファイル | DEFAULT_KERNEL_CONFIG | --kernel-config |
make mrproperを実行する/しない | MRPROPER(=yes/no) | --(no-)mrproper |
make oldconfigを実行する/しない | OLDCONFIG(=yes/no) | --oldconfig(実行する場合) |
make menuconfigを実行する/しない | MENUCONFIG(=yes/no) | --(no-)menuconfig |
ビルド時の出力
(2008/4/26)メッセージの出力は/var/log/genkernel.logに記録されるため
$ tail -f /var/log/genkernel.log
で見る他、--loglevel=の値を上げても(最大は5)表示される。
ビルド後の出力ファイル
以下の場所・名前にファイルが作成される。
- カーネル: /boot/kernel-genkernel-[アーキテクチャ]-[バージョン]
- 初期RAMディスクイメージ: /boot/initramfs-genkernel-[アーキテクチャ]-[バージョン]
- モジュール: /lib/modules/[バージョン]/以下
に自動的に入る。
initrdとLABEL/UUID指定
genkernelは初期RAMディスクイメージ(initrd/initramfs)を作成する。これを使用することで、デバイス名が不定となる(/dev/sd*などの)デバイスからのラベルやUUIDによる指定で起動することができる。*3
下は、genkernelが出力するinitrdを使用したときのブートローダGRUBの設定例。initrd行のファイルは/boot/initramfs-genkernel-[アーキテクチャ]-[バージョン]に対するシンボリックリンクにした。
ファイル名: /boot/grub/menu.lst
title Gentoo Linux root (hd0,4) kernel /vmlinuz quiet root=UUID=[「/」パーティションのUUID] video=uvesafb:1280x1024-32,mtrr:3,ywrap maxvf:60 splash=silent,theme:livecd-2007.0 console=tty1 initrd /initrd.cpio.gz boot
「root=/dev/ram0」や「init=/linuxrc」、「real_root」の指定はしていない。
UUIDを用いたパーティション指定での休止状態からの復帰は、バージョン3.4.9の時点では未対応。無理矢理できるようにすることも可能だが、ここでは扱わない。
関連URL: