I am trying to compile and install my own kernel (5.2.0-rc7) and everything seems to be working fine until I reboot to actually boot into it and am unable to select it from my GRUB boot menu. I have written a script (and done it manually with no difference) to compile and install for me based on the instructions on the Arch wiki. Everything compiles without errors, make modules_install places the proper file in the /lib/modules folder and the proper images seem to be in the /boot directory. mkinitcpio completes without error and when I run grub-mkconfig it seems like it finds my newly installed custom kernel giving me this output:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/intel-ucode.img /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
Found linux image: /boot/vmlinuz-5.2.0-rc7-test
Found initrd image: /boot/intel-ucode.img /boot/initramfs-5.2.0-rc7-test.img
done
And when I look at the generated grub.cfg file, I see that it does include the newly installed kernel as expected, shown below:
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9c56060e-d76c-4cea-8c41-137092164107
else
search --no-floppy --fs-uuid --set=root 9c56060e-d76c-4cea-8c41-137092164107
fi
font="/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-9c56060e-d76c-4cea-8c41-137092164107' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9c56060e-d76c-4cea-8c41-137092164107
else
search --no-floppy --fs-uuid --set=root 9c56060e-d76c-4cea-8c41-137092164107
fi
echo 'Loading Linux linux ...'
linux /boot/vmlinuz-linux root=UUID=9c56060e-d76c-4cea-8c41-137092164107 rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/intel-ucode.img /boot/initramfs-linux.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-9c56060e-d76c-4cea-8c41-137092164107' {
menuentry 'Arch Linux, with Linux linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-9c56060e-d76c-4cea-8c41-137092164107' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9c56060e-d76c-4cea-8c41-137092164107
else
search --no-floppy --fs-uuid --set=root 9c56060e-d76c-4cea-8c41-137092164107
fi
echo 'Loading Linux linux ...'
linux /boot/vmlinuz-linux root=UUID=9c56060e-d76c-4cea-8c41-137092164107 rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/intel-ucode.img /boot/initramfs-linux.img
}
menuentry 'Arch Linux, with Linux linux (fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-9c56060e-d76c-4cea-8c41-137092164107' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9c56060e-d76c-4cea-8c41-137092164107
else
search --no-floppy --fs-uuid --set=root 9c56060e-d76c-4cea-8c41-137092164107
fi
echo 'Loading Linux linux ...'
linux /boot/vmlinuz-linux root=UUID=9c56060e-d76c-4cea-8c41-137092164107 rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initramfs-linux-fallback.img
}
menuentry 'Arch Linux, with Linux 5.2.0-rc7-test' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.2.0-rc7-test-advanced-9c56060e-d76c-4cea-8c41-137092164107' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,msdos1' --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 9c56060e-d76c-4cea-8c41-137092164107
else
search --no-floppy --fs-uuid --set=root 9c56060e-d76c-4cea-8c41-137092164107
fi
echo 'Loading Linux 5.2.0-rc7-test ...'
linux /boot/vmlinuz-5.2.0-rc7-test root=UUID=9c56060e-d76c-4cea-8c41-137092164107 rw quiet
echo 'Loading initial ramdisk ...'
initrd /boot/intel-ucode.img /boot/initramfs-5.2.0-rc7-test.img
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
However, when I reboot my VM, I see that the Grub menu does not list the newly installed kernel only the standard one. According to the Arch wiki, all that needs to be done is to run the grub-mkconfig command to generate a new grub config file and if it is reflected in the config file it should show up but this doesn't seem to be the case.
What am I missing? How can I get my newly installed kernel to show up in the Grub boot menu? Can anyone point me in the right direction? Thanks.
I am doing this on Arch Linux running 5.1.16-arch1-1-ARCH using Virtualbox 6.0.4 r128413