David is currently a software engineer working on LinuxBoot at Google. As a newbie in embedded domain, he is brushing up his C skills lately, through reading kexec code base in kernel. His first taste of embedded system was through an Arduino rover for a robotics challenge with NASA’s Colorado Space Grant Consortium back in college.
LinuxBoot uses kexec to transition to next kernel. Kexec is the lifeline of LinuxBoot. There are two kexec sys calls today. LinuxBoot currently uses kexec file load API, which simply takes file descriptors to kernel, initrd and a cmdline string, and kernel does the heavy lift of processing and transition into next kernel. That has been working great. But as LinuxBoot expands adoptions, there is an increasing number of new requirements that file load kexec can’t help (at least, without pervasive kernel patches). For example, when booting AArch64, user may want to edit the device tree for booting next kernel.
This talk discuss the ongoing kexec workstream under LinuxBoot, such as the support recently added for classic kexec load into LinuxBoot for x86_64 (https://github.com/u-root/u-root/pull/2317), and AArch64 (https://github.com/u-root/u-root/pull/2437) , and behind-the-scene considerations and simplications.