Fleur De Lys
Shell

Fleur De Lys

"Wenn du einen Apfelkuchen von Grund auf selbst machen willst, musst du zuerst das Universum erschaffen." – Carl Sagan

Festplattenlayout

Das Image verwendet eine GPT-Partitionstabelle:

Partition Größe Dateisystem Bezeichnung
p1 10G F2FS Fleur_de_Lys_Root
p2 20G bcachefs Fleur_de_Lys_Sources
p3 10G bcachefs Fleur_de_Lys_Home

Voraussetzungen

Ein Linux-Host mit folgenden Komponenten:

  • losetup, mount, chroot (util-linux)
  • F2FS- und bcachefs-Dateisystemunterstützung (f2fs-tools, bcachefs-tools)
  • Standard-Entwicklungswerkzeugkette (gcc, g++, make, binutils, usw.)

Führen Sie bash tests/version-check.sh aus, um zu überprüfen, ob Ihr Host über die erforderlichen Werkzeuge verfügt.

Verwendung

Alle Befehle erfordern Root-Rechte.

sudo make mount       # Image einbinden und Partitionen in mnt_image/ einhängen
sudo make run         # Einhängen + virtuelle Dateisysteme binden + chroot-Shell öffnen
sudo make umount      # Alles aushängen und Loop-Gerät trennen

Erstellen des Images von Grund auf

Um ein neues leeres Festplattenimage (20 GB) mit Partitionstabelle und formatierten Dateisystemen zu erstellen:

sudo bash scripts/build_os.sh

Projektstruktur

Fleur_de_Lys.img      # Das Festplattenimage
mnt_image/            # Einhängepunkt (erstellt von make mount)
Makefile              # Ziele zum Einhängen, Ausführen und Aushängen
docker/               # Mehrstufige Docker-Build-Umgebung
  Dockerfile          # Build-Ebenen Stufe 1 und 2
  engine/             # Build-Skripte (fleur-build.sh, usw.)
  recipes/            # Software-Build-Anleitungen nach Stufe
etc/
  os-release          # Distributionskennung
scripts/
  build_os.sh         # Neues Festplattenimage erstellen und partitionieren
  build_img.sh        # Hilfsskript zur Image-Erstellung
  mount.sh            # Legacy-Einhängeskript
tests/
  version-check.sh    # Überprüfung der Host-Werkzeugkettenanforderungen

Docker-Werkzeugkettenumgebung

Die Werkzeugkette und die Zwischensystemwerkzeuge werden mit einem mehrstufigen Docker-Build erstellt:

  • Stufe 1 (toolchain-builder): Bootstrap des Compilers (gcc/clang), binutils und glibc.
  • Stufe 2 (temp-tools-builder): Erstellt alle cross-kompilierten Dienstprogramme (bash, coreutils, python, meson, ninja, usw.) in /tools.

So erstellen Sie die Werkzeugkettenumgebung:

cd docker
make build