- NVMe only: /dev/nvme0n1
- EFI 512MiB, Swap 32GiB (LUKS2), Root (LUKS2) + Btrfs subvolumes (@, @home, @var, @snapshots)
- Hibernation: swap LUKS (
cryptswap) with persistent keyfile included in initramfs +resume=/dev/mapper/cryptswap - TPM auto-unlock for root
- Proxy nomade: active/désactive proxy selon IP 172.30/172.31
- Factory mode: wipe only if /cdrom/NOLOUD/ARMED exists
chmod +x scripts/*.sh
./scripts/build-iso.sh ubuntu-25.10-live-server-amd64.iso build/ubuntu-25.10-factory.isoLa cible ISO Ventoy est configurable via variables d'environnement:
TARGET_ISO_NAME(défaut:resolute-live-server-amd64.iso)TARGET_ISO_PATH(défaut:<repo>/<TARGET_ISO_NAME>)
Exemple:
TARGET_ISO_NAME=resolute-live-server-amd64.iso \
TARGET_ISO_PATH=$PWD/resolute-live-server-amd64.iso \
./scripts/build-ventoy-bundle.shLe script échoue explicitement si l'ISO cible, les assets requis (ventoy.json, user-data, meta-data) ou une dépendance de build (ex: dos2unix) est absente.
Le workflow GitHub Actions .github/workflows/build-ventoy-bundle.yml:
- Télécharge l'ISO cible définie via
TARGET_ISO_URL. - Génère le bundle Ventoy.
- Lance un smoke test headless QEMU qui vérifie un boot initial, des marqueurs NoCloud/cloud-init, et la validité syntaxique des scripts critiques.
- Publie les artefacts de diagnostic (
smoke-install.log, seed ISO).
Par défaut, l'absence de marqueurs cloud-init sur la sortie série n'est plus bloquante si le menu GRUB/installer est bien observé. Pour réactiver l'échec strict sur ces marqueurs, définir SMOKE_STRICT_CLOUD_INIT=1.
Après install, un timer systemd applique ou retire le proxy automatiquement:
- /etc/proxy-autoswitch.conf
- /usr/local/sbin/proxy-autoswitch
- systemd: proxy-autoswitch.timer
/etc/crypttabest régénéré pour inclure:cryptroot(UUID root LUKS + option TPM2)cryptswap(UUID swap LUKS + keyfile persistant)
- keyfile swap:
/etc/cryptsetup-keys.d/cryptswap.key(copié dans initramfs viaKEYFILE_PATTERN) - reprise hibernation:
/etc/initramfs-tools/conf.d/resumepointe vers/dev/mapper/cryptswap