繰り返すカーネルリコンフィグ時にテストカーネルでブートする
今までは、考えるのが面倒でいっぱいモジュールの入ったdebパッケージを作っていた。
しかし、カーネルのコンパイル時間がもっとももったいないことに気がついた。
微調整をして、実行するマシンに最適な小さいカーネルでもいいじゃないか。
まずは動かすことが先決。モジュールのいっぱい入ったdebは最後に作ればいい。
ということでカーネルソースを取得する。
ftp://ftp.kernel.org/pub/linux/kernel
ここから最新カーネルを取得する。今回は2.6.23.1を入手し、/usr/srcに展開し、/usr/src/linuxへシンボリックリンクをはる。
#cd /usr/src #wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2 #ln -s linux-2.6.23.1 linux
リコンフィグに必要なパッケージを取得する
aptitude install libncurses5-dev kernel-package bzip2 modutils module-init-tools initramfs-tools
最小限のパッケージを作るために、menuconfigが参照してしまう/boot/config-2.6.* をリネームし、make menuconfigを実行し、最小限のパラメータを設定する。モジュールは必ずOFFにする。ほとんどのデバイスドライバをOFFすればコンパイル時間は10分程度になる。
#mv /boot/config-2.6.18-5-686 /boot/config-2.6.18-5-686.bak #cd /usr/src/linux #make menuconfig #time make bzImage
できあがったら、grubにいれて早速実験。
現在の/boot/grub/menu.lstから 最初の定義を END DEBIAN AUTOMAGIC KERNELS LIST以下にコピーし、kernel部分を/usr/src/linux/arch/i386/boot/bzImage へ置換する。
## ## End Default Options ## title Debian GNU/Linux, kernel 2.6.18-5-686 root (hd0,6) kernel /boot/vmlinuz-2.6.18-5-686 root=/dev/sda7 ro initrd /boot/initrd.img-2.6.18-5-686 savedefault title Debian GNU/Linux, kernel 2.6.18-5-686 (single-user mode) root (hd0,6) kernel /boot/vmlinuz-2.6.18-5-686 root=/dev/sda7 ro single initrd /boot/initrd.img-2.6.18-5-686 savedefault ### END DEBIAN AUTOMAGIC KERNELS LIST
これを以下のように定義する。
## ## End Default Options ## title Debian GNU/Linux, kernel 2.6.18-5-686 root (hd0,6) kernel /boot/vmlinuz-2.6.18-5-686 root=/dev/sda7 ro initrd /boot/initrd.img-2.6.18-5-686 savedefault title Debian GNU/Linux, kernel 2.6.18-5-686 (single-user mode) root (hd0,6) kernel /boot/vmlinuz-2.6.18-5-686 root=/dev/sda7 ro single initrd /boot/initrd.img-2.6.18-5-686 savedefault ### END DEBIAN AUTOMAGIC KERNELS LIST title test kernel root (hd0,2) kernel /usr/src/linux/arch/i386/boot/bzImage root=/dev/sda7 ro savedefault
で最後にgrubを再インストールする。
再インストールじゃなくてもいいんだが、今まで動いていたのなら不要。
リブート
#grub-install /dev/sda #reboot
起動したら test kernelを選択してきちんと立ち上がればOK
繰り返すのはmake menuconfig と time make bzImageのみ。
すごく時間が短縮されるようになった。(make cleanは不要)
コンパイルを含め、たぶん数分の作業となる。
このようにしてカーネルの実験ができるようになる。
で、自信が持てたら debパッケージをつくってインストール。めでたしめでたし。
#cd /usr/src/linux #make-dpkg clean #make-dpkg --initrd kernel_image kernel_headers # cd .. # dpkg --install *.deb