Ahora toca hablar de la configuraci贸n del sistema hypervisor y de la m谩quina virtual.
Sistema hypervisor
En el sistema hypervisor hay que realizar varias configuraciones que implican al hardware f铆sico. La primera de ellas es comprobar la compatibilidad hardware con IOMMU con la tecnolog铆a adecuada.
En el caso de AMD IOMMU se llama AMD-Vi. Esta disponible en cualquier placa base y CPU desde los AMD Bulldozer o FX. No se requiere ninguna opci贸n especial a indicar desde el Bootloader GRUB para que activen ciertos m贸dulos de kernel especiales y el UEFI (BIOS), le indica al Sistema Hypervisor que est谩 disponible.
En el caso de Intel IOMMU se llama VT-d, ojo con esto, los sistemas Intel suelen soportar VT-x que es la instrucci贸n que permite la virtualizaci贸n, pero usualmente VT-d es un subconjunto aparte que suelen no incluir junto a la de virtualizaci贸n. En el caso del Workstation de la oficina, VT-d cost贸 encontrarlo, ya que aparte de activar la virtualizaci贸n en un panel de configuraci贸n, tenemos que buscar la activaci贸n en otro panel diferente. Adem谩s hay que indicarle al bootloader GRUB par谩metros de activaci贸n especiales para que carguen los m贸dulos de IOMMU. Esto ocurre porque desde el Kernel no se activan por defecto. Este es el caso del Workstation con el que realizamos la gu铆a.
Luego tenemos que actualizar el bootloader con los cambios de los par谩metros con el siguiente comando.
# update-grub
Luego de comprobar que efectivamente en la UEFI/BIOS, se han activado VT-d (cada UEFI es un mundo). Reiniciamos el sistema, verificamos que IOMMU est谩 en correcto funcionamiento tal y como se puede ver en la siguiente captura. El comando ejecutado est谩 a continuaci贸n de la captura.
# dmesg | grep -i -e DMAR -e IOMMU
El siguiente paso es activar los m贸dulos necesarios, para que el kernel que es el hypervisor a la vez, pueda pasar el hardware f铆sico a m谩quinas virtuales. Para ello editamos los siguientes archivos:
# nano /etc/modprobe.d/blacklist.conf
Archivo a editar necesario, para bloquear la carga de los m贸dulos o lo que es lo mismo drivers, de la tarjeta gr谩fica que queremos ceder a la m谩quina virtual. Esto es para impedir que el sistema cargue para su propio uso la tarjeta gr谩fica.
Dependiendo de la gr谩fica que en mi caso es una Nvidia. Se tendr谩 que poner en blacklist distintos m贸dulos si es AMDGPU o Radeon, o es una gr谩fica workstation,… Tambi茅n se tiene que tener en cuenta, si ese usan m贸dulos privativos o libres, ya que estos son muy diferentes entre s铆.
# nano /etc/modules
Aqu铆 introducimos los m贸dulos de VFIO o IOMMU. Que deben cargarse por el kernel, ya que de manera normal no los carga, suele cargar los del hardware f铆sico o el de virtualizaci贸n cuando sea llamado.
# lspci -nn
Este comando es necesario para poder saber el identificador de hardware para que el m贸dulo IOMMU lo asigne a la m谩quina virtual. Los identificadores est谩n entre corchetes y hay que copiarlos 10de:128b sin ellos. Se puede ver que hay dos gr谩ficas, permitiendo el uso de Passthrough, adem谩s se tiene que conocer tambi茅n el ID de Sonido, ya que no funciona la tarjeta correctamente sin el acceso a la memoria que controla el sonido.
# nano /etc/modprobe.d/vfio.conf
Ahora aqu铆 previa consulta del identificador con lspci, debemos poner la pareja Audio + VGA ya que sin dicha pareja no funciona correctamente por lo referido anteriormente.
Una vez realizado esto necesitamos regenerar la imagen de carga initramfs de todos los kernels instalados para que apliquen las configuraciones indicadas en los ficheros anteriores y finalmente reiniciamos para recargar el kernel con toda la configuraci贸n nueva.
# update-initramfs -u -k all
# reboot
En el siguiente post, podemos ver c贸mo preparar la m谩quina virtual, con la tarjeta gr谩fica.
Fuentes
https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF