Cómo guardar el sistema de juego desde la PC doméstica mediante la virtualización

Gracias a la competencia y al desarrollo del progreso científico y técnico, las PC modernas le permiten realizar muchas tareas simples y complejas al mismo tiempo, por ejemplo, reproducir y reproducir video en TV, renderizar gráficos y leer noticias en Internet, distribuir torrentes en paralelo, etc. etc. Muchos van más allá y usan varias PC para el trabajo y el entretenimiento. Sin embargo, con la ayuda de las tecnologías de virtualización, por un lado, puede ampliar las capacidades de su PC y, por otro, ahorrar dinero porque de hecho, puede ejecutar varios sistemas operativos en el mismo hardware al mismo tiempo.


Este artículo se alojará en la configuración del host específicamente para su uso en el "hogar", es decir hablar sobre GPU PASSTHROUGH .

Introduccion


Primero, algunas palabras sobre la virtualización en general. De acuerdo con Wikipedia :
La virtualización es la provisión de un conjunto de recursos informáticos o su combinación lógica, abstraída de la implementación del hardware, y al mismo tiempo proporcionando un aislamiento lógico entre sí de los procesos informáticos que se ejecutan en el mismo recurso físico.
Se logra tanto con la ayuda de aplicaciones (por ejemplo, VirtualBox, VMware) como a nivel de sistemas que admiten la virtualización de hardware (por ejemplo, KVM, ESXi, Hyper-V). En el último caso, la pérdida de rendimiento en comparación con los sistemas nativos es mínima .

De aquí en adelante, el artículo describirá la configuración del sistema de virtualización de código abierto Proxmox porque es moderadamente amigable, hay fácil acceso a la consola a través de un formulario web y también se basa en un montón de Debian + kvm, que tienen muchas guías y descripciones en la red es decir documentación incluida y en ruso

Requisitos de hardware


Necesitaremos:

- procesador y placa base con soporte para VT-x, VT-d de Intel o AMD-Vi, IOMMU de AMD. No seas perezoso y especifica si tu copia es compatible con estos requisitos.

En cuanto a las placas base. Categóricamente no recomiendo conducir hierro con cableado mediocre en la placa de alimentación. Por Z270 y Z390 ignoran la zona naranja o se van a trabajar en stock.

  • 2 tarjetas de video, un juego (en la red por menos problemas al reenviar a la máquina virtual elogian a los rojos, pero personalmente, todo funcionó con la tarjeta de video de los verdes), el segundo para el anfitrión. En mi caso, está integrado en el procesador.
  • 1-2 monitores y cables a ellos, para
  • un par de juegos de teclado + mouse para que sea conveniente trabajar y configurar sistemas
  • una segunda PC o tableta conectada a la red local para realizar ajustes a través de un formulario web.

Instalación y configuraciones


Usé la siguiente configuración del juego:

- La PC para la configuración del host se construyó lejos de la mejor placa base, pero en los foros en inglés a menudo es alabado por esta compañía porque su hardware es más adecuado para tales cosas:
Procesador - i7 8700k
Madre - ASRock Z390M Pro4
Tarjeta de video - INNO3D GeForce GTX 1070 iChill X4
- segunda PC (Mini-PC Morefine-M1s),
- 2 ratones,
- 1 teclado en el host, en otros dispositivos usé software,
- 3 conexiones al monitor Dell U2713HM (VGA - para la tarjeta de video integrada, HDMI - para el GTX1070, en el DVI hay una Mini-PC. El cambio entre las señales de video se realizó a través del menú del monitor)

Etapa 0 : en la placa base, encienda VT-d: Activar, Tecnología de Vitrualización Intel: Activar, Adaptador Graphx primario: VGA, Decodificación por encima de 4G: Activar. Si es posible, asegúrese de seleccionar el que funcionará el host, es decir tarjeta gráfica más débil y cambiar a ella.

Primera etapa : instale Proxmox en el host. Para hacer esto:

1.1. Descargue la imagen del disco del sitio oficial

1.2. Escribimos la imagen en la unidad flash usando programas especiales

1.3. Iniciamos desde la unidad flash USB y realizamos la instalación indicando en qué disco duro instalar, ingresamos la contraseña para el futuro usuario root y también establecemos explícitamente la configuración de red.

2da etapa : conéctese a través de una red a través de una interfaz web con una segunda PC o
tableta (en mi caso, era una Mini-PC) para el host y configurar Proxmox para esta guía a través de la consola de texto.

imagen

Hay un pequeño matiz que puede costar software, pero decidí que cambiar la placa base anterior sería más fácil, porque La junta de Gigabyte no cumplió con este requisito:
1) Ejecute el "dmesg | grep ecap »comando.

2) En las líneas IOMMU, el valor hexadecimal después de "ecap" indica si se admite la reasignación de interrupciones. Si el último carácter de este valor es 8, 9, a, b, c, d, e o f, se admite la reasignación de interrupciones. Por ejemplo, "ecap 1000" indica que no hay soporte para la reasignación de interrupciones. "Ecap 10207f" indica soporte de reasignación de interrupción, ya que el último carácter es una "f".

La reasignación de interrupción solo se habilitará si cada IOMMU lo admite.
Si se cumple la condición, continúe.

Entonces las configuraciones son:

Abrimos el archivo con un comando desde la consola (no es necesario que ingrese el símbolo de doble retícula, por lo que separaré los comandos del texto en el texto del archivo)

## nano /etc/default/grub 

hacer reemplazo

 GRUB_CMDLINE_LINUX_DEFAULT="quiet" 

para procesadores Intel

 GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on" 

para procesadores AMD

 GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on" 

a continuación le damos la orden

 ## update-grub 

luego reiniciamos el host a través de la interfaz web

Archivo grub de PC en el artículo
 # If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="Proxmox Virtual Environment" GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on" GRUB_CMDLINE_LINUX="" # Disable os-prober, it might add menu entries for each guest GRUB_DISABLE_OS_PROBER=true # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Disable generation of recovery mode menu entries GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1" 


Agregue los controladores necesarios al archivo de configuración

 ## nano /etc/modules 

 # /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. vfio vfio_iommu_type1 vfio_pci vfio_virqfd 

Escribimos en la consola

 ## lspci 

Se mostrará una lista de dispositivos disponibles para reenviar en la pantalla, encontraremos la unidad con la tarjeta de video que nos interesa, en mi caso, estos son 2 dispositivos en el grupo de tarjetas de video y suenan en las direcciones 01: 00.0 y 01: 00.1, por lo que inmediatamente registro el grupo.

 ## nano /etc/pve/qemu-server/vmid.conf 

 hostpci0: 01:00 

Escribimos un comando en la consola para determinar el modelo y su id.

## lspci -n -s 01:00
01: 00.0 0300: 10de: 1b81 (rev a2)
01: 00.1 0403: 10de: 10f0 (rev a1)

Ahora edite el archivo para nuestra tarjeta de video (en su caso, la identificación será diferente)

 ## nano /etc/modprobe.d/vfio.conf 

 options vfio-pci ids=10de:1b81,10de:10f0 

Ponemos en la hoja negra del conductor

 ## nano /etc/modprobe.d/blacklist.conf 

 blacklist radeon blacklist nouveau blacklist nvidia 

Ahora creamos a través de la interfaz web y editamos el archivo de configuración de la máquina virtual a través de la consola. Aquí se resuelve la línea "args:" porque sin él, el controlador de la tarjeta de video detectará la virtualización, pero al reemplazar el nombre del equipo, más precisamente, hv_vendor_id = willitwork, eliminamos el problema con el error 43 que puede generar el controlador de video del dispositivo. Hay un número de máquina virtual en proxmox que se usa como nombre.

 ## nano /etc/pve/qemu-server/<vmid>.conf 

 args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=willitwork,kvm=off' ..... bios: ovmf ..... hostpci0: 01:00.0,pcie=1 ..... machine: q35 

Archivo de configuración de máquina virtual de PC en el artículo
 args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=willitwork,kvm=off' bios: ovmf boot: dcn bootdisk: sata0 cores: 8 cpu: host hostpci0: 01:00.0,pcie=1 ide2: local:iso/ru-en_windows_10_1803_x86-x64.iso,media$ machine: q35 memory: 16384 net0: e1000=EA:20:FA:6A:D6:A0,bridge=vmbr0 numa: 0 ostype: win10 sata0: local-lvm:vm-100-disk-0,size=120G scsihw: virtio-scsi-pci smbios1: uuid=751edeca-d249-4c0d-9ded-b59d929df0f1 sockets: 1 usb0: host=1-8.4 usb1: host=1-8.3 vmgenid: b75aeb27-3102-458d-8e23-18cd27796dc1 


Ahora reinicie el host e inicie la máquina virtual.

Tercera etapa : a través de la Consola de video remota, instale Windows y los controladores. En mi caso, Windows reconoció primero el controlador de video proxmox para trabajar a través de la consola de video, luego encontró el controlador para el GTX1070, y después de actualizar a través de Internet (búsqueda forzada de controladores en la red), descargué e instalé el controlador que necesitaba para la tarjeta de video del juego.

4ta etapa : reinicie la máquina virtual, cambie la visualización de la transmisión de video en el monitor al conector de la tarjeta de video y ... en mi caso, todo funcionó de inmediato, sin errores 43 ... Al mismo tiempo, el escritorio se define como No. 2.

Traté de lanzar el video Blue-ray: no hay problema, no hubo retrasos ni frisos con la secuencia del video, lancé Warhammer en línea, comenzó y fue cómodo para jugar en PvP, lancé GTA5, la historia apareció, filmé con bastante comodidad. Visualmente, no hay pérdidas de rendimiento.

Si necesitamos reenviar todo el disco duro, entonces en el archivo de configuración de la máquina virtual necesitamos agregar la línea:
ide0: volumen = / dev / sda

o
sata0: volumen = / dev / sda

Específicamente, qué sda / sdb / sdc /, etc. se puede especificar en la interfaz web.

imagen

PS

A un barril de miel hay una mosca en la pomada. El sonido integrado no se puede lanzar por separado, ya que en su grupo hay otros dispositivos que, después de reenviar la tarjeta de sonido a la máquina virtual, desaparecen para el host hasta la próxima sobrecarga del host. En mi caso es

00: 1f.0 Puente ISA: Dispositivo Intel Corporation a305 (rev 10)
00: 1f.3 Dispositivo de audio: Intel Corporation Device a348 (rev 10)
00: 1f.4 SMBus: Dispositivo Intel Corporation a323 (rev 10)
00: 1f.5 Controlador de bus serie [0c80]: Dispositivo Intel Corporation a324 (rev 10)
00: 1f.6 Controlador Ethernet: Intel Corporation Device 15bc (rev 10)

Es decir sonido o a través de un cable de video a un monitor o tarjeta de sonido externa. Los puertos USB se enrutan sin problemas. Desafortunadamente, actualmente no está resuelto. Hay una opción para conectarse de forma remota desde otra PC al juego, a través de RDP o SPICE . En este caso, todo estará bien

No siempre reenviar la tarjeta de video funciona perfectamente como en mi caso, ya sea el error 43 o algo más se interpone en el camino. Aquí se describen otras configuraciones que pueden ayudar. Idealmente, debe buscar configuraciones exitosas en la red y centrarse en ellas, ya que esta fue para mí, además, también hay una lista de hardware que me permite lograr lo mismo que yo, pero no está completa.

ACTUALIZACIÓN1:
Algunas notas sobre la periferia:
1. Cómo llevar el teclado del puerto PS / 2 a la VM:
primero ingrese el comando en la consola
## dmesg | entrada grep
Estamos buscando un texto en el texto.
...
entrada: teclado AT Translated Set 2 como / devices / platform / i8042 / serio0 / input / input 2
...
Recuerde el número 2 al final, puede ser diferente. Luego, en el archivo de configuración de VM, agregue a la línea:
args: -object 'input-linux, id = kbd, evdev = / dev / input / event 2 , grab_all = on, repeat = on'
insertando 2 al final de evdev = / dev / input / event 2

Para un ratón, de manera similar.

2. Por USB:
En cuanto a los dispositivos USB, todo es más simple allí, los dispositivos se desplazan directamente desde el formulario web por ID o puede portar el puerto por completo. Sin embargo, hay un matiz: si por alguna razón no puede, como yo, lanzar un dispositivo de audio a la VM, porque está contenido en un grupo con controladores clave sin los cuales el host no puede funcionar completamente, luego reenviar el puerto / dispositivo a través de USB resuelve este problema, pero el sonido puede comenzar a caerse después de un tiempo, silbido / zumbido y otros ... etc., al mismo tiempo en el nativo todo será genial para el sistema. En este caso, es necesario reenviar no el puerto / dispositivo, sino el controlador USB en sí mismo como un dispositivo PCIe de acuerdo con el método especificado en el artículo. Y todo mejorará dramáticamente. Pero al mismo tiempo, después de iniciar la VM con dicha configuración, ya no será posible reenviar otros dispositivos desde este controlador a través del host.

3. Los discos duros se pueden reenviar a través del reenvío de un controlador como un dispositivo PCIe de acuerdo con el método especificado en el artículo (no recomiendo reenviar el controlador integrado en la placa base, solo conectado a PCIe), o directamente:
ir a
## cd / dev / disk / by-id
a través de dir buscamos listado ...
copiamos líneas de la forma ata-WDC_WD40EFRX-68WT0N6_WD-WCC4E1AC9SX9, en las que se registran la interfaz de conexión, la marca y el número de serie del disco duro. Luego abra el archivo de configuración de VM y escriba:
sata1: volumen = / dev / disk / by-id / ata-WDC_WD40EFRX-68WT0N6_WD-WCC4E1AC9SX9
y todo funciona, teniendo en cuenta que sata0-sata5, es decir para una VM, el número de discos conectados de este modo, incluidos los virtuales, no puede exceder los 6 unidades.

Source: https://habr.com/ru/post/437598/


All Articles