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

4.2 KiB

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

./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 :

PULL_POLICY=missing ./build.sh

Générer une ISO bootable

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

./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