
2025/12/14 13:59
Pizlix: Memory Safe Linux from Scratch
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Pizlix は、Linux From Scratch 12.2 をベースに構築されたメモリ安全なオペレーティングシステムです。
Userland(GCC、Clang、ld、make、ninja など)は Fil‑C でコンパイルされ、標準 LFS パッケージとのほぼドロップイン互換性を保証します。
カーネルは Yolo‑C でビルドされ、その GCC は
にあります。 Yolo‑C++ コンパイラ(/yolo/bin/gcc)が通常の/usr/bin/clang‑20シンボリックリンクを提供します。gcc, g++, cc, c++, clang, clang++Pizlix は x86_64 ハードウェアをサポートし、VMware、Hyper‑V、および Ubuntu 24 でテスト済みです。インストールは LFS の手順に従い、
を/mnt/lfsにマウントし、/dev/sda4にスワップを設定し、/dev/sda3ユーザーを作成します。lfsビルド段階は「Pre‑LC → LC → Post‑LC」と BLFS GUI ステージのキー ポイントに従って実行されます。起動後は
、sshd、seatdが稼働し、デフォルトの root パスワードは「root」、ユーザー「pizlo」は sudo 権限を持ちます。dhcpcdcurl/wget 用に HTTPS を有効化するには
を実行します。メモリ安全な Weston デスクトップは Wayland 上で動作し、ビルドスクリプト(make-ca -g,build.shなど)を使用すると任意のステージを再起動または再構築できます。build_prelc.sh
簡潔版が望ましい場合は、元の概要を保持しつつ上記の欠落していた詳細を追加してすべての主要ポイントを完全に反映してください。
本文
Pizlix – メモリ安全性を備えた Linux From Scratch (LFS) ビルド
概要
- Pizlix は LFS 12.2 で、ユーザーランドは Fil‑C によりコンパイルされています。
- カーネル自体は Yolo‑C で構築され、GCC のコピーが
にインストールされています。/yolo/bin/gcc - C/C++ コンパイラは Yolo‑C++ からビルドされ、
として公開されます。/usr/bin/clang-20
,gcc
,g++
,cc
,c++
,clang
のシンボリックリンクはすべてこのバイナリを指します。clang++ - 他のビルドツール(
,ld
,make
など)は Fil‑C(または Fil‑C++)でコンパイルされます。ninja
Pizlix が機能する理由
Fil‑C は C/C++ と高い互換性があるため、ほとんどの LFS パッケージは変更せずにビルドできます。
ただし Fil‑C は LFS 章 5–7 で使用されるクロスコンパイル手法をサポートしていないため、Pizlix は Yolo‑C ツールチェーンと一時的なクロストゥールをそれらの段階で使用します。Yolo GCC は Linux カーネルのビルドに保持されます。
対応システム
- VMware と Hyper‑V の x86_64 でテスト済み。
- Ubuntu 24 上でもビルド可能。
インストール手順
-
Fil‑C リポジトリをクローン
git clone https://github.com/pizlonator/fil-c.git -
Pizlix ディレクトリへ移動
cd fil-c/pizlix -
前提条件
がマウントされたパーティションであること(デフォルト:/mnt/lfs
)。/dev/sda4
別の場所にある場合はスクリプトを編集してください。- スワップパーティションが
にあること。/dev/sda3
異なる位置または無い場合は調整してください。 - LFS 4.3–4.4 で説明されている
ユーザーを作成済み。lfs
-
ビルド
sudo ./build.sh -
ブートローダー設定
のエントリを GRUB 設定に追加し、再起動して Pizlix を起動します。etc/grub_custom
デフォルト構成
(メモリ安全な OpenSSH) – 起動中。sshd
– 起動中。seatd- root パスワード:
.root - ユーザー
のパスワード:pizlo
(sudo 権限あり)。pizlo
はdhcpcd
で DHCP を使用するよう設定。eth0
セキュリティ注意: システムを公開する前にパスワードを変更し、必要なら
アカウントを置き換えてください。pizlo
インストール後
-
CA 証明書を追加
sudo make-ca -g -
GUI を起動
非 root ユーザー(例:
)でログインし、次のコマンドを実行:pizloweston
ビルド段階
| ステージ | 説明 | コマンド |
|---|---|---|
| Pre‑LC | Yolo‑C GCC をブートストラップし、一時的なクロスツールをビルド。 | |
| LC | ブートストラップを Fil‑C コンパイラに置き換え、LFS に注入。 | |
| Post‑LC | LFS 章 8–10 を Fil‑C で完了。 | |
| Post‑LC 2 | BLFS コンポーネント(openssh, emacs, dhcpcd, cmake)。 | |
| Post‑LC 3 | Wayland + Weston GUI。 | |
| Post‑LC 4 | GTK 4。 | |
各段階でシステムをスナップショットし、任意のスナップから再開可能です。
便利なスクリプト
# chroot の仮想ファイルシステムをマウント/アンマウント sudo ./build_mount.sh sudo ./build_unmount.sh # chroot に入る sudo ./enter_chroot.sh # Post‑LC 前 sudo ./enter_chroot_late.sh # Post‑LC 後 # 特定コンポーネントを再ビルド sudo ./rebuild_pas.sh # libpizlo.so ランタイムのみ sudo ./rebuild_lc.sh # コンパイラ、libpizlo.so、ユーザー glibc
Fil‑C を LFS に注入する – 重要概念
1. Pre‑LC の調整
- すべてのツールを
でビルド。--prefix=/yolo - シンボリックリンク作成:
,/usr/bin → /yolo/bin
等。/usr/lib → /yolo/lib - 結果として、バイナリは実際には
にインストールされているが、/yolo
として認識。/usr
2. LC – コア変換
| サブステージ | 目的 |
|---|---|
| Fil‑C Build | カーネルヘッダを使用し Fil‑C(clang, libc++, libpizlo.so)をコンパイル。 |
| Yoloify | のシンボリックリンクを解除し、バイナリを Yolo ローダー () と rpath を使用するようパッチ。 |
| Yolo glibc Build | Fil‑C ランタイム用に最小限の Yolo‑glibc(glibc 2.40)をビルド。 を などへリネームし、ユーザー glibc と衝突しないようにする。 |
| Fil‑C Binary Drop | 事前ビルドの libpizlo.so、Fil‑C ヘッダ、および clang バイナリを に配置。コンパイラ用シンボリックリンクを設定。 |
| User glibc Build | Fil‑C を使用してフル glibc 2.40 をユーザー空間向けにビルド。 |
| libc++ Binary Drop | 事前ビルドの libc++abi/libc++ を にコピー。 |
3. Post‑LC の調整
- LFS 章 8–10 は通常通り進行。ただし:
- カーネルはホスト(Fil‑C)とターゲットコンパイラの両方でビルド。
- Fil‑C 互換性を確保するためにプログラムへの軽微なパッチ。
要約
Pizlix は、安全なコンパイラを LFS ビルドプロセスに注入することで、メモリ安全性を備えた OS をゼロから構築できることを示しています。2 つの glibc インスタンスを慎重に管理し、バイナリをパッチし、ツールチェーンパスを制御することで、Pizlix は LFS の完全な機能性を保ちつつ、ユーザーランドコード全てを Fil‑C でコンパイルします。