38

I recently repartitioned my HDD and I have damaged GRUB on my system. On boot I get the GRUB rescue prompt and I have to go through the following steps in order to boot normally:

set root=(hd0,msdos6)
set prefix=(hd0,msdos6)/boot/grub
insmod normal
normal

(Those steps were found on another post on here!).

I'm very tired of repeating this on every boot, how do I permanently fix GRUB?

4

8 Answers 8

20

To fix grub rescue go with following steps:

  • First thing is we have to start our OS only then after we can fix grub.

    #to start OS-->
    error: unknown filesystem.
    Entering rescue mode...
    grub rescue>
    

    When you see such an error first we have to check for “Filesystem” is ext2'

    grub rescue> ls        # type 'ls' and hit enter to see drive partition.
    (hd0) (hd0,msdos6) (hd0,msdos5) (hd0,msdos4) ...   # you will see such things 
    

this are our drives now we have to check which one is ext2.

grub rescue>ls (hd0,msdos6)
error: disk 'hd,msdos6' not found.

go for another drives until you get “Filesystem is ext2”.

grub rescue>ls (hd0,msdos5)
error: disk 'hd,msdos5' not found.
grub rescue>ls (hd0,msdos2)
(hd0,msdos2): Filesystem is ext2        # this is what we want

now set the path

grub rescue>set boot=(hd0,msdos2)
grub rescue>set prefix=(hd0,msdos6)/boot/grub
grub rescue>insmod normal
grub rescue>normal
  • Now just fix grub by following command on any Ubuntu

    sudo grub-install /dev/sda
    sudo apt-get update
    # to update grub
    sudo apt-get upgrade
    

make sure you must update grub after login into OS

5
  • 1
    The OP already knows how to boot into his OS. This answer could be more concise.
    – Elder Geek
    Nov 3, 2016 at 14:06
  • 2
    This answer was helpful to me. My problem was not exactly the same as the original question, so the additional information became useful.
    – retroj
    Feb 10, 2017 at 15:09
  • 1
    +1 This fixed by problems on a failed KDE Neon install. Nov 20, 2017 at 19:39
  • 2
    error: file '/boot/grub/i386-pc/normal.mod' not found What should I do? Jun 26, 2019 at 12:37
  • 1
    @roshan-sherkure why do you do set prefix=(hd0,msdos6)/boot/grub when the line before you have (hd0,msdos2)? - why (hd0,msdos6) instead of (hd0,msdos2)
    – jstm
    Sep 1, 2022 at 20:59
8

Solve ultimate case of grub rescue failure: problems: 1.i386-pc not found****normal mode not working cp not working search.file not working. All can be solved by the following commands, Works with Ubuntu 18.04 also. Step1: Find the root folder containing directory.

ls

For example, if the root folder is in (hd0, gpt4), then type

this is how it looks

ls (hd0, 4)/

You will see some files or folders:

my root file is in (hd0, gpt4)

Now if you are lucky then do the following:

set root=(hd0, 4)
set prefix=(hd0, 4)/boot/grub/
insmode normal
normal

If you are lucky then it will solve your problem. Sometimes people have problems like cannot find 1386-pc folder. In that case you have to look where is your grub folder. If you have a problem like:

boot/grub/i386-pc/normal.mod not found

In this case, you need to find the folder grub2. If you have grub2 and inside that folder you could have your i386-pc folder. Then you need to type

prefix=(hd0, 4)/grub2/

it will work. If you do not have grub2 and could not locate i386-pc folder then do the following:

grub rescue>set root=(hd0, 4)
grub rescue>set prefix=(hd0, 4)/usr/lib/grub
grub rescue>insmode normal
grub rescue>normal

after executing this command your grub rescue mode will go to grub menu. Now you can execute the linux command.

linux comand

grub>set root =(hd0, 4)
grub>set prefix= (hd0, 4)/boot
grub>insmaod linux
grub>linux vmlinuz.....-generic
grub>intrd (hd0, 4)/boot/...-generic
grub>boot

It will bring you to the recovery mode. From there you can choose from the several available recovery options. If it does not help then you need to download an ubuntu os, for example ubuntu 18.04. You can download from the following link: ubuntu link

Make a bootable drive and open your computer with that live disk. It will not harm any of your documents. See a video on how to do that. Now you have to find your i386-pc folder. It will be in

rootContainingDirectory-usr-lib-grub

Now copy i386-pc to boot/grub/ folder. you may have a permission problem to overcome that type the following command:

sudo nautilus

Now right click on that directory and change owner to ubuntu live session user

follow the video: permission change

Now after you paste it in the boot/grub folder restart and remove the usb drive. This time use the 1st set of commands, it will work. If the cp command is working then you can do this from grub menu also.

1
  • Use "insmod" instead of "insmode". Typos are fatal here.
    – Alex
    Apr 14, 2020 at 0:47
7

I would try running update-grub in order to build grub.conf / grub.cfg again.

You can try also using grub-install, but I think this one won't help.

If you want to read more, check first which version you have (GRUB 1 or 2) by running:

dpkg -l | grep grub

If you have GRUB 2, you can use the following tutorial: http://www.dedoimedo.com/computers/grub-2.html

Of course be careful dealing with GRUB as we are talking about the boot process, which is a sensitive mechanism.

1
  • 2
    grub-install <correct-drive, i.e. /dev/sda> and update-grub2 finally did it for me on Ubuntu 15.04 Jun 28, 2015 at 11:39
6

It seems to me that update-grub assembles the grub.cfg, but you also need to (re-)run grub-install (or grub-setup?) to update the MBR / boot sectors with the basic info -- on which partition to find the grub.cfg file & apparently these modules.

0
5

When you get a GRUB rescue prompt, it means that the GRUB bootloader cannot locate its modules from the partition that contains them in /boot/grub. The reason for this is that the code that fits in the drive MBR record is tiny, and so its main purpose is to locate and load the rest of the bootloader code. Once it's loaded its modules it can present the GRUB menu and handle the rest of the boot process. If it can't find the modules, it presents a very limited rescue prompt.

So, what you are seeing is totally normal if you repartitioned, thereby breaking the reference the bootloader had to the partition containing the boot modules.

Since you can boot manually, the simplest fix is to manually boot and reinstall the bootloader in the MBR so that it has the correct reference to your partition. The way to do that is:

sudo grub-install /dev/sda

This assumes you boot from /dev/sda (most cases, but if not, replace it with the correct drive).

This solution is far simpler than using the boot-repair, but if you are unsure this may be more suitable.

1
  • 1
    +1 for explaining what's going on in easy-to-understand terms.
    – monotasker
    Apr 25, 2014 at 13:57
2

The simplest way would be:

sudo apt-get purge grub-pc grub-pc-bin

Then:

sudo apt-get install grub-pc grub-pc-bin
1
  • 2
    This is a sledgehammer approach that will likely work, but it's simpler just to reinstall the bootloader to update the reference to the partition (which was broken by repartioning).
    – bcbc
    Dec 15, 2012 at 17:38
0

I just couldn't make it work only with grub instructions, even making it carefully. Using a live bootable Ubuntu 20.04 USB, I opened a terminal and ran the Boot Repair Tool as follows:

sudo add-apt-repository -y ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
0

I had this same issue and could not get it resolved using Grub-Rescue using suggestions here.

Just booting off a Ubuntu live media (DVD or USB) and installing the boot-repair-tool resolved it for me

How to install the Boot-Repair tool in an Ubuntu live disc?

You must log in to answer this question.