[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3. Installation

In order to install GRUB as your boot loader, you need to first install the GRUB system and utilities under your UNIX-like operating system (see section How to obtain and build GRUB). You can do this either from the source tarball, or as a package for your OS.

After you have done that, you need to install the boot loader on a drive (floppy or hard disk). There are two ways of doing that - either using the utility grub-install (see section Invoking grub-install) on a UNIX-like OS, or by running GRUB itself from a floppy. These are quite similar, however the utility might probe a wrong BIOS drive, so you should be careful.

Also, if you install GRUB on a UNIX-like OS, please make sure that you have an emergency boot disk ready, so that you can rescue your computer if, by any chance, your hard drive becomes unusable (unbootable).

GRUB comes with boot images, which are normally put in the directory ‘/usr/lib/grub/i386-pc’. If you do not use grub-install, then you need to copy the files ‘stage1’, ‘stage2’, and ‘*stage1_5’ to the directory ‘/boot/grub’, and run the grub-set-default (see section Invoking grub-set-default) if you intend to use ‘default saved’ (see section default) in your configuration file. Hereafter, the directory where GRUB images are initially placed (normally ‘/usr/lib/grub/i386-pc’) will be called the image directory, and the directory where the boot loader needs to find them (usually ‘/boot/grub’) will be called the boot directory.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 Creating a GRUB boot floppy

To create a GRUB boot floppy, you need to take the files ‘stage1’ and ‘stage2’ from the image directory, and write them to the first and the second block of the floppy disk, respectively.

Caution: This procedure will destroy any data currently stored on the floppy.

On a UNIX-like operating system, that is done with the following commands:

 
# cd /usr/lib/grub/i386-pc
# dd if=stage1 of=/dev/fd0 bs=512 count=1
1+0 records in
1+0 records out
# dd if=stage2 of=/dev/fd0 bs=512 seek=1
153+1 records in
153+1 records out
#

The device file name may be different. Consult the manual for your OS.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 Installing GRUB natively

Caution: Installing GRUB’s stage1 in this manner will erase the normal boot-sector used by an OS.

GRUB can currently boot GNU Mach, Linux, FreeBSD, NetBSD, and OpenBSD directly, so using it on a boot sector (the first sector of a partition) should be okay. But generally, it would be a good idea to back up the first sector of the partition on which you are installing GRUB’s stage1. This isn’t as important if you are installing GRUB on the first sector of a hard disk, since it’s easy to reinitialize it (e.g. by running ‘FDISK /MBR’ from DOS).

If you decide to install GRUB in the native environment, which is definitely desirable, you’ll need to create a GRUB boot disk, and reboot your computer with it. Otherwise, see Installing GRUB using grub-install.

Once started, GRUB will show the command-line interface (see section The flexible command-line interface). First, set the GRUB’s root device(4) to the partition containing the boot directory, like this:

 
grub> root (hd0,0)

If you are not sure which partition actually holds this directory, use the command find (see section find), like this:

 
grub> find /boot/grub/stage1

This will search for the file name ‘/boot/grub/stage1’ and show the devices which contain the file.

Once you’ve set the root device correctly, run the command setup (see section setup):

 
grub> setup (hd0)

This command will install the GRUB boot loader on the Master Boot Record (MBR) of the first drive. If you want to put GRUB into the boot sector of a partition instead of putting it in the MBR, specify the partition into which you want to install GRUB:

 
grub> setup (hd0,0)

If you install GRUB into a partition or a drive other than the first one, you must chain-load GRUB from another boot loader. Refer to the manual for the boot loader to know how to chain-load GRUB.

After using the setup command, you will boot into GRUB without the GRUB floppy. See the chapter Booting to find out how to boot your operating systems from GRUB.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3 Installing GRUB using grub-install

Caution: This procedure is definitely less safe, because there are several ways in which your computer can become unbootable. For example, most operating systems don’t tell GRUB how to map BIOS drives to OS devices correctly—GRUB merely guesses the mapping. This will succeed in most cases, but not always. Therefore, GRUB provides you with a map file called the device map, which you must fix if it is wrong. See section The map between BIOS drives and OS devices, for more details.

If you still do want to install GRUB under a UNIX-like OS (such as GNU), invoke the program grub-install (see section Invoking grub-install) as the superuser (root).

The usage is basically very simple. You only need to specify one argument to the program, namely, where to install the boot loader. The argument can be either a device file (like ‘/dev/hda’) or a partition specified in GRUB’s notation. For example, under Linux the following will install GRUB into the MBR of the first IDE disk:

 
# grub-install /dev/hda

Likewise, under GNU/Hurd, this has the same effect:

 
# grub-install /dev/hd0

If it is the first BIOS drive, this is the same as well:

 
# grub-install '(hd0)'

Or you can omit the parentheses:

 
# grub-install hd0

But all the above examples assume that GRUB should use images under the root directory. If you want GRUB to use images under a directory other than the root directory, you need to specify the option ‘--root-directory’. The typical usage is that you create a GRUB boot floppy with a filesystem. Here is an example:

 
# mke2fs /dev/fd0
# mount -t ext2 /dev/fd0 /mnt
# grub-install --root-directory=/mnt fd0
# umount /mnt

Another example is when you have a separate boot partition which is mounted at ‘/boot’. Since GRUB is a boot loader, it doesn’t know anything about mountpoints at all. Thus, you need to run grub-install like this:

 
# grub-install --root-directory=/boot /dev/hda

By the way, as noted above, it is quite difficult to guess BIOS drives correctly under a UNIX-like OS. Thus, grub-install will prompt you to check if it could really guess the correct mappings, after the installation. The format is defined in The map between BIOS drives and OS devices. Please be quite careful. If the output is wrong, it is unlikely that your computer will be able to boot with no problem.

Note that grub-install is actually just a shell script and the real task is done by the grub shell grub (see section Invoking the grub shell). Therefore, you may run grub directly to install GRUB, without using grub-install. Don’t do that, however, unless you are very familiar with the internals of GRUB. Installing a boot loader on a running OS may be extremely dangerous.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.4 Making a GRUB bootable CD-ROM

GRUB supports the no emulation mode in the El Torito specification(5). This means that you can use the whole CD-ROM from GRUB and you don’t have to make a floppy or hard disk image file, which can cause compatibility problems.

For booting from a CD-ROM, GRUB uses a special Stage 2 called ‘stage2_eltorito’. The only GRUB files you need to have in your bootable CD-ROM are this ‘stage2_eltorito’ and optionally a config file ‘menu.lst’. You don’t need to use ‘stage1’ or ‘stage2’, because El Torito is quite different from the standard boot process.

Here is an example of procedures to make a bootable CD-ROM image. First, make a top directory for the bootable image, say, ‘iso’:

 
$ mkdir iso

Make a directory for GRUB:

 
$ mkdir -p iso/boot/grub

Copy the file ‘stage2_eltorito’:

 
$ cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub

If desired, make the config file ‘menu.lst’ under ‘iso/boot/grub’ (see section Configuration), and copy any files and directories for the disc to the directory ‘iso/’.

Finally, make a ISO9660 image file like this:

 
$ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
    -boot-load-size 4 -boot-info-table -o grub.iso iso

This produces a file named ‘grub.iso’, which then can be burned into a CD (or a DVD). mkisofs has already set up the disc to boot from the boot/grub/stage2_eltorito file, so there is no need to setup GRUB on the disc. (Note that the -boot-load-size 4 bit is required for compatibility with the BIOS on many older machines.)

You can use the device ‘(cd)’ to access a CD-ROM in your config file. This is not required; GRUB automatically sets the root device to ‘(cd)’ when booted from a CD-ROM. It is only necessary to refer to ‘(cd)’ if you want to access other drives as well.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated on January 3, 2022 using texi2html 1.82.