Bug#746396: grub-common: Add support for NVMe devices in grub-mkdevicemap

Colin Watson cjwatson at debian.org
Thu May 8 10:12:23 UTC 2014


Control: tag -1 pending

On Tue, Apr 29, 2014 at 05:43:44PM +0100, Dimitri John Ledkov wrote:
> Whilst legacy grub-mkdevicemap is still in use, I have noticed that it
> doesn't have support for NVMe devices. I've added the device pattern,
> for grub-mkdevicemap to probe NVMe devices following other similar
> devices. I've tested it using qemu-system, booted with UEFI edk2
> firmware and an NVMe device, here are sample instructions:
> 
>   cd `mktemp -d`
>   cp /usr/share/ovmf/OVMF.fd .
>   qemu-system-x86_64 -pflash OVMF.fd -m 1024 -drive file=nvme.img,if=none,id=D22 -device nvme,drive=D22,serial=1234 --enable-kvm -ctrl-grab -cdrom trusty-desktop-amd64.iso
> 
> With the attached patch grub-mkdevicemap produces result for the nvme
> drive. Patch was created on top of locally generated
> `patched-experimental` branch.

Thanks, this looks good.  I added this further patch so that other tools
can deal with partitions on NVMe devices properly:

diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c
index 6788e39..f97f3a6 100644
--- a/grub-core/osdep/linux/getroot.c
+++ b/grub-core/osdep/linux/getroot.c
@@ -896,6 +896,20 @@ grub_util_part_to_disk (const char *os_dev, struct stat *st,
 	  *pp = '\0';
 	  return path;
 	}
+
+      /* If this is an NVMe device.  */
+      if (strncmp ("nvme", p, sizeof ("nvme") - 1) == 0)
+	{
+	  /* /dev/nvme[0-9]+n[0-9]+(p[0-9]+)? */
+	  p = strchr (p, 'p');
+	  if (p)
+	    {
+	      *is_part = 1;
+	      *p = '\0';
+	    }
+
+	  return path;
+	}
     }
 
   return path;

-- 
Colin Watson                                       [cjwatson at debian.org]



More information about the Pkg-grub-devel mailing list