多くのLinuxでは、カーネルイメージは以下の名前で格納されています。
これだと複数のカーネルイメージを持つとごちゃごちゃして分かりにくい。バージョンでディレクトリを切ってあげると見通しがよくなります。
- /boot/2.6.27-gentoo-r8/vmlinuz
- /boot/2.6.27-gentoo-r8/System.map
- /boot/2.6.27-gentoo-r8/config
- /boot/current -> 2.6.27-gentoo-r8
シンボリックリンクで現在有効なカーネルを指しておけばgrub.confも変更なしでおk。
カーネルビルドが終わった後でmake installすると、/sbin/installkernelが実行されます。/sbin/installkernelを書き換えることで上記の場所にインストールできます。
--- /sbin/installkernel.dist 2009-03-22 18:46:10.705965000 +0900 +++ /sbin/installkernel 2009-04-04 14:12:30.904154701 +0900 @@ -29,22 +29,11 @@ fi updatever () { - if [ -f "$dir/$1-$ver" ] ; then - mv "$dir/$1-$ver" "$dir/$1-$ver.old" + if [ -f "$dir/$ver/$1" ] ; then + mv "$dir/$ver/$1" "$dir/$ver/$1.old" fi - cat "$2" > "$dir/$1-$ver" - - if test -f "$dir/$1" ; then - if test -L "$dir/$1" && - [ "$(readlink -f ${dir}/${1})" = "${dir}/${1}-${ver}" ]; then - ln -sf "$1-$ver.old" "$dir/$1.old" - else - mv "$dir/$1" "$dir/$1.old" - fi - fi - - ln -sf "$1-$ver" "$dir/$1" + cat "$2" > "$dir/$ver/$1" } if [ "$(basename $img)" = "vmlinux" ] ; then @@ -61,7 +50,7 @@ fi if [ "$(basename $img)" = "vmlinux" ] && [ "$(id -u)" = "0" ] ; then - mkboot -i ${dir}/vmlinux-${ver} + mkboot -i ${dir}/${ver}/vmlinux else - mkboot -i ${dir}/vmlinuz-${ver} + mkboot -i ${dir}/${ver}/vmlinuz fi