What is GRUB?

GRUB stands for GRand Unified Bootloader and is a GNU bootloader that can boot a variety of operating systems from Linux, Mach4, vSTA, DOS, NT 3.51, the *BSD variants and any generic OS you can add to it with its easy to use boot menu.

GRUB is a bootloader that takes away all the complexities out of trying to boot your os by doing it for you. GRUB can handle a variety of filesystems from MS-DOS FAT systems, Linux ext2fs (Second Extended File System), Amiga FFS (Fast File System) and three "generic" executable's types, ELF files, FreeBSD a.out files and "generic" executable's (any file with a valid multiboot header).


Where can I get GRUB from?

Currently GRUB is at version 0.5.96 (as of writing) and the main GRUB homepages is


Grub and DJGPP A.OUT files produced by LD

DJGPP's linke (LD) can produce AOUT files, one of the formats that GRUB nativly supports for loading of kernel files. Unfortunatly for us the DJGPP AOUT is neither the FreeBSD A.OUT nor the NetBSD A.OUT format.

To get your DJGPP to output files that are correctly supported by GRUB, you need to either, alter the grub source code (not a good thing to do since its not official!), write a multiboot header into your coder (within first 4kb), or alter djgpp's LD linker to output desired formats, ELF, or Free/NetBSD A.OUT formats.


Grub and NASM ELF files

ELF files that are produced by NASM "-f elf" are object / relocatable files, not pure flat executable files, and require further linking in order to produce an ELF executable file that can be loaded by grub.


Grub and Watcom ELF files

Watcom is another compiler that supports ELF files, but versions 10.6 and below produce broken ELF files that run at offset 0x00000000.

Versions higher than 10.6 may work correctly, if anyone has 11.n and would like to verify true or false for me, please do so.