Linux & ARM: é possível rodar apps x86 em PCs desktops com SoCs ARM?

Uma das maiores façanhas da Apple ao lançar os seus poderosos SoCs ARM M1, foi possibilitar a execução de aplicações compiladas para o set de instruções x86 com alta performance, através da biblioteca dinâmica de tradução Rosetta! Esta por sua vez, teve a sua primeira versão lançada ainda em 2006, para facilitar a transição da sua infraestrutura de software (Mac OS X Tiger) que antes rodava em CPUs PowerPC e havia passado a utilizar as CPUs da Intel (x86)…

“Box86 and Box64 both saw new updates issued today for enabling x86 Linux binaries on Arm as well as x86_64 binaries on AArch64, respectively. With the Box86 v0.3 release there is RC file handling, refactoring of the Strong Memory Model emulation so its faster and more accurate, improved memory protection tracking, wrapping more libraries and functions, better Gallium3D Nine D3D9 support, specialized handling to deal with the Rockchip RK3588, and various other updates.”

— by Phoronix.

Com a popularização dos SoCs ARM para equipamentos mais “complexos”, muitos sistemas operacionais serão lançados com suporte exclusivo para estas arquiteturas de CPUs (inclusive o próprio Microsoft Windows), que por sua vez terá que conviver com a falta de aplicações nativa para estes sistemas até a sua popularização. Felizmente para sistemas baseados em GNU/Linux, isto não será um problema, pois em geral a disponibilidade do código-fonte e o uso de linguagens de programação multiplataformas, possibilitam a compilação de binários nativos para o set de instruções ARM. O problema são as aplicações proprietárias…

Felizmente, temos projetos que visam possibilitar a execução de aplicações legadas (compiladas para o set de instruções x86) em sistemas que fazem o uso de SoCs ARM, como os mini-computadores de baixo custo baseados em placas Raspberry Pi e os portáteis Chromebooks. Eis, o FEX-Emu (uma camada de emulação baseada no QEMU) e o Box86/Box64 (um conjunto de bibliotecas designadas para suportar as aplicações x86). E apesar deles terem sido lançados recentemente (conforme sugerem os sistemas de versionamento), o seu desenvolvimento segue a todo vapor!

O Box86 v0.3 trouxe a manipulação de arquivo RC, a refatoração da emulação Strong Memory Model para que seja mais rápida e precisa, o rastreamento de proteção de memória aprimorado (envolvimento de mais bibliotecas e funções), o melhor suporte Gallium3D Nine D3D9, manipulação especializada para lidar com o Rockchip RK3588 e várias outras atualizações. Já o Box64 v0.2.2 substituiu as funções malloc/free para permitir que a biblioteca Chromium CEF funcione – incluindo o modo Steam Big Picture e o Heroic Launcher, além das melhorias já previstas Box86 (embora o sistema de versionamento sugira o “contrário”).

Para maiores detalhes, eis as seções de lançamento publicadas aqui e aqui.

Confesso que as complicações para a execução de aplicações proprietárias, foi algo que sequer havia passado pela minha cabeça, ao considerar a aquisição de um novo PC equipado com um poderoso SoC ARM (pois um dia, terei um)! Queira ou não, ainda “dependo” de alguns softwares proprietários para o meu sistema, como é o caso do simulador Cisco Packet Tracer, as ferramentas de web-conferência (Microsoft Teams, Cisco Webex e Zoom) e o cliente Spotify, sem contar ainda alguns drivers binários para o suporte a hardware. Nestes últimos dias, precisei até mesmo utilizar o VMware!

Sem contar os problemas para rodar softwares para o Windows com o WINE… &;-D