Fleur De Lys
Shell

Fleur De Lys

"Jeśli chcesz zrobić szarlotkę od podstaw, najpierw wynajdź wszechświat." -- Carl Sagan

Układ dysku

Obraz wykorzystuje tablicę partycji GPT:

Partycja Rozmiar System plików Etykieta
p1 10G F2FS Fleur_de_Lys_Root
p2 20G bcachefs Fleur_de_Lys_Sources
p3 10G bcachefs Fleur_de_Lys_Home

Wymagania wstępne

Host z systemem Linux z następującymi narzędziami:

  • losetup, mount, chroot (util-linux)
  • Obsługa systemów plików F2FS i bcachefs (f2fs-tools, bcachefs-tools)
  • Standardowy zestaw narzędzi programistycznych (gcc, g++, make, binutils itp.)

Uruchom bash tests/version-check.sh, aby sprawdzić, czy host posiada wymagane narzędzia.

Użycie

Wszystkie polecenia wymagają uprawnień roota.

sudo make mount       # Podłącz obraz i zamontuj partycje do mnt_image/
sudo make run         # Montowanie + dowiązanie wirtualnych systemów plików + wejście do powłoki chroot
sudo make umount      # Odmontuj wszystko i odłącz urządzenie pętli

Budowanie obrazu od podstaw

Aby utworzyć nowy pusty obraz dysku (20 GB) z tablicą partycji i sformatowanymi systemami plików:

sudo bash scripts/build_os.sh

Struktura projektu

Fleur_de_Lys.img      # Obraz dysku
mnt_image/            # Punkt montowania (tworzony przez make mount)
Makefile              # Cele: mount, run i umount
docker/               # Wieloetapowe środowisko budowania Docker
  Dockerfile          # Warstwy budowania etapu 1 i 2
  engine/             # Skrypty budowania (fleur-build.sh itp.)
  recipes/            # Instrukcje budowania oprogramowania według etapów
etc/
  os-release          # Identyfikacja dystrybucji
scripts/
  build_os.sh         # Tworzenie i partycjonowanie nowego obrazu dysku
  build_img.sh        # Pomocnik tworzenia obrazu
  mount.sh            # Starszy skrypt montowania
tests/
  version-check.sh    # Sprawdzenie wymagań dotyczących narzędzi hosta

Środowisko narzędziowe Docker

Zestaw narzędzi i pośrednie narzędzia systemowe są budowane przy użyciu wieloetapowej kompilacji Docker:

  • Etap 1 (toolchain-builder): Inicjuje kompilator (gcc/clang), binutils i glibc.
  • Etap 2 (temp-tools-builder): Buduje wszystkie skompilowane krzyżowo narzędzia (bash, coreutils, python, meson, ninja itp.) do /tools.

Aby zbudować środowisko narzędziowe:

cd docker
make build