From 096e534e91482de39a03609fd1fb1004b2ac0574 Mon Sep 17 00:00:00 2001 From: Damien Date: Wed, 9 Sep 2026 13:20:15 +0200 Subject: [PATCH] fix swapfile btrfs: chattr +C avant ecriture, ajout e2fsprogs --- installer/install.sh | 14 +++++++++++++- installer/installer-base.nix | 3 ++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/installer/install.sh b/installer/install.sh index 75e8790..0640329 100644 --- a/installer/install.sh +++ b/installer/install.sh @@ -58,12 +58,24 @@ do_install() { sed -i "s#/dev/placeholder#$DEVICE#" "$repo_dir/$disko_rel_path" 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' -- \ --mode destroy,format,mount \ + --yes-wipe-all-disks \ "$repo_dir/$disko_rel_path" 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 mkswap /mnt/.install-swapfile swapon /mnt/.install-swapfile diff --git a/installer/installer-base.nix b/installer/installer-base.nix index da1710c..21e7523 100644 --- a/installer/installer-base.nix +++ b/installer/installer-base.nix @@ -52,7 +52,8 @@ in git parted gptfdisk - util-linux # lsblk + util-linux # lsblk, fallocate + e2fsprogs # chattr (NOCOW pour le swapfile sur btrfs) installScript ];