"Se vuoi fare una torta di mele da zero, devi prima inventare l'universo." -- Carl Sagan
Schema del Disco
L'immagine utilizza una tabella delle partizioni GPT:
| Partizione | Dimensione | Filesystem | Etichetta |
|---|---|---|---|
| p1 | 10G | F2FS | Fleur_de_Lys_Root |
| p2 | 20G | bcachefs | Fleur_de_Lys_Sources |
| p3 | 10G | bcachefs | Fleur_de_Lys_Home |
Prerequisiti
Un host Linux con i seguenti strumenti disponibili:
losetup,mount,chroot(util-linux)- Supporto per filesystem F2FS e bcachefs (
f2fs-tools,bcachefs-tools) - Toolchain di sviluppo standard (gcc, g++, make, binutils, ecc.)
Esegui bash tests/version-check.sh per verificare che il tuo host abbia gli strumenti richiesti.
Utilizzo
Tutti i comandi richiedono privilegi di root.
sudo make mount # Monta l'immagine e le partizioni in mnt_image/
sudo make run # Monta + collega filesystem virtuali + entra nella shell chroot
sudo make umount # Smonta tutto e scollega il dispositivo loop
Creazione dell'Immagine da Zero
Per creare una nuova immagine disco vuota (20 GB) con la tabella delle partizioni e i filesystem formattati:
sudo bash scripts/build_os.sh
Struttura del Progetto
Fleur_de_Lys.img # L'immagine del disco
mnt_image/ # Punto di mount (creato da make mount)
Makefile # Target mount, run e umount
docker/ # Ambiente di build Docker multi-stage
Dockerfile # Layer di build Stage 1 e 2
engine/ # Script di build (fleur-build.sh, ecc.)
recipes/ # Istruzioni di build del software per stage
etc/
os-release # Identità della distribuzione
scripts/
build_os.sh # Crea e partiziona una nuova immagine disco
build_img.sh # Helper per la creazione dell'immagine
mount.sh # Script di mount legacy
tests/
version-check.sh # Verifica i requisiti della toolchain host
Ambiente Toolchain Docker
La toolchain e gli strumenti di sistema intermedi sono costruiti utilizzando una build Docker multi-stage:
- Stage 1 (toolchain-builder): Avvia il compilatore (gcc/clang), binutils e glibc.
- Stage 2 (temp-tools-builder): Compila tutte le utilità cross-compilate (bash, coreutils, python, meson, ninja, ecc.) in
/tools.
Per costruire l'ambiente toolchain:
cd docker
make build
