Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Depends on your workflow i guess. Currently i am using WSL extensions for Visual Studio Code.

You actually can just run VS Code directly in Ubuntu, you know...

hrj4boe.png


Though the Insider build currently has this weird bug where it pegs one CPU core at 100% inside of Linux itself.

Here's how it looks like at idle:

bAo9oJH.png
 
Just out of curiosity, can someone run the ARM64 version and the x86 version of Geekbench within Windows and post the numbers?

1490/4678 (4 cores only)

Not sure how I can force Geekbench into x86 mode.
 
You actually can just run VS Code directly in Ubuntu, you know...

Sure i could, but at least under Windows there is no GPU acceleration for WSL2 yet. And of course with one Visual Studio Code installation i can develop for Linux and Windows.
 
1490/4678 (4 cores only)

Not sure how I can force Geekbench into x86 mode.

Thanks! I believe only Geekbench 4 had a 32 bit version.
Now Microsoft is supposed to add 64 bit emulation for insiders in the coming month or so :)
 
Okay. So I guess that score is "it". Thanks for the confirmation!

If I recall correctly, that means... in a virtual machine, my new MacBook Pro M1 is literally twice as fast as my old Surface Pro X. Now that explains why I felt like it was still faster than the Surface Pro X despite the lack of a proper GPU driver.

Edit: link: https://browser.geekbench.com/v5/cpu/5074920

Qualcomm has a lot of catching up to do. Microsoft might actually have a decent OS to sell if they decide to license Windows 10 on ARM for M1 MacBook Pro then... especially when x86-64 emulation is in the cards.
 
Okay. So I guess that score is "it". Thanks for the confirmation!

If I recall correctly, that means... in a virtual machine, my new MacBook Pro M1 is literally twice as fast as my old Surface Pro X. Now that explains why I felt like it was still faster than the Surface Pro X despite the lack of a proper GPU driver.

Qualcomm has a lot of catching up to do. Microsoft might actually have a decent OS to sell if they decide to license Windows 10 on ARM for M1 MacBook Pro then... especially when x86-64 emulation is in the cards.

Yeah CPU is much faster than Surface Pro X - for comparison scores are 800/3000 for Surface Pro X. Of course to be fair Surface Pro X runs with 2.5 years old cores from ARM within a 7W TDP boundary - its still much faster than anything Intel has to offer in the 7W category like Intel Lakefield. And of course Surface Pro X is still orders of magnitudes faster when running games, due to proper Direct3D driver.
 
Last edited:
Yeah, to report back, Shenzhen I/O launches and works without a hitch for me, so x86 (32-bit) emulation works! And hell, even with just 2 cores, it runs slightly faster than how I remember the Surface Pro X does it.

cxBcpOO.png


^ 2 cores seems enough for this and many other things.

Also, I was able to get Ubuntu Mate working with the other 2 cores. Heck, it runs faster than my overclocked Raspberry Pi 4 even.

This is actually much more useful than people realize. Once we have nop implemented, then I won't have any problem giving more CPUs to these VMs.
How is the battery life with 2 or 4 cores constantly pegged?
 
How is the battery life with 2 or 4 cores constantly pegged?

1 core = about 9 - 10 hours
2 cores = 6 - 7 hours
3 cores = 5 - 6 hours
4 cores = 3 - 4 hours

Those are the estimates I was given. I'd go for only 1 - 2 cores in a VM unless absolute max performance is really critical to your work.

With the latest patch, CPU can stay idle, and when idling, there is barely any usage at all. It's almost indistinguishable from native. Right now, I have Ubuntu running a Java REST + SQL server and I get about 12 hours remaining. Not too shabby.
 
Man, seeing what progress people are making in such a short amount of time is pretty exciting. I got a bit of deja vu just now thinking back to the early days when Macs first moved to Intel. It's funny how things have come full circle.

2005: Intel comes to the Mac
2005: OSx86 project starts rudimentary tests of running Mac OS X on Windows PCs via virtualization
2007: iPhone introduces ARM to the underpinnings of Mac OS X
2020: ARM comes to the Mac
2020: New project starts rudimentary tests of running Windows on ARM Macs via virtualization

We're literally now at the inverse of 2005.
 
  • Like
Reactions: Madd the Sane
Man, seeing what progress people are making in such a short amount of time is pretty exciting. I got a bit of deja vu just now thinking back to the early days when Macs first moved to Intel. It's funny how things have come full circle.

2005: Intel comes to the Mac
2005: OSx86 project starts rudimentary tests of running Mac OS X on Windows PCs via emulation
2007: iPhone introduces ARM to the underpinnings of Mac OS X
2020: ARM finally comes to the Mac
2020: New project starts rudimentary tests of running Windows on ARM Macs via emulation

We're literally now at the inverse of 2005.
Just a small correction. We are doing in this thread is not "emulation", is "virtualization". The difference is that, emulation is using software to make up a CPU then boot an alternate OS, but virtualization is a function of CPU itself to allow it run multiple OS at the same time. Hardware functionality and performance has a huge difference between these two modes, virtualization could be more than 10 times faster in some cases.

But sometime we DO need emulation, like to execute x86 binaries on ARM Processors, but it is up to Microsoft to made an x86 emulator in Windows ARM.
 
V2 patches are better
now I can start UEFi if usb is connected to vm
however I have to start UEFI passing kernel/initrd to qemu too, otherwise vm just stops without outputting anything to serial0

Does this simple command starts vm with output on serial0 for you ?


qemu-system-aarch64 -machine virt,highmem=off -M accel=hvf -drive if=pflash,format=raw,file=qemu_edk.fd -m 2048
 
Last edited:
So, here is how I got my Linux setup to work. A bit different from what you guys are doing, I'm guessing. I didn't have to pass in kernel/initrd:

Code:
#!/bin/bash
./qemu-system-aarch64 \
-M virt,highmem=off \
-accel hvf \
-m 4G \
-smp 2 \
-cpu max \
-drive file=storage.img,index=0,media=disk \
-serial stdio \
-netdev type=user,id=net0 \
-device virtio-gpu-pci -vga none \
-device nec-usb-xhci \
-device usb-kbd \
-device usb-tablet \
-device intel-hda -device hda-duplex \
-device virtio-net-pci,netdev=net0,romfile="" \
-bios QEMU_EFI.fd

Make sure there's a storage.img. I used qemu-img to create it.
If you need to install using the live CD, just add this (make sure to remove it after you're done with installation):

Code:
-device file=PATH_TO_LIVE_CD,index=2,media=cdrom

Boots every time. Though... you may lose the cursor if/when you get into the UI.

To fix that, either set "SWcursor" to "true" in xorg.conf (you may have to recreate this in Recovery if you're on a newer version of Ubuntu). Or... add this:

Code:
-display default,show-cursor=on

^ what that does is basically just "unhide" your mouse cursor when it enters the window. Would be useful in case it gets hard to see where you're pointing to. But I'd recommend doing "SWcursor" fix if you have the time to spare.

And yeah, V2 is far better. There are some other stuffs that can still be patched (like hidpi support, for instance), but it is... pretty much just what I'll want out of an eventual Parallels/VMWare release anyways. It has been useful and super stable!
 
I have ubuntu up and running ( with SWCursor xorg fix and everything)
the only caveat is uefi being bummer here, a simple command I showed in previous post just doesn't make uefi to run., but passing vmlinuz/initrd/append line makes it work.

btw, anyone tried virtio-gpu-pci with windows ?
 
-drive if=pflash,format=raw,file=qemu_edk.fd
This is the problem. .fd is not a "raw" file, you have to use -bios QEMU_EFI.fd instead, or use QEMU_EFI-pflash.raw if you want to pass raw pflash.
 
btw, anyone tried virtio-gpu-pci with windows ?

Yes. Black screen. It doesn't look like Microsoft includes a driver for that. What a shame. The CPU is really fast under Windows 10, and if the UI was properly rendered, it'd probably "fly".
 
This is the problem. .fd is not a "raw" file, you have to use -bios QEMU_EFI.fd instead, or use QEMU_EFI-pflash.raw if you want to pass raw pflash.
not, i have tried -bios file.fd and -flash file.raw, it's same.


bill-p, what about -device ramdb -device bochs-display
you can have two display devices with one vm
 
bill-p, what about -device ramdb -device bochs-display
you can have two display devices with one vm

I tried all of them and it seems only ramfb and virtio-gpu-pci show anything at all. virtio-gpu-pci will get past UEFI boot screen but black screen when it gets to the login prompt.

Then I found out why...

TL;DR is... we are probably stuck with ramfb for Windows 10 on ARM until Microsoft decides to do something about it, or someone decides to do something that's specific to Apple M1 (Parallels and VMWare?).

In the mean time, I think this is the best we can get.
 
Not sure if it will work on your computers, I just replaced qemu-system-aarch64 with mine in the zip, did you static link any libraries?

Please note: You may have to start from a new Windows VHDX after this update, the one that used by the old version may not boot.
It gives an error :
dyld: Library not loaded: /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib
 
  • Like
Reactions: ascender
Absolutely incredible, at first I wasn't able to get it to run via Terminal, but after using the UI wrapper by kid2010 for the first time I was also able to start it using the terminal commands. Following the tutorials in the first post, even the internet connection and the 1024x768-resolution work fine.

It runs absolutely fantastic for such an early stage of Windows 10 ARM on the M1, I was even able to test the Windows (x86!)-version of Roller Coaster Tycoon 3 on the virtual machine and while you could clearly see some stutters it runs way better than I would have imagined. I managed to play the whole tutorial at an acceptable speed without experiencing any crashes.
 
Yes. Black screen. It doesn't look like Microsoft includes a driver for that. What a shame. The CPU is really fast under Windows 10, and if the UI was properly rendered, it'd probably "fly".

What is required is a Direct3d 12 driver, which is able to use HW acceleration on the host side. It would be Apples task to provide such a driver.
The current Direct3d 12 driver is a framebuffer driver, which is indeed provided by Microsoft including the WARP and reference software rasterizers.
 
Hat Tip goes out to Alexander and @1958llakin for the really great instructions and compiling the build into a zip. Also @Gnattu for compiling the new patch.
I get the error dyld: Library not loaded: /opt/homebrew/opt/libusb/lib/libusb-1.0.0.dylib so I will have to take a closer look at that. I will also have to try @kid2010 new UI wrapper!

If anyone is looking for a video walkthrough, I put one together last night.

 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.