LUV gets network boot support

Ricardo Neri of Intel submitted a 13-part patch to LUV, to add network boot support. Hurray, remote boot option, instead of a local-only boot media! Excerpt from patch’s comments:

This patch series intend to add support to but LUV from the network. This is a fairly complex patchset and comprises several domains:

== Preparation work
Patch 01 prepares from the LUV test manager to boot from the network by removing all the assumptions that it was booting from a disk.

Patch 02. When booting from the network, BITS will not have a disk on which save its results. Thus, we drop support for results logging in physical disk and rely completely on CPIO archives passed to Linux as ramdisks [1]. This change should not impact disk boots.

== Support for shared memdisks
Patches [03-07]. The bulk of the work for network but is in provisioning GRUB to share a memkdisk. BITS runs as a chainloaded GRUB image from LUV GRUB. BITS saves its results on the disk that is then visible to LUV GRUB and Linux. When booting from the network, we don’t have a disk to which write and we must rely on a memdisk.

The EFI Loaded Image protocol interface structure described in the UEFI specification contains a LoadOptions member that can be used to obtain data that is relevant to the loaded image. On the LUV GRUB side, the EFI chainloader is modified to pass to the loaded image not only command-line parameters but binary data: a handle to the LUV GRUB memdisk. This is a safe operation since memory for the disk is allocated via the UEFI AllocatePages call and will also be visible to the chainloaded image. In the BITS GRUB side, functionalty is added to parse the contents of the LoadOptions member of the EFI Loaded Image protocyol structure. If a memdisk is added, it will be used.

== Support bitbake builds for both disk and network boot ==
Patches [08-13]. Images for network both and disk boot are built differently. For instance, when building for network boot, ‘(memdisk)’ needs to be used as root in GRUB. This is not needed for disk boots. Furthermore, when building a disk image, luv-live-image ‘bitbake’-depends on GRUB as the the latter needs to be present at the time of bulding the image. When building for netboot, the dependency is inverted: GRUB depends on the existence of the memdisk filesystem as it will be embedded into the GRUB image.Given all these different build-time configurations, a new distro configuration file is used: luv-netbot.conf. This configuration file is identical to luv.conf but adds the luv-netboot parameter as a DISTRO_FEATURES item to instruct different compilation the aforementioned components.

[1]. https://lists.01.org/pipermail/luv/2016-February/000852.html

More information:
https://lists.01.org/pipermail/luv/2016-February/000895.html

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s