LinuxBoot on Ampere Platforms: A new (old) approach to firmware


Vanshidhar Konda, Sr. Principal Software Engineer

In order to support a truly open platform, it is critical to ensure that both the hardware and the accompanying firmware are controlled by the system owner. As a platinum sponsor of OCP, Ampere is committed to moving the industry forward by supporting open standards.

Earlier this month, at the Open Compute Project’s Tech Week conference, I demonstrated LinuxBoot on Ampere® Altra™, using our Mt. Jade 2U platform. Mt. Jade is a dual-socket configuration that supports 160 cores – providing the performance and scalability for a variety of workloads like analytics, databases, web-hosting and Android-in-the-Cloud (AIC).

The demonstration, one of the first showing LinuxBoot on an Arm64 server platform, was part of a panel to showcase firmware covered by the Open System Firmware (OSF) Project. The demo can be seen here with an event registration. I would like to thank the organizers of the OCP Tech Week conference for giving me the opportunity to participate and my fellow panelists from Google, HPE and 9elements. OSF is an open development project that aims to give platform owners more control over the firmware running on their platforms. LinuxBoot and OpenEDK2 are two projects that are great examples of OSF.

LinuxBoot brings back an old idea of using Linux in firmware in place of proprietary code. For modern systems, LinuxBoot replaces specific firmware functionality like the UEFI DXE phase with a Linux kernel and u-root runtime. The Linux kernel is launched as a DXE in flash instead of UEFI shell.

The u-root project has implemented standard Linux utilities in Go. These are compiled into a single binary using busybox mode and it generates the root filesystem image that the Linux kernel loads.

Ampere’s implementation of LinuxBoot uses a minimal image of UEFI to launch LinuxBoot kernel and u-root runtime. Our UEFI implementation is based on EDK2 and LinuxBoot image integration to UEFI image is part of the build process.

The LinuxBoot image itself is based on a community-maintained port for Mt. Jade in the LinuxBoot mainboards repo. This repo contains a Makefile and Linux kernel configuration file that makes it easy to generate the LinuxBoot image that can be embedded into flash. It’s easy to customize the u-root image by modifying the Makefile to include utilities as needed.

The demonstration in the video shows the Mt. Jade 2U platform booting LinuxBoot and interactive u-root shell. It shows how standard Linux commands like cat, ipmitool, dmidecode, dhclient and wget can be used in firmware. The demo concludes by using kexec to boot CentOS 8 installed on disk.

If you want to learn more, please take a look at how we integrated LinuxBoot on edk2-platforms and feel free to provide comments on Github.  You can also experiment with LinuxBoot by signing up for our Early Access Program.



Related Post