If you get following while doing “apt-get upgrade” on Debian Squeeze :
Setting up linux-image-2.6.32-5-amd64 (2.6.32-35squeeze1) ... Running depmod. Running update-initramfs. update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64 Examining /etc/kernel/postinst.d. run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64 run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64 Searching for GRUB installation directory ... found: /boot/grub warning: grub-probe can't find drive for /dev/xvda1. grub-probe: error: cannot find a GRUB drive for /dev/xvda1. Check your device.map. run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1 Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.32-5-amd64.postinst line 799, line 2. dpkg: error processing linux-image-2.6.32-5-amd64 (--configure): subprocess installed post-installation script returned error exit status 2
The solution is :
Run…
echo '(hd0) /dev/xvda' > /boot/grub/device.map mknod /dev/xvda b 202 0
Edit /usr/sbin/update-grub :
Change…
find_device () { if ! test -e ${device_map} ; then echo quit | grub --batch --no-floppy --device-map=${device_map} > /dev/null fi grub-probe --device-map=${device_map} -t device $1 2> /dev/null }
to…
find_device () { if ! test -e ${device_map} ; then echo quit | grub --batch --no-floppy --device-map=${device_map} > /dev/null fi #grub-probe --device-map=${device_map} -t device $1 2> /dev/null echo /dev/xvda }
Run…
update-grub 0 sed -i "s/xvda/xvda1/g" /boot/grub/menu.lst
Everything should be fixed now.
References :
http://www.sysadmintalk.net/forums/Thread-PyGrub-grub-probe-can-t-find-drive-for-dev-xvda1-error-Debian-Squeeze
http://lists.bitfolk.com/lurker/message/20080529.142153.954fedf4.el.html