wrong BOOT_DEVICE when using nvme

Thomas Lange lange at cs.uni-koeln.de
Thu Oct 27 21:40:52 CEST 2022


In 2019 I got this bug report on IRC. I now can answer it. sorry for
the delay ;-)


----------------------------------------------------------------------------
07/24/19 [14:02:13] < lindbergio> Hi! The BOOT_DEVICE variable gets the same value as the ROOT_DEVICE in the disk_var.sh file (/dev/vg0/root) while it should be /dev/nvme0n1p1 or the UUID 
                                  ("5C48-D830"). This results in GRUB not getting installed as it tries to install to $BOOT_DEVICE. Can anyone help me understand why the BOOT_DEVICE 
                                  variable gets the wrong value? Here is a paste of the disk_config I use
07/24/19 [14:02:15] < lindbergio> https://paste.debian.net/plain/1092876.
07/24/19 [14:35:22] < lindbergio> It works if I change the mountpoint for the boot partition from "/boot/efi" to "/boot". Then the BOOT_DEVICE=/dev/nvme0n1p1.
07/24/19 [14:36:42] < lindbergio> According to the EFI/ESP example in setup-storage(8) one should use /boot/efi and not /boot.
07/24/19 [16:10:48] < lindbergio> Looks like find_boot_mnt_point() in Fstab.pm only looks for /boot and thus /boot/efi fails. Is that correct?


disk_config disk1 disklabel:gpt fstabkey:uuid bootable:1
primary         /boot/efi       500     vfat    rw
primary         -               0-      -       -

disk_config lvm always_format:all
vg              vg0             disk1.2
vg0-swap        swap            8192    swap    rw
vg0-var         /var            10240   ext4    rw
vg0-home        /home           50%     ext4    rw
vg0-root        /               34816   ext4    rw
----------------------------------------------------------------------------


You are right, the BOOT_DEVICE is set to the same value as
ROOT_PARTITION (btw, ROOT_DEVICE does not exists in FAI).

Here's the disk_var.sh using your disk_config:

BOOT_DEVICE=${BOOT_DEVICE:-"/dev/vg0/root"}
SWAPLIST=${SWAPLIST:-"/dev/vg0/swap"}
ESP_DEVICE=${ESP_DEVICE:-/dev/nvme0n1p1}
ROOT_PARTITION=${ROOT_PARTITION:-/dev/vg0/root}

BUT! In the script GRUB_EFI/10-setup BOOT_DEVICE will be redefined if
BOOT_DEVICE is a link to a /dev/md device. Here's the output with some
added debug output:

=====   shell: GRUB_EFI/10-setup   =====
ainsl: appending to /target/etc/default/grub: GRUB_DISABLE_OS_PROBER=true

BOOT_DEVICE: /dev/vg0/root
++ readlink -f /dev/vg0/root
+ _bdev=/dev/dm-3
+ '[' /dev/dm = /dev/dm ']'
++ lvs --noheadings -o devices /dev/vg0/root
++ sed -e 's/^*\([^(]*\)(.*$/\1/'
+ BOOT_DEVICE='  /dev/nvme0n1p2(2983)'
BOOT_DEVICE: /dev/nvme0n1p2(2983)


So it's correct the the value is wrong in disk_var.sh but FAI will
correctly install grub into the disks.

-- 
regards Thomas


More information about the linux-fai mailing list