Linux installation won't boot due to GRUB "no such device" error

37,150

Solution 1

The solution was just to put the GRUB loader (MBR?) on the correct drive. In this case, what loaded in Linux as /dev/sdc and (hd2) loaded in GRUB as (hd0).

Solution 2

I got the same error due to an ill marked UUID in the bootloader and This guy had the answer for me along with these available commands in grub recover mode.

Essentially first, you need to identify the drive and partition that has the grub menu files typically located in /boot/grub

ls [to identify your drive and partition options]
ls (hdx,p)/ [to identify which partition has the /boot folder]

Then, you can load the boot menu manually from the drive and partition you found above.

set prefix="(hdx,p)/boot/grub"
set root="(hdx,p)"
insmod normal
normal

In my case, I modified the UUID of our boot drive manually and purposefully, updated the grub menu and fstab, but forgot to load a new bootloader to update the UUID and/or drive in the bootloader. Then, the drives were not in the order expected in grub and the above took care of it all; it got the menu back so I could get back in and update the bootloader with the new UUID information

Share:
37,150

Related videos on Youtube

Uros
Author by

Uros

Updated on September 18, 2022

Comments

  • Uros
    Uros over 1 year

    I think I've exhausted all I know to do, so I'm sending up the flares. I'll try to cover it all (albeit, in pieces), so please be patient.

    I decided to install Linux Mint 11 where I previously had Ubuntu 10.10. Before this install, I had a partition with Windows XP, which--at some time in the distant past--I used to dual boot into. I removed the partition in this install.

    After installation, the system fails to boot. After the check for a CD/DVD, it prints:

    error: no such device: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    GRUB rescue>
    

    There were no problems booting Ubuntu. I seem to recall a similar issue last time I did an install (instead of an upgrade) to Ubuntu. It's been a while, but I thought I fixed it using FIXMBR and/or FIXBOOT from the XP CD. Those did not work this time.

    The GRUB rescue> prompt seems to be broken. Even help doesn't work. I am able to ls, which yields:

    GRUB rescue> ls
    (hd0) (hd0,msdos1) (hd1) (hd1,msdos1) (hd2) (hd2,msdos5) (hd2,msdos3) (hd2,msdos2) (hd2,msdos1)
    

    Further, I don't know what this device is. I can't find a matching UUID under /dev/disk/by-uuid. For that matter, there are no UUIDs for my booting hard drive (sda, below). My setup is a Frankenbox. I know not to rely on device enumeration in such a mix, but they're given below for easy discussion.

    • Ch 0 Master: 250GB PATA (sda)
      • sda1
    • Ch 0 Slave: none
    • Ch 1 Master: 80GB SATA (sdb)
      • sdb1: /
      • sdb2: /home
      • sdb3: swap
    • Ch 1 Slave: DVD SATA
    • SATA expansion card: 250GB SATA (sdc)
      • sdc1

    I thought I'd struck gold when I discovered some lingering (and confounding) RAID metadata on sda. The drive hadn't shown up in the Linux install before, but did after using dmraid -r -E /dev/sda. However, the boot failure persisted.

    Until just now, I could use the Mint install CD to "Boot from Local Drive", which would indeed take me to my installation on sdb1. After using the CD to boot to the drive, and running the below, I've worsened the problem to giving a GRUB> prompt instead of booting to the drive.

    # GRUB-install --no-floppy /dev/sdb1
    # update-GRUB
    GRUB> find /boot/GRUB/stage1
    GRUB> root (hd1,0) # result of above
    GRUB> setup (hd0)
    

    There's definitely a mismatch, because sdb, which has 3 partitions, seems to be (hd2) at the GRUB rescue> prompt, but (hd1) when actually booted. However, if I've used UUIDs (and I think I have), this shouldn't be a problem. Using the live CD, I see sdb1:/boot/GRUB/menu.list to contain

    # kopt=root=UUID=[UUID of sdb1]
    ...
    # groot=[UUID of sdb1]
    

    The root problem, as I understand it, is that GRUB is, for some reason I don't understand, trying to boot a device that doesn't exist. I don't know how to determine what it's looking for by the UUID given. I don't see any UUIDs for anything on sda.

    And now, I can't even boot to the drive using the CD.

    Update:

    I thought putting the /boot partition on the same drive as the MBR might help, so I added sda2, set the boot flag, and reinstalled (which is probably overkill).

    I again get the grub rescue> prompt, but now, when I ls, I get

    grub rescue> ls
    (hd0) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1) (hd2) (hd2,msdos3) (hd2,msdos2) (hd2,msdos1)
    

    So, sda is no more (hd0) at this prompt than sdb is (hd1). I don't know why it's so misaligned, nor why it matters. I may try again, putting /boot on sdc/(hd0).

    • Uros
      Uros over 12 years
      Could you explain your edit, @studiohack? I wrote the grub prompts in lowercase, as that's how they appear onscreen. Further, /boot/GRUB/menu.list is most certainly an invalid path, as the Linux filesystem is case-sensitive.
    • studiohack
      studiohack over 12 years
      my apologies, that was an automatic correction when I edited out the 'thanks'.
  • slhck
    slhck over 10 years
    Could you perhaps edit your post and explain how exactly to use it?
  • Abdessamad Idrissi
    Abdessamad Idrissi over 7 years
    how? could you please elaborate?
  • Uros
    Uros over 7 years
    Ha, no, not 5 years later.
  • Abdessamad Idrissi
    Abdessamad Idrissi over 7 years
    haha no worries.. the solution by @Damon worked for me.. but thanks anyway
  • Damon
    Damon over 7 years
    As a note, I was moving disks again and no matter what I did I could not seem to get the boot loader to point to the UUID of the new disk even though grub.cfg had all new UUIDs. The easiest solution was to boot from the new disk with the OP error, run through manually booting via the above, then running through "grub-mkconfig", then "update-grub", then "grub-install /dev/newdisk" in the OS running from the new disk.
  • ckujau
    ckujau over 6 years
    Thank you for guiding us through this atrocious Grub syntax (insmod normal, wow...), with these magic commands I was able to boot this machine again :-)
  • Douglas Gaskell
    Douglas Gaskell about 6 years
    This works great, however, I have to do this every single restart.... even after the new grub install