パーティショニング手法

IncusOSはsystemd-repartを使って初回ブート時にメインシステムドライブに自動的にパーティションを作成します。パーティションテーブルのレイアウトは以下のようになります:

EFI ESP (2GiB)
seed data (100MiB)
A-side root partition signing (16kiB)
A-side root partition hashes (100MiB)
A-side root partition (1GiB)
B-side root partition signing (16KiB)
B-side root partition hashes (100Mib)
B-side root partition (1GiB
LUKS encrypted swap (4GiB)
LUKS encrypted ext4 system data (25 GiB)
ZFS encrypted pool "local" (remaining space)

A/Bアップデート

EFI ESPパーティションは2つの異なる署名されたUKIイメージを持ち、それぞれがA-あるいはB-側のルートパーティションに対応します。OSの更新がインストールされる際、起動する際に使用していない側のUKIが更新され、対応する署名、ハッシュ、データパーティションがアトミックに更新されます。再起動時にsystemd-bootが更新されたUKIを自動で選びます。

シードデータパーティション

シードデータパーティションはインストールやファクトリーリセットに使われます。

暗号化されたパーティション

ユーザーデータを持つパーティションは暗号化されます。スワップとext4システムパーティションはともに暗号化され、通常の運用では起動時にTPMにより自動的にロック解除されます。何らかの理由でロック解除が失敗した場合、リカバリーキーを提供することでシステムを起動できます。

IncusOSで作成される各ZFSプールはランダムに生成された鍵で暗号化されます。これらの鍵は暗号化されたシステムパーティションに保管されます。

暗号鍵はセキュリティーAPIで取得できます。

システムパーティション

システムパーティションはイミュータブルなIncusOSイメージに含まれないすべてのシステムデータを保持します。

"local" ZFSプール

"local" ZFSプールはメインシステムドライブの残りのスペースすべてを使います。これはアプリケーションで使うことができ、例えば、Incusがインストールされる場合、コンテナーや仮想マシンのためのデフォルトストレージプールとして使うlocal/incusデータセットを作成します。