grub: Platform limitations

 
 19 Platform limitations
 ***********************
 
 GRUB2 is designed to be portable and is actually ported across
 platforms.  We try to keep all platforms at the level.  Unfortunately
 some platforms are better supported than others.  This is detailed in
 current and 2 following sections.
 
    All platforms have an artificially GRUB imposed disk size restriction
 of 1 EiB. In some cases, larger disk sizes can be used, but access will
 not be allowed beyond 1 EiB.
 
    LUKS2 devices with size larger than 16 EiB are currently not
 supported.  They can not be created as crypto devices by cryptomount, so
 can not even be partially read from.  LUKS have no limitations other
 than those imposed by the format.
 
    ARC platform is unable to change datetime (firmware doesn't seem to
 provide a function for it).  EMU has similar limitation.
 
    On EMU platform no serial port is available.
 
    Console charset refers only to firmware-assisted console.  gfxterm is
 always Unicode (see Internationalisation section for its limitations).
 Serial is configurable to UTF-8 or ASCII (see Internationalisation).  In
 case of qemu and coreboot ports the refered console is vga_text.
 Loongson always uses gfxterm.
 
    Most limited one is ASCII. CP437 provides additionally
 pseudographics.  GRUB2 doesn't use any language characters from CP437 as
 often CP437 is replaced by national encoding compatible only in
 pseudographics.  Unicode is the most versatile charset which supports
 many languages.  However the actual console may be much more limited
 depending on firmware
 
    On BIOS, network is supported only if the image is loaded through
 network.  On sparc64, GRUB is unable to determine which server it was
 booted from.
 
    Direct ATA/AHCI support allows to circumvent various firmware
 limitations but isn't needed for normal operation except on baremetal
 ports.
 
    AT keyboard support allows keyboard layout remapping and support for
 keys not available through firmware.  It isn't needed for normal
 operation except baremetal ports.
 
    Speaker allows morse and spkmodem communication.
 
    USB support provides benefits similar to ATA (for USB disks) or AT
 (for USB keyboards).  In addition it allows USBserial.
 
    Chainloading refers to the ability to load another bootloader through
 the same protocol
 
    Hints allow faster disk discovery by already knowing in advance which
 is the disk in question.  On some platforms hints are correct unless you
 move the disk between boots.  On other platforms it's just an educated
 guess.  Note that hint failure results in just reduced performance, not
 a failure
 
    BadRAM is the ability to mark some of the RAM as "bad".  Note: due to
 protocol limitations mips-loongson (with Linux protocol) and
 mips-qemu_mips can use only memory up to first hole.
 
    Bootlocation is ability of GRUB to automatically detect where it
 boots from.  "disk" means the detection is limited to detecting the disk
 with partition being discovered on install time.  "partition" means that
 disk and partiton can be automatically discovered.  "file" means that
 boot image file name as well as disk and partition can be discovered.
 For consistency, default install ignores partition and relies solely on
 disk detection.  If no bootlocation discovery is available or boot and
 grub-root disks are different, UUID is used instead.  On ARC if no
 device to install to is specified, UUID is used instead as well.
 
                BIOS           Coreboot       Multiboot      Qemu
 video          yes            yes            yes            yes
 console        CP437          CP437          CP437          CP437
 charset
 network        yes (*)        no             no             no
 ATA/AHCI       yes            yes            yes            yes
 AT keyboard    yes            yes            yes            yes
 Speaker        yes            yes            yes            yes
 USB            yes            yes            yes            yes
 chainloader    local          yes            yes            no
 cpuid          partial        partial        partial        partial
 rdmsr          partial        partial        partial        partial
 wrmsr          partial        partial        partial        partial
 hints          guess          guess          guess          guess
 PCI            yes            yes            yes            yes
 badram         yes            yes            yes            yes
 compression    always         pointless      no             no
 exit           yes            no             no             no
 bootlocation   disk           no             no             no
 
                ia32 EFI       amd64 EFI      ia32           Itanium
                                              IEEE1275
 video          yes            yes            no             no
 console        Unicode        Unicode        ASCII          Unicode
 charset
 network        yes            yes            yes            yes
 ATA/AHCI       yes            yes            yes            no
 AT keyboard    yes            yes            yes            no
 Speaker        yes            yes            yes            no
 USB            yes            yes            yes            no
 chainloader    local          local          no             local
 cpuid          partial        partial        partial        no
 rdmsr          partial        partial        partial        no
 wrmsr          partial        partial        partial        no
 hints          guess          guess          good           guess
 PCI            yes            yes            yes            no
 badram         yes            yes            no             yes
 compression    no             no             no             no
 exit           yes            yes            yes            yes
 bootlocation   file           file           file,          file
                                              ignored
 
                Loongson       sparc64        Powerpc        ARC
 video          yes            no             yes            no
 console        N/A            ASCII          ASCII          ASCII
 charset
 network        no             yes (*)        yes            no
 ATA/AHCI       yes            no             no             no
 AT keyboard    yes            no             no             no
 Speaker        no             no             no             no
 USB            yes            no             no             no
 chainloader    yes            no             no             no
 cpuid          no             no             no             no
 rdmsr          no             no             no             no
 wrmsr          no             no             no             no
 hints          good           good           good           no
 PCI            yes            no             no             no
 badram         yes (*)        no             no             no
 compression    configurable   no             no             configurable
 exit           no             yes            yes            yes
 bootlocation   no             partition      file           file (*)
 
                MIPS qemu      emu            xen
 video          no             yes            no
 console        CP437          Unicode (*)    ASCII
 charset
 network        no             yes            no
 ATA/AHCI       yes            no             no
 AT keyboard    yes            no             no
 Speaker        no             no             no
 USB            N/A            yes            no
 chainloader    yes            no             yes
 cpuid          no             no             yes
 rdmsr          no             no             yes
 wrmsr          no             no             yes
 hints          guess          no             no
 PCI            no             no             no
 badram         yes (*)        no             no
 compression    configurable   no             no
 exit           no             yes            no
 bootlocation   no             file           no