・カーネルバージョン確認
uname -r
・カーネルソース保存
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.99.tar.gz
・シンボリックリンク
ln -s linux-4.9.99 linux
・コンフィグ作成
make clean && make mrproper
今までconfigで設定した内容の消去を行う。初期化。
Archのデフォルト設定を利用する場合。
zcat /proc/config.gz > .config
あるいは、
make localmodconfig
ゲストOS内で現在ロードされているカーネルモジュール情報から
カーネルに読みこまれていないmoduleを無効にした設定をおこなう。
・その他コンフィグ
必要な場合。
make oldconfig
今あるconfig使って、新しい設定だけを問い合わせてくるというものがある。
make config
対話型のコンフィギュレータ
make menuconfig
メニューベースのコンフィギュレータ
make xconfig
Xベースのコンフィギュレータ
・コンパイル
make
今回はbcが無いとエラーがでた。
pacman -S bc
makeは時間がかかる。
・カーネルモジュールのコンパイル
make modules_install
以下にコピーされる。
/lib/modules/xxx
・bootディレクトリにカーネルをコピー
名前の前にvmlinuz-をつけるのは必須。
cp -v /usr/src/linux-4.9.99/arch/x86_64/boot/bzImage /boot/vmlinuz-linux49
・initramfs生成
mkinitcpioを利用。
mkinitcpio -k 4.9.99 -g /boot/initramfs-linux49.img
/lib/modules/xxxのソースディレクトリ名を使う。
・ブートローダーの設定
/boot/grub/grub.cfg
linux /vmlinuz-linux …
initrd /initramfs-linux.img
この部分を変更。
これで完了。
・カーネルモジュール
一覧
lsmod
内容確認
modinfo
ロード
insmod
アンロード
rmmod
ロード・アンロードの依存関係を自分で処理。
(lsmodのUsed byにて分かる)
依存関係を自動で処理する場合のロード・アンロード
modprobe xxx
modprobe -r xxx