chore: include kernel modules in rootfs as sysext

This commit is contained in:
Lars Sjöström 2025-03-20 16:06:31 +01:00
parent 91191a2947
commit a7de3101a8
No known key found for this signature in database
2 changed files with 22 additions and 28 deletions

View file

@ -35,17 +35,10 @@ mkdir rootfs
cp -prP ${patosPkgs.rootfs}/* rootfs/
find rootfs/ -type d -exec chmod 755 {} \;
# package kernel modules as sysext
pkgName="patos-kernel-modules-${version}"
mkdir -p ./tree/usr/lib/extension-release.d
cat << EOF > ./tree/usr/lib/extension-release.d/extension-release.patos-kernel-modules
ID=patos
IMAGE_ID=patos-kernel-modules
IMAGE_VERSION=${version}
VERSION_ID=patos
EOF
cp -Prp rootfs/usr/lib/modules ./tree/usr/lib/modules && rm -rf rootfs/usr/lib/modules
tar -cJf $pkgName.tar.xz -C ./tree . --owner=root:0 --group=root:0 && rm -rf tree
# package kernel modules as sysext (will reduce the image size a little bit (~3MB))
mkdir rootfs/etc/extensions
rm -rf rootfs/usr/lib/modules
cp ${patosPkgs.kernel}/patos-kernel-modules* rootfs/etc/extensions/
# set default target to multi-user
ln -sf multi-user.target rootfs/usr/lib/systemd/system/default.target
@ -137,23 +130,6 @@ ReadOnly=1
Verify=no
EOF
cat <<EOF > rootfs/etc/sysupdate.d/30-kernel-modules.transfer
[Source]
Type=url-tar
Path=${updateUrl}
MatchPattern=patos-kernel-modules-@v.tar.xz
[Target]
Type=subvolume
Path=/var/lib/extensions
MatchPattern=patos-kernel-modules-@v
CurrentSymlink=patos-kernel-modules
[Transfer]
Verify=no
EOF
# Initial partitioning
cat <<EOF > init.repart.d/10-root.conf
[Partition]

View file

@ -22,6 +22,8 @@
pahole,
kmod,
ubootTools,
erofs-utils,
cryptsetup,
fetchpatch,
rustc,
rust-bindgen,
@ -224,6 +226,8 @@ lib.makeOverridable (
python3Minimal
kmod
hexdump
erofs-utils
cryptsetup
]
++ optional needsUbootTools ubootTools
++ optionals (lib.versionAtLeast version "5.2") [
@ -496,6 +500,20 @@ lib.makeOverridable (
# Delete empty directories
find -empty -type d -delete
pkgName="patos-kernel-modules"
mkdir -p $out/tree/usr/lib/extension-release.d
cat << EOF > $out/tree/usr/lib/extension-release.d/extension-release.$pkgName
ID=patos
IMAGE_ID=$pkgName
IMAGE_VERSION=${version}
VERSION_ID=patos
EOF
cp -Prp $out/lib/modules $out/tree/usr/lib/modules
find $out/tree -type d -exec chmod 0755 {} \;
mkfs.erofs --all-root -zlz4hc,12 -C1048576 -Efragments,dedupe,ztailpacking $out/$pkgName.raw $out/tree/
veritysetup format --root-hash-file $out/$pkgName.roothash $out/$pkgName.raw $out/$pkgName.verity
chmod -R 755 $out/tree && rm -rf $out/tree
'';
requiredSystemFeatures = [ "big-parallel" ];