I have an external SSD with Arch Linux on it. The ESP is mounted to /boot. On the ESP, I have the directory EFI and in that, there is a BOOT directory. I created a BOOTx64.EFI using an /ext/kernel/cmdline that says \vmlinuz-linux root=PARTUUID=[partuuid] initd=\initramfs-linux.img.
My thought is that when I use the Boot list and select my SSD, the UEFI system will automatically find /boot/EFI/BOOT/BOOTx64.EFI and correctly boot. But instead, I am dropped to the rootfs and I have to mount /dev/sda2 (the root partition) to new_root and then exit rootfs. And the boot works. But /proc/cmdline in that case shows YRY.
Alternatively, if I tell the boot list to boot from a file and select the BOOTx64.EFI file, it boots perfectly and /proc/cmdline shows my /etc/kernel/cmdline.
So I think that the HP Elitebook is correctly trying to run BOOTx64.EFI when I select the SSD, but for some reason, it doesn't see the root partiion (says device is '' and filesystem doesn't exist). So I have to manually mount it and then all is well.
I'm hoping to figure out why the laptop doesn't mount my root partition to new_root when I invoke the EFI from SSD, but does when I invoke it from the EFI file directly.
initd=
, as written in the question, orinitrd=
? Partition can be not recognized by the kernel either because the kernel module supporting its fstype or device is not loaded (initrd), or udev has not created/dev/disk/by-partuuid/*
(so again initrd)./ext/kernel/cmdline
and/etc/kernel/cmdline
and how isBOOTx64.EFI
"created" by them? mkinitcpio only creates the initrd (initramfs-*.img
).