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.
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user