Skip to content

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