Next: Troubleshooting, Previous: Platform-specific operations, Up: Top [Contents][Index]
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) |
PowerPC, IA64 and Sparc64 ports support only Linux. MIPS port supports Linux and multiboot2.
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: Troubleshooting, Previous: Platform-specific operations, Up: Top [Contents][Index]