« Si vous souhaitez faire une tarte aux pommes à partir de zéro, commencez par inventer l'univers. » -- Carl Sagan
Structure du disque
L'image utilise une table de partition GPT :
| Partition | Taille | Système de fichiers | Étiquette |
|---|---|---|---|
| p1 | 10 Go | F2FS | Fleur_de_Lys_Root |
| p2 | 20 Go | bcachefs | Fleur_de_Lys_Sources |
| p3 | 10 Go | bcachefs | Fleur_de_Lys_Home |
Prérequis
Un hôte Linux disposant des éléments suivants :
losetup,mount,chroot(util-linux)- Prise en charge des systèmes de fichiers F2FS et bcachefs (
f2fs-tools,bcachefs-tools) - Chaîne d'outils de développement standard (gcc, g++, make, binutils, etc.)
Exécutez bash tests/version-check.sh pour vérifier que votre hôte dispose des outils requis.
Utilisation
Toutes les commandes nécessitent des privilèges root.
sudo make mount # Attache l'image et monte les partitions dans mnt_image/
sudo make run # Monte + lie les systèmes de fichiers virtuels + entre dans le shell chroot
sudo make umount # Démonte tout et détache le périphérique loop
Création de l'image à partir de zéro
Pour créer une nouvelle image disque vierge (20 Go) avec la table de partition et les systèmes de fichiers formatés :
sudo bash scripts/build_os.sh
Structure du projet
Fleur_de_Lys.img # L'image disque
mnt_image/ # Point de montage (créé par make mount)
Makefile # Cibles de montage, d'exécution et de démontage
docker/ # Environnement de construction Docker en plusieurs étapes
Dockerfile # Couches de construction des étapes 1 et 2
engine/ # Scripts de construction (fleur-build.sh, etc.)
recipes/ # Instructions de construction logicielle par étape
etc/
os-release # Identité de la distribution
scripts/
build_os.sh # Créer et partitionner une nouvelle image disque
build_img.sh # Assistant de création d'image
mount.sh # Script de montage hérité
tests/
version-check.sh # Vérification des exigences de la chaîne d'outils hôte
Environnement de la chaîne d'outils Docker
La chaîne d'outils et les outils système intermédiaires sont construits à l'aide d'une construction Docker en plusieurs étapes :
- Étape 1 (toolchain-builder) : Amorçage du compilateur (gcc/clang), de binutils et de glibc.
- Étape 2 (temp-tools-builder) : Compile tous les utilitaires cross-compilés (bash, coreutils, python, meson, ninja, etc.) dans
/tools.
Pour construire l'environnement de la chaîne d'outils :
cd docker
make build
