>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
C

Como Executar Jogos e Software x86 Pesados em Processadores Arm e RISC-V

Imagine que você comprou um novo computador de placa única Arm ou um poderoso servidor RISC-V, instalou o Linux e... encontrou uma barreira. Seu jogo favorito do Steam, software proprietário de trabalho ou bom e velho Wine simplesmente se recusam a executar. Eles são compilados para x86_64, mas você tem uma arquitetura completamente diferente. Geralmente, as pessoas sugerem QEMU nesses casos, mas jogar através dele é uma experiência e tanto: a lentidão é tão ruim que você preferiria simplesmente desligá-lo.

O projeto box64 resolve esse problema de forma elegante. Não é apenas um emulador, mas uma camada que pode "alimentar" bibliotecas nativas do seu sistema para o aplicativo emulado.

Logo oficial

O que torna este emulador especial

A maioria dos emuladores tenta traduzir fielmente cada instrução de CPU. Isso é confiável, mas muito lento. O desenvolvedor do box64 (conhecido como ptitSeb) adotou uma abordagem diferente.

Quando um programa x86_64 chama uma função do sistema — por exemplo, deseja renderizar gráficos através do OpenGL ou alocar memória através da libc — o box64 não emula essa chamada dentro de um ambiente virtual. Em vez disso, ele redireciona a chamada diretamente para as bibliotecas nativas do seu dispositivo (Arm64 ou RISC-V).

Como resultado, cálculos pesados ficam sobre os ombros do hardware "nativo", e apenas a lógica do aplicativo é emulada. Isso proporciona um aumento colossal de velocidade. De acordo com os benchmarks do autor, a combinação com um recompilador dinâmico (DynaRec) funciona de 5 a 10 vezes mais rápido que um interpretador regular.

O que você pode executar

A lista de compatibilidade do projeto é enorme. Antes de mais nada, é voltada para gamers e aqueles que usam software especializado.

  1. Jogos do Steam. Sim, você pode executar jogos em um Raspberry Pi 4 ou 5 que nunca foram portados para Arm.
  2. Wine e Proton. Isso abre o caminho para executar aplicativos Windows. Se você tiver tanto o box64 quanto seu "irmão mais novo" box86 (para programas de 32 bits), você pode fazer quase qualquer software funcionar.
  3. Jogos Unity. Há uma nuance aqui: eles frequentemente requerem um OpenGL recente. Em algumas placas, você precisa usar variáveis de ambiente para "enganar" o driver e fazer o jogo funcionar.

Curiosamente, o projeto até suporta arquiteturas específicas como LoongArch. É claro que a comunidade ajuda ativamente com hardware: a lista de agradecimentos inclui Adlink, Pine64 e até as equipes de desenvolvimento do Deepin.

Como funciona na prática

Usar a ferramenta é surpreendentemente simples. Se você já compilou o projeto (as instruções no repositório são detalhadas, embora exijam a instalação de um monte de dependências), a execução fica assim:

box64 ./my_x86_64_program

Se você precisa executar um script de instalação inteiro (por exemplo, do GOG) que verifica a arquitetura via uname -m, você pode fazer assim:

box64 script.sh

Lá dentro, o box64 falsificará a resposta do sistema, e o script achará que está sendo executado em um processador x86 comum.

Para aqueles que não querem digitar o comando toda vez, existe box64-bash — um shell familiar onde todos os executáveis são automaticamente captados pelo emulador.

Nuances e pedras no caminho

Não espere que tudo funcione "pronto para uso" com taxas de quadros perfeitas.

Primeiro, o cache. Na primeira execução, o box64 gera código otimizado e o salva em ~/.cache/box64. Isso acelera execuções subsequentes, mas pode "consumir" até 2 GB de espaço em disco. Se o espaço está escasso, você precisará limitar esse comportamento através da configuração.

Segundo, gráficos. No Raspberry Pi, você frequentemente precisa definir soluções alternativas como:

MESA_GL_VERSION_OVERRIDE=3.2 BOX64_DYNAREC_STRONGMEM=1 box64 ./game

Isso é necessário para evitar travamentos devido a diferenças na forma como x86 e Arm tratam a memória.

Terceiro, aplicativos de 32 bits. O Box64 funciona apenas com binários de 64 bits. Se você precisa executar um jogo antigo, terá que instalar o box86. O trabalho no box32 está em andamento, mas o autor afirma honestamente que o projeto ainda é experimental.

Vale a pena tentar

Se você é um desenvolvedor que quer mudar para um laptop Linux Arm, ou um entusiasta com uma placa RISC-V — definitivamente sim. É o projeto mais ativo e de melhor desempenho em seu nicho.

O Box64 não tenta substituir a virtualização completa, ele simplesmente lhe dá a capacidade de usar software familiar onde ele não deveria existir. O projeto é escrito em C, muito compacto e flexível na configuração.

Claro, a documentação está espalhada em diferentes arquivos em vários lugares, e você terá que vasculhar manuais para configurar o Wine, mas o resultado vale a pena. Quando software destinado a desktops poderosos é executado em uma pequena placa por algumas dezenas de dólares, parece uma pequena magia.

Você pode verificar o código-fonte e as instruções de construção no repositório oficial ptitSeb/box64. Também há links para listas de compatibilidade de jogos que são atualizadas quase diariamente.

Projetos relacionados