"Если вы хотите испечь яблочный пирог с нуля, сначала изобретите вселенную." — Карл Саган
Разметка диска
Образ использует таблицу разделов GPT:
| Раздел | Размер | Файловая система | Метка |
|---|---|---|---|
| p1 | 10G | F2FS | Fleur_de_Lys_Root |
| p2 | 20G | bcachefs | Fleur_de_Lys_Sources |
| p3 | 10G | bcachefs | Fleur_de_Lys_Home |
Предварительные требования
Хост под управлением Linux со следующим набором инструментов:
losetup,mount,chroot(util-linux)- Поддержка файловых систем F2FS и bcachefs (
f2fs-tools,bcachefs-tools) - Стандартный набор инструментов разработки (gcc, g++, make, binutils и т.д.)
Выполните bash tests/version-check.sh, чтобы проверить, что на хосте установлены необходимые инструменты.
Использование
Все команды требуют прав суперпользователя.
sudo make mount # Подключить образ и смонтировать разделы в mnt_image/
sudo make run # Смонтировать + привязать виртуальные файловые системы + войти в chroot-оболочку
sudo make umount # Отмонтировать всё и отключить loop-устройство
Сборка образа с нуля
Чтобы создать новый пустой образ диска (20 ГБ) с таблицей разделов и отформатированными файловыми системами:
sudo bash scripts/build_os.sh
Структура проекта
Fleur_de_Lys.img # Образ диска
mnt_image/ # Точка монтирования (создаётся командой make mount)
Makefile # Цели mount, run и unmount
docker/ # Многоступенчатая среда сборки Docker
Dockerfile # Слои сборки этапов 1 и 2
engine/ # Скрипты сборки (fleur-build.sh и т.д.)
recipes/ # Инструкции по сборке ПО по этапам
etc/
os-release # Идентификация дистрибутива
scripts/
build_os.sh # Создание и разметка нового образа диска
build_img.sh # Вспомогательный скрипт создания образа
mount.sh # Устаревший скрипт монтирования
tests/
version-check.sh # Проверка требований к инструментарию хоста
Среда сборки Docker
Инструментарий и промежуточные системные утилиты собираются с помощью многоступенчатой сборки Docker:
- Этап 1 (toolchain-builder): Загрузка компилятора (gcc/clang), binutils и glibc.
- Этап 2 (temp-tools-builder): Сборка всех кросскомпилированных утилит (bash, coreutils, python, meson, ninja и т.д.) в
/tools.
Для сборки среды инструментария:
cd docker
make build
