Я пытаюсь установить 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/**.ign
glob в качестве примера на случай, если вы решите организовать все конфигурации 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} \
...
который позаботится о правильной установке меток на файле зажигания.