Hacker News new | past | comments | ask | show | jobs | submit login
Box64 – Linux Userspace x86_64 Emulator Targeted at ARM64 Linux Devices (github.com/ptitseb)
165 points by varbhat on March 11, 2023 | hide | past | favorite | 42 comments



Slightly off-topic, but the author also made gl4es, a library that basically allows all kinds of OpenGL apps to run on modern devices. Shameless plug: gl4es is what allowed me to port Neverball to the browser.

https://neverball.github.io


> made gl4es

Neverball was working in the original glshim project before ptitseb forked it to gl4es. (Not to discount the significant work he's put in since, including the ES2 backend)


My bad, I completely forgot they worked off of a fork.

Did you ever try Neverball with glshim, though? Why? I'm the current maintainer of Neverball, always very interested in Neverball-related stuff.

When I was working on the Emscripten port, I tried a bunch of GL-to-OpenGL ES libraries. There were a few. I might have tried glshim, but not sure anymore, that was a couple of years ago. gl4es was the only one that worked without any obvious visual glitches.


What about GL2ES and GL3ES? I use them in Retroarch on my android TV box.


I don't think there's a GL2ES and GL3ES? Are you thinking about GLES 2 and GLES 3? Those are graphics APIs standardized by Khronos, being versions of OpenGL for Embedded Systems (OpenGL ES).


Yep you're right, bad acronyms will forever confuse me.


Talking about emulation/VMs, I have recently played with multipass (from canonical) to run ubuntu VMs on my Apple M1. It works like a charm! In the past I have tried VMware and Vagrant, and while they somehow work, I’m always running into issues. More recently I tried qemu, and I spent many days trying to figure out the correct set of command line parameters to run linux. The bad thing about multipass is that it only runs Ubuntu VMs. The good thing (besides working out of the box) is that mutipass uses qemu behind the curtains, and as part of the logs multipass spits out, one can see the complete set of command line parameters that was used to spin up the VM (so that can be used as a blueprint to run other VMs besides Ubuntu)


> tried qemu, and spent many days trying to figure out the correct set of parameters

It's really not that hard, once you get used to it. Or, if you rather not spend that precious time, there is a GUI tool that would configure those parameters for you:

https://virt-manager.org/

Bonus: once started with virt-manager, run "ps ax | grep qemu", et voila - you have your qemu parameters, ready to copy-paste, should you wish to run exact same VM later from a script, or something...


Does virt-manager run on aarch64 macOS? I thought it needed libvirtd.


One issue with those "shortcuts" is that you'll end up with crazy arg strings consisting of 20+ cryptic parameters.

qemu actually has sane defaults, so it's not that hard to launch a VM, if you don't need all fancy features (chances you don't).

I'm not sure if it's really worth it to spend time reading qemu manuals. I did it and I'm using shell scripts to start VMs which is easier for me than learning another qemu wrapper. And I know that I'm using bare minimum which I like.


> Talking about emulation/VMs,

Box86 / Box64 is however not emulation or VM. It translates X86 and X86_64 cpu code to ARM code. If anything it's very close to what Rosetta2 does on Mac.


...that's an emulator.


Have you seen https://github.com/lima-vm/lima ?

Runs linux VMs and can run x64 via quemu or even using rosetta2 & apple virtualization framework


I've used that and can confirm it works great. I just use it to run Arm64 Linux on my M1 chip at work for speed.


TIL Adroid Emulator is Qemu

https://android.googlesource.com/platform/external/qemu/+/2d...

It saddens me that so many of these open source projects barely get any monetary love.


If you want a MacOS frontend for QEMU (also supports Apple's native Virt framework) look at UTM

https://mac.getutm.app/


UTM had me at “here’s a pre-built Solaris image”.

It’s also how I sadly learned that M1/M2 chips don’t support nested virtualization. So no WSL on Windows on Arm under Mac OS Ventura. At least I could never get it to work.


You are correct, no nested virt support on macOS or Asahi. The rumor is this could be coming eventually to Asahi on M2, and maybe a future macOS release - but until it actually does it's a pretty huge drawback of apple silicon that is rarely mentioned.


"huge"?

Am I missing something? I know of this limitation but I dont understand why would anyone need this. What's the goal or running Windows on Mac to run WSL on it?


Doing anything involving virtualization on Linux or Windows. This also applies to macOS vms, so you can't run Docker Desktop inside a macOS vm.


We migrated from Vagrant/VirtualBox to Mutlipass and Mutagen.io for file sync. The only thing I miss is the private networking options of VirtualBox. So we pull the ip from Multipass and put it in etc/hosts for name registration.


It uses _parts_ of QEMU, but not the whole thing.


oh hey! i worked on this a while back!

really cool project. runs unity games too. author is a very talented guy


> author is a very talented guy

Almost an understatement, he's done amazing projects throughout the years:

https://github.com/ptitSeb?tab=repositories


Supports Vulkan... so an RPi 4 can run x64 Linux, emulating Wine64 (and Wine32), "emulating" DirectX games on Windows...


It will work on a RPi4 but the limitations is going to be the quality of the Vulkan drivers, and the memory that can be allocated for graphics.

Also, a Rpi4 is going to be massively underpowered to run most games in any way.

A much better example is the Mini PC with a D2000 Phytium 8 cores ARM process from China, equipped with an AMD RX550 GPU - it can actually run Doom 2016 with Box86 and Box64: https://youtu.be/5JwflzpWDzk?t=614


That's a very generous definition of "run" - ~17fps.


Vulkan drivers on the RPi are kinda terrible. Only supports Vulkan 1.0. For better compatibility, a Rockchip SoC with Mali GPU and Panfrost drivers support desktop OpenGL 3.1, so you can use Wine's WineD3D on that.

https://mesamatrix.net/


How does performance for this compare with QEMU?


Recent video here about what the latest update brings (Steam Full Picture Mode in action) https://www.youtube.com/watch?v=wcck7ZTo4-8


How does it compare to FEX ? Last time I looked it was the state of the (FOSS) art for this use case. https://fex-emu.com/



arm64 is not that interesting due the toxic IP tied to this ISA. Would be more interesting to target RISC-V.


ARM64 is interesting because a ton of people have ARM64 hardware. In an ideal world we'd all be using RISC-V rather than either ARM64 or x86_64, but we're a long, long way away from that.


ARM64 is very interesting because some of the best laptop hardware in existence (best battery life, screens, etc.) use it.


ARM does indeed have benefits, but if the most notable ones to you are laptop hardware and screen quality then I'd argue that ARM doesn't really interest you at all.


Smartphones, tablets and ARM64 server deployments vastly outnumber these luxury segment consumer devices.

There is a much better business case for x86 binary translation outside of a lineup of laptops relatively few people own (despite the crowd having formidable purchasing power)


RISC-V may become the open source ARM, or it may be a complete bust. At this point, either could happen. As it is now, there are only a few hardware implementations and all of them are dog slow compared to ARM.


With RISC-V having shipped billions of cores in 2022, the latter is unlikely.


RISC-V has a minimal installed based and ARM64 doesn’t. Therefore the potential number of users positively impacted by further development is larger.


Fortunately, the author seems to care[0].

0. https://forum.rvspace.org/t/work-on-risc-v-dynarec-for-box64...


You keep repeating that the Arm isa has toxic or super-toxic IP. Are you implying that it can actively harm users of the Arm ISA or do you just object to anything with proprietary IP?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: