docs(readme): document anaconda integration and fws tooling comprehensive updates
Update README to reflect completed Anaconda 45 integration on Arch Linux, replacing Calamares. Document: - Desktop choices (GNOME, KDE Plasma, XFCE, Hyprland, i3) with VR compatibility matrix - Installation flow: Anaconda hub with FWS spokes, LiveOS payload, recap page before write - fws-* tooling ecosystem: fws-hello, fws-update, fws-keys, fws-powermenu, fws-about, fws-vr-setup, fws-proton-ge, fws-recovery - Hyprland & i3 visual parity: Catppuccin Mocha theme, waybar/polybar, wofi/rofi, custom SDDM theme - Boot sequence: menu entries (normal, safe graphics, recovery, speech) → Openbox live → Anaconda → recap → installation - Build process: incremental AUR + local PKGBUILD compilation (anaconda stack) - Expanded troubleshooting: VM rendering issues, SteamVR, Bluetooth, recovery mode, BIOS/UEFI boot - Log locations for live and post-install debugging - Clarified file locations: kickstart, spokes, configs, tools, branding
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# FWS
|
# FWS
|
||||||
|
|
||||||
**FWS** est une distribution Linux live/installable basée sur **Arch Linux**, livrée sous forme d'ISO bootable BIOS/UEFI. L'installateur graphique est **en cours de migration de Calamares vers Anaconda** (Calamares retiré au commit 05ae9c3, intégration d'Anaconda en cours — voir le chantier dédié).
|
**FWS** est une distribution Linux live/installable basée sur **Arch Linux**, pensée pour **remplacer Windows** : bureau prêt à l'emploi, jeux (Steam/Proton-GE), réalité virtuelle (SteamVR), compatibilité applicative (winboat/Wine) et outillage de maintenance intégré. L'installateur graphique est **Anaconda** (celui de Fedora/RHEL), **porté sur Arch** : payload LiveOS (copie du live sur le disque), spokes FWS (choix du bureau, récapitulatif avant installation), finalisation pacman/GRUB/mkinitcpio en `%post`.
|
||||||
|
|
||||||
Le projet est conçu pour être **construit depuis Windows via WSL** (les scripts détectent Git Bash et basculent automatiquement dans WSL), mais fonctionne aussi directement depuis une **Arch Linux native** ou depuis **toute distribution non-Arch (Fedora, Ubuntu…) via une bascule automatique dans un conteneur Arch podman**.
|
Le projet est conçu pour être **construit depuis Windows via WSL** (les scripts détectent Git Bash et basculent automatiquement dans WSL), mais fonctionne aussi directement depuis une **Arch Linux native** ou depuis **toute distribution non-Arch (Fedora, Ubuntu…) via une bascule automatique dans un conteneur Arch podman**.
|
||||||
|
|
||||||
@@ -9,14 +9,38 @@ Le projet est conçu pour être **construit depuis Windows via WSL** (les script
|
|||||||
## Aperçu
|
## Aperçu
|
||||||
|
|
||||||
- **Base** : Arch Linux (rolling release)
|
- **Base** : Arch Linux (rolling release)
|
||||||
- **Installateur** : en migration Calamares → Anaconda (Calamares retiré, Anaconda en préparation ; payload `liveimg` pour installer FWS et non Fedora)
|
- **Installateur** : **Anaconda 45 porté sur Arch** — payload LiveOS (installe FWS, pas Fedora), page « Récapitulatif avant installation » avec bouton Précédent, choix du bureau intégré
|
||||||
- **Affichage live** : Xorg + Openbox (session graphique conservée pour l'installateur)
|
- **Affichage live** : Xorg + Openbox + splash de préparation (l'installateur peut mettre 1 à 2 min à apparaître en VM)
|
||||||
- **Bureaux installables** : XFCE, KDE Plasma, GNOME, Hyprland (choix à l'installation)
|
- **Bureaux installables** : GNOME, KDE Plasma, XFCE, **Hyprland** (Wayland — non compatible VR), **i3** (X11 — compatible VR/SteamVR), ou ligne de commande seule
|
||||||
- **Boot** : BIOS (syslinux) + UEFI (systemd-boot)
|
- **Boot** : UEFI (systemd-boot) + BIOS (syslinux) — entrées *normale*, *safe graphics (nomodeset)*, *Réparer FWS (recovery)* et *speech*
|
||||||
- **Compression** : squashfs (xz)
|
- **Compression** : squashfs (xz)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Ce qu'il y a dans FWS
|
||||||
|
|
||||||
|
### À l'installation
|
||||||
|
- **Choix du bureau** dans Anaconda, avec compatibilité VR affichée (i3 = SteamVR ✔ ; Hyprland = ✘)
|
||||||
|
- **Page récapitulative** avant toute écriture disque : config choisie (langue, clavier, fuseau, comptes, partitionnement, bureau, nom de machine) + matériel détecté (GPU, disques, virtualisation, réseau)
|
||||||
|
- **Automatique en fin d'install** : drivers GPU (NVIDIA/AMD/Intel), outils invité VM (VMware/VirtualBox/QEMU/Hyper-V), PipeWire + pavucontrol, Bluetooth (BlueZ + blueman), luminosité (brightnessctl), **pare-feu firewalld activé**, Steam + Wine + Monado + MangoHud + gamemode, clavier/locale, hostname, sudo pour l'utilisateur créé, branding FWS
|
||||||
|
|
||||||
|
### Sur le système installé (outillage `fws-*`)
|
||||||
|
| Commande | Rôle | Accès |
|
||||||
|
|---|---|---|
|
||||||
|
| `fws-hello` | Bienvenue au 1er démarrage (mise à jour, codecs, Proton-GE, VR, raccourcis) | auto au 1er login |
|
||||||
|
| `fws-update` | Mise à jour complète (pacman + cache + orphelins + flatpak) | bouton de la barre |
|
||||||
|
| `fws-keys` | Panneau des **raccourcis clavier réels** (lit la config Hyprland/i3) | `Super+K`, bouton ⌨ |
|
||||||
|
| `fws-powermenu` | Verrouiller / déconnexion / suspendre / redémarrer / éteindre | `Super+X`, bouton |
|
||||||
|
| `fws-about` | « À propos » : le projet FWS + infos système | menu d'applications |
|
||||||
|
| `fws-vr-setup` | Drivers/runtimes VR (Vive/Index → SteamVR natif ; Quest → ALVR ; Monado) | `Super+Shift+V` (i3), menu |
|
||||||
|
| `fws-proton-ge` | Installe/actualise Proton-GE pour Steam (vérif sha512) | fws-hello, terminal |
|
||||||
|
| `fws-recovery` | Réparation guidée : GRUB, initramfs, pacman, chroot | entrée de boot « Réparer FWS » |
|
||||||
|
|
||||||
|
### Hyprland & i3 : parité visuelle
|
||||||
|
Même identité Catppuccin Mocha (nuances de bleu) sur les deux : barre flottante arrondie (**waybar** / **polybar**) avec date+heure, indicateur de mises à jour, volume/réseau/CPU/RAM/luminosité/Bluetooth cliquables ; menus assortis (**wofi** / **rofi**) ; mêmes raccourcis (déclarés avec descriptions → `Super+K`) ; **Dolphin** en gestionnaire de fichiers ; thème **SDDM « fws »** maison (pur QtQuick, accent adapté au bureau ; GNOME garde GDM avec bannière FWS).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Environnement requis — INSTALLATION ULTRA PRÉCISE
|
## Environnement requis — INSTALLATION ULTRA PRÉCISE
|
||||||
|
|
||||||
### Côté Windows (machine hôte)
|
### Côté Windows (machine hôte)
|
||||||
@@ -146,9 +170,9 @@ Détails utiles :
|
|||||||
Depuis **Git Bash sur Windows** (à la racine du repo) :
|
Depuis **Git Bash sur Windows** (à la racine du repo) :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Étape 1 : compilation des paquets AUR (winboat) + deps locales
|
# Étape 1 : compilation des paquets AUR (winboat) + PKGBUILD locaux
|
||||||
|
# (anaconda porté sur Arch + ses dépendances python)
|
||||||
# → crée local-repo/ avec les .pkg.tar.zst
|
# → crée local-repo/ avec les .pkg.tar.zst
|
||||||
# (Calamares retiré ; l'installateur Anaconda est un chantier en cours)
|
|
||||||
./setup-aur.sh
|
./setup-aur.sh
|
||||||
|
|
||||||
# Étape 2 : build de l'ISO via mkarchiso
|
# Étape 2 : build de l'ISO via mkarchiso
|
||||||
@@ -170,11 +194,11 @@ L'ISO finale est générée dans `./out/FWS-YYYY.MM.DD-x86_64.iso`.
|
|||||||
4. **`pacman -Syu`** complet (obligatoire — sinon `makepkg` plante sur les "conflicting files" lors des splits de paquets type `gcc-libs`).
|
4. **`pacman -Syu`** complet (obligatoire — sinon `makepkg` plante sur les "conflicting files" lors des splits de paquets type `gcc-libs`).
|
||||||
5. **Install des outils de build** : `base-devel git`.
|
5. **Install des outils de build** : `base-devel git`.
|
||||||
6. **Création d'un utilisateur `fwsbuild`** non-root avec `sudo` NOPASSWD (makepkg refuse de tourner en root).
|
6. **Création d'un utilisateur `fwsbuild`** non-root avec `sudo` NOPASSWD (makepkg refuse de tourner en root).
|
||||||
7. **Clone + build AUR** : `winboat-bin` via `makepkg -s --noconfirm`, plus les PKGBUILD locaux de `pkgbuilds/` (deps Anaconda). Calamares n'est plus compilé.
|
7. **Clone + build AUR** : `winboat-bin` via `makepkg -s --noconfirm`, plus les PKGBUILD locaux de `pkgbuilds/` (anaconda, anaconda-widgets, pykickstart, blivet, python-meh patché…). Le build est **incrémental** : un paquet déjà présent dans `local-repo/` à la bonne version est sauté.
|
||||||
8. **Création du repo local** : `repo-add local-repo/fws-local.db.tar.gz`.
|
8. **Création du repo local** : `repo-add local-repo/fws-local.db.tar.gz`.
|
||||||
9. **Cleanup** : suppression de l'utilisateur `fwsbuild`.
|
9. **Cleanup** : suppression de l'utilisateur `fwsbuild`.
|
||||||
|
|
||||||
**Durée** : quelques minutes (winboat-bin + deps locales ; Calamares et ses ~12 dépendances Qt6 ne sont plus compilés).
|
**Durée** : quelques minutes en incrémental ; le premier build complet (anaconda + deps) est plus long.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -220,11 +244,12 @@ L'ISO finale est générée dans `./out/FWS-YYYY.MM.DD-x86_64.iso`.
|
|||||||
|
|
||||||
## Séquence de boot de l'ISO
|
## Séquence de boot de l'ISO
|
||||||
|
|
||||||
1. Démarrage de l'ISO FWS (BIOS ou UEFI)
|
1. Menu de boot : **installation** (défaut), **safe graphics** (`nomodeset`), **Réparer FWS** (`fws.recovery=1` → assistant console `fws-recovery`), **speech**. Toutes les entrées plafonnent les workers udev bloqués (`udev.event_timeout=45`)
|
||||||
2. `systemd` → autologin root sur `tty1`
|
2. `systemd` → autologin root sur `tty1`
|
||||||
3. `.zprofile` → `startx`
|
3. `.zprofile` → mode recovery si demandé, sinon `startx`
|
||||||
4. `.xinitrc` → Openbox (session graphique du live)
|
4. `.xinitrc` → Openbox + **splash « Préparation de l'installateur »** (le démarrage peut prendre 1 à 2 min en VM), bind mount `/run/rootfsbase` (source du payload LiveOS), patch du hub Anaconda, puis `dbus-run-session liveinst`
|
||||||
5. **[Chantier C]** lancement de l'installateur Anaconda — pas encore câblé (Calamares retiré au commit 05ae9c3)
|
5. **Anaconda** : accueil → hub (langue, clavier, disque, utilisateur, **bureau FWS**) → « Commencer l'installation » → **page Récapitulatif** (bouton Précédent / Lancer l'installation) → installation → écran de réussite → extinction
|
||||||
|
6. En cas d'échec : écran de debug avec tous les logs (liveinst, %post chrooté, anaconda)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -233,8 +258,11 @@ L'ISO finale est générée dans `./out/FWS-YYYY.MM.DD-x86_64.iso`.
|
|||||||
- **Paquets du live** : `configs/releng/packages.x86_64`
|
- **Paquets du live** : `configs/releng/packages.x86_64`
|
||||||
- **Paquets baseline** : `configs/baseline/packages.x86_64`
|
- **Paquets baseline** : `configs/baseline/packages.x86_64`
|
||||||
- **Overlay rootfs** : `configs/releng/airootfs/` ou `configs/baseline/airootfs/`
|
- **Overlay rootfs** : `configs/releng/airootfs/` ou `configs/baseline/airootfs/`
|
||||||
- **Kickstart de l'installateur** : `configs/releng/airootfs/usr/share/anaconda/interactive-defaults.ks` (payload liveimg + %post)
|
- **Kickstart de l'installateur** : `configs/releng/airootfs/usr/share/anaconda/interactive-defaults.ks` (payload LiveOS via `--liveinst` + tout le `%post` : bureaux, drivers, pare-feu, branding)
|
||||||
- **Branding ISO** : `configs/releng/profiledef.sh` (`iso_name`, `iso_label`, `iso_publisher`)
|
- **Spokes Anaconda FWS** : `configs/baseline/airootfs/usr/lib/python3.14/site-packages/pyanaconda/ui/gui/spokes/` (`fws_desktop.py`, `fws_recap.py`) + glades dans `usr/share/anaconda/ui/spokes/`
|
||||||
|
- **Configs bureaux & thèmes** : `configs/releng/airootfs/usr/local/share/fws/` (hyprland, i3, waybar, polybar, wofi, rofi, picom) et `usr/share/sddm/themes/fws/`
|
||||||
|
- **Outils fws-\*** : `configs/releng/airootfs/usr/local/bin/`
|
||||||
|
- **Branding ISO** : `configs/releng/profiledef.sh` (`iso_name`, `iso_label`, `iso_publisher`) — ⚠ `configs/baseline/profiledef.sh` **écrase** celui de releng au build (doit rester un sur-ensemble)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -247,7 +275,15 @@ L'ISO finale est générée dans `./out/FWS-YYYY.MM.DD-x86_64.iso`.
|
|||||||
| `pacman: signature unknown trust` | Keyring périmé → `pacman -Sy --noconfirm archlinux-keyring` puis relancer. |
|
| `pacman: signature unknown trust` | Keyring périmé → `pacman -Sy --noconfirm archlinux-keyring` puis relancer. |
|
||||||
| `makepkg: conflicting files` | `pacman -Syu` incomplet avant le build. Relancer `setup-aur.sh`. |
|
| `makepkg: conflicting files` | `pacman -Syu` incomplet avant le build. Relancer `setup-aur.sh`. |
|
||||||
| `mkarchiso` plante sur `[fws-local]` | Le repo local n'a pas été généré. Relancer `setup-aur.sh`. |
|
| `mkarchiso` plante sur `[fws-local]` | Le repo local n'a pas été généré. Relancer `setup-aur.sh`. |
|
||||||
| Écran noir après login Hyprland | Tu testes dans VirtualBox → pas d'accélération GPU. Utiliser QEMU/KVM avec `virtio-gpu` ou bare-metal. |
|
| Écran bleu 1-2 min au boot du live | Normal en VM : un worker udev traîne (plafonné à 45 s) — le splash « Préparation de l'installateur » l'indique. Attendre. |
|
||||||
|
| L'installateur semble figé / fenêtre blanche | Rendu logiciel en VM : la fenêtre Anaconda se peint lentement. Patienter quelques secondes. |
|
||||||
|
| Session Hyprland/i3 : fenêtres au contenu noir en VM | Compositing sur GPU virtuel — picom est auto-désactivé en VM (config FWS) ; si tu l'as réactivé, `pkill picom`. |
|
||||||
|
| Hyprland crash au lancement en VM | Géré : le wrapper `fws-hyprland` force le rendu logiciel (`kms_swrast`/llvmpipe) sous hyperviseur. Sur vrai GPU, rendu matériel normal. |
|
||||||
|
| Steam plante à l'install de SteamVR | En VM : `steam -cef-disable-gpu -cef-disable-gpu-compositing` (et la VR ne peut PAS marcher en VM — GPU/USB inaccessibles). |
|
||||||
|
| Icône Bluetooth absente / blueman en erreur | Pas d'adaptateur Bluetooth (cas VM) : le module de barre se cache et l'applet ne se lance pas — comportement voulu. |
|
||||||
|
| Le système installé ne boote plus | Booter l'ISO → entrée « **Réparer FWS (recovery)** » → réinstaller GRUB / régénérer l'initramfs. |
|
||||||
|
| Réinstallation par-dessus une install existante | Le kickstart nettoie tout (`zerombr` + `clearpart --all`), mais en cas de comportement étrange au 2ᵉ passage, effacer/recréer le disque virtuel. |
|
||||||
|
| ISO qui ne boote qu'en UEFI | Connu : l'ISO actuelle n'embarque que l'image El-Torito EFI (les bootmodes BIOS du profil ne produisent pas `/syslinux`) — à élucider ; utiliser une VM/machine UEFI. |
|
||||||
| Retours à la ligne CRLF | `build.sh` lance `dos2unix` automatiquement, mais si tu modifies pendant le build, relancer. |
|
| Retours à la ligne CRLF | `build.sh` lance `dos2unix` automatiquement, mais si tu modifies pendant le build, relancer. |
|
||||||
|
|
||||||
### Logs utiles
|
### Logs utiles
|
||||||
@@ -256,11 +292,16 @@ L'ISO finale est générée dans `./out/FWS-YYYY.MM.DD-x86_64.iso`.
|
|||||||
# Pendant le build
|
# Pendant le build
|
||||||
tail -f /tmp/fws-build/work/iso/arch/pkglist.x86_64.txt
|
tail -f /tmp/fws-build/work/iso/arch/pkglist.x86_64.txt
|
||||||
|
|
||||||
# Dans l'ISO (autologin tty1)
|
# Dans le LIVE (Ctrl+Alt+F2, login root) — pendant/après l'installation
|
||||||
journalctl -b
|
journalctl -b # système
|
||||||
|
cat /tmp/fws-liveinst.log # sortie complète de liveinst/anaconda
|
||||||
|
cat /tmp/anaconda.log # log principal anaconda
|
||||||
|
cat /tmp/fws-post-chroot.log # %post chrooté = grub-install/mkinitcpio
|
||||||
|
# En cas d'échec, l'écran de debug du live affiche déjà tout ça (zenity).
|
||||||
|
|
||||||
# Hyprland post-install
|
# Sur le système installé
|
||||||
cat ~/.local/share/hyprland/hyprland.log
|
cat /var/log/fws-post.log # trace complète du %post d'installation
|
||||||
|
journalctl -b # premier démarrage
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ Le système live héritait de l'`os-release` du paquet `filesystem` d'Arch et
|
|||||||
|
|
||||||
> **Red Hat®** et **Fedora®** sont des marques déposées de **Red Hat, Inc.**
|
> **Red Hat®** et **Fedora®** sont des marques déposées de **Red Hat, Inc.**
|
||||||
> L'installateur **Anaconda** est développé par Red Hat. FWS distribue une
|
> L'installateur **Anaconda** est développé par Red Hat. FWS distribue une
|
||||||
> **version MODIFIÉE** d'Anaconda (portée sur Arch, payload `liveimg`), **non
|
> **version MODIFIÉE** d'Anaconda (portée sur Arch, payload LiveOS), **non
|
||||||
> officielle**, **non fournie ni approuvée** par Red Hat ou le projet Fedora.
|
> officielle**, **non fournie ni approuvée** par Red Hat ou le projet Fedora.
|
||||||
> *« This product includes a modified version of Anaconda. Red Hat and Fedora
|
> *« This product includes a modified version of Anaconda. Red Hat and Fedora
|
||||||
> are trademarks of Red Hat, Inc. This is an unofficial build, not provided or
|
> are trademarks of Red Hat, Inc. This is an unofficial build, not provided or
|
||||||
|
|||||||
Reference in New Issue
Block a user