-
Notifications
You must be signed in to change notification settings - Fork 49
Two-stage initrd drops custom OEM content from appended initrds #2023
Description
Description
With the introduction of the minimal initrd / two-stage initrd process in Flatcar (see flatcar/bootengine#110), custom OEM content provided via an additional initrd is no longer propagated into the full (stage-2) initrd. This breaks the documented workflow for supplying a custom OEM via initrd extension (https://www.flatcar.org/docs/latest/installing/bare-metal/booting-with-pxe/#adding-a-custom-oem)
Previously, additional initrds appended during PXE boot were merged and their contents (e.g., /usr/share/oem) were available to Ignition. After the minimal-init change, the additional initrd contents are not preserved when switching from stage-1 to stage-2.
Impact
Providing custom OEM content via initrd extension is no longer possible.
We rely on this mechanism to supply per-machine Ignition configurations when booting stateless bare-metal systems. In our environment, using ignition.config.url is not an option due to security constraints (no external config fetch allowed).
As a result, existing PXE-based provisioning workflows that depend on custom initrd overlays no longer function.
Environment and Steps to Reproduce
- Boot the Flatcar PXE image.
- Append a custom initrd containing
/usr/share/oem/config.ign, as described in:
https://www.flatcar.org/docs/latest/installing/bare-metal/booting-with-pxe/#adding-a-custom-oem - After boot, check:
ls -la /usr/share/oem - Ignition does not process the supplied config.
Expected behavior
The introduction of the minimal-init / two-stage initrd process should not break the documented mechanism for supplying custom OEM content via additional initrds.
Additional information
I experimented with placing the custom files under /oem instead of /usr/share/oem, based on the bind-mount logic in minimal-init
However, this approach does not work with the current dracut implementation, and the contents still do not survive into stage-2.
A quick fix would be to cp -rp /usr/share/oem /realinit/usr/share to avoid breaking any existing /usr/share/oem overlays with the 2-stage initrd process (https://github.com/flatcar/bootengine/blob/7d9895ce55617b18a78294975197975ac17b5bc3/minimal-init#L193-L196)
Metadata
Metadata
Assignees
Labels
Type
Projects
Status