>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
C

Zo voer je zware x86-games en -software uit op Arm- en RISC-V-processors

Stel je voor: je hebt een gloednieuwe Arm single-board computer of een krachtige RISC-V server gekocht, Linux geïnstalleerd, en... botst tegen een muur. Je favoriete Steam-game, proprietaire werks software, of goede oude Wine weigert simpelweg te draaien. Ze zijn gecompileerd voor x86_64, maar je hebt een totaal andere architectuur. Meestal suggereren mensen in zulke gevallen QEMU, maar gamen daardoor is nogal een ervaring: de vertraging is zo erg dat je het ding het liefst uit zou zetten.

Het box64-project lost dit probleem elegant op. Het is niet zomaar een emulator, maar een laag die "native" bibliotheken van je systeem aan de geëmuleerde applicatie kan "voeren".

Official logo

Wat deze emulator bijzonder maakt

De meeste emulators proberen elke CPU-instructie trouw te vertalen. Dit is betrouwbaar maar erg langzaam. De ontwikkelaar van box64 (bekend als ptitSeb) koos een andere aanpak.

Wanneer een x86_64-programma een systeemfunctie aanroept — bijvoorbeeld graphics wil renderen via OpenGL of geheugen wil alloceren via libc — emuleert box64 deze aanroep niet binnen een virtuele omgeving. In plaats daarvan stuurt het de aanroep rechtstreeks door naar de native bibliotheken van je apparaat (Arm64 of RISC-V).

Als gevolg daarvan vallen zware berekeningen op de schouders van de "native" hardware, en wordt alleen de logica van de applicatie geëmuleerd. Dit geeft een kolossale snelheidsboost. Volgens de benchmarks van de auteur werkt de combinatie met een dynamische recompiler (DynaRec) 5–10 keer sneller dan een reguliere interpreter.

Wat je kunt draaien

De compatibiliteitslijst van het project is enorm. Allereerst is het gericht op gamers en degenen die gespecialiseerde software gebruiken.

  1. Steam-games. Ja, je kunt games draaien op een Raspberry Pi 4 of 5 die nooit naar Arm zijn gepord.
  2. Wine en Proton. Dit opent de weg naar het draaien van Windows-applicaties. Als je zowel box64 als zijn "jongere broertje" box86 (voor 32-bit programma's) hebt, kun je vrijwel elke software aan de praat krijgen.
  3. Unity-games. Hier zit een nuance: ze vereisen vaak een recente OpenGL. Op sommige borden moet je omgevingsvariabelen gebruiken om de driver te "foppen" en het spel te laten werken.

Interessant is dat het project zelfs specifieke architecturen zoals LoongArch ondersteunt. Het is duidelijk dat de community actief helpt met hardware: de acknowledgments-lijst vermeldt Adlink, Pine64 en zelfs de Deepin-ontwikkelteams.

Hoe het in de praktijk werkt

Het gebruiken van de tool is verrassend eenvoudig. Als je het project al hebt gecompileerd (de instructies in de repository zijn gedetailleerd, hoewel ze het installeren van een hoop dependencies vereisen), ziet het opstarten er zo uit:

box64 ./my_x86_64_program

Als je een heel installatiescript moet draaien (bijvoorbeeld van GOG) dat de architectuur controleert via uname -m, kun je het zo doen:

box64 script.sh

Van binnenuit zal box64 de systeemrespons spoofen, en zal het script denken dat het draait op een reguliere x86-processor.

Voor degenen die niet elke keer de opdracht willen typen, is er box64-bash — een vertrouwde shell waar alle executables automatisch worden opgepikt door de emulator.

Nuances en valkuilen

Verwacht niet dat alles "out of the box" werkt met perfecte framerates.

Ten eerste: caching. Bij de eerste run genereert box64 geoptimaliseerde code en slaat deze op in ~/.cache/box64. Dit versnelt volgende runs, maar kan tot 2 GB aan schijfruimte "opeten". Als ruimte schaars is, moet je dit gedrag beperken via de config.

Ten tweede: graphics. Op Raspberry Pi moet je vaak workarounds instellen zoals:

MESA_GL_VERSION_OVERRIDE=3.2 BOX64_DYNAREC_STRONGMEM=1 box64 ./game

Dit is nodig om bevriezingen te voorkomen door verschillen in hoe x86 en Arm geheugen afhandelen.

Ten derde: 32-bit applicaties. Box64 werkt alleen met 64-bit binaries. Als je een oud spel wilt draaien, moet je box86 installeren. Er wordt gewerkt aan box32, maar de auteur stelt eerlijk dat het project nog experimenteel is.

Is het de moeite waard om te proberen

Als je een ontwikkelaar bent die wilt overstappen naar een Arm Linux-laptop, of een enthousiasteling met een RISC-V-bord — absoluut ja. Het is het meest actieve en performante project in zijn niche.

Box64 probeert full virtualisatie niet te vervangen, het geeft je simpelweg de mogelijkheid om vertrouwde software te gebruiken waar het niet zou moeten bestaan. Het project is geschreven in C, zeer compact en flexibel in configuratie.

Natuurlijk is de documentatie verspreid over verschillende bestanden hier en daar, en moet je door handleidingen graven om Wine te configureren, maar het resultaat is het waard. Wanneer software bedoeld voor krachtige desktops draait op een klein bordje voor een paar tientjes, voelt het als een beetje magie.

Je kunt de broncode en build-instructies bekijken in de officiële repository ptitSeb/box64. Er zijn ook links naar game-compatibiliteitslijsten die bijna dagelijks worden bijgewerkt.

Gerelateerde projecten