Grub is short for GNU GRand Unified Bootloader. To be simply put, it’s a boot loader package from the GNU Linux project. It’s the common and reference implementation of a multiboot Linux system. It allows you to choose which operating system or specific kernel to boot into.
In this article, we’ll be looking into figuring out some common grub errors and hopefully, work out a fix for them.
Repairing a broken Grub 2 bootloader:
There are tons of us here who broke their grub thanks to autoupdates through apt or similar. Hopefully, this will allow them an way to fix their system without reinstall.
Grub now features an advanced rescue mode, truly a godsend for people who somehow messed their MBR tables up.
You want to trigger that and get into grub. Then execute the commands below to get back into an working desktop first.
ls
set prefix=(hdX,Y)/boot/grub
set root=(hdX,Y)
set
ls /boot
insmod /boot/grub/linux.mod
linux /vmlinuz root=/dev/sdXY ro
initrd /initrd.img
boot
The X and Ys are to be filled in with your own HDD information. If you only have one HDD, it’ll be X=0, Y=1 and so on.
At this point, you should atleast be able to boot up normally. You’re almost done.
sudo update-grub
sudo grub-install /dev/sdX
Execute those two commands, replacing X with the partition your linux is installed on. For me, it was ‘a’. Voila! You’ve fixed your broken ‘auto-updated’ MBR records.
Fixing grub error 17/15
Grub error 17 is one of the most common error messages that you’re likely to encounter using the Grub bootloader. The root cause behind it is a messed up partition table disk order.
To fix this, grab a live cd and boot into your desktop.
Execute the following:
sudo fdisk –l
You’re likely to get something like the following:
Disk /dev/sdb: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000dc2a4
Device Boot Start End Blocks Id System
/dev/sdb1 1 1275 10238976+ fd Linux raid autodetect
/dev/sdb2 1275 91074 721306624 fd Linux raid autodetect
/dev/sdb3 91074 91201 1022976 82 Linux swap / Solaris
Partition table entries are not in disk order
If the bolded line exists, you’ve just found your problem.
Fixing this is easy. Execute the following.
sudo fdisk /dev/hda
hda as in the whole hard disk, not hda1 or stuff like that.
choose option x (extra functionality (experts only)) and enter.
then select f (fix partition order) and enter.
then select option w (write table to disk and exit), and enter. You can exit now.
Now, you need finalize this in grub.
$ sudo grub
grub > root (hd0,1)
grub > setup (hd0)
grub > quit
Obviously, you need to know which HDD houses your OS and replace the 0,1 and hd0 accordingly.
Congratulations, you’ve just fixed Grub Error 17. Grub error 15 can be fixed in the same way as well.