fix swapfile btrfs: chattr +C avant ecriture, ajout e2fsprogs

This commit is contained in:
2026-09-09 13:20:15 +02:00
parent 7523532dfd
commit 096e534e91
2 changed files with 15 additions and 2 deletions
+13 -1
View File
@@ -58,12 +58,24 @@ do_install() {
sed -i "s#/dev/placeholder#$DEVICE#" "$repo_dir/$disko_rel_path" sed -i "s#/dev/placeholder#$DEVICE#" "$repo_dir/$disko_rel_path"
echo "Partitionnement de $DEVICE..." echo "Partitionnement de $DEVICE..."
# --yes-wipe-all-disks : évite la confirmation interactive "type yes to
# continue" (vu dans le code source de la commande disko) — un install
# de flotte ne doit pas dépendre de quelqu'un présent au clavier pour
# confirmer, l'effacement est le but assumé de ce script.
nix run --no-write-lock-file --refresh 'github:nix-community/disko' -- \ nix run --no-write-lock-file --refresh 'github:nix-community/disko' -- \
--mode destroy,format,mount \ --mode destroy,format,mount \
--yes-wipe-all-disks \
"$repo_dir/$disko_rel_path" "$repo_dir/$disko_rel_path"
echo "Swap temporaire sur le disque cible (RAM limitée sur certains PC du parc)..." echo "Swap temporaire sur le disque cible (RAM limitée sur certains PC du parc)..."
dd if=/dev/zero of=/mnt/.install-swapfile bs=1M count=4096 status=none # Sur btrfs (notre système de fichiers), le CoW doit être désactivé
# (chattr +C) AVANT toute écriture de données dans le fichier, sinon
# swapon échoue avec "Invalid argument" (source : btrfs.readthedocs.io/
# en/latest/Swapfile.html — chattr +C sur un fichier déjà écrit ne
# s'applique pas rétroactivement).
truncate -s 0 /mnt/.install-swapfile
chattr +C /mnt/.install-swapfile
fallocate -l 4G /mnt/.install-swapfile
chmod 600 /mnt/.install-swapfile chmod 600 /mnt/.install-swapfile
mkswap /mnt/.install-swapfile mkswap /mnt/.install-swapfile
swapon /mnt/.install-swapfile swapon /mnt/.install-swapfile
+2 -1
View File
@@ -52,7 +52,8 @@ in
git git
parted parted
gptfdisk gptfdisk
util-linux # lsblk util-linux # lsblk, fallocate
e2fsprogs # chattr (NOCOW pour le swapfile sur btrfs)
installScript installScript
]; ];