我有简单的 bash 脚本来更新内核。它包括构建内核、重建外部模块、构建 initramfsgenkernel
和更新 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
这个脚本工作正常,但有一个例外:我总是需要调用它两次,如果不这样做,我会在启动时收到错误(无法加载 initramfs),我认为脚本中的某些步骤顺序错误,但是我无法弄清楚具体步骤是什么。官方文档不包括使用 initramfs 进行重建:https://wiki.gentoo.org/wiki/Kernel/Upgrade
我的脚本出了什么问题?如何更新来修复?
答案1
我认为你必须切换 makemodules_install 和 makemodules_prepare。
首先准备模块,然后安装它们。