On Thu, 18 Feb 2021 at 10:04, Ilias Apalodimas <ilias.apalodi...@linaro.org>
wrote:

> Hi,
>
> An arch agnostic way was recently added on the kernel, as an alternative
> method
> to load an initrd [1].  The kernel call to the firmware ends up calling the
> protocol with a Device Path End Structure, so the firmware must know which
> initrd to load on the buffer the kernel provides.
>
> The protocol is currently implemented by U-boot and EDK2, which both
> define a way of specifying the initrd to load.  We could use this protocol,
> in order to provide vertical distros a way of loading (kernel, initrd)
> pairs
> without GRUB.  In that case we need a common way for firmware
> implementations
> to define and manage the initrd.  User space applications that control the
> boot
> flow (e.g efibootmgr), should also be able to change the variable
> accordingly.
>
> Looking at the EFI spec and specifically § 3.1.3 Load Options, we can use
> the
> FilePathList[] of the EFI_LOAD_OPTION, which is described as:
>
> "A packed array of UEFI device paths. The first element of the array is a
> device path that describes the device and location of the Image for this
> load option. The FilePathList[0] is specific to the device type. Other
> device
> paths may optionally exist in the FilePathList, but their usage is OSV
> specific.
> Each element in the array is variable length, and ends at the device path
> end
> structure. Because the size of Description is arbitrary, this data
> structure
> is not guaranteed to be aligned on a natural boundary. This data structure
> may
> have to be copied to an aligned natural boundary before it is used."
>
> So FilePatrhList[1-n] are available for OS usage.  There are 3 ways we
> could
> implement that. All 3 ways would allow us to specify multiple initrds (and
> we
> could extend the same logic to DTBs, but that's a different discussion).
> They all re-use the same idea,  prepend a VenMedia DP, which has a GUID.
> We can
> then use that GUID to identify the filetype and behavior of the device
> paths.
>
> this is from "10.3.2.4 Vendor Device Path" in UEFI spec right ?

1. Prepend a VenMedia Device Path in every initrd Device Path. In that case
> FilePathList[] would look like this:
>
> Loaded Image device path - end node - VenMedia - Initrd DP - end node
> - VenMedia - Initrd DP - end node - repeat
>
> 2. Prepend a VenMedia Device Path once. In that case FilePathList[] would
> look
> like this:
>
> Loaded Image device path - end node - VenMedia - Initrd DP - end
> instance - (repeat) - Initrd DP - end node - other DPs
>
> In this case we could use the VenMedia Vendor Defined Data to indicate
> the number
> of device paths that follow, although it's redundant, since each instance
> would
> terminate on the Device Path End Structure.
>
> 3. Use Vendor Defined Data of the VenMedia device path and copy the initrd
> device path(s) in there. In that case the Vendor Defined Data will it self
> be in a device path format with all the initrds we want.
>
> Loaded Image device path - end node - VenMedia - end node - other DPs
>
>
> Any preference on these?
> Is one of them closer to the EFI spec, so we could go ahead and try to
> standardize some of the GUIDs of the VenMedia?
>
>
> [1] https://lkml.org/lkml/2020/2/16/105
>
> Regards
> /Ilias
> _______________________________________________
> boot-architecture mailing list
> boot-architecture@lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/boot-architecture
>


-- 
François-Frédéric Ozog | *Director Linaro Edge & Fog Computing Group*
T: +33.67221.6485
francois.o...@linaro.org | Skype: ffozog
_______________________________________________
boot-architecture mailing list
boot-architecture@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/boot-architecture

Reply via email to