diff --git a/README.md b/README.md index 17396b9..c4dcd36 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 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**. @@ -9,14 +9,38 @@ Le projet est conçu pour être **construit depuis Windows via WSL** (les script ## Aperçu - **Base** : Arch Linux (rolling release) -- **Installateur** : en migration Calamares → Anaconda (Calamares retiré, Anaconda en préparation ; payload `liveimg` pour installer FWS et non Fedora) -- **Affichage live** : Xorg + Openbox (session graphique conservée pour l'installateur) -- **Bureaux installables** : XFCE, KDE Plasma, GNOME, Hyprland (choix à l'installation) -- **Boot** : BIOS (syslinux) + UEFI (systemd-boot) +- **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 + splash de préparation (l'installateur peut mettre 1 à 2 min à apparaître en VM) +- **Bureaux installables** : GNOME, KDE Plasma, XFCE, **Hyprland** (Wayland — non compatible VR), **i3** (X11 — compatible VR/SteamVR), ou ligne de commande seule +- **Boot** : UEFI (systemd-boot) + BIOS (syslinux) — entrées *normale*, *safe graphics (nomodeset)*, *Réparer FWS (recovery)* et *speech* - **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 ### Côté Windows (machine hôte) @@ -146,9 +170,9 @@ Détails utiles : Depuis **Git Bash sur Windows** (à la racine du repo) : ```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 -# (Calamares retiré ; l'installateur Anaconda est un chantier en cours) ./setup-aur.sh # É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`). 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). -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`. 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 -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` -3. `.zprofile` → `startx` -4. `.xinitrc` → Openbox (session graphique du live) -5. **[Chantier C]** lancement de l'installateur Anaconda — pas encore câblé (Calamares retiré au commit 05ae9c3) +3. `.zprofile` → mode recovery si demandé, sinon `startx` +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. **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 baseline** : `configs/baseline/packages.x86_64` - **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) -- **Branding ISO** : `configs/releng/profiledef.sh` (`iso_name`, `iso_label`, `iso_publisher`) +- **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) +- **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. | | `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`. | -| É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. | ### 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 tail -f /tmp/fws-build/work/iso/arch/pkglist.x86_64.txt -# Dans l'ISO (autologin tty1) -journalctl -b +# Dans le LIVE (Ctrl+Alt+F2, login root) — pendant/après l'installation +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 -cat ~/.local/share/hyprland/hyprland.log +# Sur le système installé +cat /var/log/fws-post.log # trace complète du %post d'installation +journalctl -b # premier démarrage ``` --- diff --git a/TRADEMARKS.md b/TRADEMARKS.md index c8abf75..3ab2d97 100644 --- a/TRADEMARKS.md +++ b/TRADEMARKS.md @@ -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.** > 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. > *« 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