カーネルを更新する単純なbashスクリプトがあります。これには、カーネルのビルド、外部モジュールの再構築、initramfsのビルド、genkernel
およびgrub構成の更新が含まれます。以下はスクリプトです。
#!/bin/bash
set -x
set -e
cd linux
# mount boot if not mounded
mount | grep "/boot type vfat" > /dev/null || mount /boot
# build the kernel
make -j16
# install modules
make modules_install
# prepare modules (for @module-rebuild)
make modules_prepare
# rebuild external modules (nvidia, etc)
emerge --ask=n @module-rebuild
# install kernel
make install
# build initramfs
genkernel --lvm --luks --install initramfs
# make grub config
grub-mkconfig > /boot/grub/grub.cfg
# umount boot
umount /boot
このスクリプトは、1つの例外を除いてうまく機能します。常に2回呼び出す必要があり、起動時にエラーが発生しない場合(initramfsをロードできない)、スクリプトのいくつかの手順は間違った順序であると思いますが、そうすることはできません。正確なステップが何であるかはわかりません。公式文書には、再構築にinitramfsを使用する内容は含まれていません。https://wiki.gentoo.org/wiki/Kernel/Upgrade
私のスクリプトに何の問題がありますか?この問題を解決するにはどうすればよいですか?
答え1
makemodules_installとmakemodules_prepareを切り替える必要があるようです。
まずモジュールを準備してから取り付けてください。