"Als je een appeltaart helemaal zelf wilt maken, moet je eerst het universum uitvinden." -- Carl Sagan
Schijfindeling
De image gebruikt een GPT-partitietabel:
| Partitie | Grootte | Bestandssysteem | Label |
|---|---|---|---|
| p1 | 10G | F2FS | Fleur_de_Lys_Root |
| p2 | 20G | bcachefs | Fleur_de_Lys_Sources |
| p3 | 10G | bcachefs | Fleur_de_Lys_Home |
Vereisten
Een Linux-host met de volgende beschikbare onderdelen:
losetup,mount,chroot(util-linux)- F2FS- en bcachefs-bestandssysteemondersteuning (
f2fs-tools,bcachefs-tools) - Standaard ontwikkelingsgereedschapsketen (gcc, g++, make, binutils, etc.)
Voer bash tests/version-check.sh uit om te controleren of uw host over de vereiste hulpmiddelen beschikt.
Gebruik
Alle opdrachten vereisen root-rechten.
sudo make mount # Koppel de image en mount partities in mnt_image/
sudo make run # Mount + bind virtuele bestandssystemen + open chroot-shell
sudo make umount # Ontkoppel alles en koppel het loop-apparaat los
De Image vanaf de Basis Bouwen
Om een nieuwe lege schijfimage (20 GB) te maken met de partitietabel en geformatteerde bestandssystemen:
sudo bash scripts/build_os.sh
Projectstructuur
Fleur_de_Lys.img # De schijfimage
mnt_image/ # Mountpunt (aangemaakt door make mount)
Makefile # Mount-, run- en unmount-doelen
docker/ # Multi-stage Docker-bouwomgeving
Dockerfile # Stage 1 & 2 bouwlagen
engine/ # Bouwscripts (fleur-build.sh, etc.)
recipes/ # Software-bouwinstructies per fase
etc/
os-release # Distributie-identiteit
scripts/
build_os.sh # Maak en partitioneer een nieuwe schijfimage
build_img.sh # Hulpprogramma voor image-creatie
mount.sh # Verouderd mount-script
tests/
version-check.sh # Controleer vereisten van host-gereedschapsketen
Docker-Gereedschapsketenomgeving
De gereedschapsketen en tussenliggende systeemhulpmiddelen worden gebouwd met behulp van een multi-stage Docker-build:
- Stage 1 (toolchain-builder): Bootstrap de compiler (gcc/clang), binutils en glibc.
- Stage 2 (temp-tools-builder): Bouwt alle cross-gecompileerde hulpprogramma's (bash, coreutils, python, meson, ninja, etc.) naar
/tools.
Om de gereedschapsketenomgeving te bouwen:
cd docker
make build
