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, same from 64-bit kFreeBSD kfreebsd_env.x86_64 knetbsd.i386 32-bit NetBSD kernel image knetbsd.miniroot.i386 32-bit kNetBSD miniroot.kmod. knetbsd.x86_64, same from 64-bit kNetBSD knetbsd.miniroot.x86_64 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