insmod all_video
insmod part_msdos
insmod btrfs
insmod loop
insmod gzio
insmod chain
set linux_gfx_mode=text
menuentry 'Ubuntu Impish' --class gnu-linux {
set quiet=0
search --no-floppy --label --set=root NVME
echo root found: $root
echo 'kernel...'
linux /impish/boot/vmlinuz ro root=LABEL=NVME rootflags=subvol=impish text
echo 'init.rd...'
initrd /impish/boot/initrd.img
}
When I boot from real hardware I get errors like:
Type of root file system is unknown
squashfs: Unknown parameter subvol
The disk is detected by grub as (hd0,msdos4)
and by Ubuntu as /dev/nvme0n1p4
labeled as NVME
. Strangely the same setup boots if I use QEMU like this:
qemu -hda /dev/nvme0n1
I know my setup is not normal Ubuntu way, because I have manually created grub.cfg on a separate partition msdos1
.
The only difference I can think of between qemu and real hardware is nvme driver or maybe the fact that under qemu /dev/nvme0n1 is /dev/sda, but how does it matter? But I CAN mount nvme drive manually from weird (initramfs)
prompt, except I cannot specify a subvolume because it says unknown parameter. The subvolume for Ubuntu is impish
, but the default subvolume is debian
. But it should not matter because from qemu it all works with exactly the same drive and all the boot options in grub and the file system.
GRUB is installed on a separate primary partition hd0,msdos1 on the same nvme drive.
my fstab on the installed Ubuntu:
#LABEL=NVME / btrfs defaults,noatime,nodiratime,subvol=impish 0 1
/dev/nvme0n1p4 / btrfs defaults,noatime,nodiratime,subvol=impish 0 1
As you see I tried both label and /dev/nvme0n1p4, both work under qemu, but not on real reboot.
Any help here? Thanks.