grubinstall installs a GNU GRUB boot loader on a fixed disk. It's simpler and easier to understand than the methods that come with the GRUB package.

grub-install is a different program. It is part of the GRUB package.

grubinstall uses a particular method of installing that is simple, easy to understand, and hard to get wrong. In contrast, the GRUB package comes with tools to install in various ways, and those tools are hard to understand (partly because they are poorly documented) and the common methods are equally hard to grasp and easy to mess up.

grubinstall is so simple that it is a small Perl program.

What is different about the way grubinstall installs and the conventional ways of installing GRUB is that grubinstall puts the entire loader in a special contiguous boot area at the beginning of the boot disk, reserved for GRUB, whereas in the conventional methods, most of the loader resides in a filesystem.

The fact that part of the loader resides in a filesystem means a) you can get pretty confused about what happens at GRUB install time versus what happens at boot time; and b) to avoid making your system unbootable, you have to make sure certain files in your filesystem stay in the same backing blocks. That's a violation of the purpose of a filesystem and easy to mess up.

But the fact that grubinstall needs a reserved area on the boot disk means you typically can't trivially switch to using grubinstall on an existing system, because this existing system probably is already using the area at the beginning of the disk for something else. That's why the more complex methods exist. If you want to switch an existing system to use the simpler grubinstall, you first have to relocate the contents of the first partition on your boot disk.

I created grubinstall when I decided to switch to using GRUB instead of LILO to boot my Linux systems. Reading up on GRUB, I was dismayed to find out that it has the same problem that I was trying to escape with LILO: dependence on the storage location of files in the filesystem.

But I was more dismayed by my inability to get a clear picture of how the whole process works, because of a combination of the complexity and the poor documentation. It is very important to me to fully understand the boot process, so I can avoid accidentally making my system unbootable and so I can figure out how to recover if I do. I want to be able to understand unequivocally what will be the effect of recabling a disk, moving system files, copying a disk image, etc.

With filesystem files being accessed both at GRUB install time and at boot time, it took me a long time to figure out what gets accessed when. The tools also are designed to do some of the thinking for me to make installing GRUB easier. But to do that, they have to make some assumptions about my system, and they aren't always valid.

After lots of study and some experimentation, I did come to understand GRUB. I found that there is a simple, robust boot loader under all the mess, which can meet all of my requirements; I don't need any of the features that make it complex. All I needed was a simple program to install it simply. So I wrote it.

For more information, see the manual.

You can download the code from here.

The current release was released in November 2007.

Note that grubinstall does not include GRUB itself; for it to be any use, you have to download the GRUB package separately. Get Grub from the GNU Project.

grubinstall is distributed and maintained by Bryan Henderson (bryanh@giraffe-data.com).