On Fri, May 02, 2008 at 03:27:38PM +0200, Aurelien Jarno wrote:
> 
> Starting with version 0.97-33, /usr/sbin/update-grub destroys
> /boot/grub/device.map,

This is (probably) intentional.  When device.map doesn't contain the needed
information, it regenerates it with grub-mkdevicemap in an attempt to solve
the situation.

> and then outputs the following error message:
> 
> Searching for GRUB installation directory ... found: /boot/grub
> grub-probe: error: Cannot find a GRUB drive for /dev/vda1.  Check your 
> device.map.
> 
> Here is the contents of /boot/grub/device.map before it is destroyed:
> (fd0)   /dev/fd0
> (hd0)   /dev/vda
> 
> /dev/vda corresponds to the first virtio device.

AFAICS there are two problems here:

  - grub-mkdevicemap doesn't grok virtio devices.  Could you confirm the
    attached quick & dirty patch makes it work?  Also, is this device path
    Linux-specific?

  - grub-probe can't handle the conversion (once device.map is correct).  I
    need more information about this.  Try:
      grub-probe -t drive -d /dev/vda -v
    and maybe also:
      grub-probe -t drive -d /dev/vda -vv

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)
diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp ../grub2/util/grub-mkdevicemap.c ./util/grub-mkdevicemap.c
--- ../grub2/util/grub-mkdevicemap.c	2008-04-07 16:34:47.000000000 +0200
+++ ./util/grub-mkdevicemap.c	2008-05-02 21:10:47.000000000 +0200
@@ -178,7 +178,7 @@ get_ide_disk_name (char *name, int unit)
 {
 #if defined(__linux__)
   /* GNU/Linux */
-  sprintf (name, "/dev/hd%c", unit + 'a');
+  sprintf (name, "/dev/vd%c", unit + 'a');
 #elif defined(__GNU__)
   /* GNU/Hurd */
   sprintf (name, "/dev/hd%d", unit);

Reply via email to