Solving Boot Problems with Grub - 2nd Edition
NOTE: if you read the tutorial and are still experiencing difficulties and would like help, you are asked to start a new topic on the forums.
Please do NOT reply to this thread to ask a technical question. Replies to THIS thread should be corrections and enhancements on the tutorial/howto only.
Thanks in advance for your co-operation.
This "How To" has been written to address some boot problems that people often find themselves bumping into.
It makes use of a number of different techniques to solve the problems (as per usual, Linux has more than one ways of accomplishing the same thing).
It makes use of the Grub bootloader, but does not replace the full Grub documentation, which can be found here :- http://www.gnu.org/software/grub/manual or by entering info grub on your Linux PC.
One note up front though, Grub has two main parts. There is the part that runs from your mbr (see below) and there are files (configuration and others) that live in the /boot/grub/ folder.
I have not attempted to deal with the Lilo bootloader (my next project).
I've tried to address the two main problems that people have, these are :-
I've just loaded / re-loaded Microsoft Windows and now I can't get into Linux!
All I get is either a "grub" or a "grub>" prompt when I try and boot!
The examples you'll find here are all from my own PC. I run a PC with a number of hard disks and a number of different operating systems, as well as three different Linux distributions. But don't let this put you off, if you have a simpler set-up, what I say here will work for you as well.
If you have SCSI attached hard disks, then replace the "hd", in my examples, with "sd" .
................Windows has stopped me booting Linux
........................Fedora (or Redhat) Rescue CD
........................Mandrake rescue CD
........................Getting a Grub boot diskette
...............................Naming hard disks and partitions
................All I get is either a "grub>" prompt or just "grub" when I try and boot
........................Contents of the /boot/grub/grub.conf file
................If you're still having boot problems
Windows has stopped me booting Linux
A very common occurrence. What happens is that Uncle Bill does not accept that any other operating system (O/S) apart from one created by Microsoft should be allowed to run on a PC. So, when you load / re-load any of Uncle Bill's O/Ss it will overwrite a part of your hard disk called the Master Boot Record (mbr). This is the bit that tells your PC, during boot up, where to find the operating system.
Linux has been designed to happily co-exist with any other O/S. It achieves this by using something known as a boot loader. A boot loader is a piece of system software that allows you to choose which O/S you wish to boot into. The boot loader that I'm discusing in this HowTo is called Grub (GRand Unified Bootloader).
Later on I discuss how to re-install Grub, but first we must boot the PC to give us access to either Grub or Linux.
If you have created, perhaps as part of the install process, a rescue diskette, then simply put it in the PC, reboot (*see footnote). You should end up with a functioning Linux, then goto the "Re-installing Grub" part of this HowTo.
If you have the original installation CDs (and the first one boots), then put CD1 in you PC and boot (*see footnote). Then follow the "Rescue CD" procedures.
Following are the procedures for Fedora (or Redhat) and for Mandrake.
Fedora (or Redhat) Rescue CD
The commands and keys to enter are enclosed, below, in double quotes "", please do not include these double quotes when you enter the command or press the key.
Linux will then start to load (from the CD).
-> At the first prompt, press the "F5" key
-> At the next prompt, type "linux rescue" and press the "enter" key.
You now have Linux up and running, but it's based on the CD's Linux, so you need to jump across to your hard disk's Linux by :-
-> From the text menu select the language of choice - I selected English.
-> From the text menu select the keyboard type of choice - I selected uk (the main thing this does is make sure that national characters are correctly done).
-> From the text menu select whether or not you want the network interface up - I selected no, as I do not need it for this rescue.
-> I was then presented with a request to tell the rescue CD where my root (/) partition is. You may not get this, remember, I've got a half a dozen partitions on my PC. I selected the appropriate hard disk partition.
-> At the this point you will get a shell command prompt, mine looked like this "sh-2.05b#" .
Nothing will appear to happen, but you will now have a Linux centered on your hard disk. Go to the Re-installing Grub part of this HowTo.
-> At the shell command prompt enter "chroot /mnt/sysimage"
note: to reboot, enter exit followed by exit again.
Mandrake rescue CD
The commands and keys to enter are enclosed, below, in double quotes "", please do not include these double quotes when you enter the command or press the key.
Nothing much will appear to have happened, but you will have been left in Linux that is centered on your hard disks rather than your CD-ROM.
-> At the first prompt, press the "F1" key
-> At the next prompt type "rescue" and press "enter"
You will then be given a text menu withe the following options :-
Re-Install Boot Loader
Restore Windows Boot Loader
Mount your partition under /mnt
Go to console
Doc: what's addressed by this Rescue
-> You can, if you wish, select the first option (Re-install bootloader) or ...
-> Select the "Mount your partition under /mnt" option, followed by the "Go to console" option
This will leave you at a shell command prompt.
-> Enter "chroot /mnt" .
Go to the Re-installing Grub part of this HowTo.
Note. to reboot, press Ctrl Alt Del all at the same time.
Getting a Grub boot diskette
To do this we need two files which are available from one of our moderator's (Dolda2000) web site.
note:- the rawwrite.exe file is available from the /dosutils/ folder on most Linux distributions, but I'm writing this part as a "if all else fails" type of thing.
Download these onto your PC (or any PC for that matter).
Run the rawrite program to copy the grub.img file onto a pre-formatted floppy diskette. The Grub.img file contains the first stages in loading the Grub boot loader.
note:- once this has been done, you will not be able to read that diskette. This is how it should be).
Now, boot your PC with the floppy diskette you just created (*see footnote) . You will get a text based screen looking something like this :-
You can now start looking for the Grub files that are already on your PC's hard disk drive.
GRUB version 0.92 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
First you will need to know what Grub calls the hard disk drive partition that holds the required files.
A quick aside :- There are three ways of defining hard disk drives and their partitions. The first, that you're most probably familiar with, is Windows/MS-DOS letters (such as C: or D: ).
The second is Linux's method, which is to give the first device (hard disk drive or CD-ROM drive) on the first IDE (ribbon) cable the name /dev/hda, the second device (hard disk drive or CD-ROM drive) on the first cable is called /dev/hdb, the first device (hard disk drive or CD-ROM drive) on the second cable is called /dev/hdc and the second device on the second cable is called /dev/hdd .
So, you've got the names hda, hdb, hdc, and hdd for all of your four possible IDE attached devices, although you probably only have a hard disk on hda and a CD ROM / DVD drive on hdb.
The hard disks are, probably, cut up into partitions that are numbered from one. So the first partition on the first hard disk attached to the first IDE cable will be called /dev/hda1, while the second will be called /dev/hda2 and, for further example, the fifth partition on the second hard disk on the second IDE cable would be called /dev/hdd5.
Get the idea?
Now to the third way of naming a hard disk and partition. Grub uses the letters "hd" followed by a number starting at zero to name the hard disks. To denote a particular partion a commar and a further number, again starting at zero is added. All of this is surrounded by brackets ().
So to Grub, the first hard disk drive attached to the first IDE cable is called (hd0) , and to specify the first partition on that drive you would need to type (hd0,0)
And here is a list of equivalence :
And when partitions are also included (I've only shown the first three partitions)
Linux Grub Description
/dev/hda (hd0) First storage device on first IDE cable
/dev/hdb (hd1) Second storage device on first IDE cable
/dev/hdc (hd2) First storage device on second IDE cable
/dev/hdd (hd3) Second storage device on second IDE cable
And how do the Windows / MS-DOS drive letters fit in? Well, they don't really. Each drive letter (C: , D: , etc ) is given to partitions that have the FAT or NTFS file systems on them. Any partitions that do not are simply ignored. How wonderfully typical of Uncle Bill.
/dev/hda1 (hd0,0) First hard disk on first IDE cable, first partition
/dev/hda2 (hd0,1) First hard disk on first IDE cable, second partition
/dev/hda3 (hd0,2) First hard disk on first IDE cable, third partition
/dev/hdb1 (hd1,0) Second hard disk on first IDE cable, first partition
/dev/hdb2 (hd1,1) Second hard disk on first IDE cable, second partition
/dev/hdb3 (hd1,2) Second hard disk on first IDE cable, third partition
/dev/hdc1 (hd2,0) First hard disk on second IDE cable, first partition
/dev/hdc2 (hd2,1) First hard disk on second IDE cable, second partition
/dev/hdc3 (hd2,2) First hard disk on second IDE cable, third partition
/dev/hdd1 (hd3,0) Second hard disk on second IDE cable, first partition
/dev/hdd2 (hd3,1) Second hard disk on second IDE cable, second partition
/dev/hdd3 (hd3,2) Second hard disk on second IDE cable, third partition
Back to Grub
The first command to use is the find command. This is used to find which hard disk and which partition on that hard disk certain files reside. What we are looking for are the Grub files on your hard disk. One of these files is called stage1, which should be in the /boot/grub/ folder.
Normally the find command will be :-
and you'll get returned the hard disk name and partion that has that file (see above for how Grub names these).
However, on my PC I have a separate /boot partition, so that I have to slightly amend the find command (by removing the "/boot" folder name) :-
When there is a separate /boot partition
The output of this command is the name of the hard disk and partition that holds the stage1 file. Why this is important is that where you find this file, you'll also find the kernels, which you may need in the future.
When I entered the above find command, Grub returned (hd0,1).
I used this - (hd0,1) - in my next command - configfile .
The configfile command loads the Grub menu (the one that you should normally get), from where you will be able to load Linux.
Where there is not a separate /boot/ partition.
On my PC the "configfile" command looks like this :-
Where there is a separate /boot/ partition.
Obviously the configfile command on your PC may look different, as the find command may have given you a different hard disk drive partition number. So if the find command returned "(hd0,0)" , then substitute that for the (hd0,1) in my examples, above.
You will now have a working Grub menu, that will allow you to load Linux. Now go to the "Re-installing Grub" bit of this HowTo.
Note:- You can re-install Grub from the "grub>" command prompt, but I find that this only partially works (the pretty graphics splash image is missing). If you want to do this, enter setup (hdx) (hdy,z) , where the "x" is the number of the hard disk whose MBR is going the contain Grub and the "y" and "z" are the hard disk and partition numbers that contain the Grub files (such as "Stage1" - see above).
All I get is "grub" or a "grub>" prompt when I try and boot
I'll address these problems one at a time.
If your PC sticks at grub and maybe even starts beeping at you, then you'll need to re-install Grub on the mbr (master boot record). To do this you'll first need to get at least grub up, if not all of Linux. I've already described the various ways of doing this, above. If none of those methods work, try the following method.
If your PC successfully loads Grub, but leaves you with a grub> prompt, rather than the familiar menu screen, you'll need to get Linux up and running, so that you can amend the configuration file /boot/grub/grub.conf . If this file was readable, you wouldn't be seeing the grub> prompt.
The easiest way past this problem is to use a rescue diskette (if you created one) or the installation CDs (if you have them). I've already discussed this method above in the "Windows has stopped me booting Linux" section. If you can , follow those instructions.
If you can't use a rescue diskette or installation CD, read on.
In some of my example commands, I've deliberately left the "grub>" command prompt in. Please do not type this in when you are entering the command.
The first thing we need to do is find where (as in which hard disk and which partition on that hard-disk) the /boot/ folder is (this is where your kernel and, if needed, your initrd file). The easiest way of doing this is by looking for the grub files, as these are in a folder that hangs off the boot folder (in /boot/grub/).
The find command is used here, and we're looking for the file called stage1 which resides in either the /boot/grub/ or /grub/ folder. I say either /boot/grub/ or /grub/ as it depends upon whether you've got a separate /boot/ partition. If (as is most likely) you don not have a separate /boot/ partition the you're looking for a file called /boot/grub/stage1 , else it's called /grub/stage1.
The command will look like :-
No separate /boot/ partition.
With separate /boot/ partition.
This will return the name of the hard disk and partition that has the grub files on it. The name will be in the form (hdx,y) , where the x is the hard disk's number (counting from zero) and the y is the partition number (again counting from zero).
So, when I tried this, I got (hd0,0) returned to me. This tells me that my /boot/ folder lives on the first partition on hard disk on the first IDE cable. If it had returned (hd0,1) instead, that would have shown me that the /boot/ folder lived on the second partition of the first hard disk on the first IDE cable.
Once we have found this out we need to give Grub this in the next commands.
The root command tells Grub where to base all of its file path searches from. We take the hard disk and partition, given by the find command and use it with the root command, like so :-
Of course the actual figures (here 0 and 0) may be different for your PC.
Next comes the kernel command. This tells Grub the name of the kernel (core part of Linux) that you want to load when, later, you do the boot command.
As there is no way that I can remember the full name of the kernel, I use the tab key facility in Grub (the tab key is that one with two opposite facing horizontal arrows that sit above the Caps Lock key on most keyboards).
So you can see that by entering the first part of the command ( "kernel (hd0,0)/" ) and then pressing the tab key, I've been presented with a list of all possible files in that folder (they're a mix of both Fedora Core 2 and Mandrake 9.2 and 10.0). From this list I'll select the kernel I'm after.
grub> kernel (hd0,0)/
Possible files are: vmlinuz grub kernel.h System.map config lost+found initrd.
img vmlinuz-2.4 initrd-2.4.img kernel.h-2.6.3-4mdk initrd-2.6.3-4mdk.img System
.map-2.6.3-4mdk config-2.6.3-4mdk vmlinuz-2.6.3-4mdk diag1.img diag2.img messag
e-graphic System.map-2.6.5-1.358 System.map-2.4.22-10mdk config-2.4.22-10mdk vm
linuz-2.4.22-10mdk initrd-2.6.5-1.358.img initrd-2.4.22-10mdk.img config-2.6.5-
1.358 kernel.h-2.4.22-10mdk vmlinuz-2.6.5-1.358
grub> kernel (hd0,0)/
There are two ways of selecting the correct kernel (vmlinuz) file. Either go for the symbolic link, which is called "vmlinuz" (yes it should end in a "z" and not in a "x") and, hopefully, points at the correct kernel, or you can select the full file name (which is my method).
For this example I'm going to select vmlinuz-2.6.5-1.358 which, I happen to know, is for my Fedora Core 2 system.
You'll notice that after the file name I put two extra parameters. These are ro for Read Only and root=dev/hda2 which Linux will pass onto the initrd (see later).
grub> kernel (hd0,0)/vmlinuz-2.6.5-1.358 ro root=/dev/hda2
[Linux-bzImage, setup=0x1400, size=0x1235b7]
The more astute of you will have noticed that I've mentioned "root" twice to Grub, once in the root command and once here in the kernel command. And that, in my example, they point at different hard disk partitions. The reason for the difference in my example is that while the /boot/ folder is on its own partition ( (hd0,0) or /dev/hda1 ) the root folder (/) is on a different partition - dev/hda2. You will probably find that this is not the case with your PC. You will probably find that both the /boot/ and the root (/) folders live on the same hard disk partition.
You will still want to add the "root=/dev/hdxy" to your kernel statement , even if both your /boot/ and your root (/) folders are on the same hard disk partition. This is especially true if you use Mandrake. I'll warn you now, Mandrake will give you a kernel panic if you get this bit wrong.
Now comes the initrd command. Most distributions of Linux use the initrd during boot up. If you try omitting this command and you get a "Kernel panic: No init found. Try passing init= option to kernel", then you will have proved to yourself that you definitely need an initrd.
Again there are two ways to tell Grub the name of the initrd file. You can use the symbolic link called "initrd.img" and , hopefully, this will point to the correct file. Or, as I do, you can give the full file name.
In this example, I'm telling Grub to use the initrd file that matches the kernel that I just told it about. And again, I'm making use of the tab key facility, but this time, I'm letting Grub do more of the work for me.
I then narrow the name search a bit by adding the "-2.6." bit
grub> initrd (hd0,0)/initrd
Possible files are: initrd.img initrd-2.4.img initrd-2.6.3-4mdk.img initrd-2.6
And then fill in the very last bit
grub> initrd (hd0,0)/initrd-2.6.
Possible files are: initrd-2.6.3-4mdk.img initrd-2.6.5-1.358.img
Now that we have told Grub about the two files that it will need to boot Linux, all that is left is for us to tell Grub to boot
grub> initrd (hd0,0)/initrd-2.6.5-1.358.img
Linux will now boot.
Now procede to the "Re-installing Grub" part of this HowTo.
If you mis-spell the name of the file, you'll get and Error 15: File not found . If this happens simply re-type the command.
As per usual, there is more than one way to re-install Grub. Such is the way of Linux. You can install / re-install Grub from the Grub menu, or you can do so from within Linux.
Re-installing Grub from the Grub menu or grub> prompt
If you have the normal Grub menu in front of you, press the the c key to get the Grub command prompt.
From the grub> command prompt enter the setup command. This command takes two parameters, the first is the name of the hard disk drive whose master boot record (mbr) is going to hold Grub; the second parameter is the name of the hard disk partition where the Grub files reside (ie. where the /boot/grub/ folder is). Both of these parameters use the Grub method of naming (see my aside above for an explanation).
So, for example, is I want to put Grub onto the mbr on my first hard disk drive and my /boot/grub/ folder lives on the second partition on that drive, the setup command would look like this :-
One problem that I've come across using this method is that , for reasons best known to itself, Grub seems unable to find and display the pretty splash picture.
setup (hd0) (hd0,1)
Re-installing Grub from within Linux
You need to get yourself a shell command prompt up (either open a terminal window or press Ctrl Alt F1 to get a text only console - Ctrl Alt F7 will return you to the GUI), and you will need to be the root (su -) user (either logon as root or enter su - followed by the root password).
From that command prompt you will need to enter the grub-install command. This takes one parameter - the name of the hard disk whose master boor record (mbr) will be having grub installed on it. This being Linux, you will need to use the Linux way of naming hard disk drives (see my aside, above, for an explanation on naming standards) . There is no need specify the hard disk partition that has the /boot/grub/ folder, as the one on the Linux that you are running will be used (this can, if needed, be overridden , see "info grub" for information).
So, if I want to use the mbr on the first hard disk (that is, the hard disk that is master on the first IDE cable) I would type (note, I've deliberately left the command prompt in my example, please don't type it) :-
And that's all there is to it.
[root@localhost root]# grub-install /dev/hda
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
# this device map was generated by anaconda
Contents of the /boot/grub/grub.conf file
Following is the contents of my /boot/grub/grub.conf file. It is probably a little bit more complex than yours, but don't let this put you off.
Each operating system that appears on the Grub menu has its own title statement.
As you can see from mt /boot/grub.conf file (below), I get the choice of booting into Fedora core 2, Mandrake 10.0, Slackware, BeOS, Windows 98 SE, and Fedora Core 1. The first three of these operating systems are on my first hard disk ( hd0 ) , with Fedora core 2 and Mandrake sharing the same /boot/ partition ( hd0,0 ), while the Slackware (reiserfs) partition is very much stand alone. BeOS (a now obsolete, but fun, operating system from http://www.bebits.com) and Windows 98 SE (hey, what can I say :-) ) is on my third hard disk, and my "just in case" Fedora core 1 is on my second hard disk drive.
title Fedora Core 2 (2.6.5-1.358)
kernel /vmlinuz-2.6.5-1.358 ro root=LABEL=/1 hda=38792,16,63
title Mandrake 10.0
kernel /vmlinuz-2.6.3-4mdk ro root=/dev/hda6 hda=38792,16,63
kernel /boot/vmlinuz-ide-2.4.22 ro root=/dev/hda5 hda=38792,16,63
map (hd0) (hd2)
map (hd2) (hd0)
title Windows 98 SE
map (hd0) (hd2)
map (hd2) (hd0)
title Fedora Core 1 (2.4.22-1.2188.nptl)
kernel /boot/vmlinuz-2.4.22-1.2188.nptl ro root=/dev/hdc1
default=0 and timeout=10 means that unless I say otherwise, Grub will load the first operating system (again counting from zero) - Fedora Core 2 .
splashimage=(hd0,0)/grub/splash.xpm.gz is the full name of the pretty splash image that is placed behind the Grub menu.
hda=38792,16,63 is because of a problem that Fedora has with my first disk drive. Linux, unless you tell it otherwise, gets the geometry wrong.
Both BeOS and Win98 need to be on the first hard disk. To make them believe this, I have used the map facility within Grub.
If you're still having boot problems
Grub errors messages
The complete list of error messages are at the end of this HowTo.
The two that I've bumped into are
File note found. Which normally means that you have mistyped the file name. Try using the tab key to help you fill in Grub commands.
Unable to mount (use) the partition. This may be that you have mistyped the number (remember, Grub counts from zero and not one), or that the partition that you pointed at does not have a valid file system.
If you get an error message, while booting, along these lines :-
Your kernel needs something called an "initrd" and can't find one. There are a number of reasons that this can happen.
Kernel panic: No init found. Try passing init= option to kernel
-> You haven't put an initrd statement in your Grub.conf or while at the Grub prompt.
Easy one to fix, just make sure that you have the correct (and correctly spelt) initrd for Grub to pass to the kernel. Have a look at the "All I get is either a "grub>" prompt or just "grub" when I try and boot" section of this HowTo.
-> The "root=" parameter on the kernel statement does not point to the correct hard disk and partition.
The "root=" parameter on the kernel statement often says "root=LABEL=/", which often works just fine, but sometimes you have to be more exact. I've only found this to be a problem when I'm using a separate /boot and root (/) partition, or when Mandrake is involved. So change the "LABEL=/" bit to the partition that contains your root (/) folder. If your root (/) partition is on /dev/hda6, for example, then make the root statement look like "root=/dev/hda6".
-> The initrd file has become corrupted or been deleted.
I'd first like to thank Opnosforatou for the following.
You'll need to get a Linux up using either a distribution/rescue CD or a rescue diskette. Then change the root to your hard disk drive by entering, from the shell command prompt, chroot /dev/hdxy . Where the "x" is the letter of the hard disk and the "y" is the number of the partition. So, if your normal /boot folder is on /dev/hda2 , then enter chroot /dev/hda2/
Then change directory to the /boot folder, move the old .img file out of the way - assuming it's still there - by renaming it to *.img.old , and then create a new initrd by typing mkinitrd -v -f initrd-KERNEL-VERSION.img KERNEL-VERSION . Replace "KERNEL-VERSION" with the version of the kernel that you are trying to load. If you do a full listing of the /boot folder you'll see the same numbers and letters in the full kernel file's name (eg. for the kernel called "vmlinuz-2.4.22-10mdk" , you would want to create an initrd called "initrd-2.4.22-10mdk.img" and the kernel version would be "2.4.22-10mdk" ).
Footnote: - Search order at boot up time. Your PC will look for an operating system in a number of places, in an order set out in the BIOS. If you find that your PC refuses to look for an operating system in either your floppy diskette drive (if you are attempting to boot from a rescue diskette) or from your CD-ROM / DVD drive (if you are trying to boot from an installation CD / DVD), then you'll need to enter your BIOS setup.
To enter the BIOS setup screens you will need to press either the Del key or the F2 key during the POST checks (which one is dependent on your PC). So, turn your PC on and while it is giving you all of those messages about how much RAM you have and what disks it knows about, press the relevant key for your PC. Keep pressing until you are presented with either a blue or grey BIOS screen.
Using a combination of the cursor arrow keys, the tab key and the enter key, navigate your way to the option to change the boot order.
On an AMIBIOS (grey) screen, you will need to move right to the Boot option, press Enter and then move down to the Boot Device Priority option and press Enter , then select the first device, press Enter and select from the list. When you've picked the correct boot device (Floppy or CDROM), press the Esc key to exit up the levels, then move across to Exit and select Exit saving changes .
On an Award BIOS (blue) screen, move down to the Advanced BIOS Features, press Enter, then move down to the First Boot Device, again press Enter and select from the list. Once done, press the Esc key to move back up levels and then across and down to the Save & Exit Setup option.
There are other BIOSs out there , but these are to only two that I have access to. Hopefully, though, you'll have got the idea of what to do, from the above description. And you can always escape out of trouble by repeatedly pressing the Esc key.
Grub Error messages :-
1 : Filename must be either an absolute filename or blocklist
This error is returned if a file name is requested which doesn't
fit the syntax/rules listed in the Filesystem.
2 : Bad file or directory type
This error is returned if a file requested is not a regular file,
but something like a symbolic link, directory, or FIFO.
3 : Bad or corrupt data while decompressing file
This error is returned if the run-length decompression code gets an
internal error. This is usually from a corrupt file.
4 : Bad or incompatible header in compressed file
This error is returned if the file header for a supposedly
compressed file is bad.
5 : Partition table invalid or corrupt
This error is returned if the sanity checks on the integrity of the
partition table fail. This is a bad sign.
6 : Mismatched or corrupt version of stage1/stage2
This error is returned if the install command points to
incompatible or corrupt versions of the stage1 or stage2. It can't
detect corruption in general, but this is a sanity check on the
version numbers, which should be correct.
7 : Loading below 1MB is not supported
This error is returned if the lowest address in a kernel is below
the 1MB boundary. The Linux zImage format is a special case and
can be handled since it has a fixed loading address and maximum
8 : Kernel must be loaded before booting
This error is returned if GRUB is told to execute the boot sequence
without having a kernel to start.
9 : Unknown boot failure
This error is returned if the boot attempt did not succeed for
reasons which are unknown.
10 : Unsupported Multiboot features requested
This error is returned when the Multiboot features word in the
Multiboot header requires a feature that is not recognized. The
point of this is that the kernel requires special handling which
GRUB is probably unable to provide.
11 : Unrecognized device string
This error is returned if a device string was expected, and the
string encountered didn't fit the syntax/rules listed in the Filesystem.
12 : Invalid device requested
This error is returned if a device string is recognizable but does
not fall under the other device errors.
13 : Invalid or unsupported executable format
This error is returned if the kernel image being loaded is not
recognized as Multiboot or one of the supported native formats
(Linux zImage or bzImage, FreeBSD, or NetBSD).
14 : Filesystem compatibility error, cannot read whole file
Some of the filesystem reading code in GRUB has limits on the
length of the files it can read. This error is returned when the
user runs into such a limit.
15 : File not found
This error is returned if the specified file name cannot be found,
but everything else (like the disk/partition info) is OK.
16 : Inconsistent filesystem structure
This error is returned by the filesystem code to denote an internal
error caused by the sanity checks of the filesystem structure on
disk not matching what it expects. This is usually caused by a
corrupt filesystem or bugs in the code handling it in GRUB.
17 : Cannot mount selected partition
This error is returned if the partition requested exists, but the
filesystem type cannot be recognized by GRUB.
18 : Selected cylinder exceeds maximum supported by BIOS
This error is returned when a read is attempted at a linear block
address beyond the end of the BIOS translated area. This generally
happens if your disk is larger than the BIOS can handle (512MB for
(E)IDE disks on older machines or larger than 8GB in general).
19 : Linux kernel must be loaded before initrd
This error is returned if the initrd command is used before
loading a Linux kernel.
20 : Multiboot kernel must be loaded before modules
This error is returned if the module load command is used before
loading a Multiboot kernel. It only makes sense in this case
anyway, as GRUB has no idea how to communicate the presence of
such modules to a non-Multiboot-aware kernel.
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.
22 : No such partition
This error is returned if a partition is requested in the device
part of a device- or full file name which isn't on the selected
23 : Error while parsing number
This error is returned if GRUB was expecting to read a number and
encountered bad data.
24 : Attempt to access block outside partition
This error is returned if a linear block address is outside of the
disk partition. This generally happens because of a corrupt
filesystem on the disk or a bug in the code handling it in GRUB
(it's a great debugging tool).
25 : Disk read error
This error is returned if there is a disk read error when trying to
probe or read data from a particular disk.
26 : Too many symbolic links
This error is returned if the link count is beyond the maximum
(currently 5), possibly the symbolic links are looped.
27 : Unrecognized command
This error is returned if an unrecognized command is entered on the
command-line or in a boot sequence section of a configuration file
and that entry is selected.
28 : Selected item cannot fit into memory
This error is returned if a kernel, module, or raw file load
command is either trying to load its data such that it won't fit
into memory or it is simply too big.
29 : Disk write error
This error is returned if there is a disk write error when trying
to write to a particular disk. This would generally only occur
during an install of set active partition command.
30 : Invalid argument
This error is returned if an argument specified to a command is
31 : File is not sector aligned
This error may occur only when you access a ReiserFS partition by
block-lists (e.g. the command `install'). In this case, you should
mount the partition with the `-o notail' option.
32 : Must be authenticated
This error is returned if you try to run a locked entry. You should
enter a correct password before running such an entry.
33 : Serial device not configured
This error is returned if you try to change your terminal to a
serial one before initializing any serial device.
34 : No spare sectors on the disk
This error is returned if a disk doesn't have enough spare space.
This happens when you try to embed Stage 1.5 into the unused
sectors after the MBR, but the first partition starts right after
the MBR or they are used by EZ-BIOS.