"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
