I have simple bash script to update the kernel. It includes building the kernel, rebuilding external modules, building initramfs with genkernel and updating grub config, here is the script:


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

this script is working fine, but with one exception: I always need to call it twice, if I don't I'll get error on boot (failed to load initramfs), I think that some steps in script has wrong order, but I can't figure out what steps exactly. Oficial docs doesn't cover rebuilding with initramfs: https://wiki.gentoo.org/wiki/Kernel/Upgrade

What's wrong with my script? How to update it to fix?


I think you have to switch make modules_install and make modules_prepare.

First prepare the modules and then install them.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.