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