Skip to content

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) をクリックします。

file

AMD64 の img イメージ、具体的には noble-server-cloudimg-amd64.img をダウンロードします。

file

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

実際の設定画面のイメージは以下の通りです。

file

これでノードを起動すると CloudInit により、/usr/local/bin/init-img.sh が実行され、初期化が完了します。