Linux の qcow2 イメージをカスタマイズする
qcow2 イメージに対して「パッケージを追加したい」「ファイルを追加 / 削除したい」などの操作を行う手順をメモしておきます。
検証環境¶
対象 | バージョン |
---|---|
AlmaLinux | 9.4 |
guestfs-tools | 1.51.6-2 |
libvirt | 10.0.0-6.6 |
qemu-kvm | 8.2.0-11 |
事前準備¶
必要なソフトウェアをインストールします。
dnf -y install guestfs-tools libvirt qemu-kvm
libvirtd を開始しておきます。
systemctl start libvirtd.service
systemctl enable libvirtd.service
操作方法¶
qcow2 イメージの操作には virt-customize
を使います。 例えば cloud-init
パッケージを追加するには以下のように実行します。
virt-customize -a VIRTUAL-MACHINE.qcow2 --install cloud-init
但し、今回の環境ではそのまま実行するとエラーになってしまいました。
# virt-customize -a VIRTUAL-MACHINE.qcow2 --install cloud-init
[ 0.0] Examining the guest ...
virt-customize: error: libguestfs error: could not create appliance through
libvirt.
Try running qemu directly without libvirt using this environment variable:
export LIBGUESTFS_BACKEND=direct
Original error from libvirt: Cannot access storage file
'/root/work/VIRTUAL-MACHINE.qcow2' (as uid:107, gid:107): Permission
denied [code=38 int1=13]
If reporting bugs, run virt-customize with debugging enabled and include
the complete output:
virt-customize -v -x [...]
エラーメッセージの内容に従って環境変数 LIBGUESTFS_BACKEND=direct
を定義してから実行すると正常に実行出来ました。
export LIBGUESTFS_BACKEND=direct
virt-customize -a VIRTUAL-MACHINE.qcow2 --install cloud-init
ファイルを削除する場合は以下のように --delete
オプションを指定します。
export LIBGUESTFS_BACKEND=direct
virt-customize -a VIRTUAL-MACHINE.qcow2 --delete /etc/cloud/cloud.cfg.d/99-installer.cfg