qpismont 9275d2c4a4
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/cron/ci Pipeline was canceled
Install Flatpak in an isolated transaction
Copy the SELinux store before installing Flatpak to avoid overlayfs
rename failures, then verify the compiled policy includes its helper
label.
2026-11-01 22:46:33 +01:00
2025-10-15 19:22:41 +02:00

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

S
Description
Custom fedora distribition, powered by bootc
Readme
203 KiB
0 Stars 1 Watchers 0 Forks
Languages
Dockerfile 80.8%
Shell 19.2%