diff --git a/AGENTS.md b/AGENTS.md index 326c0b6..75790b6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -43,6 +43,8 @@ sudo dd if=result/iso/*.iso of=/dev/sdX bs=4M status=progress conv=fsync `/dev/sdX` doit être confirmé par l'opérateur humain avant d'exécuter le `dd` (voir règle plus haut) -- ce n'est pas négociable, une erreur ici écrase un disque en silence. +**Si l'agent tourne sous WSL (Windows)** : `lsblk` n'y verra la clé USB QUE si elle a été explicitement rattachée via `usbipd attach --wsl` ([doc officielle](https://learn.microsoft.com/en-us/windows/wsl/connect-usb), détails dans le [README.md](README.md)). Par défaut WSL2 n'a aucun accès aux disques amovibles. Si ce n'est pas déjà en place, ne pas improviser un contournement : construire l'ISO (ça, ça marche normalement sous WSL), remettre le `.iso` produit à l'opérateur humain, et le laisser le graver avec un outil Windows natif (Rufus...). + Définition de l'image : [installer/iso.nix](installer/iso.nix). Attribut de flake : `nixosConfigurations.installer-iso`. ## Installer le serveur PXE (depuis zéro) diff --git a/README.md b/README.md index 9fad8bd..8b432ea 100644 --- a/README.md +++ b/README.md @@ -587,6 +587,31 @@ networkingMode=mirrored Puis `wsl --shutdown` et rouvrir Ubuntu. Ce mode partage directement la pile réseau de Windows à WSL, au lieu de passer par le NAT + proxy DNS interne. +## Construire l'ISO et la graver, depuis Windows + +Construire l'ISO fonctionne exactement comme sur Linux, depuis WSL (voir "Utiliser les repos depuis WSL" plus haut) : + +```bash +cd "/mnt/c/Users//Desktop/Claude/Nixos/nixos_fleet" +nix build .#nixosConfigurations.installer-iso.config.system.build.isoImage +``` + +Le fichier `.iso` produit (`result/iso/*.iso`) est un fichier normal côté WSL, accessible aussi depuis Windows via `\\wsl$\\...` ou en le copiant dans `/mnt/c/...`. + +**Le graver sur la clé USB est une autre affaire** : WSL2 n'a par défaut aucun accès aux disques amovibles (`wsl --mount` ne fonctionne que sur des disques fixes/VHD, pas sur une clé USB -- source : [Microsoft Learn](https://learn.microsoft.com/en-us/windows/wsl/connect-usb)). Deux façons de faire, pas de troisième : + +**Option simple (recommandée)** : copier le `.iso` produit vers le système de fichiers Windows, puis le graver avec un outil Windows natif (Rufus, balenaEtcher, Win32DiskImager...). Fonctionne toujours, aucune configuration supplémentaire. + +**Option avancée** : rattacher la clé USB à WSL avec [usbipd-win](https://github.com/dorssel/usbipd-win) ([doc officielle](https://learn.microsoft.com/en-us/windows/wsl/connect-usb)), puis utiliser `dd` normalement depuis WSL comme sur Linux : + +```powershell +winget install --interactive --exact dorssel.usbipd-win +usbipd list # repérer le bus ID de la clé USB +usbipd attach --wsl --busid +``` + +Puis, dans WSL, `lsblk` doit faire apparaître la clé (ex. `/dev/sde`) -- vérifier ce nom avant tout `dd` (voir la mise en garde `dd` dans [AGENTS.md](AGENTS.md)). + ## Appeler `nix` depuis un outil qui pilote WSL sans shell interactif `wsl.exe nix --version` échoue avec `nix: command not found` : une commande non-interactive ne source pas le profil qui ajoute `nix` au PATH. Forcer un shell de login :