TIP: Click on subject to list as thread! ANSI
echo: linux
to: Benny Pedersen
from: Maurice Kinal
date: 2022-07-16 21:00:00
subject: nvme grub2 efi boot

Hey Benny!

I have it booting to 4k with a 32p font I created from terminus-font's ter-u32b.bdf since regular console-fonts won't work with grub2 efi boots.  This works;

  grub-mkfont -o /boot/efi/EFI/ZNVER2_NVME/test32.ttf ter-u32b.bdf

Now the /etc/default/grub looks like this;

-={ /etc/default/grub starts }=-
GRUB_DISABLE_LINUX_UUID=true
GRUB_DISABLE_LINUX_PARTUUID=false
GRUB_GFXMODE=auto
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_FONT=/boot/efi/EFI/ZNVER2_NVME/test.ttf
-={ /etc/default/grub ends   }=-

Running 'grub-mkconfig -o /boot/grub/grub.cfg' results in;

-={ /boot/grub/grub.cfg starts }=-
#
# 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 ###
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
}

insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root DD27-C0CC
if loadfont /EFI/ZNVER2_NVME/test.ttf ; then
  set gfxmode=3840x2160x32,2560x1440x32,1920x1080x32,1280x800x32,1024x768x32,800x600x32,auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_CA
  insmod gettext
fi
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 'GNU/Linux' --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-86518520-dafc-40ae-b4d5-47a565bdb0ab' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod ext2
        search --no-floppy --fs-uuid --set=root 86518520-dafc-40ae-b4d5-47a565bdb0ab
        echo    'Loading Linux 5.18.12 ...'
        linux   /boot/vmlinuz-5.18.12 root=PARTUUID=4353f2c2-f6eb-bb2d-da55-21dff4f1b9eb ro
}
submenu 'Advanced options for GNU/Linux' $menuentry_id_option 'gnulinux-advanced-86518520-dafc-40ae-b4d5-47a565bdb0ab' {
        menuentry 'GNU/Linux, with Linux 5.18.12' --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.18.12-advanced-86518520-dafc-40ae-b4d5-47a565bdb0ab' {
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_gpt
                insmod ext2
                search --no-floppy --fs-uuid --set=root 86518520-dafc-40ae-b4d5-47a565bdb0ab
                echo    'Loading Linux 5.18.12 ...'
                linux   /boot/vmlinuz-5.18.12 root=PARTUUID=4353f2c2-f6eb-bb2d-da55-21dff4f1b9eb ro
        }
        menuentry 'GNU/Linux, with Linux 5.18.12 (recovery mode)' --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.18.12-recovery-86518520-dafc-40ae-b4d5-47a565bdb0ab' {
                load_video
                set gfxpayload=keep
                insmod gzio
                insmod part_gpt
                insmod ext2
                search --no-floppy --fs-uuid --set=root 86518520-dafc-40ae-b4d5-47a565bdb0ab
                echo    'Loading Linux 5.18.12 ...'
                linux   /boot/vmlinuz-5.18.12 root=PARTUUID=4353f2c2-f6eb-bb2d-da55-21dff4f1b9eb ro single
        }
}

### 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/30_uefi-firmware ###
### 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 ###
-={ /boot/grub/grub.cfg ends   }=-

I also have an uefi for the sata interface and can successfully install to a hotswapped 2.5" SSD on my so-called file server and then pop it into the target system - ASRock 4X4-4000 Series for example - and boot it up.  That is what I initially did in order to create the above ZNVER2_NVME.  Note that in the above cfg there are no references to /dev/nvme0n1p2 where the rootfs is installed to.  For cross-referencing here is the output of 'blkid' for the installed nvme disk;

-={ Output for 'blkid | grep /dev/nvme0n1 | sort' starts }=-
/dev/nvme0n1p1: SEC_TYPE="msdos" UUID="DD27-C0CC" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="6f48dbf7-ebc9-a034-7832-03775ede9c0f"
/dev/nvme0n1p2: UUID="86518520-dafc-40ae-b4d5-47a565bdb0ab" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="4353f2c2-f6eb-bb2d-da55-21dff4f1b9eb"
/dev/nvme0n1p3: UUID="ee7bea5d-bb38-406c-a06c-74b421aee28e" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="1476b6d6-d193-fa1d-7412-e1a92383cba0"
/dev/nvme0n1p4: UUID="a9da5078-a289-4ad6-8d3c-ae3d49fe60d8" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="263c2db0-ac4a-5055-2e63-2ed757ee5b2e"
/dev/nvme0n1p5: UUID="98283d9d-4d0d-43e6-b204-751f588fc4fb" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="3842d1a5-5fa3-1733-7214-c195988d3648"
-={ Output for 'blkid | grep /dev/nvme0n1 | sort' ends }=-

I can also do the above for the 2.5" SSD if you think there might be some help in that.  It is DEFINETLY different and I think the nvme disks are handling uefi boots far better than sata.  The switch from grub to the linux terminal isn't seamless as such but is far less noticable than not supplying a more or less matching sized console-font such as latarcyrheb-sun32 which is what I am deploying.

The boot penguins get displayed as part of the grub display just before the real terminal display kicks in.

Life is good,
Maurice

... ¨one wisdom ¨e ¨e God sealde ¨‘r ¨‘r ¨u hiene bef‘stan m‘ge, bef‘ste.
    Wherever you can use the wisdom God gave you, use it.
--- GNU bash, version 5.1.16(1)-release (x86_64-znver1-linux-gnu)
                                                                                                                          
* Origin: Little Mikey's EuroPoint @ (2:280/464.113)

SOURCE: echomail via QWK@pharcyde.org

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.