A día de hoy pese a los avances realizados en temas de videojuegos con Proton como wrapper que captura las llamada de DirectX en la versión 12, convirtiéndolas en llamadas nativas de Vulkan, la compatibilidad casi nativa con el hardware en las distribuciones GNU/Linux, gracias a que cada día que pasa no tener compatibilidad a nivel de hardware con Linux implica, perder un porcentaje de ventas gordo (ejem Nvidia).
Sigue existiendo la necesidad de poder utilizar programas o herramientas disponibles exclusivamente en software, hardware no libre y/o librerías privativas dentro del Sistema Operativo Microsoft Windows.
Pero pongámonos en el caso de que no hay otra alternativa viable en el mundo del open source. La solución clásica es utilizar Dual Boot. Pero esto tiene el inconveniente de que no puedes utilizar GNU/Linux en paralelo que es tu estación de trabajo habitual.
La solución no tan clásica es utilizar máquinas virtuales con GPU Passthrough que te permite utilizar el sistema GNU/Linux y Windows a la vez. Para el que no conozca lo que es una máquina virtual, dicho de forma corta, permite la ejecución de varios Sistemas Operativos dentro del mismo hardware, repartiendo dicho hardware de manera lógica, sea con la CPU asignando cores a una máquina virtual, bloques de RAM, espacio de disco, … Todo ello con el sistema nativo en ejecución paralela y concurrente con sus recursos físicos compartidos con las máquinas virtuales. Los sistemas operativos que se instalan suelen desconocer que están ejecutándose en hardware virtual de dicha máquina virtual, no en un hardware físico.
Requisitos mínimos:
- Necesitamos >= 2 GPUs. Esto es importante porque el sistema operativo nativo necesitará al menos 1 GPU para renderizar su parte gráfica. En servidores de virtualización no es necesario ya que suelen administrarse por web o ssh. Pero estamos hablando de Workstations.
- CPU con soporte de IOMMU – AMD-Vi (AMD) o VT-D (Intel). Con 4 <= X <= Inf cores o hilos.
- RAM >= 16 GiB.
- HDD o SSD (Preferiblemente por alojar Windows junto al sistema nativo). Con capacidad >= 1 TiB.

Al sistema Hypervisor es una distribución GNU/Linux que utiliza la utilidad de emulación de hardware QEMU y el módulo de kernel KVM, se le indica que cierto hardware PCI se va a reservar de manera lógica para su utilización a una máquina virtual, lo cual dejará de estar disponible para el sistema nativo y en la máquina virtual aparecerá como si fuera un hardware físico. Entonces se sigue el procedimiento como en un sistema físico, visualizar si el hardware lo reconoce el Sistema Operativo, instalar sus drivers apropiados, reiniciar al instalar,… Al final lo que tendremos es que podemos ejecutar una máquina virtual con recursos físicos reales en un Sistema Operativo distinto al de nuestra distribución.

Se puede ver en la imagen anterior, que el sistema nativo que tiene 16 GiB de Ram asigna 8 GiB con Windows así como su CPU que en Windows se identifica como un i5-8400, la gráfica que es identificada desde el Virtual Machine Manager como GT 710 y en Windows también con el controlador instalado.
En el próximo post se indicará el proceso a seguir para poder utilizar dos sistemas operativos que funcionan de manera Nativa en el caso de GNU/Linux y virtualizada en el caso de Windows.