WIP: requirements for GRUB2 on ARM

It is proposed that we should work on porting Grub2 to ARM, to run in two different environments:

  • u-boot
  • UEFI

such that we can standardise on Grub2 as the bootloader of choice for modern ARM platforms. Current platforms are shipped with various versions of u-boot, while it is expected that in future this will change and UEFI will become the standard for most platforms. Chain-loading Grub2 from each of these will allow:

  • A standardised boot method which is well-understood by most existing Linux users and developers
  • Much more flexibility in available filesystems (including newer options like btrfs) which will not be supported directly by u-boot or UEFI; adding support in grub is much easier

Grub2 already seems reasonably portable, with versions that run on x86, mips, ppc, ia64 and sparc. A minimal attempt to port to ARM was started by Colin Watson, but abandoned some time ago.

The initial work for u-boot shall include:

  • Investigate Colin's ARM work and extend or replace it as appropriate such that a basic Grub2 binary will compile on ARM
  • Use the u-boot API for console access such that ARM Grub2 will be able to interact with the user on a serial console
  • Use the u-boot API for block access such that ARM Grub2 will be able to read files from supported block devices such as SD/MMC and SATA
  • Test the u-boot Grub2 binary on well-supported u-boot target devices such as the Panda board and iMX53 loco board

The next steps shall include:

  • Plumb into the UEFI APIs available for console and block access such that ARM Grub2 on UEFI will have similar capabilities to Grub2 on u-boot
  • Test basic support on a well-supported UEFI target such as the XXXX
  • Investigate extending functionality for networking
  • Investigate other featueres: options for loading kernels

Acceptance criteria

  • Grub running on u-boot on Versatile Express and one other board. Features to demonstrate:
    • Able to display text on console output
    • Able to read user input
    • Able to load kernel and initrd from block device and boot them (FAT or ext2 filesystem)
      • SD and SATA/IDE minimum requirement.
    • Able to load files from other filesystems (exercise Grub2 filesystem support)

Build and usage information

Build and usage instructions have been moved to the LEG section of the wiki.

LEG/Engineering/Grub2 (last modified 2012-11-24 00:01:53)