宣言的
JSON5 一ファイル
パッケージ・USE フラグ・ユーザー・サービス・カーネル設定を genpack.json5 に集約します。
概要
genpack は、Gentoo Linux をベースとしたイミュータブルなシステムイメージを 宣言的にビルド・配布・起動するためのツール群です。 OS 全体をひとつの JSON5 ブループリントから構築し、 ベアメタル・仮想マシン・組み込みデバイスをひとつのツールチェーンで扱います。
宣言的
パッケージ・USE フラグ・ユーザー・サービス・カーネル設定を genpack.json5 に集約します。
不変
最終成果物は SquashFS イメージ。更新は既存環境を書き換えるのではなく、新しいイメージに差し替えます。
設定可能
実行時設定は FAT32 パーティション上の system.ini に集約します。
最適化
USE フラグと Portage オーバーレイを活用し、用途に合わせた小さな実行環境を構成できます。
マルチプラットフォーム
プロファイルを切り替え、BIOS・UEFI・Raspberry Pi など複数の起動方式を扱います。
更新可能
genpack-install がディスク書き込み、ISO生成、稼働中システムの更新を担います。
genpack は、非エンジニアでも現場で運用できる「アプライアンス」として、 高度に最適化された Linux イメージを配布するためのツールです。
ワークフロー
ひとつの JSON5 定義から、ベアメタル・VM・組み込みデバイスで動くシステムへ。 OS はイミュータブル。設定はテキストエディタで一行変えるだけです。
パッケージ・プロファイル・USE フラグ・ユーザー・サービスをひとつのファイルに宣言します。
systemd-nspawn コンテナ内でビルドし、出力は最小限の SquashFS イメージになります。
genpack-install で物理ディスクやISOへ展開し、VMでは外部の vm も利用できます。
ホスト名・ネットワーク・サービス設定は FAT32 パーティション上のテキストファイルで管理します。
// genpack.json5 { name: "nextcloud", profile: "paravirt", packages: [ "www-apps/nextcloud", "dev-db/mysql", "dev-lang/php", "net-misc/redis" ], services: ["apache2", "mysqld", "redis"], use: { "dev-lang/php": "+mysql +curl +gd +xml +zip" }, compression: "xz" }
これ一枚で OS 全体の定義が完結します。
ストレージ構成 ├── パーティション 1: FAT32(ブート) │ ├── EFI/ (ブートローダー) │ ├── system.img (SquashFS / 読み取り専用) │ └── system.ini (ユーザーが編集する唯一のファイル) └── パーティション 2: データ領域(任意)
system.ini の哲学
SquashFS イメージは読み取り専用。すべての実行時設定は FAT32 パーティション上の system.ini 一ファイルに集約されています。 SSH 不要。メモ帳で編集できます。挿し直して再起動するだけです。
堅牢性
ネットワーク設定ミスで接続不能になっても、ストレージを抜いて system.ini を編集して戻せます。
安全性
SquashFS イメージを差し替えても system.ini はそのまま。OS更新と設定変更を分離します。
柔軟性
データパーティションの有無により、毎回クリーンな起動と永続運用を同一イメージで使い分けます。
コンポーネント
各コンポーネントは目的に特化して設計され、組み合わせることでイメージ設計から現場運用までをカバーします。
genpack
Python + C++
コアビルドエンジン。genpack.json5 を受け取り、SquashFS イメージを生成します。
genpack CLIを見るgenpack-overlay
Gentoo ebuild / profile
Portage を拡張する Gentoo オーバーレイ。メタパッケージやプロファイル階層を提供します。
プロファイルを見るgenpack-init
C++ + Python
PID 1 の init。起動のたびに system.ini を読み込み、systemd に引き継ぎます。
起動機序を見るgenpack-install
C++
物理ディスクへの書き込み、ISO/ZIP生成、稼働中システムの更新を担います。
genpack-installを見るvm
C++
genpack イメージを QEMU/KVM 仮想マシンとして実行・管理します。
shimarin/vmを見るgenpack-artifacts
JSON5 + shell
すぐにビルドできるイメージ定義のライブラリです。
stubアーティファクトを見るすぐに使えるイメージ定義
genpack-artifacts はツールチェーンを使って構築した具体的なイメージ定義のコレクションです。 すべてのアーティファクトは同じ構造に従います。
デスクトップ
GNOME デスクトップ環境
デスクトップ
OBS 配信ワークステーション
ML / AI
PyTorch + ROCm / CUDA 環境
クラウド
セルフホスト型クラウドストレージ
プロジェクト管理
Redmine プロジェクト管理サーバー
ネットワーク
VPN ゲートウェイアプライアンス
ユーティリティ
最小ビルド環境スケルトン
ほか多数
GitHubで一覧を見る※ライブ配信専用PC
OSSの検証や自社用ツールの開発といった公開できる作業に限り、 ライブ配信専用PC上で行っています。常時配信ですのでいつでもお気軽にチャットメッセージ(公開)を残していって下さい。