Files
my-fedora/README.md
T
qpismont 5b169a7ddb
ci/woodpecker/push/ci Pipeline was canceled
ci/woodpecker/cron/ci Pipeline was successful
Switch to KDE Plasma and clean up Containerfile
2026-11-01 11:32:21 +01:00

133 lines
4.2 KiB
Markdown

# My Fedora - Distribution Fedora Personnalisée
Distribution Fedora 44 personnalisée basée sur Fedora Bootc avec KDE Plasma et un ensemble d'outils de développement préinstallés.
## Caractéristiques
### Environnement de Bureau
- **KDE Plasma** (`@kde-desktop-environment`) avec support matériel complet
- **Plasma Login Manager** (`plasmalogin`) à la place de SDDM
- **Plymouth** pour l'animation de démarrage
- **Vulkan** et pilotes Mesa (x86_64 et i686)
### Outils de Développement
- **Development Tools** complet
- **Podman**, **Buildah**, **Podman Compose**, **distrobox**
- Support Docker via `podman-docker`
- **Starship** (prompt) configuré pour tous les utilisateurs
- **FiraMono Nerd Font**
### Applications Préinstallées
- **Mullvad VPN** - Client VPN sécurisé
- **Filen** - Stockage cloud
- **Bazaar** (Flatpak) - Gestionnaire d'applications
- **CUPS** - Support d'impression (avec `cups-pdf`)
- **FFmpeg** (`ffmpeg-free`), GStreamer et `ffmpegthumbnailer`
### Configuration Système
- **Locale** : Français (`fr_FR.UTF-8`)
- **Clavier** : AZERTY (`fr`)
- **Fuseau horaire** : `Europe/Paris`
- **Système de fichiers root** : Btrfs
- **Flatpak** : Flathub configuré par défaut
- **Module `xpad`** chargé au démarrage (manettes Xbox)
### Optimisations
- `user.max_user_namespaces` augmenté pour Podman
- Support FUSE pour overlayfs
- Mise à jour automatique Bootc désactivée
- PackageKit supprimé (gestion via Flatpak)
- `dnf` avec `--setopt=tsflags=nodocs` (pas de documentation dans l'image)
- Build avec cache de couches (`buildah bud --layers`) et pull de l'image de base (`--pull=always`)
## Prérequis
- Fedora avec Buildah et Podman installés
- Accès root pour la génération d'ISO
- Connexion Internet pour télécharger les dépendances
## Utilisation
### Construire l'image conteneur
```bash
./build.sh
```
Construit l'image localement avec le tag `localhost/tintounn/my-fedora:latest`.
Le script utilise `buildah bud --layers --pull=always --isolation chroot`. Pour éviter de retélécharger l'image de base à chaque build local, tu peux utiliser :
```bash
PULL_POLICY=missing ./build.sh
```
### Générer une ISO bootable
```bash
sudo ./build-iso.sh
```
Construit l'image puis génère une ISO Anaconda dans le répertoire `output/`. L'ISO utilise Btrfs comme système de fichiers root.
Le script utilise `sudo podman` et le storage root de Podman : lance-le avec `sudo` pour que l'image construite soit visible par `bootc-image-builder`.
### Publier l'image sur Docker Hub
```bash
./push-image.sh
```
Pousse l'image vers `docker.io/tintounn/my-fedora:latest`.
## Architecture
- **Base** : `registry.fedoraproject.org/fedora-bootc:44`
- **Type** : Image conteneur bootable (Bootc)
- **Target** : Système graphique (`graphical.target`)
## Services Activés
- `plasmalogin.service` (Plasma Login Manager)
- `NetworkManager.service`
- `bluetooth.service`
- `podman.socket`
- `cups.service`
- `mullvad-daemon.service`
- `flatpak-first-boot.service` (installe Bazaar au premier démarrage)
## Intégration Continue
Le projet utilise **Woodpecker CI** avec déclenchement automatique :
- **Sur push** vers la branche `main`
- **Nuit** via un cron nommé "upgrade base image"
Le pipeline CI construit et publie automatiquement l'image sur Docker Hub.
## Structure du Projet
```
.
├── Containerfile # Définition de l'image
├── build.sh # Script de construction d'image
├── build-iso.sh # Script de génération d'ISO
├── push-image.sh # Script de publication
├── iso.toml # Configuration de l'installeur Anaconda
├── services/
│ └── flatpak-first-boot.service
├── .woodpecker/
│ └── ci.yaml # Configuration Woodpecker CI
└── output/ # Répertoire de sortie pour les ISO (généré)
```
## Notes
- Les mises à jour automatiques Bootc sont masquées pour un contrôle manuel
- L'image utilise l'isolation `chroot` lors de la construction
- Le builder d'ISO nécessite des privilèges élevés et l'accès au storage Podman
- `ffmpeg` provient des dépôts Fedora (`ffmpeg-free`) : pour les codecs complets, activer RPM Fusion
## Licence
Projet personnel