Emparelhei um telefone Android antigo com uma VM Proxmox e agora é meu dispositivo portátil para jogos favorito.

Como alguém que gosta de reutilizar hardware antigo para projetos de laboratório doméstico, tenho alguns thin clients, mini PCs e máquinas NAS que servem como estações de trabalho confiáveis ​​para hospedar LXCs e VMs. Meu antigo equipamento Ryzen de primeira geração é um desses sistemas e atualmente o uso para executar todos os tipos de cargas de trabalho LLM. Mas considerando que minha GTX 1080 ainda é boa o suficiente para jogos modernos, pensei em tentar transformá-la em uma VM remota para jogos.

Mas como já configurei uma VM universal do Windows 11 antes, comecei a procurar maneiras de criar um sistema portátil que pudesse transmitir meus títulos favoritos de minha VM de jogos com PVE quando estou fora do meu laboratório doméstico. Dado que meu antigo smartphone já tem bateria funcionando e tela sensível ao toque, pensei que poderia usá-lo como um dispositivo cliente para este projeto estranho. Com um pouco de reflexão, consegui transformar essa configuração improvisada no melhor dispositivo portátil DIY do meu arsenal.

Seu antigo PC para jogos é um exagero para um servidor doméstico e é exatamente por isso que é perfeito

Pode ser muito lento para jogos, mas pode lidar com a maioria das tarefas do servidor como um campeão

Ativei vários ajustes para melhorar o desempenho em minha máquina virtual do Windows 11

Incluindo regras de taxa de transferência de host para minha CPU e GPU

Embora uma máquina virtual Proxmox recém-criada seja suficiente para experimentos simples, o Windows 11 com padrões PVE pode tornar o sistema operacional extremamente lento para tarefas diárias, muito menos para um projeto desse calibre. Então tive que fazer alguns ajustes para garantir que minha máquina virtual funcionasse da maneira mais tranquila possível. Primeiro, mudei o tipo de processador de x86-64-v2-AES para host para fornecer funcionalidade de transmissão de CPU em nível de host para a máquina virtual e evitar que camadas de virtualização adicionais afetem o desempenho. Como estava lidando com o Windows 11, certifiquei-me de fornecer à máquina virtual 12 GB de memória e usei o pacote VirtIO para instalar a placa de rede correta e os drivers de disco SCSI.

Mas, como você deve ter adivinhado, a melhoria mais importante em minha VM de jogos remotos foi a passagem de GPU, e foi surpreendentemente fácil de configurar quando peguei o jeito. Já escrevi um guia detalhado cobrindo todos os aspectos do rendimento da GPU Proxmox, mas aqui está a versão rápida: Depois de habilitar o IOMMU no BIOS, abri iommu_unsafe_interrupts.conf arquivo usando o editor nano e adicionado opções vfio_iommu_type1 permitir_unsafe_interrupts=1 argumento. Em seguida, modifiquei o GRUB colando GRUB_CMDLINE_LINUX_DEFAULT=”iommu=pt” dentro de /etc/default/grub e correr atualização-grub. Eu também converti /etc/módulos adicionando os seguintes parâmetros:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

Em seguida, precisei evitar que o host Proxmox acessasse os drivers da GPU, o que fiz adicionando estes parâmetros lista negra.conf:

blacklist nouveau
blacklist nvidia
blacklist nvidiafb
blacklist nvidia_drm

Então eu corri lspci -v para obter os IDs dos slots dos meus componentes GTX 1080 antes de usá-los para extrair os IDs dos dispositivos usando lspci -n -s slot_ID. Finalmente, adicionei esses valores no seguinte formato /etc/modprobe.d/vfio.conf arquivo para ativar a passagem de GPU no host PVE

options vfio-pci ids=Device_ID_1,Device_ID_2 disable_vga=1

Passar a placa gráfica para a máquina virtual foi tão fácil quanto adicionar uma GTX 1080 ao dispositivo PCI na aba Hardware. Depois de examinar os drivers antigos da Nvidia (já que meu pobre companheiro da era Pascal foi descontinuado no ano passado), instalei a versão 580 e usei o switch GPU primário no dispositivo PCI para executá-lo como o único adaptador de vídeo, acessando minha máquina virtual por meio do protocolo de área de trabalho remota.

Apollo é meu servidor de streaming de máquina virtual remota favorito

Enquanto o Artemis funciona como um aplicativo cliente no meu smartphone

Deixe-me ser claro: o Remote Desktop Protocol é ótimo para acessar ambientes de desenvolvedor do Windows 11 e é nele que confio ao descobrir uma instância virtualizada do principal sistema operacional da Microsoft. Infelizmente, os jogos RDP tendem a ter um desempenho abaixo do ideal, a ponto de eu considerar os títulos de alta velocidade impossíveis de jogar. Isso significou que eu tive que procurar serviços alternativos de streaming de desktop para executar minha biblioteca Steam sem transformar tudo em uma bagunça cheia de latência.

Meu primeiro instinto foi optar pelo Parsec porque sua experiência plug and play o torna uma ótima opção para VMs de jogos. No entanto, eu queria uma configuração totalmente local, então decidi optar pela configuração Apollo + Artemis. O primeiro é um fork do Sunshine que oferece suporte nativo a telas virtuais, enquanto o segundo é um cliente Moonlight projetado para oferecer melhor suporte à tela sensível ao toque (e menor latência) em dispositivos Android. Depois de instalar o Apollo, usei sua interface da web para ativar o modo headless para minha máquina virtual sem monitor e adicionei o nome da minha GPU ao nome do dispositivo de exibição para evitar problemas de tela preta posteriormente (aprendi isso por experiência própria).

Conectar Artemis à minha instância Apollo foi igualmente fácil. Tudo que tive que fazer foi inserir o endereço IP da máquina virtual dentro do Artemis, usar a interface da web do Apollo para inserir o PIN gerado em meu smartphone e tocar na opção Virtual Display para fazer login em minha máquina de jogos virtualizada. Como não quero enlouquecer tentando usar KB+M (ou pior, funcionalidade de tela sensível ao toque), conectei um controlador sobressalente (especificamente um GameSir G8+) ao meu smartphone via bluetooth. Estranhamente, a latência não é muito perceptível para a maioria dos jogos single-player quando diminuo um pouco a taxa de bits, e como minha GTX 1080 pode lidar com jogos modernos, tive FPS sólido em 1080p. No entanto, ainda falta uma peça que precisa ser abordada…

Tailscale adiciona funcionalidade de acesso remoto a este portátil para jogos

Esta é a única maneira confiável de superar a maldição CGNAT

Do jeito que está, meu portátil para jogos DIY é bom o suficiente para jogar meus títulos favoritos, mas apenas enquanto meu smartphone estiver conectado à minha LAN. Como uma doença chamada CGNAT está afetando minha rede doméstica, não posso simplesmente encaminhar a porta 47990 na minha máquina remota e ligar para ela todos os dias. Depois de debater entre VPS pago, VPN dedicado e Tailscale, optei pelo último para manter minha instância Artemis conectada ao meu servidor Apollo porque não preciso pagar um centavo para acessar os recursos VPN da rede Tailscale.

Para ser honesto, a latência é um pouco perceptível em títulos rápidos, especialmente quando estou usando a operadora sem fio do meu telefone. Mas, embora eu evite jogos de luta e títulos de esportes eletrônicos (muitos dos quais não consigo executar devido a dispositivos anti-cheat em nível de kernel sinalizando minha instância virtualizada do Windows 11), a maioria dos jogos baseados em turnos, de estratégia, de corrida, de ação e (até mesmo) de plataforma funcionam bem sem muitos problemas.

É um projeto interessante reutilizar aparelhos antigos que, de outra forma, acumulam ferrugem em uma prateleira

Considerando que meu portátil para jogos DIY usa não apenas minha estação de trabalho PVE, mas também uma GPU desatualizada e um smartphone antigo, eu diria que essa foi uma ótima maneira de dar nova vida a esses dispositivos. A melhor parte? Se eu perder a conexão com o console remoto, posso sempre mudar para o Winlator e os emuladores de console no meu smartphone. Claro que não posso jogar Cyberpunk 2077 no meu smartphone barato usando Winlator, mas é mais que suficiente para emular títulos indie leves.

Instalei o MacOS no Proxmox e funciona incrivelmente bem

Até o macOS Tahoe é um jogo justo para o Proxmox atualmente

Link da fonte