hi- i'd recently posted this to help-grub, but was asked to post here as well.
i'm attempting to install grub to an esp partition on an nbd device, but it fails, and says "error: cannot find a GRUB drive for /dev/nbd0p1" [see below]. this is a qcow2 image, presented to the system as /dev/nbd0 [e.g. qemu-nbd --connect ...]. i also have another "traditional" disk connected as /dev/vdd, partitioned identically, and this works as expected. i've tried --removable, --no-nvram, with and without device.map files, all with the same result. i did find that if i run kpartx against the device, it creates devices in /dev/mapper/, and those work, but i don't understand why. with or without running kpartx, it seems to me the kernel has awareness of the device partitions, since i can work with them as expected in any other way using the traditional /dev/ nodes. it seems to just be grub that has an issue. i've also tested this with just a simple raw image file, and a loop device [below as well]. i get the same result there. this is just another example of the same problem though, and not what i'm aiming to do. what makes grub decide it's not a grub drive? here's some hopefully relevant info - thanks!: === with an nbd device === >parted /dev/nbd0 print Model: Unknown (unknown) Disk /dev/nbd0: 1074MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 105MB 104MB fat32 esp boot, esp 2 105MB 1073MB 968MB pv1 lvm >cat >/opt/build/operating_systems/alpine/work/imagetest-c5676f32-412a-4ef4-b617-962b932b8ef2/boot/grub/device.map (hd0) /dev/nbd0 >grub-install \ --verbose \ --removable \ --target=x86_64-efi \ --bootloader-id=alpine \ "--efi-directory=/opt/build/operating_systems/alpine/work/imagetest-c5676f32-412a-4ef4-b617-962b932b8ef2/boot/efi" \ "--boot-directory=/opt/build/operating_systems/alpine/work/imagetest-c5676f32-412a-4ef4-b617-962b932b8ef2/boot" Installing for x86_64-efi platform. grub-install: info: cannot open `/opt/build/operating_systems/alpine/work/imagetest-c5676f32-412a-4ef4-b617-962b932b8ef2/boot/grub/device.map': No such file or directory. grub-install: info: /dev/nbd0p1 is not present. grub-install: info: Looking for /dev/nbd0p1. grub-install: info: /dev/nbd0 is a parent of /dev/nbd0p1. grub-install: info: /dev/nbd0p1 is present. grub-install: info: Looking for /dev/nbd0p1. grub-install: info: /dev/nbd0 is a parent of /dev/nbd0p1. grub-install: info: /dev/nbd0p1 is present. grub-install: info: Looking for /dev/nbd0p1. grub-install: info: /dev/nbd0 is a parent of /dev/nbd0p1. grub-install: error: cannot find a GRUB drive for /dev/nbd0p1. Check your device.map. === with a loop device === >qemu-img create -f raw grubtest.img '500m' >losetup --verbose /dev/loop0 grubtest.img >parted /dev/loop0 print Model: Loopback device (loopback) Disk /dev/loop0: 524MB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 105MB 104MB fat32 esp boot, esp 2 105MB 523MB 418MB ext4 root >grub-install \ > --verbose \ > --removable \ > --target=x86_64-efi \ > --bootloader-id=alpine Installing for x86_64-efi platform. grub-install: info: cannot open `/boot/grub/device.map': No such file or directory. grub-install: info: /dev/loop0p1 is not present. grub-install: info: Looking for /dev/loop0p1. grub-install: info: /dev/loop0 is a parent of /dev/loop0p1. grub-install: info: /dev/loop0p1 is present. grub-install: info: Looking for /dev/loop0p1. grub-install: info: /dev/loop0 is a parent of /dev/loop0p1. grub-install: info: /dev/loop0p1 is present. grub-install: info: Looking for /dev/loop0p1. grub-install: info: /dev/loop0 is a parent of /dev/loop0p1. grub-install: error: cannot find a GRUB drive for /dev/loop0p1. Check your device.map. === with a virtio device === >grub-install \ --removable \ --target=x86_64-efi \ --bootloader-id=alpine \ "--efi-directory=/opt/build/operating_systems/alpine/work/imagetest-1e909864-b820-4939-9dff-b4918184c632/boot/efi" \ "--boot-directory=/opt/build/operating_systems/alpine/work/imagetest-1e909864-b820-4939-9dff-b4918184c632/boot" Installing for x86_64-efi platform. File descriptor 4 (/dev/vdd1) leaked on vgs invocation. Parent PID 10249: grub-install You have a memory leak (not released memory pool): [0x7fcace1b3f80] dtree Internal error: Unreleased memory pool(s) found. File descriptor 4 (/dev/vdd1) leaked on vgs invocation. Parent PID 10249: grub-install You have a memory leak (not released memory pool): [0x7fcace1b3f80] dtree Internal error: Unreleased memory pool(s) found. Installation finished. No error reported. _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel