Next: , Previous: , Up: Top   [Contents][Index]


25 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.

BIOSCoreboot
BIOS chainloadingyesno (1)
NTLDRyesno (1)
Plan9yesno (1)
Freedosyesno (1)
FreeBSD bootloaderyescrashes (1)
32-bit kFreeBSDyescrashes (2,6)
64-bit kFreeBSDyescrashes (2,6)
32-bit kNetBSDyescrashes (1)
64-bit kNetBSDyescrashes (2)
32-bit kOpenBSDyesyes
64-bit kOpenBSDyesyes
Multibootyesyes
Multiboot2yesyes
32-bit Linux (legacy protocol)yesno (1)
64-bit Linux (legacy protocol)yesno (1)
32-bit Linux (modern protocol)yesyes
64-bit Linux (modern protocol)yesyes
32-bit XNUyes?
64-bit XNUyes?
32-bit EFI chainloaderno (3)no (3)
64-bit EFI chainloaderno (3)no (3)
Appleloaderno (3)no (3)
MultibootQemu
BIOS chainloadingno (1)no (1)
NTLDRno (1)no (1)
Plan9no (1)no (1)
FreeDOSno (1)no (1)
FreeBSD bootloadercrashes (1)crashes (1)
32-bit kFreeBSDcrashes (6)crashes (6)
64-bit kFreeBSDcrashes (6)crashes (6)
32-bit kNetBSDcrashes (1)crashes (1)
64-bit kNetBSDyesyes
32-bit kOpenBSDyesyes
64-bit kOpenBSDyesyes
Multibootyesyes
Multiboot2yesyes
32-bit Linux (legacy protocol)no (1)no (1)
64-bit Linux (legacy protocol)no (1)no (1)
32-bit Linux (modern protocol)yesyes
64-bit Linux (modern protocol)yesyes
32-bit XNU??
64-bit XNU??
32-bit EFI chainloaderno (3)no (3)
64-bit EFI chainloaderno (3)no (3)
Appleloaderno (3)no (3)
ia32 EFIamd64 EFI
BIOS chainloadingno (1)no (1)
NTLDRno (1)no (1)
Plan9no (1)no (1)
FreeDOSno (1)no (1)
FreeBSD bootloadercrashes (1)crashes (1)
32-bit kFreeBSDheadlessheadless
64-bit kFreeBSDheadlessheadless
32-bit kNetBSDcrashes (1)crashes (1)
64-bit kNetBSDyesyes
32-bit kOpenBSDheadlessheadless
64-bit kOpenBSDheadlessheadless
Multibootyesyes
Multiboot2yesyes
32-bit Linux (legacy protocol)no (1)no (1)
64-bit Linux (legacy protocol)no (1)no (1)
32-bit Linux (modern protocol)yesyes
64-bit Linux (modern protocol)yesyes
32-bit XNUyesyes
64-bit XNUyes (5)yes
32-bit EFI chainloaderyesno (4)
64-bit EFI chainloaderno (4)yes
Appleloaderyesyes
ia32 IEEE1275
BIOS chainloadingno (1)
NTLDRno (1)
Plan9no (1)
FreeDOSno (1)
FreeBSD bootloadercrashes (1)
32-bit kFreeBSDcrashes (6)
64-bit kFreeBSDcrashes (6)
32-bit kNetBSDcrashes (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 chainloaderno (3)
64-bit EFI chainloaderno (3)
Appleloaderno (3)
  1. Requires BIOS
  2. Crashes because the memory at 0x0-0x1000 isn’t available
  3. EFI only
  4. 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
  5. Some modules may need to be disabled
  6. Requires ACPI

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

26 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_DIRdirectory containing the required kernels
GRUB_CBFSTOOLcbfstoll from Coreboot package (for coreboot platform only)
GRUB_COREBOOT_ROMempty Coreboot ROM
GRUB_QEMU_OPTSadditional options to be supplied to QEMU

Required files are:

kfreebsd_env.i38632-bit kFreeBSD device hints
kfreebsd.i38632-bit FreeBSD kernel image
kfreebsd.x86_64, kfreebsd_env.x86_64same from 64-bit kFreeBSD
knetbsd.i38632-bit NetBSD kernel image
knetbsd.miniroot.i38632-bit kNetBSD miniroot.kmod.
knetbsd.x86_64, knetbsd.miniroot.x86_64same from 64-bit kNetBSD
kopenbsd.i38632-bit OpenBSD kernel bsd.rd image
kopenbsd.x86_64same from 64-bit kOpenBSD
linux.i38632-bit Linux
linux.x86_6464-bit Linux

Next: , Previous: , Up: Top   [Contents][Index]