Error de instalación de Virt: no se puede cargar el archivo de encendido

Error de instalación de Virt: no se puede cargar el archivo de encendido

Estoy intentando instalar Fedora CoreOS usando virt-install, como se describe aquí: https://docs.fedoraproject.org/en-US/fedora-coreos/getting-started/

El comando exacto que estoy ejecutando: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"

está devolviendo este error:

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.

Estoy ejecutando este comando como root. El archivo de encendido funciona porque lo usé con éxito para implementar esta máquina virtual desde un archivo iso.

Respuesta1

Tuve el mismo problema; según el consejo de introducción, es posible que deba ejecutar el comando chcon.

Si ejecuta con SELinux habilitado, es posible que necesite cambiar la etiqueta del archivo de Ignition para permitir el acceso: chcon -t svirt_home_t ruta/a/ejemplo.ign

Respuesta2

Lo más probable es que sea un problema de AppArmor. Me encontré con el mismo problema, probé todas las soluciones posibles para los permisos de archivos, como setfacl -m u:libvirt-qemu:rxy, chcon -tpero terminó siendo una limitación del perfil de AppArmor:

Para resolver el problema, cambie /etc/apparmor.d/libvirt/TEMPLATE.qemupara incluir la ruta a las configuraciones de encendido:

#
# 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,
}

Tenga en cuenta que agregué /etc/ignition/**.ignglob como ejemplo si decide organizar todas las configuraciones de Ignition para sus máquinas virtuales en el futuro.

De esta manera podrá crear una máquina virtual CoreOS usando virt-install.

Como opción, puede desactivar AppArmor para Qemu configurándolo, security_driver = "none"pero /etc/libvirt/qemu.confdiría que no se recomienda hacerlo.

Respuesta3

Independientemente de si ejecuta virt-installcomo root, es probable que la máquina virtual iniciada por libvirt qemu:///systemesté utilizando el qemuusuario. Ese qemuusuario probablemente no tenga acceso de búsqueda+lectura a /home/test, por ejemplo. Mover el archivo a /tmplo arreglaría o abriría los permisos en toda la /home/testruta del archivo

Respuesta4

Usando versiones más recientes deadministrador-virtual(6.5) ylibvirt(3.0), ahora puedes usar

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

que se encargará de fijar correctamente las etiquetas en la lima de encendido.

información relacionada