Ошибка Virt-install: не удаётся загрузить файл зажигания

Ошибка Virt-install: не удаётся загрузить файл зажигания

Я пытаюсь установить Fedora CoreOS с помощью virt-install, как описано здесь: 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. Файл зажигания работает, так как я успешно использовал его для развертывания этой виртуальной машины из файла iso.

решение1

У меня была та же проблема. Согласно совету по началу работы, вам, возможно, придется запустить команду chcon.

При работе с включенным SELinux может потребоваться изменить метку файла Ignition, чтобы разрешить доступ: chcon -t svirt_home_t path/to/example.ign

решение2

Скорее всего, это проблема AppArmor. Столкнулся с той же проблемой, перепробовал все возможные обходные пути для разрешения файлов, такие как setfacl -m u:libvirt-qemu:rxи, chcon -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/**.ignglob в качестве примера на случай, если вы решите организовать все конфигурации Ignition для своих виртуальных машин в будущем.

Таким образом вы сможете создать виртуальную машину CoreOS с использованием virt-install.

Как вариант, вы можете отключить AppArmor для Qemu, установив security_driver = "none"его, /etc/libvirt/qemu.confно я бы сказал, что делать это крайне не рекомендуется.

решение3

Независимо от того, работаете ли вы virt-installкак root, виртуальная машина, запущенная libvirt's, qemu:///systemскорее всего, использует qemuпользователя. У этого qemuпользователя, вероятно, нет прав на поиск+чтение, например, для /home/test. Перемещение файла в /tmpисправит это или откроет разрешения на весь /home/testпуть к файлу

решение4

Использование более поздних версийvirt-менеджер(6.5) иlibvirt(3.0), теперь вы можете использовать

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

который позаботится о правильной установке меток на файле зажигания.

Связанный контент