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; }
signature.asc
Description: OpenPGP digital signature