Tom Wright wrote:
> Package: grub-pc
> Version: 1.98~20100128-1.2
> Severity: normal
>
> I am seeing the same problem: grub reports this on startup and then gets no 
> further:
>
> error: fd0 cannot get C/H/S values.
> entering rescue mode
>
>   
Can you try the attached patch?
> My system has three RAID1 md partitions across sda and sdb, containing swap, 
> / and /boot and it has another disk (sdc).  With these plugged in, it all 
> works fine, but once I plug a USB drive in as well, the system won't start.  
> I can get it to start by removing the USB drive and resetting it 
> (ctrl-alt-del or power-cycle).  This is not ideal though, as it's a 
> hidden-away server which always has a USB disk plugged into it for backup 
> purposes, so I cannot reboot it remotely because it won't start up again.
>
> -- Package-specific info:
>
> *********************** BEGIN /proc/mounts
> /dev/disk/by-uuid/b8ea7ba8-1e96-4e1c-8993-6a3118767dd5 / ext4 
> rw,relatime,errors=remount-ro,barrier=1,data=ordered 0 0
> /dev/md2 /boot ext3 rw,relatime,errors=continue,data=ordered 0 0
> /dev/sdc1 /mythrecordings ext4 rw,relatime,barrier=1,data=ordered 0 0
> *********************** END /proc/mounts
>
> *********************** BEGIN /boot/grub/device.map
> (hd0) /dev/sda
> (hd1) /dev/sdb
> (hd2) /dev/sdc
> *********************** END /boot/grub/device.map
>
> *********************** BEGIN /boot/grub/grub.cfg
> #
> # DO NOT EDIT THIS FILE
> #
> # It is automatically generated by /usr/sbin/grub-mkconfig using templates
> # from /etc/grub.d and settings from /etc/default/grub
> #
>
> ### BEGIN /etc/grub.d/00_header ###
> if [ -s $prefix/grubenv ]; then
>   load_env
> fi
> set default="0"
> if [ ${prev_saved_entry} ]; then
>   set saved_entry=${prev_saved_entry}
>   save_env saved_entry
>   set prev_saved_entry=
>   save_env prev_saved_entry
>   set boot_once=true
> fi
>
> function savedefault {
>   if [ -z ${boot_once} ]; then
>     saved_entry=${chosen}
>     save_env saved_entry
>   fi
> }
> insmod raid
> insmod mdraid
> insmod ext2
> set root=(md1)
> search --no-floppy --fs-uuid --set b8ea7ba8-1e96-4e1c-8993-6a3118767dd5
> if loadfont /usr/share/grub/unicode.pf2 ; then
>   set gfxmode=640x480
>   insmod gfxterm
>   insmod vbe
>   if terminal_output gfxterm ; then true ; else
>     # For backward compatibility with versions of terminal.mod that don't
>     # understand terminal_output
>     terminal gfxterm
>   fi
> fi
> insmod raid
> insmod mdraid
> insmod ext2
> set root=(md2)
> search --no-floppy --fs-uuid --set 7585406e-ce84-4bd5-afb6-e198efa46a94
> set locale_dir=($root)/grub/locale
> set lang=en
> insmod gettext
> set timeout=5
> ### END /etc/grub.d/00_header ###
>
> ### BEGIN /etc/grub.d/05_debian_theme ###
> set menu_color_normal=cyan/blue
> set menu_color_highlight=white/blue
> ### END /etc/grub.d/05_debian_theme ###
>
> ### BEGIN /etc/grub.d/10_linux ###
> menuentry "Debian GNU/Linux, with Linux 2.6.32-trunk-amd64" {
>       insmod raid
>       insmod mdraid
>       insmod ext2
>       set root=(md2)
>       search --no-floppy --fs-uuid --set 7585406e-ce84-4bd5-afb6-e198efa46a94
>       echo    Loading Linux 2.6.32-trunk-amd64 ...
>       linux   /vmlinuz-2.6.32-trunk-amd64 
> root=UUID=b8ea7ba8-1e96-4e1c-8993-6a3118767dd5 ro  quiet
>       echo    Loading initial ramdisk ...
>       initrd  /initrd.img-2.6.32-trunk-amd64
> }
> menuentry "Debian GNU/Linux, with Linux 2.6.32-trunk-amd64 (recovery mode)" {
>       insmod raid
>       insmod mdraid
>       insmod ext2
>       set root=(md2)
>       search --no-floppy --fs-uuid --set 7585406e-ce84-4bd5-afb6-e198efa46a94
>       echo    Loading Linux 2.6.32-trunk-amd64 ...
>       linux   /vmlinuz-2.6.32-trunk-amd64 
> root=UUID=b8ea7ba8-1e96-4e1c-8993-6a3118767dd5 ro single 
>       echo    Loading initial ramdisk ...
>       initrd  /initrd.img-2.6.32-trunk-amd64
> }
> ### END /etc/grub.d/10_linux ###
>
> ### BEGIN /etc/grub.d/30_os-prober ###
> ### END /etc/grub.d/30_os-prober ###
>
> ### BEGIN /etc/grub.d/40_custom ###
> # This file provides an easy way to add custom menu entries.  Simply type the
> # menu entries you want to add after this comment.  Be careful not to change
> # the 'exec tail' line above.
> ### END /etc/grub.d/40_custom ###
> *********************** END /boot/grub/grub.cfg
>
> -- System Information:
> Debian Release: squeeze/sid
>   APT prefers testing
>   APT policy: (700, 'testing'), (600, 'unstable')
> Architecture: amd64 (x86_64)
>
> Kernel: Linux 2.6.32-trunk-amd64 (SMP w/2 CPU cores)
> Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
> Shell: /bin/sh linked to /bin/dash
>
> Versions of packages grub-pc depends on:
> ii  debconf [debconf-2.0]  1.5.28            Debian configuration management 
> sy
> ii  grub-common            1.98~20100128-1.2 GRand Unified Bootloader, 
> version 
> ii  libc6                  2.10.2-6          Embedded GNU C Library: Shared 
> lib
> ii  ucf                    3.0025            Update Configuration File: 
> preserv
>
> grub-pc recommends no packages.
>
> Versions of packages grub-pc suggests:
> pn  desktop-base                  <none>     (no description available)
>
> -- debconf information:
>   grub-pc/kopt_extracted: false
>   grub2/kfreebsd_cmdline:
> * grub-pc/install_devices: /dev/sda, /dev/sdb
>   grub-pc/postrm_purge_boot_grub: false
> * grub2/linux_cmdline:
>   grub2/kfreebsd_cmdline_default: quiet
> * grub2/linux_cmdline_default: quiet
>   grub-pc/chainload_from_menu.lst: true
>
>
>
> _______________________________________________
> Pkg-grub-devel mailing list
> pkg-grub-de...@lists.alioth.debian.org
> http://lists.alioth.debian.org/mailman/listinfo/pkg-grub-devel
>
>   


-- 
Regards
Vladimir 'φ-coder/phcoder' Serbinenko

=== modified file 'disk/raid.c'
--- disk/raid.c	2010-01-20 08:12:47 +0000
+++ disk/raid.c	2010-02-24 09:56:45 +0000
@@ -625,13 +625,10 @@
       grub_dprintf ("raid", "Scanning for RAID devices on disk %s\n", name);
 
       disk = grub_disk_open (name);
-      if (!disk)
-        return 0;
 
-      if ((disk->total_sectors != GRUB_ULONG_MAX) &&
-	  (! grub_raid_list->detect (disk, &array)) &&
-	  (! insert_array (disk, &array, grub_raid_list->name)))
-	return 0;
+      if (disk && (disk->total_sectors != GRUB_ULONG_MAX) &&
+	  (! grub_raid_list->detect (disk, &array)))
+	insert_array (disk, &array, grub_raid_list->name);
 
       /* This error usually means it's not raid, no need to display
 	 it.  */
@@ -640,7 +637,8 @@
 
       grub_errno = GRUB_ERR_NONE;
 
-      grub_disk_close (disk);
+      if (disk)
+	grub_disk_close (disk);
 
       return 0;
     }

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to