IncusOS とは? ¶
IncusOS は、Incus を安全・確実に動かすことだけを考えて設計されたイミュータブルな OS です。 UEFI セキュアブートやTPMのようなモダンなセキュリティの機能を使って、安全なブート体験とシームレスな完全なディスクの暗号化を提供します。
更新は A/B 方式を使ってアトミックに適用され、問題があった場合は簡単に元に戻せます。
システム自身は、ローカルあるいはリモートのシェルを提供せずに完全にロックダウンされ、認証された REST API のみが Incus にアクセスし、API を通して OS を管理します。
IncusOS は、Incus の上にインフラストラクチャーを構築・稼働させることにフォーカスし、下層のインフラストラクチャーを信頼性があり更新が容易であるものにしたい人にとって理想的です。
すべての IncusOS サーバーは、bit 単位で完全に同一なソフトウェアを稼働することが保証され、デプロイメントのばらつきをなくし、大量のサーバーでもスケールや再デプロイを容易にします。
コア機能 ¶
主な設計の特徴:
- 安全なブート(UEFIセキュアブートとTPM 2.0の計測)
- 完全なディスク暗号化(TPMを使用したLUKSやZFS暗号化)
- イミュータブル(A/Bパーティション方式、すべてのOSパーティションは読み取り専用で署名される)
- ロックダウン(APIのみでの管理)
- モダンな Intel/AMD または ARM システムのための設計
ストレージ機能:
- 自動のローカルZFSプール
- 追加のディスク上に複雑なZFSプールを作成することをサポート
- ファイバーチャネルとマルチパスのサポート
- NVME-over-TCPのサポート
- iSCSI サポート
- Clustered LVMのサポート(ファイバーチャネル、NVME-over-TCP、iSCSIのいずれかの上に)
- CephまたはLinstorを使ったソフトウェア定義ストレージのサポート
ネットワーク機能:
- VLAN対応の自動ブリッジングによりインスタンスを任意のインターフェースに簡単に取り付け
- リンクアグリゲーションのサポート(passiveとネゴシエーションの両方)
- LLDP のサポート
- エンタープライズプロキシーサーバーのサポート(Kerberos認証を含む)
- 堅牢なNTPのサポート
- syslogを使ったリモートロギングのサポート(UDP、TCP、TLS)
- OVS/OVNを使ったソフトウェア定義ネットワークのサポート
- Tailscaleをネイティブでサポート(Netbirdも近日対応予定)
管理機能:
- オペレーションセンターを使った集中管理
- メインのOS設定と個々のアプリケーションデータの両方のバックアップ/リストアー
- OS全体または個々のアプリケーションのファクトリーリセット
- 柔軟なアップデート管理
技術的な詳細 ¶
IncusOSは、Debian 13の上に、私たちが独自にビルドしたIncusとカーネルを使って構成しています。
Incusそのものを動かすのに加えて、Incusはオペレーションセンターとマイグレーションマネージャーを動かすための基礎となるOSとしても使えます。 これにより、VMwareや似たような環境からIncusへの移行を容易にします。
私たちはsystemdのモダンなOS機能を広範囲に使って、イメージを構築し、OSの更新を処理し、初回ブート時のパーティション作成やTPMを使った暗号化などに対処しています。
更新とリリースの頻度 ¶
現在私たちはIncusOSに2つの更新チャンネルを提供しています:
- stable
- testing
すべてのインストールはデフォルトでは stable チャンネルを使用します。このチャンネルでは Linux カーネルや重要なセキュリティーの問題の最新の安定版のバグフィクスリリースを含む更新が通常は週に少なくとも一回あります。
testing チャンネルはもっと頻繁にビルドが提供され、通常は1日に1回更新されます。
IncusOS のシステムはデフォルトでは6時間ごとに更新を確認し、非常に短いAPIのダウンタイムだけで(稼働中のインスタンスには影響なし)自動的にIncus自身を更新し、OSの更新は次回のリブート時にスケジュールします。
更新の頻度を変更したり、自動更新を完全に無効にしたり、アプリケーションの更新を適用するためのスケジュールされたダウンタイムを設定するための設定オプションが利用できます。
貢献 ¶
IncusOS は Github で開発されています https://github.com/lxc/incus-os 。
IncusOS プロジェクトは、イメージのビルドに使われる mkosi を駆動するための設定ファイルと、OS 管理デーモンと関連ツール用の Go で書かれたコードで構成されています。
すべてのコードは Apache 2.0 ライセンスのもとにリリースされています。