# 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.