2024/01/27

virt-installで「ERROR cannot rename file '(null).new' as '(null)': Bad address」

2022年11月末に作成したvirt-installのオプションを生成するスクリプトで、QEMUゲストのdomainを作成できなくなった。

Starting install...
ERROR    cannot rename file '(null).new' as '(null)': Bad address
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
  virsh --connect qemu:///system start Win11VM_ZS4
otherwise, please restart your installation.


というエラーが出る。スクリプトが生成するvirt-installのオプションはたくさんあるので、何が原因かを探ると、

--boot loader=/usr/share/edk2-ovmf/OVMF_CODE.secboot.fd,loader.readonly=yes,loader.type=pflash,nvram.template=/data/VM_images/OVMF_VARS_Win11VM_ZS4_libvirt.fd,loader_secure=yes

が原因であることがわかった。ネットでは、loaderの指定が間違っている事例はあったが今回の事例では間違っていない。/data/VM_images/OVMF_VARS_Win11VM_ZS4_libvirt.fdというファイルも作成(/usr/share/edk2-ovmf/OVMF_VARS.fdのコピー)も作成してある。

試行錯誤の結果、「nvram.template=/data/VM_images/OVMF_VARS_Win11VM_ZS4_libvirt.fd,」の部分を削除するとゲストが作成されることがわかった。

作成されたxmlを過去に作ったものと比較すると、<nvram>タグで指定されている内容が異なる。以前はnvram.templateで指定したファイル名が templateに指定されていたが、今回はloaderで指定したファイル名がtemplateに指定されている。

ただ、どちらのケースでも、<nvram>タグ内の内容は/var/lib/libvirt/qemu/nvramディレクトリ内に自動生成されたであろうファイル名になっているため、virt-installの--bootでは、nvram.templateを指定する必要はなさそうだ、という結論に至った。

過去に作ったもの

<nvram template='/data/VM_images/OVMF_VARS_Win11VM_ZS2_libvirt.fd'>/var/lib/libvirt/qemu/nvram/Win11VM_ZS2_VARS.fd</nvram>


今回生成されたもの

<nvram template='/usr/share/edk2-ovmf/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/Win11VM_ZS4_VARS.fd</nvram>


 

 

0 件のコメント:

コメントを投稿