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

