Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions dracut/99setup-root/initrd-setup-root
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ COREOS_BLANK_MACHINE_ID="42000000000000000000000000000042"
MACHINE_ID_FILE="/sysroot/etc/machine-id"

# Allow to rerun the script
if usrbin mountpoint -q /sysroot/etc; then
umount /sysroot/etc
if SYSTEMD_IN_INITRD=0 systemd-confext --root=/sysroot status | grep flatcar-default; then
SYSTEMD_IN_INITRD=0 systemd-confext --root=/sysroot unmerge
fi

function selectiveosreset() {
Expand Down Expand Up @@ -159,9 +159,21 @@ if [ ! -e "/sysroot/etc/.no-dup-update" ]; then
walksysroot /etc overlaycleanup
fi

# Set up overlay mount for /etc (as long as we can't use syscfg for that)
mkdir -p /sysroot/.etc-work
mount -t overlay overlay -o lowerdir=/sysroot/usr/share/flatcar/etc,upperdir=/sysroot/etc,workdir=/sysroot/.etc-work,redirect_dir=on,metacopy=off,noatime /sysroot/etc
# Set up overlay mount for /etc (done here until we have an upstream systemd unit doing it)
# This is done early here so that Ignition and the Flatcar extension fetching and A/B setup can use /etc
mkdir -p /sysroot/var/lib/extensions.mutable/
if [ ! -L /sysroot/var/lib/extensions.mutable/etc ] && [ ! -e /sysroot/var/lib/extensions.mutable/etc ]; then
ln -s /etc /sysroot/var/lib/extensions.mutable/etc
fi
# Workaround until 259: Set SYSTEMD_IN_INITRD because even with --root=
# this would otherwise look for initrd extension metadata.
SYSTEMD_IN_INITRD=0 systemd-confext --root=/sysroot merge
SYSTEMD_IN_INITRD=0 systemd-confext --root=/sysroot status | grep flatcar-default || { echo "error: flatcar-default confext not loaded" ; exit 1 ; }
# Even when the planned sysext/confext .services units are there
# the above call should stay because we first need confext for Ignition
# to have default files but then we need to reload for any user confexts
# to be applied and we can later rely on the confext/sysext .services
# for that while the above call is specific to Flatcar/Ignition.

# PXE initrds may provide OEM. Despite OEM partition being moved to
# /oem in general, we keep checking /usr/share/oem in initrds to avoid
Expand Down
12 changes: 12 additions & 0 deletions dracut/99setup-root/initrd-setup-root-after-ignition
Original file line number Diff line number Diff line change
Expand Up @@ -166,3 +166,15 @@ for NAME in $(grep -h -o '^[^#]*' /sysroot/etc/flatcar/enabled-sysext.conf /sysr
rm -f "/sysroot/etc/extensions/flatcar-${NAME}.raw"
fi
done

# Here we load a second time so that any user-supplied configuration extensions are present at boot
SYSTEMD_IN_INITRD=0 systemd-confext --root=/sysroot refresh
# Then for the first time we can also apply system extensions so that the final system has them at boot
# (done here until we have an upstream systemd unit doing it).
if [ $(readlink -f /sysroot/etc/systemd/system/systemd-sysext.service 2>/dev/null) != "/dev/null" ]; then
if ! SYSTEMD_IN_INITRD=0 systemd-sysext --root=/sysroot merge ; then
echo "ERROR: systemd-sysext failed to set up extensions in initrd, continuing boot" >&2
fi
fi
# Once the planned sysext/confext .services units are there we can remove the two calls above and
# order them to start after initrd-setup-root-after-ignition.service (sysext after confext)
2 changes: 2 additions & 0 deletions dracut/99setup-root/module-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,6 @@ install() {
"${systemdsystemunitdir}/initrd-setup-root-after-ignition.service"
inst_script "$moddir/gpg-agent-wrapper" \
"/usr/bin/gpg-agent"

inst_multiple systemd-sysext systemd-confext
}