Ubuntu – Grub rescue no such device, also cannot access BIOS

bootgrub2

I purchased an Acer Aspire M5-481PT-6688 which came preloaded with Windows 8. I wiped that, reinstalled my own bloatware-free copy, and tried to dual boot Ubuntu 13.04 on it. It has a hybrid drive, so when I installed it running alongside Windows, Ubuntu was installed to the SSD and Windows is on the HHD. I later removed Ubuntu via formatting the SSD and now I'm stuck at the grub rescue> prompt. The error says: no such device. No matter what key combo I press (F2, F8, F10, F12, Esc, Del) I cannot access my BIOS nor can I boot from the CD/DVD drive or USB.

Best Answer

Using the awesome guide of drs350 in ubuntuforums.org (kudos to him) you can boot up your live CD and even install Ubuntu from the grub rescue> prompt. Here the exact steps:

Preconditions

This procedure will work for:

  • Ubuntu family releases using Grub 2
  • Malformed Grub 2 menu (grub.cfg)
  • Missing Linux kernels & initramfs images
  • Corrupted system folders (not including the module folder)

In order for this procedure to work, you must:

  • Have an Ubuntu family Live CD ISO image on a partition accessible from the Grub rescue prompt.
  • Grub modules from a previous installation must be found and properly loaded.

The procedure will not work for:

  • Missing Grub 2 modules (normally in /boot/grub or /usr/lib/grub/i386-pc )
  • Corrupted Ubuntu ISO images
  • Corrupted partition structure - "ls" returns only "(hd0)"

Boot Procedure

  1. Download the ISO.

  2. Locate the Ubuntu partition and the folder containing the Grub modules.

    The Grub folder containing the modules must be located so the correct modules can be loaded. This folder would have been created during the initial installation of Ubuntu and should be located in the Ubuntu partition. This folder would normally be located at either (hdX,Y)/boot/grub or (hdX,Y)/usr/lib/grub/i386-pc

    Find your existing Ubuntu partition and the module folder.

    ls                               # List the known drives (hdX) and partitions (hdX,Y)
    ls (hdX,Y)/                      # List the contents of the partition's root
    ls (hdX,Y)/boot/grub             # Normal location of the Grub 2 modules.
    ls (hdX,Y)/usr/lib/grub/i386-pc  # Alternate location of the Grub 2 modules.
    
    • ls - should return all known drives (hdX) and partitions (hdX,Y)
    • ls (hdX,Y)/ - should show the contents of the root directory of the partition.

      • If you get an "error: unknown filesystem" this is not your Ubuntu partition; more on that later.
      • If this is the Ubuntu partition, you will see the Ubuntu folders, including lost+found/, home/, boot/ and vmlinuz and initrd.img. Use this address as the first part of the next command.
    • ls (hdX,Y)/boot/grub - should display several dozen *.mod files. This is the folder you are looking for.

      • If you don't find the modules, try the alternate location: ls (hdX,Y)/usr/lib/grub/i386-pc
  3. Load the modules.

    set prefix=(hdX,Y)/<path to modules>
    

    This command must correctly point to the folder containing the Grub modules. The address should be the one in the previous section which displayed the modules. Examples:

    set prefix=(hd0,5)/boot/grub
    set prefix=(hd1,1)/usr/lib/grub/i386-pc
    

    Load modules:

    insmod linux
    insmod loopback
    insmod iso9660
    insmod fat        # If ISO is located on fat16 or fat32 formatted partition.
    insmod ntfs       # If ISO is located on an NTFS formatted partition.
    insmod nftscomp   # If NTFS compression is used on the partition. Load if you aren't sure.
    

    A "file not found" error means that the path in the prefix is incorrect or the specific module does not exist. The prefix setting may be reviewed with the set command. Rerun the "set prefix=" command with the proper path.

  4. Locate the Ubuntu ISO file.

    Using the same combinations of ls commands, locate the Ubuntu ISO image.

    ls (hdX,Y)/
    
    • You are looking for contents including the ISO, such as ubuntu-10.04.1-desktop-i386.iso
    • Expand the path if the ISO image is not located in the / folder.
    • If you receive an error: unknown filesystem you may need to load the filesystem module (such as ntfs or fat. Return to the previous section for guidance.)
  5. Create the loopback device.

    loopback loop (hdX,Y)/<path to ISO>/<ISO-name.iso>
    

    Example:

    loopback loop (hd1,1)/ubuntu-10.04.1-desktop-i386.iso
    
  6. Load the Linux kernel and initrd image.

    set root=(loop)
    linux /casper/vmlinuz boot=casper iso-scan/filename=/<ISO-name.iso> noprompt noeject
    initrd /casper/initrd.lz
    

    If the path to the ISO or filename is not correct, the boot will halt at the BusyBox screen and produce a message stating "can't open /dev/sr0: No medium found".

    Note: If the ISO file is not in the / folder, include the path in the iso-scan/filename= entry. See second example.

    Examples:

    linux /casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-10.04.1-desktop-i386.iso
    linux /casper/vmlinuz boot=casper iso-scan/filename=/my-iso/ubuntu-10.04.1-desktop-i386.iso
    
  7. Boot.

    That should be it. If the commands ran without any messages/errors, the commands were accepted as entered. It's now time to boot:

    boot
    

Install Ubuntu - From Live CD ISO

Note on Oneiric Daily ISO Installs: The current daily build of Oneiric Ocelot requires login to get to the Desktop. Choosing the default user will not allow use of sudo as no password exists for the user. Select 'Other', then username 'Ubuntu' and leave the password field blank. This will allow the use of sudo to unmount the /isodevice during the installation process.

Installation onto your hard drive is possible from a booted ISO file. A CD is not required. An Internet connection is recommended but not required. Without a connection packages installed from the ISO will not be updated and additional packages will not be downloaded.

  1. Boot to the Live CD Desktop using the above ISO boot procedure.

    Note: If you have a large amount of RAM you may be able to use the toram option. This will allow the system to boot into memory and permit automatic unmounting of the isodevice1 during the installation. /isodevice must be unmounted for a successful installation. If /isodevice cannot be unmounted by the installer, the installation will fail unless the user forces its unmounting. This forced unmounting is included in the procedure detailed later in this section.

    • If you would like to try the toram option, replace the linux line in the above and use this one instead:

      linux /casper/vmlinuz boot=casper iso-scan/filename=/<ISO-name.iso> noprompt noeject toram --
      
    • If /isodevice can be unmounted by the installer at the prompt, the installation will continue.
    • If you have insufficient memory (it failed on my system with 3GB) and start the installation, the installer will be unable to unmount /isodevice, the install will fail and the system may freeze. Reboot and complete all the steps in the "Boot Procedure" section. Do not repeat this subsection and continue below.
  2. Open a terminal: Applications, Accessories, Terminal

  3. Unmount /isodevice

    sudo umount -l -r -f /isodevice
    

    Start the installation procedure by double-clicking the "Install Ubuntu" icon.

    The installation will proceed as would any installation of the same release, similar to the Alternate CD.

The guide continues to a network install procedures, which may not be useful for this specific case, also I can't vouch for it effectiveness, so I'm leaving that part outside my answer.

If the guide needs improvement, feel free to comment. I checked until I could (since I won't break my grub just to test out).

Source:

http://ubuntuforums.org/showthread.php?t=1599293&p=9987717#post9987717

Related Question