5.2 KiB
My Fedora - Distribution Fedora Personnalisée
Distribution Fedora 44 personnalisée basée sur Fedora Bootc avec GNOME, plus un ensemble d'outils de développement préinstallés.
Caractéristiques
Environnement de Bureau
- GNOME (
@gnome-desktop) avec support matériel complet - GDM comme gestionnaire de connexion (GNOME Initial Setup crée le premier compte au boot)
- Nautilus avec l'extension
nautilus-my-computer(dépôt Copr) - Plymouth pour l'animation de démarrage
- Vulkan et pilotes Mesa (x86_64 et i686)
- Pack d'icônes MoreWaita et boutons de fenêtre style Windows (
:minimize,maximize,close)
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, installé au premier démarrage
- CUPS - Support d'impression (avec
cups-pdf) - FFmpeg (
ffmpeg-free), GStreamer etffmpegthumbnailer
Configuration Système
- Locale : Français (
fr_FR.UTF-8) - Clavier : AZERTY (
fr), viavconsoleetxorg-keyboard.confpour GDM - Fuseau horaire :
Europe/Paris - Système de fichiers root : Btrfs
- Flatpak : Flathub et Bazaar ajoutés au premier démarrage (service
flatpak-first-boot) - Module
xpadchargé au démarrage (manettes Xbox)
Optimisations
user.max_user_namespacesaugmenté pour Podman- Support FUSE pour overlayfs
- Mise à jour automatique Bootc désactivée
- PackageKit et GNOME Software supprimés (gestion via Flatpak)
dnfavec--setopt=tsflags=nodocs(pas de documentation dans l'image)- Build sans
--layers(les commits de couches sont très lents sur stockagevfs/disque lent) ;PULL_POLICY=alwayspour forcer la mise à jour de l'image de base - Flatpak installé dans une transaction isolée, avec copie du store SELinux et vérification du label
flatpak_helper_exec_tau build
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 --pull=missing --isolation chroot (l'image de base n'est retéléchargée que si elle est absente). Pour forcer la récupération de la dernière image de base :
PULL_POLICY=always ./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) - Dépôts supplémentaires : Mullvad, Copr
yannmasoch/nautilus-my-computer
Services Activés
gdm.service(GNOME Display Manager)NetworkManager.servicebluetooth.servicepodman.socketcups.servicemullvad-daemon.serviceflatpak-first-boot.service(ajoute Flathub et 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
├── config/
│ └── xorg-keyboard.conf # Clavier FR pour GDM
├── 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
chrootlors de la construction - Le builder d'ISO nécessite des privilèges élevés et l'accès au storage Podman
ffmpegprovient des dépôts Fedora (ffmpeg-free) : pour les codecs complets, activer RPM Fusion- Le dépôt Flathub est ajouté au premier démarrage, pas pendant le build (écrire dans
/varest un anti-patron bootc) - Flatpak est installé dans une transaction isolée pour que le scriptlet
flatpak-selinuxenregistre correctement le module SELinux ; le build échoue si le labelflatpak_helper_exec_test absent de la politique compilée
Licence
Projet personnel