Attached is a stripped-down version of what I have today uploaded to launchpad. The full set can be accessed through bzr branch lp:~leif-lindholm/linaro-grub/arm-uboot Missing from this patch is libfdt and the crc32-functions I mentioned in my previous email, although they have not been stripped from the build configuration files. This is a port of GRUB to the ARM architecture, running on top of the U-Boot firmware. The "U-Boot API", created by Rafal Jaworowsky , for the FreeBSD Loader provides the hardware interface layer. Console supported on serial port using the termios subsystem. Block device support verified with SDcard and SATA. Usage information: - grub-mkimage generates a kernel with a U-Boot header masquerading it as a Linux kernel. - U-Boot Environment variable grub_bootdev can be used to specify the root device. - Block devices must be initialized by U-Boot before calling GRUB if they are to be accessible. (By calling "mmc rescan", "ide reset" or similar.) - New "devicetree" command for loading a .dtb from a filesystem. This has been verified on the following platforms: - ARM Versatile Express (4xCortex-A9) - Marvell Armada XP DB-78460-BP. - Trim Slice Imported code: - The "U-Boot API". - aeabi_* libgcc helper functions from linux/arch/arm/lib. Limitations: - Dynamic linker implemented only for ARMv7-A Thumb instruction set. - Currently runs uncached, with MMU off. - No support for ATAG parsing or rewriting, only supports device tree as a means of passing information to the Linux kernel. (If an ATAG list is passed from U-Boot, it can be passed on unmodified, but the "linux" command will not pass on command line parameters.) - Currently a statically linked kernel, requires RAM at 0x08000000. TODO: - linux.init.arm, linux-initramfs.arm, bootcheck-linux-arm, grub-mkrescue Potential future developments: - Implement networking support. - Make grub kernel a fully relocateable ELF. - Implement chainloader. - Enable caches/MMU. Comments welcome.