"Si deseas hacer un pastel de manzana desde cero, primero inventa el universo." -- Carl Sagan
Diseño del Disco
La imagen utiliza una tabla de particiones GPT:
| Partición | Tamaño | Sistema de Archivos | Etiqueta |
|---|---|---|---|
| p1 | 10G | F2FS | Fleur_de_Lys_Root |
| p2 | 20G | bcachefs | Fleur_de_Lys_Sources |
| p3 | 10G | bcachefs | Fleur_de_Lys_Home |
Requisitos Previos
Un host Linux con lo siguiente disponible:
losetup,mount,chroot(util-linux)- Soporte para sistemas de archivos F2FS y bcachefs (
f2fs-tools,bcachefs-tools) - Cadena de herramientas de desarrollo estándar (gcc, g++, make, binutils, etc.)
Ejecute bash tests/version-check.sh para verificar que su host tenga las herramientas requeridas.
Uso
Todos los comandos requieren privilegios de root.
sudo make mount # Adjuntar la imagen y montar las particiones en mnt_image/
sudo make run # Montar + enlazar sistemas de archivos virtuales + entrar al shell chroot
sudo make umount # Desmontar todo y desconectar el dispositivo loop
Construcción de la Imagen desde Cero
Para crear una nueva imagen de disco en blanco (20 GB) con la tabla de particiones y sistemas de archivos formateados:
sudo bash scripts/build_os.sh
Estructura del Proyecto
Fleur_de_Lys.img # La imagen de disco
mnt_image/ # Punto de montaje (creado por make mount)
Makefile # Objetivos de montaje, ejecución y desmontaje
docker/ # Entorno de construcción Docker multi-etapa
Dockerfile # Capas de construcción Etapa 1 y 2
engine/ # Scripts de construcción (fleur-build.sh, etc.)
recipes/ # Instrucciones de construcción de software por etapa
etc/
os-release # Identidad de la distribución
scripts/
build_os.sh # Crear y particionar una nueva imagen de disco
build_img.sh # Ayudante para creación de imágenes
mount.sh # Script de montaje heredado
tests/
version-check.sh # Verificar requisitos de la cadena de herramientas del host
Entorno de Cadena de Herramientas Docker
La cadena de herramientas y las herramientas intermedias del sistema se construyen utilizando una compilación Docker multi-etapa:
- Etapa 1 (toolchain-builder): Inicializa el compilador (gcc/clang), binutils y glibc.
- Etapa 2 (temp-tools-builder): Construye todas las utilidades compiladas de forma cruzada (bash, coreutils, python, meson, ninja, etc.) en
/tools.
Para construir el entorno de la cadena de herramientas:
cd docker
make build
