はじめに
bootc v1.16.2 で検証済み。コマンドは
podman入りの Linux ホストと root もしくはsudoを想定。
前提
- イメージをビルドするための
podman(またはdocker/buildah) が入った Linux ホスト。 bootc installは--privilegedを要するため root かsudo。- インストール先となる空きブロックデバイスか仮想マシンのディスク。インストールは対象デバイスを上書きする。
インストール
bootc のバイナリを通常のホストに入れてイメージを指すのではない。bootc は bootc 互換のベースイメージに同梱されており、そのイメージの中から実行する。まず Fedora bootc などの既存ベースイメージから始める。
podman pull quay.io/fedora/fedora-bootc:42最初の動く構成
中核の作業は、ブート可能な OS イメージをビルドし、bootc 互換であることを確認し、インストールすることだ。
派生イメージを作る。
Containerfileというファイルに以下を入れる。dockerfileFROM quay.io/fedora/fedora-bootc:42 RUN dnf -y install vim && dnf clean allpodmanでビルドし、自分のレジストリ向けにタグ付けする。bashpodman build -t quay.io/examplecorp/exampleos:latest .イメージが bootc 互換か確認する。
lintはcontainers.bootc=1ラベルやカーネル配置などの要件を検査する。bashpodman run --rm quay.io/examplecorp/exampleos:latest bootc container lintイメージをディスクへインストールする。bootc はイメージ自身の中から
--privilegedで実行し、対象ブロックデバイス (ここでは VM の/dev/vda) を指定する。bashsudo podman run --rm --privileged --pid=host --ipc=host \ -v /var/lib/containers:/var/lib/containers -v /dev:/dev \ --security-opt label=type:unconfined_t \ quay.io/examplecorp/exampleos:latest \ bootc install to-disk /dev/vda
インストールされたシステムは podman run 呼び出しに使われた pull 仕様を記録し、以後の更新に使う。よって quay.io/examplecorp/exampleos:latest からインストールしたホストは、同じ参照から更新を fetch する。
動作確認
インストールしたシステムを起動したら、bootc から見たホスト状態を確認する。
sudo bootc status出力は BootcHost オブジェクトで、booted イメージと staged / rollback エントリを示す。再起動せずに新しいイメージを fetch して queue するには次を実行する。
sudo bootc upgrade新バージョンは bootc status で staged として現れ、次回 shutdown 時に適用される。即座に再起動して切り替えるには sudo bootc upgrade --apply、直前のデプロイメントを次回ブート向けに queue するには sudo bootc rollback を使う。
次に読むもの
install to-filesystemなど外部インストーラ向けを含むインストール方式: bootc インストールドキュメント。- bootc 互換ベースイメージの作り方と
lintが課す要件: bootc イメージドキュメント。 - 完全なリファレンスと更新モデル: bootc 公式サイト・ドキュメント。