Next: Error messages produced by GRUB, Previous: Outline, Up: GNU GRUB manual [Contents][Index]

## 21 Supported boot targets

X86 support is summarised in the following table. “Yes” means that the kernel works on the given platform, “crashes” means an early kernel crash which we hope will be fixed by concerned kernel developers. “no” means GRUB doesn’t load the given kernel on a given platform. “headless” means that the kernel works but lacks console drivers (you can still use serial or network console). In case of “no” and “crashes” the reason is given in footnote.

| BIOS | Coreboot
BIOS chainloading | yes | no (1)
NTLDR | yes | no (1)
Plan9 | yes | no (1)
Freedos | yes | no (1)
FreeBSD bootloader | yes | crashes (1)
32-bit kFreeBSD | yes | crashes (5)
64-bit kFreeBSD | yes | crashes (5)
32-bit kNetBSD | yes | crashes (1)
64-bit kNetBSD | yes | crashes
32-bit kOpenBSD | yes | yes
64-bit kOpenBSD | yes | yes
Multiboot | yes | yes
Multiboot2 | yes | yes
32-bit Linux (legacy protocol) | yes | no (1)
64-bit Linux (legacy protocol) | yes | no (1)
32-bit Linux (modern protocol) | yes | yes
64-bit Linux (modern protocol) | yes | yes
32-bit XNU | yes | ?
64-bit XNU | yes | ?
32-bit EFI chainloader | no (2) | no (2)
64-bit EFI chainloader | no (2) | no (2)
Appleloader | no (2) | no (2)

| Multiboot | Qemu
BIOS chainloading | no (1) | no (1)
NTLDR | no (1) | no (1)
Plan9 | no (1) | no (1)
FreeDOS | no (1) | no (1)
FreeBSD bootloader | crashes (1) | crashes (1)
32-bit kFreeBSD | crashes (5) | crashes (5)
64-bit kFreeBSD | crashes (5) | crashes (5)
32-bit kNetBSD | crashes (1) | crashes (1)
64-bit kNetBSD | yes | yes
32-bit kOpenBSD | yes | yes
64-bit kOpenBSD | yes | yes
Multiboot | yes | yes
Multiboot2 | yes | yes
32-bit Linux (legacy protocol) | no (1) | no (1)
64-bit Linux (legacy protocol) | no (1) | no (1)
32-bit Linux (modern protocol) | yes | yes
64-bit Linux (modern protocol) | yes | yes
32-bit XNU | ? | ?
64-bit XNU | ? | ?
32-bit EFI chainloader | no (2) | no (2)
64-bit EFI chainloader | no (2) | no (2)
Appleloader | no (2) | no (2)

| ia32 EFI | amd64 EFI
BIOS chainloading | no (1) | no (1)
NTLDR | no (1) | no (1)
Plan9 | no (1) | no (1)
FreeDOS | no (1) | no (1)
FreeBSD bootloader | crashes (1) | crashes (1)
32-bit kFreeBSD | headless | headless
64-bit kFreeBSD | headless | headless
32-bit kNetBSD | crashes (1) | crashes (1)
64-bit kNetBSD | yes | yes
32-bit kOpenBSD | headless | headless
64-bit kOpenBSD | headless | headless
Multiboot | yes | yes
Multiboot2 | yes | yes
32-bit Linux (legacy protocol) | no (1) | no (1)
64-bit Linux (legacy protocol) | no (1) | no (1)
32-bit Linux (modern protocol) | yes | yes
64-bit Linux (modern protocol) | yes | yes
32-bit XNU | yes | yes
64-bit XNU | yes (4) | yes
32-bit EFI chainloader | yes | no (3)
64-bit EFI chainloader | no (3) | yes
Appleloader | yes | yes

| ia32 IEEE1275
BIOS chainloading | no (1)
NTLDR | no (1)
Plan9 | no (1)
FreeDOS | no (1)
FreeBSD bootloader | crashes (1)
32-bit kFreeBSD | crashes (5)
64-bit kFreeBSD | crashes (5)
32-bit kNetBSD | crashes (1)
64-bit kNetBSD | ?
32-bit kOpenBSD | ?
64-bit kOpenBSD | ?
Multiboot | ?
Multiboot2 | ?
32-bit Linux (legacy protocol) | no (1)
64-bit Linux (legacy protocol) | no (1)
32-bit Linux (modern protocol) | ?
64-bit Linux (modern protocol) | ?
32-bit XNU | ?
64-bit XNU | ?
32-bit EFI chainloader | no (2)
64-bit EFI chainloader | no (2)
Appleloader | no (2)

1. Requires BIOS
2. EFI only
3. 32-bit and 64-bit EFI have different structures and work in different CPU modes so it’s not possible to chainload 32-bit bootloader on 64-bit platform and vice-versa
4. Some modules may need to be disabled
5. Requires ACPI

PowerPC, IA64 and Sparc64 ports support only Linux. MIPS port supports Linux and multiboot2.

### 21.1 Boot tests

As you have seen in previous chapter the support matrix is pretty big and some of the configurations are only rarely used. To ensure the quality bootchecks are available for all x86 targets except EFI chainloader, Appleloader and XNU. All x86 platforms have bootcheck facility except ieee1275. Multiboot, multiboot2, BIOS chainloader, ntldr and freebsd-bootloader boot targets are tested only with a fake kernel images. Only Linux is tested among the payloads using Linux protocols.

Following variables must be defined:

GRUB_PAYLOADS_DIR | directory containing the required kernels
GRUB_CBFSTOOL | cbfstool from Coreboot package (for coreboot platform only)
GRUB_COREBOOT_ROM | empty Coreboot ROM
GRUB_QEMU_OPTS | additional options to be supplied to QEMU

Required files are:

kfreebsd_env.i386 | 32-bit kFreeBSD device hints
kfreebsd.i386 | 32-bit FreeBSD kernel image
kfreebsd.x86_64, kfreebsd_env.x86_64 | same from 64-bit kFreeBSD
knetbsd.i386 | 32-bit NetBSD kernel image
knetbsd.miniroot.i386 | 32-bit kNetBSD miniroot.kmod.
knetbsd.x86_64, knetbsd.miniroot.x86_64 | same from 64-bit kNetBSD
kopenbsd.i386 | 32-bit OpenBSD kernel bsd.rd image
kopenbsd.x86_64 | same from 64-bit kOpenBSD
linux.i386 | 32-bit Linux
linux.x86_64 | 64-bit Linux

Next: Error messages produced by GRUB, Previous: Outline, Up: GNU GRUB manual [Contents][Index]