diff --git a/content/docs/latest/reference/developer-guides/kernel-modules.md b/content/docs/latest/reference/developer-guides/kernel-modules.md index d6403f86..a9fcaf86 100644 --- a/content/docs/latest/reference/developer-guides/kernel-modules.md +++ b/content/docs/latest/reference/developer-guides/kernel-modules.md @@ -34,30 +34,28 @@ cd /mnt/work ```shell modules=/opt/modules # Adjust this writable storage location as needed. -sudo mkdir -p "${modules}" "${modules}.wd" -``` - -Create a mount unit to use `/opt/modules` at boot - `/etc/systemd/system/usr-lib-modules.mount`: -```ini -[Unit] -Description=Custom Kernel Modules -Before=local-fs.target -ConditionPathExists=/opt/modules - -[Mount] -Type=overlay -What=overlay -Where=/usr/lib/modules -Options=lowerdir=/usr/lib/modules,upperdir=/opt/modules,workdir=/opt/modules.wd - -[Install] -WantedBy=local-fs.target -``` - -Enable the unit so this overlay becomes available: - -```shell -sudo systemctl enable --now usr-lib-modules.mount +sudo mkdir -p "${modules}.wd" + +# prepare the structure for kernel-modules sysext +sudo mkdir -p /var/lib/extensions/kernel-modules/usr/lib/{extension-release.d,modules} + +# the kmod depends on current kernel and architecture, so include it in the metadata +# this causes systemd-sysext to skip loading the sysext after upgrade +source /etc/os-release && \ + printf "ID=flatcar\nVERSION_ID=%s\nARCHITECTURE=%s\n" \ + "$VERSION_ID" \ + "$(hostnamectl | grep 'Architecture:' | awk '{print $2}')" \ + | sudo tee /var/lib/extensions/kernel-modules/usr/lib/extension-release.d/extension-release.kernel-modules + +sudo tee /var/lib/extensions/kernel-modules/usr/lib/extension-release.d/extension-release.kernel-modules < +```