I have been running the standard Linux kernel on my desktop since March 2021, but recently I required the linux-zen kernel for a particular application to work.
I then installed linux-zen & linux-zen-headers. I also installed linux-lts & linux-lts-headers to have a LTS fallback option, as I recently had the linux-zen kernel stop booting on a laptop & that system would only boot with the LTS kernel.
First I created a back up of /boot/grub/grub.cfg & then I ran the command shown in the Arch Wiki (https://wiki.archlinux.org/title/GRUB#Generate_the_main_configuration_file) to generate a new /boot/grub/grub.cfg
# grub-mkconfig -o /boot/grub/grub.cfg
Then I rebooted the system & it would only display GRUB before rebooting again & again before dumping me into my BIOS.
I then booted off an Artix ISO and mounted my encrypted drive with artix-chroot; then restored my original grub.cfg (dated Mar 26 2021) and my system rebooted fine.
What am I missing here? I've followed the same process on different systems before. Any help or suggestions is much appreciated.
Did you run mkinitcpio (https://wiki.archlinux.org/title/Mkinitcpio) beforehand?
# mkinitcpio -P
# grub-mkconfig -o /boot/grub/grub.cfg
I just tried running "mikinitcpio -P" beforehand, but unfortunately I get the same behaviour as in the OP.
I think my issue may have to do with UEFI & I don't want to really break my system badly so hoping another Artix user here with more UEFI experience has some suggestions. Are you running UEFI on your system
@MaxLPM ?
Yeah, I am, and in the past I had no trouble having linux and linux-lts simultaneously.
You mentioned that you use encryption, are you sure that you have all of the needed hooks in /etc/mkinitcpio.conf? And that all of the UUIDs are correct in /etc/default/grub?
Maybe try mkinitcpio, installing grub again and then grub-mkconfig? For grub installation use this:
grub-install --target=x86_64-efi --efi-directory=<your_esp_dir> --bootloader-id=grub
If that doesn't work, please post the output of
efibootmgr
Also, what do you mean by "GRUB before rebooting again & again before dumping me into my BIOS"? Do you see any boot entries?
After running those commands, I get dropped to a grub rescue prompt after reboot.
I then reboot into recovery & restore my backed up grub.cfg over the newly created one. Then when I reboot, GRUB comes up normally but there are no other kernels listed. Then I select Advanced there on the GRUB menu and it only shows me the "Linux" kernel - no zen or LTS are there.
Here is the output of efibootmgr
efibootmgr
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0001,0003
Boot0000* grub HD(1,GPT,fa8bdda7-f312-2d42-9235-7e3ad45797c6,0x800,0x200000)/\EFI\grub\grubx64.efi
Boot0001* Hard Drive BBS(HD,,0x0)0000474f00004e4fc1000000010000007100530061006d00730075006e006700200053005300440020003900370030002000450056004f00200050006c007500730020003500300030004700420000000501090002000000007fff040002010c00d041030a0000000001010600010101010600000003171000010000000025385c019e2c667fff040001043400ef47642dc93ba041ac194d51d01b4ce653003500380053004e005a0046004e004300300035003100370032004c0000007fff04000000424f00004e4fad00000001000000750053005400320030003000300044004d003000300038002d0032004600520031003000320000000501090002000000007fff040002010c00d041030a0000000001010600030101010600010003120a000000ffff00007fff040001043e00ef47642dc93ba041ac194d51d01b4ce620002000200020002000200020002000200020002000200046005a0032004c00410059004c00370000007fff04000000424f
Boot0003* CD/DVD Drive BBS(CDROM,,0x0)0000474f00004e4fc50000000100000079004f0070007400690061007200630020004400560044002000520057002000410044002d0037003700300030005300200031002e003700300000000501090003000000007fff040002010c00d041030a000000000101060003010101060000000305060007007fff040001044600ef47642dc93ba041ac194d51d01b4ce630003000300030003000300030003000300030003000300030003000300030003000300030003000300030003000300000007fff04000000424f
I mean that the computer would attempt to load grub & quite literally only flash GRUB (where the menu should be) and then instantly bootloop the system which then drops me into the BIOS screen.
Huh, do any messages get outputed? Anything like "Welcome to GRUB"?
Are you using full disk encryption, or just an encrypted root?
Also, could you please send the contents of the following files:
/etc/default/grub
Original /boot/grub/grub.cfg (the one from 2021)
The current /boot/grub/grub.cfg, with linux, linux-lts and linux-zen installed and grub updated
Does this happen when you just use linux and linux-lts? Basically, have you tried uninstalling linux-zen, updating grub, and rebooting?
When I have the issue, the screen only says "GRUB" & then reboots. It does not present the "Welcome to GRUB" screen that it should be presenting.
I'm just running an ecrypted root with LUKS.
Here is my /etc/default/grub
# GRUB boot loader configuration
GRUB_DEFAULT=0
GRUB_TIMEOUT=15
GRUB_DISTRIBUTOR="Artix"
#GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet"
GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot"
GRUB_CMDLINE_LINUX=""
# Preload both GPT and MBR modules so that they are not missed
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
# Uncomment to enable booting from LUKS encrypted devices
GRUB_ENABLE_CRYPTODISK=y
# Set to 'countdown' or 'hidden' to change timeout behavior,
# press ESC key to display menu.
GRUB_TIMEOUT_STYLE=menu
# Uncomment to use basic console
GRUB_TERMINAL_INPUT=console
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=auto
# Uncomment to allow the kernel use the same resolution used by grub
GRUB_GFXPAYLOAD_LINUX=keep
# Uncomment if you want GRUB to pass to the Linux kernel the old parameter
# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY=true
# Uncomment and set to the desired menu colors. Used by normal and wallpaper
# modes only. Entries specified as foreground/background.
#GRUB_COLOR_NORMAL="light-blue/black"
#GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
# Uncomment one of them for the gfx desired, a image background or a gfxtheme
#GRUB_BACKGROUND="/path/to/wallpaper"
#GRUB_THEME="/path/to/gfxtheme"
# Uncomment to get a beep at GRUB start
#GRUB_INIT_TUNE="480 440 1"
# Uncomment to make GRUB remember the last selection. This requires
# setting 'GRUB_DEFAULT=saved' above.
#GRUB_SAVEDEFAULT="true"
Here is my Original /boot/grub/grub.cfg (the one from 2021)
### 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 ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 0d052f6b-3729-40fb-b29f-58c7b232ea06
else
search --no-floppy --fs-uuid --set=root 0d052f6b-3729-40fb-b29f-58c7b232ea06
fi
font="/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=en_US
insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=15
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=15
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Artix Linux' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 25B8-1843
else
search --no-floppy --fs-uuid --set=root 25B8-1843
fi
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=0d052f6b-3729-40fb-b29f-58c7b232ea06 rw cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux.img
}
submenu 'Advanced options for Artix Linux' $menuentry_id_option 'gnulinux-advanced-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
menuentry 'Artix Linux, with Linux linux' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 25B8-1843
else
search --no-floppy --fs-uuid --set=root 25B8-1843
fi
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=0d052f6b-3729-40fb-b29f-58c7b232ea06 rw cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux.img
}
menuentry 'Artix Linux, with Linux linux (fallback initramfs)' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 25B8-1843
else
search --no-floppy --fs-uuid --set=root 25B8-1843
fi
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=0d052f6b-3729-40fb-b29f-58c7b232ea06 rw cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot
echo 'Loading initial ramdisk ...'
initrd /initramfs-linux-fallback.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 ###
Here is the broken /boot/grub/grub.cfg, with linux, linux-lts and linux-zen installed and grub updated
### 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_gpt
insmod cryptodisk
insmod luks2
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha256
insmod ext2
cryptomount -u 3ae12c7e-2f01-4284-86ff-497438d858e2
set root='cryptouuid/3ae12c7e2f01428486ff497438d858e2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='cryptouuid/3ae12c7e2f01428486ff497438d858e2' 0d052f6b-3729-40fb-b29f-58c7b232ea06
else
search --no-floppy --fs-uuid --set=root 0d052f6b-3729-40fb-b29f-58c7b232ea06
fi
font="/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=en_US
insmod gettext
fi
terminal_input console
terminal_output gfxterm
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=15
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=15
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Artix Linux' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 25B8-1843
echo 'Loading Linux linux-zen ...'
linux /vmlinuz-linux-zen root=UUID=0d052f6b-3729-40fb-b29f-58c7b232ea06 rw cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux-zen.img
}
submenu 'Advanced options for Artix Linux' $menuentry_id_option 'gnulinux-advanced-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
menuentry 'Artix Linux, with Linux linux-zen' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-zen-advanced-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 25B8-1843
echo 'Loading Linux linux-zen ...'
linux /vmlinuz-linux-zen root=UUID=0d052f6b-3729-40fb-b29f-58c7b232ea06 rw cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux-zen.img
}
menuentry 'Artix Linux, with Linux linux-zen (fallback initramfs)' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-zen-fallback-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 25B8-1843
echo 'Loading Linux linux-zen ...'
linux /vmlinuz-linux-zen root=UUID=0d052f6b-3729-40fb-b29f-58c7b232ea06 rw cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux-zen-fallback.img
}
menuentry 'Artix Linux, with Linux linux-lts' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-advanced-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 25B8-1843
echo 'Loading Linux linux-lts ...'
linux /vmlinuz-linux-lts root=UUID=0d052f6b-3729-40fb-b29f-58c7b232ea06 rw cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux-lts.img
}
menuentry 'Artix Linux, with Linux linux-lts (fallback initramfs)' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-lts-fallback-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 25B8-1843
echo 'Loading Linux linux-lts ...'
linux /vmlinuz-linux-lts root=UUID=0d052f6b-3729-40fb-b29f-58c7b232ea06 rw cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux-lts-fallback.img
}
menuentry 'Artix Linux, with Linux linux' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 25B8-1843
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=0d052f6b-3729-40fb-b29f-58c7b232ea06 rw cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux.img
}
menuentry 'Artix Linux, with Linux linux (fallback initramfs)' --class artix --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-fallback-0d052f6b-3729-40fb-b29f-58c7b232ea06' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 25B8-1843
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=0d052f6b-3729-40fb-b29f-58c7b232ea06 rw cryptdevice=/dev/nvme0n1p2:cryptroot root=/dev/mapper/cryptroot
echo 'Loading initial ramdisk ...'
initrd /amd-ucode.img /initramfs-linux-fallback.img
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/15_ostree ###
### END /etc/grub.d/15_ostree ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/25_bli ###
if [ "$grub_platform" = "efi" ]; then
insmod bli
fi
### END /etc/grub.d/25_bli ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
if [ "$grub_platform" = "efi" ]; then
fwsetup --is-supported
if [ "$?" = 0 ]; then
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
fi
fi
### END /etc/grub.d/30_uefi-firmware ###
### 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 ###
I believe I've already tried uninstalling linux-zen, updating grub, and then rebooting, but will try that again if you don't see anything odd in the newly generated grub.cfg.
This could potentially be the culprit.
Recently, I experimented with encryption on Artix. I tried using the "root=/dev/mapper/name" scheme first, but after completing the installation and rebooting, grub couldn't find the partition and didn't even ask for a password. Changing the argument to "root=UUID=NAME_UUID" fixed it. Maybe this is related to your case?
So, boot into a live CD, unlock your volume and run the following commands (make sure to either use sudo or run as root):
# blkid /dev/nvme0n1p2
# blkid /dev/mapper/cryptroot
Then, edit /etc/default/grub to the following, replacing the placeholders with the results of the previous commands (you're looking for UUID=, not PARTUUID= or anything else):
Now, install the lts and zen kernels if you don't have them already, and fully re-install grub:
# mkinitcpio -P
# grub-install --target=x86_64-efi --efi-directory=<your_esp_dir> --bootloader-id=grub
# grub-mkconfig -o /boot/grub/grub.cfg
This should either boot correctly, drop you to a busybox initramfs, or drop you into grub rescue. Please report the results.
In case it doesn't work, keep the UUIDs, since it's considered best practice anyway
Thank you very much for your help
@MaxLPM as it did indeed need those UUID entries for it to work.