From 0c93a5aaa0a0128fd32e047d59f62a613581f678 Mon Sep 17 00:00:00 2001 From: Harald Sitter Date: Sat, 21 Sep 2024 01:54:00 +0200 Subject: [PATCH] btrfs: compress and simple quota please should help prevent disk space problems Fixes #10 --- mkosi.extra/usr/bin/_calamares@subvol | 4 +++- mkosi.extra/usr/bin/_kdeos-rebuild-efi | 5 +++-- .../lib/systemd/system-preset/50-systemdos.preset | 1 + .../usr/lib/systemd/system/kde-linux-btrfs.service | 13 +++++++++++++ 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 mkosi.extra/usr/lib/systemd/system/kde-linux-btrfs.service diff --git a/mkosi.extra/usr/bin/_calamares@subvol b/mkosi.extra/usr/bin/_calamares@subvol index 5aa424e..349c7ca 100755 --- a/mkosi.extra/usr/bin/_calamares@subvol +++ b/mkosi.extra/usr/bin/_calamares@subvol @@ -23,9 +23,11 @@ umount -R ./* rm -rfv ./* mount -o ro /dev/gpt-auto-root /system -mount -o rw "$device" "$tmpdir" +mount -o rw,compress=zstd:1 "$device" "$tmpdir" cd "$tmpdir" rm -rfv ./* + +btrfs quota enable --simple . btrfs send "/system/@kdeos_$IMAGE_VERSION" | btrfs receive . btrfs subvolume create @home btrfs subvolume create @root diff --git a/mkosi.extra/usr/bin/_kdeos-rebuild-efi b/mkosi.extra/usr/bin/_kdeos-rebuild-efi index 19b1a4a..1304611 100755 --- a/mkosi.extra/usr/bin/_kdeos-rebuild-efi +++ b/mkosi.extra/usr/bin/_kdeos-rebuild-efi @@ -20,7 +20,8 @@ FILES=() HOOKS=(base systemd autodetect modconf kms keyboard block sd-encrypt filesystems fsck systemd-extension plymouth microcode) EOF -echo "rw rootflags=subvol=@kdeos_$IMAGE_VERSION systemd.volatile=overlay systemd.firstboot=false systemd.hostname=kdeos kdeos.live=1 plasma.live.user=live \ +echo "rw rootflags=subvol=@kdeos_$IMAGE_VERSION,compress=zstd:1 \ + systemd.volatile=overlay systemd.firstboot=false systemd.hostname=kdeos kdeos.live=1 plasma.live.user=live \ lsm=landlock,lockdown,yama,integrity,apparmor,bpf \ quiet splash" > cmdline mkinitcpio --config mkinitcpio.conf --generate initrd --kernel "$kernel_version" @@ -31,7 +32,7 @@ ukify build \ --output live.efi # lsm= defaulting to apparmor from https://wiki.archlinux.org/title/AppArmor -echo "rw rootflags=subvol=@kdeos_$IMAGE_VERSION \ +echo "rw rootflags=subvol=@kdeos_$IMAGE_VERSION,compress=zstd:1 \ lsm=landlock,lockdown,yama,integrity,apparmor,bpf \ quiet splash" > cmdline mkinitcpio --config mkinitcpio.conf --generate initrd --kernel "$kernel_version" diff --git a/mkosi.extra/usr/lib/systemd/system-preset/50-systemdos.preset b/mkosi.extra/usr/lib/systemd/system-preset/50-systemdos.preset index 62c7a17..64647d9 100644 --- a/mkosi.extra/usr/lib/systemd/system-preset/50-systemdos.preset +++ b/mkosi.extra/usr/lib/systemd/system-preset/50-systemdos.preset @@ -10,6 +10,7 @@ enable apparmor.service enable systemd-oomd.service enable bluetooth.service +enable kde-linux-btrfs.service enable kde-linux-live-setup.service enable plasma-setup-live-system.service enable kdeos-overlay.service diff --git a/mkosi.extra/usr/lib/systemd/system/kde-linux-btrfs.service b/mkosi.extra/usr/lib/systemd/system/kde-linux-btrfs.service new file mode 100644 index 0000000..e9aebbe --- /dev/null +++ b/mkosi.extra/usr/lib/systemd/system/kde-linux-btrfs.service @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +# SPDX-FileCopyrightText: 2023 Harald Sitter + +[Unit] +Description=Configuring Root Filesystem +# live has an overlayed /, don't try to fiddle with it +ConditionKernelCommandLine=!kdeos.live=1 + +[Service] +ExecStartPre=/usr/bin/btrfs quota enable --simple /system + +[Install] +WantedBy=multi-user.target