5 ms·
Does anyone know the state of running Windows / Linux x86-64 virtualization on Apple Silicon? This article is super interesting but dances around the most impor
by tbenst 3y ago
Does anyone know the state of running Windows / Linux x86-64 virtualization on Apple Silicon? This article is super interesting but dances around the most important application for VMs on Mac.
- vbezhenar 3y agoVery slow using qemu. You can run arm64 Linux and run x86_x64 apps inside using Rosetta, if your virtual machine uses Virtualization.Framework (does not work with qemu, AFAIK). I suppose you can do the same with arm64 Windows and Microsoft x86_64 translation technology, but not really sure.
- rincebrain 3y agoYou can use qemu -accel hvf.
- deergomoo 3y agoYou can use Rosetta to run x86 Linux binaries with good performance under a virtualised ARM Linux [0], but if you want to run fully x86 Windows or Linux you’ll need to emulate, not virtualise. It’s possible, but there’s a big performance hit as you might expect. [0] https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta https://developer.apple.com/documentation/virtualization/run...
- kamilner 3y agoI'm not sure how OrbStack does it, but it can run a fully x64 Linux using Rosetta with quite good performance.
- AkshitGarg 3y agoIIRC that runs a x86_64 userland (using Rosetta) on a arm64 kernel.
- timenova 3y agoYMMV, but from my own experiments, on an M1 Macbook Air, it did not work well for me. I was trying to compile an Elixir codebase on x86-64 Alpine Linux. Elixir does not have cross-compiling. I tried it in a Docker container, and in a Linux VM using OrbStack. Both approaches fail, as it just segfaults, even on the first `mix compile` of a blank project. This problem does not exist in ARM containers or VMs, as the same project compiles perfectly in an ARM Alpine Linux container/VM. It's definitely not plug-and-play for all scenarios. If anyone knows workarounds, let me know.
- cschmatzler 3y agoThat’s an underlying QEMU bug, which is used by Lima [1]. Add `ENV ERL_FLAGS="+JPperf true"` to your Dockerfile and it will build just fine cross platform. The flag just changes some things during build time and won’t affect runtime performance. [1] https://gitlab.com/qemu-project/qemu/-/issues/1034 https://gitlab.com/qemu-project/qemu/-/issues/1034
- timenova 3y agoThanks. I can confirm that this works. Compiling a new project no longer segfaults, and `Mix.install()` works in `iex` too.
- plufz 3y agoHN just turned into Stack Overflow. :)
- giantrobot 3y agoIn that case can this whole thread be deleted and replaced by a link to an almost completely unrelated issue that used some of the same English words in the description? Just trying to get the full effect here.
- fragmede 3y ago
- donatj 3y agoYour mileage may vary, but I've been quite happy running x86-64 software in an ARM build of Windows 11 in UTM. Nothing graphical or all that intensive though, just some productivity tools I can't live without.
- hypercube33 3y agoWhat hardware are you running this on out of curiosity?
- donatj 3y agoM1 Macbook Pro
- tecleandor 3y agoFor Linux, and if you only need to run CLI tools, I've been very happy with Lima [0]. It runs x86-64 and ARM VMs using QEMU, but can also run ARM VMs using vz [1] (Apple virtualization framework[2]) that is very performant. Also, along with the project colima [3] you can easily start Docker/Podman/Kubernetes instances, totally substituting Docker Desktop for me. For desktop environments (Linux/Windows) I've used UTM [4] with mixed success. Although it's been almost a year since last time I used it, so maybe it runs better now There's also Parallels, and people say it's a good product, but it's around USD/EUR 100, and I haven't tested it as I don't have that need. And there's VMWare Fusion but... who likes VMWare? ;) [0] - https://lima-vm.io [1] - https://lima-vm.io/docs/config/vmtype/#vz [2] - https://developer.apple.com/documentation/virtualization?language=objc [3] - https://lima-vm.io/docs/faq/colima/ [4] - https://mac.getutm.app/ [5] - https://www.parallels.com/products/desktop/
- cangeroo 3y agoParallels has a bad desktop user experience using Linux because of poor support for continuous scrolling. Lots of users have complained on their forums for years, but they refuse to do anything about it. I bought it for one year, and regretted the experience. It works well with Windows though. Generally, the experience with MacOS is mediocre thanks to Apple and their Virtualization Framework, with many basic features missing for years.
- a_vanderbilt 3y agoCan you elaborate on the continuous scrolling? I've actually never noticed anything off about the scrolling.
- deaddodo 3y agoThis is ironic, considering Parallels was originally an Apple first product designed specifically for virtualizing Windows and running it's apps "seamlessly" alongside native Mac ones.
- kergonath 3y ago
- kamilner 3y agoI regularly use Orbstack to develop for x64 Linux (including kernel development). It works transparently as an x64 linux command line that uses Rosetta under the hood, so performance is reasonably good. It can also run docker containers, apparently faster than the normal docker client, although I haven't used that feature much so I'm not sure.
- deleted 3y ago[deleted]
- avidphantasm 3y agoI run full AMD64 containers using Docker Desktop, which uses Rosetta under the hood. On my M1 Pro they were a bit slow (maybe 25% slower than my work laptop, which is a 12th gen. i9), but good enough in general. I have since upgraded to an M3 Max and AMD64 VMs seem to be a lot faster, maybe even faster than my 12th gen. i9. I really hope Apple doesn’t get rid of Rosetta support in VMs, ever. It’s just too useful.
- nxobject 3y agoI wish there was a good GUI-based solution for Windows emulation via Rosetta. My use case isn’t development - it’s running software with an x64-only proprietary driver! (The Oculus remote link drivers, FWIW.) Fusion and Parallels don’t have that feature, so I’m wondering whether there are technical difficulties/blockers there.
- jxdxbx 3y agoARM Windows runs well with Parallels. And it can run x86 apps.
- stephen_g 3y agoYes, this is the best way to do it if possible in my experience. I use some fairly heavy x86_64 apps in the Arm for Windows in Parallels, using Windows’ translation system (rosetta 2 equivalent), and it’s been quite good. Trying to emulate the whole x86_64 version of an OS (I tried some Docker images that only came in x86 before finding instructions to rebuild them on the ARM base OS) has been super slow on the other hand. This is on a quite decent M2 Pro.
- cangeroo 3y agoSome x86 apps refuse to run on ARM, having platform detection built-in to their installer.
- zerkten 3y agoIf it's an MSI-based installer, it's pretty easy to edit the MSI with Orca to remove the check. This is similar to how you'd get client software installs unblocked on Windows Server. In other cases, there are often ways to trick it, but it's contextual.
- dada78641 3y agoMy personal experience is that Windows 11 for ARM runs extremely well on Parallels. It includes an emulation layer for x86 apps that's completely invisible and just works. I can even still run Cakewalk, a program originally from the 90s, on my M1 Mac to edit midi files. With that being said, this is just my view as someone who uses simple consumer oriented programs, and I'm not sure how well it'll work for more serious purposes.
- sydbarrett74 3y agoHave you tried any Windows games on Apple Silicon? What kinds of Windows apps do you tend to run? I've used the macOS version of World of Warcraft on my '20 Mac Mini (16GB RAM) and even with utilities that adjust the mouse acceleration curve, I still find game play clunky. I was hoping I could run WoW under a VM and have it be somewhat performant.
- rogual 3y agoNot OP, but I use Parallels on M2 and gaming is a bit hit-or-miss. I'd say maybe 80% of games work flawlessly, and 20% have some sort of issue ranging from the annoying to the unplayable. For non-gaming, Parallels is extremely solid. I use Visual Studio and various productivity apps and they all work perfectly -- although Parallels is enshittified scumware that pops up ads at every available opportunity, so if that kind of thing bothers you, it's worth considering it before buying.
- solardev 3y ago
- fulafel 3y agoThe article is about virtualization, not emulating x86-64, so I'd disagree it's dancing around that. (Also, Windows and Linux have their own x86 emulations - if you boot virtualized Windows/ARM or Linux/ARM, you can get to the native emulation functionalities)
- outcoldman 3y agoI do my work on Apple Silicon laptops since the first M1 came out. I use Docker Desktop that can run for me amd64 images as well. I do run Splunk in it (which is a very enterprise product, written mostly in C++), I was so shocked to see that I was able to run it on Rosetta pretty much from day 1. Splunk worked on macOS with Rosetta from day 1, but had some issues in Docker running under QEMU, now Docker uses Rosetta for Linux, which allows me to run Splunk for Linux in Docker as well. I use RedHat CodeReady Containers (local OpenShift), which works great as well. And I use Parallels to run mostly headless Linux to run Kubernetes. And sometimes Windows just to look at it. In a first two years of Apple Silicon architecture I definitely had to find some workaround to make things work. Right now I am 100% rely only on Apple Silicon, and deliver my software to large enterprise companies who use it on amd64/arm64 architectures.
- maldev 3y agoI'm a big windows guy, pretty much windows only. Recently bought a macbook. I love windows so much that I set up my shell on the mac to be powershell and use Windows Terminal to SSH into the mac. I'm REALLY happy with parallel desktop. It runs any productivity or programming app I've needed. It also makes it as if it's running natively on the mac, you can just open up some windows app and it pops up like a mac one. It works amazingly fast, and I can develop both x64, x32, ARM apps in visual studio on my VM. Games don't work because of DRM, but I just use Parsec to stream my desktop if I want to game anyways, so it doesn't affect my workflow. And any game I would actually play while traveling is on the mac natively. For linux I only emulate Kali, and it works good, I love how the VM's pop up as a "Virtual desktop" so I can side swipe it, but linux vm's don't have the native integration like Windows. Once nested virtualization is enabled, i'll probably stick it in WSL, I personally don't use Linux that much since I think it's shit. The only downside is some asshole at Apple won't put in nested virtualization for the VM's, even though M2 and M3 have support for it on linux.
- freedomben 3y agoIf you don't mind me asking, why did you buy a macbook?
- maldev 3y agoIt's my first Mac, and I bought it because the actual machine is magical. It's so well built and has so many little things that make it great. I thought it was dumb and overhyped until my girlfriend got a M2. I then looked up the virtualization and played around with it a bit, and bar games, it's the best laptop for running Windows apps. And even then, it runs every game I would play on the road. I also really liked the memory layout they have. I have been messing around a ton with ML/AI, it's able to do local models faster than chatgpt and get like 70% the accuracy. I have a pretty beastly desktop setup, and it's a joy to use such a solid machine in bed while i'm watching TV.
- LASR 3y agoI was able to get a fully functional Windows 11 install using UTM on my M1 MBP. This really helped with some Windows-only android tools with USB passthrough. I've not tried Linux. Note: I am not associated with UTM in any way, just a satisfied user. [1] https://mac.getutm.app/ https://mac.getutm.app/
- xvector 3y agoI've always wondered what the security posture is of UTM, QEMU, etc. Is an escape trivial or is there thought put into security?
- saagarjha 3y agoThere's at least a bit of work put into security, yes.
- sneed_chucker 3y agoProbably ARM Win 11 though right?