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.

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.
- Jogos do Steam. Sim, você pode executar jogos em um Raspberry Pi 4 ou 5 que nunca foram portados para Arm.
- 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.
- 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