GRUB loading, please wait Error 21

I had Debian squeeze on the 32 bit system I just installed openSUSE 12.1 on. I got through the first boot from the install DVD but failed on rebooting from the hard drive. Debian suqeeze installs GRUB to the MBR.

I used the method given in the first post to repair GRUB.
On trying to boot now I get


GRUB loading, please wait
Error 21

How do I proceed to try and salvage the GRUB bootloader from this point?

On 2012-03-12 00:26, FlameBait wrote:
> How do I proceed to try and salvage the GRUB bootloader from this
> point?

You should not ask questions in this forum. This is where you tell us how
to do things and we do a peer review of the documentation you wrote.

Please repost in the boot-login forum, with full details.


Cheers / Saludos,

Carlos E. R.
(from 11.4 x86_64 “Celadon” at Telcontar)

Please. post nothing else for at least 10 minutes and shall move this to the correct forum.

Thank You,

This thread has been moved and is now open for discussion.

Thank You,

Thread came from here. http://forums.opensuse.org/english/get-technical-help-here/how-faq-forums/unreviewed-how-faq/429971-re-install-grub-quickly-parted-magic.html

Since the thread was open Robin and I saw questions posted to the thread I ask my question there as my question related to that method of repair.

This is my /boo/grub/menu.lst from that machine


# Modified by YaST2. Last modification on Sun Mar 11 22:39:11 PDT 2012
# THIS FILE WILL BE PARTIALLY OVERWRITTEN by perl-Bootloader
# For the new kernel it try to figure out old parameters. In case we are not able to recognize it (e.g. change of flavor or strange install order ) it it use as fallback installation parameters from /etc/sysconfig/bootloader

default 0
timeout 8
##YaST - generic_mbr
gfxmenu (hd0,1)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title openSUSE 12.1 - 3.1.0-1.2
    root (hd0,1)
    kernel /boot/vmlinuz-3.1.0-1.2-default root=/dev/disk/by-id/ata-ST3250823AS_3ND1T4AT-part2 nomodeset resume=/dev/disk/by-id/ata-ST3250823AS_3ND1T4AT-part1 splash=silent quiet showopts vga=0x317
    initrd /boot/initrd-3.1.0-1.2-default

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- openSUSE 12.1 - 3.1.0-1.2
    root (hd0,1)
    kernel /boot/vmlinuz-3.1.0-1.2-default root=/dev/disk/by-id/ata-ST3250823AS_3ND1T4AT-part2 showopts apm=off noresume nosmp maxcpus=0 edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe vga=0x317
    initrd /boot/initrd-3.1.0-1.2-default

This is what I fond for Grub Error 21…

21 : Selected disk does not exist
This error is returned if the device part of a device- or full file name refers to a disk or BIOS device that is not present or not recognized by the BIOS in the system.

This of course is not one of the more normal error codes that we get. Since the device.map file refers to disks by their full name normally, its hard to understand why this might happen. A fdisk -l command from a LiveCD might be helpful to see. You would need to mount the partition not booting from the LiveCD and let us see the /boot/grub/device.map & perhaps the/etc/fstab files for more info.

Thank You,


root@PartedMagic:~# fdisk -l

Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00072dcc

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         262     2103296   82  Linux swap
Partition 1 does not end on cylinder boundary.
/dev/sda2   *         262        2873    20972544   83  Linux
/dev/sda3            2873       30402   221121536   83  Linux

According to this the root / is /dev/sda2 so that is not (hd0,1) as referenced in menu.lst that would be (hd0,2) correct?

The method of editing GRUB given at the URL relating to this indicated shows (hd0,1) when you give it the command:


find /boot/grub/menu.lst

(hd0,1) is the swap partition? I am not sure if the squeeze install that was on this drive before created that swap or the openSUSE installer did. If it was un-formatted some crud from the previous install could be there?
my GRUB repair looked just like http://forums.opensuse.org/english/get-technical-help-here/how-faq-forums/unreviewed-how-faq/429971-re-install-grub-quickly-parted-magic.html

Use findgrub to see where Grub stage1 and stage2 are installed.


$ su -l
# zypper ar [noparse]http://download.opensuse.org/repositories/home:/please_try_again/openSUSE_12.1/[/noparse]   PTA
# zypper refresh -r PTA
# zypper in updategrub
# findgrub -m

and post the output here.

please_try_again the system is un-bootable. I have been accessing the files on it via a PartedMagic 4.5 disk

If you have an openSUSE liveCD, you can install and run findgrub on the live system.

Or just get the script from here: http://www.unixversal.com/linux/openSUSE/findgrub-3.7.2.tgz

I never tried it on partedMagic, but it should work. It works on all other Linux distros I use (i.e Ubuntu, Mint, Fedora, Gentoo, Mandriva, ArchLinux and Gentoo).

If it has enough memory :stuck_out_tongue: It’s only got a gig. I certanly try that as I do have a 32 bit 14.1 Live CD

I have a 32 bit 11.4 live CD so I’ll try that.

Great. Replace 12.1 with 11.4 in the command I gave you before.


linux:/home/linux # findgrub -m
Find Grub Version 3.7.2 - Written for openSUSE Forums

--- DEVICE.MAP: sda is ata drive hd0
--- DEVICE.MAP: - /dev/sda
--- DEVICE.MAP: - /dev/disk/by-id/ata-ST3250823AS_3ND1T4AT
--- DEVICE.MAP: - /dev/disk/by-id/edd-int13_dev80
--- DEVICE.MAP: - /dev/disk/by-id/scsi-SATA_ST3250823AS_3ND1T4AT
--- DEVICE.MAP: - /dev/disk/by-path/pci-0000:00:0f.0-scsi-0:0:0:0
--- DEVICE.MAP: => sda might be BIOS drive hd0
--- DEVICE.MAP:
********************************************************************************

 - reading MBR on disk /dev/sda                       ... --> Legacy GRUB  found in sda MBR     => sda2   0x83 (openSUSE)
 - skipping partition  /dev/sda1      (swap)         
 - reading bootsector  /dev/sda2   *  (LINUX)         ... --> Legacy GRUB  found in /dev/sda2   => sda2   0x83 (openSUSE)
 - reading bootsector  /dev/sda3      (LINUX)         ...

********************************************************************************
WARNING: /boot/grub/device.map not found.
         Displayed BIOS device mapping may be incorrect!
********************************************************************************

It never returned to the su prompt until I gave it a enter.

WARNING: /boot/grub/device.map not found.
         Displayed BIOS device mapping may be incorrect!

This looks like the source of the problem. I can’t say why this would not be created, but the install in not working for the booting part for some reason. The fdisk -l command seemed OK with sda looking like swap, sdb is / root and sdc is /home with sdb being marked active for booting. So, you need to install openSUSE and end up with a device.map file I would say.

Thank You,

Looks to me like there are two grubs listed though. Looks like the one in the mbr is retained from the Debian install that was on this drive previously perhaps?

So, if that were the case and you only use openSUSE, then install Grub into the MBR. It works with ALL openSUSE configurations and only if a dual boot with Windows is there a chance you needed to do anything different. Without device.map, important files are missing and not created. One would need to reinstall grub at minimum to get things going again and for a new install, I would just try the whole thing over again and set grub to load into the MBR from the Installation Booting Section of openSUSE 12.1.

Thank You,

No. He’s running findgrub from the live CD. There is no device.map in /boot/grub on the live system. You can ignore this warning. If you want to check the device.map on the installed system, you should mount /dev/sda2 (for example in /mnt) and look in /mnt/boot/grub.

No. If it were old Debian Legacy Grub, findgrub would say “(Mandriva/ArchLinux/Debian)”, because they have the same signature. It it were Debian Squeeze’s Grub2, findgrub would identify the boot loader as Grub2 (1.98 or 1.99). You have openSUSE’s Grub stage1 installed in both locations.

If you followed the method here http://forums.opensuse.org/english/get-technical-help-here/how-faq-forums/unreviewed-how-faq/429971-re-install-grub-quickly-parted-magic.html ans used

setup (hd0)

You did install Grub into MBR. (?)

But you can do it again … just to make sure.