Introduction

Background

The Multiboot Specification has helped kernel developers avoid meddling into the realm of bootloaders. The only viable implementation of the Multiboot Specification, the GNU GRand Unified Bootloader (GRUB) (Other implementations, such as the mboot.c32 module for Syslinux, and kboot, exist, but are not as widely used as GRUB), on the other hand, is more widely used for its implementation of the Linux boot protocol than the Multiboot Specification. Furthermore, the Free Software Foundation (FSF) has shown poor interest in the development of the Specification, and there was a gap of more than five years between the last release of GRUB Legacy, GRUB 0.97, and release of the Multiboot Specification version 1.6. Both versions of GRUB also employ several poor mechanisms (An example of this is the fact that GRUB does not verify, or sanitize the memory-map it passes to the kernel. It furthermore utilizes the worst, yet simplest, firmware functions to generate this memory-map) and makes extension of the bootloader to different firmwares difficult.

The Gandalf Specification aims at filling in the gap of a utopic bootloader, and creating a reliable protocol between the bootloader and any bootable application, including a kernel. The protocol allows developers of said bootable applications to use features provided by the firmware, such as, but not limited to, memory detection, generic mode setting, and so forth.

This project has been named Gandalf, which stands for "Generic, AdvaNceD Application Loader (Filesystem aware)", and it is inscribed upon the source that it is the "One Bootloader to rule them all, One Bootloader to find them, One Bootloader to bring them all and in the darkness bind them."

Note: This project bears no connection with the Lord of The Rings.

Terminology

Not a boot-manager

A main point of concern is the currently thin line of separation between a bootloader and a boot manager. While several ongoing bootloader projects also aim to facilitate as a boot manager, from the point of view of the people contributing to Gandalf, a bootloader, whose task is to load the bootable application/Operating Systems (OS) kernel, and a boot-manager, which manages the existence of several OSs on disk, differ entirely in goals, thus being separate projects.

Bootable applications

Usually, the job of the bootloader is to load the concerned OS's kernel. In some cases, though, the developers of the OS might prefer loading an intermediate stage to perform some designated functions. The term "bootable application" or just "application" is used to refer to both the kernel, or any intermediate stage the end-user of this Specification is trying to load.

Target architectures

The Specification tries to be as architecture-generic as possible.

Target firmwares

The Specification targets all widely adopted firmwares, being extensible in its approach.

Target OSs

The Gandalf project was initiated to provide an easily configurable bootloader for OS developers, since currently competing standards fail at doing so. The Specification, thus, does not limit to any particular OS.

Target boot devices

The Specification isn't bound to any particular boot device.