Arch Linuxに/sbin/installkernelコマンドが無いのでとりあえず作っておくと後々楽ですねということで。
Linuxカーネルをこのようにビルドしている場合、最後のmake install実行時に/sbin/installkernelというコマンドが呼ばれます。
- make menuconfig
- make bzImage
- make modules
- make modules_install
- make install
これはbzImage、System.mapを/bootにコピーしたり、initramfsを作るためのスクリプトでMakefileから/sbin/installkernelを引数を4つ渡して実行しています。
- カーネル名(uname -rで出る名称)
- bzImageへのパス(カーネルソースのルートディレクトリからのパス)
- System.mapのファイル名(これはSystem.map)
- コピー先ディレクトリ(/boot)
なのでこれらを引数受け取って/bootへのコピーとmkinitcpio(Arch Linuxはmkinitramfsではなかったので)でinitramfsの作成をすれば良いということですね。
以下のスクリプトが自前の/sbin/installkernelコマンドです。
#!/bin/bash if [ $# != 4 ]; then echo "usage $0 [vmlinuz name] [bzImage file name] [System.map file name] [output dir]" exit 1 fi kernelName=$1 bzImage=$2 SystemMap=$3 dirname=$4 cp -f $bzImage $dirname/vmlinuz-$kernelName cp -f $SystemMap $dirname/System.map-$kernelName mkinitcpio -k $kernelName -c /etc/mkinitcpio.conf -g /boot/initramfs-$kernelName.img echo "Done."
initramfsに何のコマンドを使うかは別として、他のディストリビューションでもこれが使えると思います。