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.

Par谩metro para indicarle al Sistema que debe activar los m贸dulos de IOMMU

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.

Se pueden ver los grupos de IOMMU y la tecnolog铆a usada de Intel DMAR. Como curiosidad la de AMD-Vi, al estar activada por defecto comprueba que se trate de una CPU AMD.
# 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.
Blacklist del m贸dulo nouveau

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.
M贸dulos que hay que cargar en boot time (tiempo de arranque)
# 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 conocidos los identificadores los a帽adimos a este fichero para que el kernel le cargue dichos m贸dulos.

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
Una vez reiniciado podemos ver que el m贸dulo se ha aplicado correctamente a la gr谩fica.

En el siguiente post, podemos ver c贸mo preparar la m谩quina virtual, con la tarjeta gr谩fica.

Fuentes

https://access.redhat.com/documentation/en-us/red_hat_virtualization/4.3/html/setting_up_an_nvidia_gpu_for_a_virtual_machine_in_red_hat_virtualization/proc_nvidia_gpu_passthrough_nvidia_gpu_passthrough

https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF

https://pve.proxmox.com/wiki/Pci_passthrough

https://wiki.archlinux.org/title/Kernel_parameters

Web Campus Infantil
Logo y enlace Web Campus Infantil 2024
Web SereIngeniera
Logo y enlace Web SereIngeniera 2024
PyconES 2022
Logo y enlace PyconES 2022
Humor
Humor
Archivos
Categor铆as