docs(gameboot-windows): expand README with first boot automation and game installer details
- Add FirstBoot-FwsGameboot.ps1 script for automated first boot setup - Document Install-Games.ps1 for downloading official Riot game installers - Add installers.json for managing Riot installer URLs - Explain why games cannot be pre-bundled (licensing and Vanguard constraints) - Provide two methods for triggering first boot: autounattend.xml integration and manual execution - Clarify prerequisites: local admin account, no password, Secure Boot/TPM/VBS-HVCI - Expand complete flow documentation with first boot step - Add security reminders about BitLocker and physical access implications - Reorganize sections for better clarity and structure
This commit is contained in:
@@ -2,58 +2,84 @@
|
||||
|
||||
Composant à déployer **dans le Windows 11 gaming** (partition bare-metal dédiée)
|
||||
pour le dual-boot orchestré « hibernate-swap » de FWS : **retour vers FWS** après
|
||||
la session, et **lancement automatique du jeu** demandé depuis FWS.
|
||||
la session, **lancement automatique du jeu**, **auto-login**, et **premier
|
||||
démarrage tout automatique** (config + installation des jeux).
|
||||
|
||||
> ⚠️ **Statut : non validé sur matériel réel.** La sémantique
|
||||
> `bcdedit /set {fwbootmgr} bootsequence`, l'auto-login et le retour au boot
|
||||
> dépendent du firmware/de la config. À tester. Plan complet :
|
||||
> ⚠️ **Statut : non validé sur matériel réel.** Sémantique `bcdedit bootsequence`,
|
||||
> auto-login, URLs d'installeurs Riot, resume GPU — à tester. Plan :
|
||||
> `docs/hibernate-swap-dualboot.md`.
|
||||
|
||||
## Fichiers
|
||||
|
||||
| Fichier | Rôle |
|
||||
|---|---|
|
||||
| `fws-return.ps1` | Arme le boot suivant (one-shot) vers `FWS` ou `Windows` (résolution robuste, locale-indépendante). |
|
||||
| `fws-play.ps1` | Lit le jeu demandé, le lance, attend sa fin/crash, rebascule vers FWS. |
|
||||
| `games.json` | Registre des jeux : `id → {type, …, process}`. Éditable pour en ajouter. |
|
||||
| `Install-FwsGameboot.ps1` | Installe le tout : **auto-login**, tâche au **logon** (fws-play), tâche **ONSTART**, `powercfg /h off`. |
|
||||
| `FirstBoot-FwsGameboot.ps1` | **1er démarrage (une fois)** : lance Install-FwsGameboot puis Install-Games, pose un marqueur. |
|
||||
| `Install-FwsGameboot.ps1` | Auto-login + tâche **logon** (fws-play) + tâche **ONSTART** + `powercfg /h off`. Vérifie compte admin/sans mot de passe. |
|
||||
| `Install-Games.ps1` | Télécharge + lance les installeurs **officiels** des jeux `autoinstall` (Riot). |
|
||||
| `installers.json` | URLs des installeurs Riot (à vérifier — Riot les change). |
|
||||
| `fws-play.ps1` | Lit le jeu demandé, le lance, attend, rebascule vers FWS. |
|
||||
| `fws-return.ps1` | Arme le boot suivant vers `FWS` ou `Windows` (locale-indépendant). |
|
||||
| `games.json` | Registre des jeux : `id → {type, …, process}`. |
|
||||
|
||||
## Installation (dans Windows, PowerShell **admin**)
|
||||
## Ce que FWS ne peut PAS faire (et ce qu'il fait à la place)
|
||||
|
||||
FWS **ne pré-embarque pas** Valorant/LoL : bundler Windows (licence) et
|
||||
redistribuer les binaires Riot est interdit, et Vanguard flaggerait un jeu
|
||||
pré-copié. **À la place**, `Install-Games.ps1` **télécharge les installeurs
|
||||
officiels depuis Riot** au premier boot → même résultat (« ils sont déjà là »)
|
||||
sans rien redistribuer. L'install de Valorant n'est pas 100 % silencieuse
|
||||
(Vanguard installe un driver noyau + impose un reboot).
|
||||
|
||||
## Câbler le « premier démarrage automatique »
|
||||
|
||||
Le déclencheur dépend de comment Windows est installé :
|
||||
|
||||
**A. Install Windows piloté par FWS (recommandé, via `autounattend.xml`)** — ajouter
|
||||
dans `<FirstLogonCommands>` :
|
||||
|
||||
```xml
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<Order>1</Order>
|
||||
<CommandLine>powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\ProgramData\FWS\deploy\FirstBoot-FwsGameboot.ps1"</CommandLine>
|
||||
<Description>FWS Gameboot first boot</Description>
|
||||
</SynchronousCommand>
|
||||
```
|
||||
(en ayant copié ce dossier dans `C:\ProgramData\FWS\deploy\` pendant le déploiement).
|
||||
|
||||
**B. Manuel (pour tester maintenant)** — dans le Windows gaming, PowerShell admin :
|
||||
|
||||
```powershell
|
||||
Set-ExecutionPolicy -Scope Process Bypass -Force
|
||||
# Compte SANS mot de passe (recommandé) :
|
||||
.\Install-FwsGameboot.ps1
|
||||
# Ou avec mot de passe (stocké en clair dans le registre — voir avertissement) :
|
||||
.\Install-FwsGameboot.ps1 -Password 'monMotDePasse'
|
||||
.\FirstBoot-FwsGameboot.ps1
|
||||
```
|
||||
|
||||
## Flux complet (aucune interaction)
|
||||
Idempotent : le marqueur `C:\ProgramData\FWS\.firstboot-done` empêche toute
|
||||
réexécution.
|
||||
|
||||
1. Depuis FWS : `fws-gameboot to-windows --game valorant` — FWS écrit le jeton
|
||||
`\EFI\FWS\launch.json = {"game":"valorant"}` sur l'ESP, hiberne, et arme le
|
||||
boot vers Windows.
|
||||
2. Windows démarre en **bare-metal** → **auto-login** (pas d'écran de mot de passe).
|
||||
3. La tâche **ONSTART** arme le boot suivant vers FWS (filet anti-crash).
|
||||
4. La tâche **au logon** lance `fws-play`, qui lit le jeton, cherche le jeu dans
|
||||
`games.json` et le **lance tout seul**. Un crash pendant le jeu revient sur
|
||||
Windows (fws-play a réarmé Windows le temps de la session).
|
||||
5. À la fermeture/crash du jeu, `fws-play` arme FWS et redémarre.
|
||||
6. FWS reprend sa session hibernée via `resume=` — **tes apps/pages rouvertes intactes**.
|
||||
## Prérequis (vérifiés par Install-FwsGameboot, échec explicite sinon)
|
||||
|
||||
Filet permanent : côté FWS, `BootOrder[0] = FWS` est ré-affirmé à chaque
|
||||
démarrage → tout reboot non géré retombe sur FWS.
|
||||
- Compte gaming = **administrateur local** (bcdedit + tâches SYSTEM).
|
||||
- Compte **sans mot de passe** (auto-login fiable), ou lancer avec `-Password`.
|
||||
- **Secure Boot + TPM 2.0 + VBS/HVCI** actifs (Vanguard les exige).
|
||||
|
||||
## Flux complet (aucune interaction, hors confirmations Vanguard)
|
||||
|
||||
1. **1er boot** → `FirstBoot` → auto-login configuré + Valo/LoL téléchargés et installés.
|
||||
2. Depuis FWS : `fws-gameboot to-windows --game valorant` → jeton sur l'ESP, hibernation, bascule.
|
||||
3. Windows démarre **bare-metal** → **auto-login** → `fws-play` lit le jeton, lance le jeu.
|
||||
4. À la fermeture/crash → retour, **session FWS restaurée** (apps/pages intactes).
|
||||
|
||||
Filet permanent : côté FWS, `BootOrder[0] = FWS` ré-affirmé à chaque démarrage.
|
||||
|
||||
## Ajouter un jeu
|
||||
|
||||
Éditer `games.json` (copié dans `C:\ProgramData\FWS\`). Types : `riot` (Riot
|
||||
Client), `uri` (`steam://rungameid/…`, `com.epicgames.launcher://…`), `exe`
|
||||
(chemin direct). `process` = nom du processus à attendre (sans `.exe`). Puis côté
|
||||
FWS : `fws-gameboot to-windows --game <id>`.
|
||||
- Lancement : ajouter une entrée dans `games.json` (`id` en `[a-z0-9_-]`).
|
||||
- Auto-install : ajouter l'URL de l'installeur officiel dans `installers.json`
|
||||
(`autoinstall: true`). Types de lancement : `riot` / `uri` (`steam://…`,
|
||||
`com.epicgames.launcher://…`) / `exe`.
|
||||
|
||||
## Rappels
|
||||
## Rappels sécurité
|
||||
|
||||
- **Auto-login** = pas de barrière de mot de passe sur ce Windows gaming (voulu).
|
||||
- **BitLocker** : ne pas l'activer sans sauvegarder la clé (le flip Secure Boot
|
||||
côté FWS change PCR7 → écran de récupération). `manage-bde -status`.
|
||||
- Ne pas désactiver **Secure Boot / TPM / VBS-HVCI** : Vanguard les exige.
|
||||
- **Poste kiosque** : auto-login + tâches non-UAC ⇒ accès physique = bureau admin.
|
||||
- **BitLocker** : ne pas l'activer sans sauvegarder la clé (flip Secure Boot →
|
||||
écran de récupération). `manage-bde -status`.
|
||||
|
||||
Reference in New Issue
Block a user