「アップルパイを一から作ろうと思ったら、まず宇宙を発明しなければならない」――カール・セーガン
ディスクレイアウト
このイメージは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を実行して、ホストが必要なツールを備えているか確認してください。
使用方法
すべてのコマンドはroot権限が必要です。
sudo make mount # イメージをアタッチし、パーティションをmnt_image/にマウント
sudo make run # マウント + 仮想ファイルシステムのバインド + chrootシェルに入る
sudo make umount # すべてをアンマウントし、ループデバイスをデタッチ
イメージをゼロからビルドする
パーティションテーブルとフォーマット済みファイルシステムを持つ新しい空のディスクイメージ(20 GB)を作成するには:
sudo bash scripts/build_os.sh
プロジェクト構造
Fleur_de_Lys.img # ディスクイメージ
mnt_image/ # マウントポイント(make mountで作成)
Makefile # マウント、実行、アンマウントのターゲット
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
