GRUB -- GRand Unified Bootloader

by Erich Boleyn


Master Contents

Some of these contents are included in other pages.

NOTE: Up-to-date versions of this documentation directory can be found at http://www.uruk.org/grub/.


Introduction

GRUB is an attempt to produce a bootloader for a PC that has both the capability to be friendly to beginning or otherwise non-technically interested users and the flexibility to help experts in diverse environments. It is currently most useful for users of at least one of the various free UNIX-like operating systems, though it can be used with most any PC operating system.

We had developed an idea that it would be nice to some of these modules as individual components rather than as a single monolithic image, which was what current bootloaders for the BSD-variants or Linux can do. The Multiboot Proposal was put together as a stab at a fairly general solution to this problem.

This project actually started because we wanted to boot the GNU HURD operating system on top of Mach4 on an IBM PC-compatible system. I then tried to add support for the extra functionality to the standard bootloader used for FreeBSD. The number of things I had to do to get it all to work multiplied until it was obviously necessary to start from scratch with something different.

The name comes from the acronym, but also from the realization that although a grub is one of the smaller (and more annoying) critters, barely worthy of notice, it is nearly ubiquitous and vital to the order of things.


Thanks To


Using GRUB

GRUB has both a simple menu interface for preset options from a configuration file, and a highly flexible command-line for performing any desired combination of boot commands.

The first action GRUB takes after it is loaded is to look for it's configuration file. If one is not found, then it drops into the command-line interface. If one is found, the full menu interface is activated containing whatever entries were found in the file (the command-line is still available via a command from the menu interface).

The menu interface is quite easy to use. It's commands are both intuitive and described onscreen.

The command-line interface is relatively straightforward. Editing of the text on the line can be done via a subset of the functions available in the BASH shell (C-f forward, C-b backward, C-a beginning of line, C-e end of line, C-k kill to end, C-u kill to beginning; the PC left and right arrow keys, HOME, DELETE, and END work as well). The list of commands are a subset of those available in the configuration file, used with exactly the same syntax, but with a few interactive features like various completion listing functions available after the "=" of a command (see the page on filesystem information for details about how to use it).

IMPORTANT NOTE: The root partition setting in GRUB is mostly for it's own use (where it looks for data by default if no device is specified). When possible, the information is passed along to the OS being booted, but it may not be used. For example, here is where each of the major OSes GRUB is being used for gets it's root partition from:


Distribution and Status

It is available under the GNU General Public License.

This should not be an issue for OS developers or users who dislike the terms of the GPL, as it is a separate package, and will not have any licensing impact upon their own work or installation.

There is no specific final release date at this time, but public snapshot releases are available on my FTP site for those interested. I think the official releases will get included in the GNU FTP sites as well.

Here are links to the NEWS file, TODO list, and list of known BUGS.

I *REALLY* appreciate feedback about problems that people are having. The more bugs people report, the more I can fix for the next snapshot.

A few "It worked great" messages would be good too.


erich@uruk.org