Virt-install エラー: ignition ファイルをロードできません

Virt-install エラー: ignition ファイルをロードできません

ここで説明されているように、virt-install を使用して Fedora CoreOS をインストールしようとしています: https://docs.fedoraproject.org/en-US/fedora-coreos/getting-started/

私が実行している正確なコマンド:virt-install --connect qemu:///system -n fcos -r 2048 --os-variant=fedora31 --import --graphics=none --disk size=10,backing_store=fedora-coreos-31.20200310.3.0-qemu.x86_64.qcow2 --qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=/home/test/Downloads/example.ign"

このエラーが返されます:

Allocating 'fcos.qcow2'                                                                                              |  10 GB  00:00:00     
ERROR    internal error: qemu unexpectedly closed the monitor: 2020-04-05T14:52:47.919380Z qemu-system-x86_64: -fw_cfg name=opt/com.coreos/config,file=/home/test/Downloads/example.ign: can't load /home/test/Downloads/example.ign
Removing disk 'fcos.qcow2'                                                                                           |    0 B  00:00:00     
Domain installation does not appear to have been successful.

私はこのコマンドを root として実行しています。Ignition ファイルは、iso ファイルからこの VM を展開するために正常に使用したため、機能しています。

答え1

私も同じ問題を抱えていました。Getting Started のヒントに基づくと、chcon コマンドを実行する必要があるかもしれません。

SELinux を有効にして実行している場合は、アクセスを許可するために Ignition ファイルのラベルを変更する必要がある場合があります: chcon -t svirt_home_t path/to/example.ign

答え2

おそらく、これは AppArmor の問題です。同じ問題に遭遇し、次のようなすべてのファイル権限の回避策を試しましたがsetfacl -m u:libvirt-qemu:rxchcon -t結局は AppArmor プロファイルの制限であることが判明しました。

この問題を解決するには、/etc/apparmor.d/libvirt/TEMPLATE.qemuイグニッション構成へのパスを含めるように変更します。

#
# This profile is for the domain whose UUID matches this file.
#

#include <tunables/global>

profile LIBVIRT_TEMPLATE flags=(attach_disconnected) {
  #include <abstractions/libvirt-qemu>
  /home/test/Downloads/example.ign rk,
  /etc/ignition/**.ign rk,
}

/etc/ignition/**.ign将来的に VM のすべての Ignition 構成を整理することにした場合に備えて、例として globを追加したことに注意してください。

この方法では、 を使用して CoreOS VM を作成できるようになりますvirt-install

オプションとして、設定することで Qemu の AppArmor を無効にすることができますsecurity_driver = "none"/etc/libvirt/qemu.conf、これは強くお勧めしません。

答え3

ルートとして実行しているかどうかに関係なくvirt-install、libvirtによって起動されたVMはユーザーqemu:///systemを使用している可能性がありますqemu。そのqemuユーザーは、たとえば/home/testへの検索+読み取りアクセス権を持っていない可能性があります。ファイルを移動すると修正されるか、ファイルパス/tmp全体の権限が開きます。/home/test

答え4

より新しいバージョンを使用する仮想マネージャー(6.5)とlibvirt(3.0)では、

virt-install \
    --sysinfo type=fwcfg,entry0.name=opt/com.coreos/config,entry0.file=${IGNITION_CONFIG} \
    ...

これにより、点火ファイルのラベルが適切に設定されます。

関連情報