Fleur De Lys
Shell

Fleur De Lys

"Se você deseja fazer uma torta de maçã do zero, primeiro invente o universo." -- Carl Sagan

Layout do disco

A imagem utiliza uma tabela de partições GPT:

Partição Tamanho Sistema de arquivos Rótulo
p1 10G F2FS Fleur_de_Lys_Root
p2 20G bcachefs Fleur_de_Lys_Sources
p3 10G bcachefs Fleur_de_Lys_Home

Pré-requisitos

Um host Linux com o seguinte disponível:

  • losetup, mount, chroot (util-linux)
  • Suporte aos sistemas de arquivos F2FS e bcachefs (f2fs-tools, bcachefs-tools)
  • Conjunto de ferramentas de desenvolvimento padrão (gcc, g++, make, binutils, etc.)

Execute bash tests/version-check.sh para verificar se o seu host possui as ferramentas necessárias.

Utilização

Todos os comandos requerem privilégios de root.

sudo make mount # Anexar a imagem e montar partições em mnt_image/
sudo make run # Montar + vincular sistemas de arquivos virtuais + entrar no shell chroot
sudo make umount # Desmontar tudo e desanexar o dispositivo loop

Construindo a imagem do zero

Para criar uma nova imagem de disco em branco (20 GB) com a tabela de partições e sistemas de arquivos formatados:

sudo bash scripts/build_os.sh

Estrutura do projeto

Fleur_de_Lys.img # A imagem de disco
mnt_image/ # Ponto de montagem (criado por make mount)
Makefile # Alvos de montagem, execução e desmontagem
docker/ # Ambiente de compilação Docker em múltiplas etapas
  Dockerfile # Camadas de compilação das etapas 1 e 2
  engine/ # Scripts de compilação (fleur-build.sh, etc.)
  recipes/ # Instruções de compilação de software por estágio
etc/
  os-release # Identidade da distribuição
scripts/
  build_os.sh # Cria e particiona uma nova imagem de disco
  build_img.sh # Auxiliar de criação de imagem
  mount.sh # Script de montagem legado
tests/
  version-check.sh    # Verifica os requisitos da cadeia de ferramentas do host

Ambiente da cadeia de ferramentas do Docker

A cadeia de ferramentas e as ferramentas do sistema intermediário são construídas usando uma compilação Docker em múltiplas etapas:

  • Etapa 1 (toolchain-builder): Inicializa o compilador (gcc/clang), o binutils e a glibc.
  • Etapa 2 (temp-tools-builder): Compila todos os utilitários compilados de forma cruzada (bash, coreutils, python, meson, ninja, etc.) em /tools.

Para construir o ambiente da cadeia de ferramentas:

cd docker
make build