Ubuntu 22 上で作成した Ubuntu 24 のカスタム qcow2 イメージを CML で起動する
以前に以下のメモを書きました。
この過去メモに記載した init-os リポジトリへ新たに Ubuntu 24 の qemu イメージをカスタマイズする為の init-qemu-ubuntu24.sh というスクリプトを追加しました。 今回はこのスクリプトを使って作成した Ubuntu 24 イメージを CML 上で動作させる手順をメモしておきます。
init-qemu-ubuntu24.sh スクリプトについて¶
virt-customize でカスタマイズしたイメージも CloudInit で起動させるとホームディレクトリが初期化されてしまいます。 例えば ~/.bashrc
などの設定ファイルは勿論、mise でホームディレクトリ配下にインストールされたプラグインも初期化 (≒ 削除) されてしまいます。 その為、このスクリプトではホームディレクトリ以外の修正を主に実行した後、ホームディレクトリへの修正を実施する /usr/local/bin/init-img.sh
というスクリプトを保存だけして 実行はせずに 終了します。 CML 上で作成した qcow2 イメージを起動する際、CloudInit の runcmd
を使って /usr/local/bin/init-img.sh
を実行させ、全ての処理が終了します。
作業用 Ubuntu 22 の作成¶
Ubuntu 22.04LTS 上で qcow2 イメージをカスタマイズする に記載しましたが、Linux Kernel 6.x 系の Ubuntu 24 では virt-customize を正常に動作させることが出来なかった為、Ubuntu 22 環境を用意します。 Ubuntu 22 を用意したら libguestfs をインストールします。 virt-customize は libguestfs-tools に含まれますので、これをインストールします。
apt update
apt -y install libguestfs-tools
Ubuntu 24 の qcow2 イメージを取得する¶
Ubuntu Cloud Images 24.04 LTS Daily Build から Ubuntu 24 の qcow2 イメージをダウンロードします。 最新の日付 (または current
) をクリックします。
AMD64 の img イメージ、具体的には noble-server-cloudimg-amd64.img
をダウンロードします。
qcow2 イメージをカスタマイズする¶
virt-customize
の --run-command
で GitHub 上にある init-qemu-ubuntu24.sh というスクリプトを直接、実行します。
virt-customize -a noble-server-cloudimg-amd64.img --run-command "curl -Ls https://raw.githubusercontent.com/sig9org/init-os/master/init-qemu-ubuntu24.sh | bash -s"
私の検証環境では実行完了まで数分かかりました。 オリジナルと区別出来るよう、作成したイメージはファイル名を変更しておきます。
mv noble-server-cloudimg-amd64.img noble-server-cloudimg-amd64_extra-20250221.img
「オリジナル版」と「カスタマイズ版」のファイルサイズは各々、以下でした。
対象 | ファイル名 | サイズ | 差分 |
---|---|---|---|
オリジナル版 | noble-server-cloudimg-amd64.img | 582MB | - |
カスタマイズ版 | noble-server-cloudimg-amd64_extra-20250221.img | 1018MB | +436MB |
CML で起動する¶
カスタマイズした qcow2 イメージを CML へ登録し、ワークスペースにノードを配置したら、ノードの CONFIG
タブに以下を追加します。
runcmd:
- /bin/bash /usr/local/bin/init-img.sh
実際の設定画面のイメージは以下の通りです。
これでノードを起動すると CloudInit により、/usr/local/bin/init-img.sh
が実行され、初期化が完了します。