• nvme grub2 efi boot

    From Maurice Kinal@2:280/464.113 to Benny Pedersen on Saturday, July 16, 2022 21:00:48
    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)
  • From Maurice Kinal@1:153/7001 to Maurice Kinal on Saturday, July 16, 2022 23:58:08
    Hey Maurice!

    GRUB_GFXMODE=auto

    Change the above to "GRUB_GFXMODE=3840x2160x32,2560x1440x32,1920x1080x32,1280x800x32,1024x768x32,800x600x32,auto". Now /etc/default/grub looks like;

    -={ /etc/default/grub starts }=-
    GRUB_DISABLE_LINUX_UUID=true
    GRUB_DISABLE_LINUX_PARTUUID=false GRUB_GFXMODE=3840x2160x32,2560x1440x32,1920x1080x32,1280x800x32,1024x768x32,800x600x32,auto
    GRUB_GFXPAYLOAD_LINUX=keep
    GRUB_TERMINAL_OUTPUT="gfxterm"
    GRUB_FONT=/boot/efi/EFI/ZNVER2_NVME/test.ttf
    -={ /etc/default/grub ends }=-

    I threw in two 4:3 resolutions at the end for no additional cost just for you. As shown 3840x2160 (aka 4k) is the default but will successfully launch a different resolution as it moves to the right until it hits a compatible one.

    console-font such as latarcyrheb-sun32 which is what I am deploying.

    It looks awesome on 4k, especially a fullscreen TERM=linux display such as the one I am currently looking at.

    The 16 boot penguins are pure bonus. It was worth the effort.

    Life is good,
    Maurice

    ... Bliþe sceal bealoleas heorte.
    Happy is the guiltless heart.
    --- GNU bash, version 5.1.16(1)-release (x86_64-lilmikii-linux-gnu)
    * Origin: Little Mikey's Brain - Ladysmith BC, Canada (1:153/7001)