From 9836925a37e12b24867f05cb74a5e3829f597f94 Mon Sep 17 00:00:00 2001 From: nocode Date: Thu, 9 Jul 2026 14:40:53 +0200 Subject: [PATCH] docs(gameboot): add hardware validation checklist for gameboot dual-boot Add comprehensive test checklist for validating gameboot Windows dual-boot functionality across 8 phases, from ISO build through hibernation, Secure Boot, Windows deployment, BCD configuration, and full gameboot cycle testing. Includes safety precautions, prerequisite checks, and recovery procedures. --- docs/gameboot-test-checklist.md | 108 ++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 docs/gameboot-test-checklist.md diff --git a/docs/gameboot-test-checklist.md b/docs/gameboot-test-checklist.md new file mode 100644 index 0000000..1f7746a --- /dev/null +++ b/docs/gameboot-test-checklist.md @@ -0,0 +1,108 @@ +# Checklist de validation matérielle — gameboot + dual-boot Windows + +> **Rien de tout ça n'a encore tourné.** Le code a passé deux revues adversariales, +> mais le déploiement Windows et le BCD sont marqués **NON VALIDÉ** : cette phase +> **va faire remonter des bugs**, surtout aux phases 5–6. Avance dans l'ordre +> (du moins risqué au plus destructif) et **ne saute pas un ✅ pour passer au suivant**. + +## ⚠️ Avant tout — sécurité données + +- [ ] **Sauvegarde** de tout ce qui compte sur la machine cible (les tests des phases 5+ **effacent un disque entier**). +- [ ] Un **disque à sacrifier** identifié (≠ disques de jeux `Games-L1/L2`). Tes 3 NVMe sont pleins → libère-en un ou ajoute-en un. +- [ ] Note écrite du **disque exact** à dédier à Windows (ex. `/dev/nvmeXn1`) — tu la revérifieras à chaque étape. + +--- + +## Phase 0 — Prérequis + +- [ ] Machine cible **UEFI** (pas BIOS) — `[ -d /sys/firmware/efi ] && echo UEFI` +- [ ] **TPM 2.0** présent — `ls /sys/class/tpm/tpm0` +- [ ] **IOMMU** activable au firmware (Vanguard l'exige) — à vérifier dans le setup BIOS. +- [ ] **ISO Windows 11 25H2** (édition **Pro** de préférence) sur clé USB, branchée. +- [ ] Licence Windows valide sous la main (activation post-install). + +## Phase 1 — Build de l'ISO + +- [ ] `./setup-aur.sh` a déjà tourné (repo local fws-local : anaconda, fws-dnd…). +- [ ] `./build-offi.sh` → l'ISO se construit **sans `target not found`** (les nouveaux paquets `wimlib hivex sbctl sbsigntools mokutil binutils` sont officiels, tirés par mkarchiso). +- [ ] ISO produite dans `out/…`. +- [ ] Écrire l'ISO sur une clé USB de boot (`dd` / Ventoy). + +## Phase 2 — Tests NON destructifs (aucune écriture disque) + +- [ ] Booter l'ISO FWS en **live**. +- [ ] `fws-gameboot doctor` s'exécute et liste RAM / swap / VRAM / Secure Boot / entrées de boot. +- [ ] Lancer l'installateur : la spoke **« Dual-boot Windows »** apparaît sur le hub Résumé. +- [ ] Cocher la case → le combo disque **n'a AUCUN disque présélectionné** (choix explicite obligatoire). +- [ ] Choisir un disque **non vide** → l'avertissement affiche **« CE DISQUE CONTIENT DES DONNÉES »**. +- [ ] Sélectionner le **même** disque pour FWS (Destination) et pour Windows → le **Récapitulatif** affiche **⛔ CONFLIT** (contrôle croisé). +- [ ] Les lanceurs **« Jouer à Valorant / LoL »** apparaissent dans le menu d'applications (wofi/rofi). +- [ ] `pkexec fws-gameboot to-windows` **sans mot de passe** en session active (polkit). + +## Phase 3 — Hibernation / resume (LE point dur matériel n°1) + +> À valider **avant** de câbler quoi que ce soit à Windows. RTX 5090 (Blackwell) = +> suspend/hibernate historiquement fragile. + +- [ ] Provisionner un swap ≥ RAM+VRAM (~96 Go) et `resume=` (cf. `docs/hibernate-swap-dualboot.md` §1-2). +- [ ] `NVreg_PreserveVideoMemoryAllocations=1` posé + services `nvidia-suspend/hibernate/resume` actifs. +- [ ] `systemctl hibernate` avec une **session graphique chargée** (jeu/desktop lourd). +- [ ] Au rallumage : **session restaurée** ET **affichage NVIDIA intact** (pas d'écran noir / Xid). +- [ ] `journalctl -b -1 -k | grep -iE 'hibernation|Image saved|resume'` → propre. + +## Phase 4 — Secure Boot + +- [ ] `sudo fws-secureboot-setup` → signe `\EFI\FWS\grubx64.efi` + `\EFI\BOOT\BOOTX64.EFI` + noyaux. +- [ ] Firmware : Setup Mode → `sbctl enroll-keys --microsoft` → activer Secure Boot. +- [ ] `bootctl status | grep 'Secure Boot'` → **enabled**. +- [ ] `cat /sys/kernel/security/lockdown` → **[none]** (hibernation préservée). +- [ ] FWS **boote toujours** sous Secure Boot (sinon → média de récupération). + +## Phase 5 — Déploiement Windows 🔴 DESTRUCTIF (disque sacrificiel UNIQUEMENT) + +> **Danger maximum.** Vérifie 3× le disque cible. Les garde-fous fail-closed +> doivent refuser tout disque protégé — teste-les d'abord exprès. + +- [ ] **Test négatif** : dans la spoke, choisir le disque de FWS/racine → le déploiement doit **ABORTER** (`DEPLOY_FAILED`), rien d'effacé. +- [ ] Install FWS + dual-boot activé sur le **disque sacrificiel**, ISO USB branchée. +- [ ] Surveiller `/tmp/fws-windows-deploy.log` : garde-fous OK → carve → `wimlib apply` → BCD. +- [ ] Vérifier que **seul** le disque sacrificiel a été touché (les Games intacts — `lsblk -f`). +- [ ] `cat /var/lib/fws/windows-deploy.status` → `DEPLOY_OK` (ou `DEPLOY_FAILED` explicite). +- [ ] **Au 1er reboot post-install : la machine boote FWS** (pas Windows, pas WinPE en boucle). + +## Phase 6 — Bootabilité Windows (⚠ voie BCD NON VALIDÉE — debug attendu ici) + +- [ ] Voie **WinPE-bcdfix** : au 1er reboot, WinPE tourne, `bcdboot` s'exécute, puis retour FWS. + - Si **boucle WinPE** : vérifier l'assignation des lettres (`FWSWIN`/`WINESP`) et l'index de `boot.wim` dans `fws-windows-bcdfix`. +- [ ] Depuis FWS, `efibootmgr` : entrée **Windows Boot Manager** présente, **FWS en tête** de BootOrder, **pas** d'entrée « FWS WinPE » résiduelle. +- [ ] Boot manuel de Windows (menu firmware) → **Windows démarre** jusqu'à l'OOBE unattended. + +## Phase 7 — Premier démarrage Windows (auto) + +- [ ] OOBE **sans intervention** : compte `gaming` local, **auto-login**, pas d'écran compte Microsoft. +- [ ] `FirstBoot-FwsGameboot.ps1` s'exécute (tâches ONSTART + logon créées, `powercfg /h off`). +- [ ] `Install-Games.ps1` télécharge/lance les installeurs Valorant + LoL (vérifier les URLs `installers.json` si échec). +- [ ] `manage-bde -status` → **BitLocker OFF** (anti-lockout OK). + +## Phase 8 — Aller-retour gameboot complet (le but final) + +- [ ] Depuis FWS : clic **« Jouer à Valorant »** → FWS **hiberne** → reboot → Windows bare-metal. +- [ ] **Vanguard démarre** et Valorant se lance (pas de VAN9003 / erreur VM). +- [ ] Quitter Valorant → reboot → **FWS reprend la session hibernée intacte** (apps/onglets). +- [ ] `BootOrder[0]=FWS` toujours vrai après plusieurs cycles (`fws-gameboot-bootfix`). +- [ ] Test crash : tuer Valorant brutalement → retour propre à FWS (ou reste sur Windows selon le filet). + +--- + +## Filets de récupération (à préparer AVANT la phase 5) + +- [ ] **Média de récupération FWS** prêt (ré-enrôlement clés / re-signature) en cas de brick Secure Boot. +- [ ] Clé USB d'install Windows officielle (pour réparer un BCD cassé avec `bcdboot` natif). +- [ ] Savoir entrer dans le menu de boot firmware (touche F2/F12/Suppr selon la carte). + +## Attentes réalistes (marqué NON VALIDÉ dans le code) + +- **BCD / WinPE-bcdboot** (phase 6) : le plus susceptible d'échouer au 1er essai → itérer. +- **Sémantique BootNext** du firmware (phase 8) : à confirmer sur ta carte mère précise. +- **Resume GPU 5090** (phase 3) : dépend du pilote ; si KO → mode reboot simple (fallback déjà câblé). +- **URLs installeurs Riot** (phase 7) : Riot les change → `installers.json` à mettre à jour si le download échoue.