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);