Fleur De Lys
Shell

Fleur De Lys

"Если вы хотите испечь яблочный пирог с нуля, сначала изобретите вселенную." — Карл Саган

Разметка диска

Образ использует таблицу разделов 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