Gentoo ベース OS イメージ・ツールチェーン

OSイメージの
ファクトリー。

Dockerがアプリケーションコンテナに対してやったことを、genpackはOS全体のレベルで実現します。

概要

宣言的。不変。
誰でも設定できる。

genpack は、Gentoo Linux をベースとしたイミュータブルなシステムイメージを 宣言的にビルド・配布・起動するためのツール群です。 OS 全体をひとつの JSON5 ブループリントから構築し、 ベアメタル・仮想マシン・組み込みデバイスをひとつのツールチェーンで扱います。

宣言的

JSON5 一ファイル

パッケージ・USE フラグ・ユーザー・サービス・カーネル設定を genpack.json5 に集約します。

不変

読み取り専用イメージ

最終成果物は SquashFS イメージ。更新は既存環境を書き換えるのではなく、新しいイメージに差し替えます。

設定可能

INI ファイルで現場設定

実行時設定は FAT32 パーティション上の system.ini に集約します。

最適化

Gentoo の力

USE フラグと Portage オーバーレイを活用し、用途に合わせた小さな実行環境を構成できます。

マルチプラットフォーム

x86_64 から RISC-V まで

プロファイルを切り替え、BIOS・UEFI・Raspberry Pi など複数の起動方式を扱います。

更新可能

アトミック自己更新

genpack-install がディスク書き込み、ISO生成、稼働中システムの更新を担います。

genpack は、非エンジニアでも現場で運用できる「アプライアンス」として、 高度に最適化された Linux イメージを配布するためのツールです。

ワークフロー

ビルド。デプロイ。起動。
設定変更。

ひとつの JSON5 定義から、ベアメタル・VM・組み込みデバイスで動くシステムへ。 OS はイミュータブル。設定はテキストエディタで一行変えるだけです。

1

genpack.json5 を書く

パッケージ・プロファイル・USE フラグ・ユーザー・サービスをひとつのファイルに宣言します。

2

genpack build を実行

systemd-nspawn コンテナ内でビルドし、出力は最小限の SquashFS イメージになります。

3

デプロイ

genpack-install で物理ディスクやISOへ展開し、VMでは外部の vm も利用できます。

4

system.ini を編集

ホスト名・ネットワーク・サービス設定は 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 の哲学

OS と設定を、
完全に分離する。

SquashFS イメージは読み取り専用。すべての実行時設定は FAT32 パーティション上の system.ini 一ファイルに集約されています。 SSH 不要。メモ帳で編集できます。挿し直して再起動するだけです。

堅牢性

SSH なしで復旧できる

ネットワーク設定ミスで接続不能になっても、ストレージを抜いて system.ini を編集して戻せます。

安全性

更新しても設定は消えない

SquashFS イメージを差し替えても system.ini はそのまま。OS更新と設定変更を分離します。

柔軟性

一時的にも、永続的にも

データパーティションの有無により、毎回クリーンな起動と永続運用を同一イメージで使い分けます。

コンポーネント

6つのコンポーネント。
ひとつの一貫したツールチェーン。

各コンポーネントは目的に特化して設計され、組み合わせることでイメージ設計から現場運用までをカバーします。

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を見る

すぐに使えるイメージ定義

レスキューシェルから
ML ワークステーションまで。

genpack-artifacts はツールチェーンを使って構築した具体的なイメージ定義のコレクションです。 すべてのアーティファクトは同じ構造に従います。

デスクトップ

gnome

GNOME デスクトップ環境

デスクトップ

streamer

OBS 配信ワークステーション

ML / AI

torch

PyTorch + ROCm / CUDA 環境

クラウド

nextcloud

セルフホスト型クラウドストレージ

プロジェクト管理

redmine

Redmine プロジェクト管理サーバー

ネットワーク

vpnhub

VPN ゲートウェイアプライアンス

ユーティリティ

stub

最小ビルド環境スケルトン

Documentation

詳しい仕様はドキュメントへ。

CLI、JSON5、アーティファクト構造、プロファイル、起動機序、インストーラの各ページを用意しています。

当社代表のデスクトップ(※)を常時ライブ配信中

※ライブ配信専用PC

OSSの検証や自社用ツールの開発といった公開できる作業に限り、 ライブ配信専用PC上で行っています。常時配信ですのでいつでもお気軽にチャットメッセージ(公開)を残していって下さい。