myspaghetti / macos-virtualbox

Push-button installer of macOS Catalina, Mojave, and High Sierra guests in Virtualbox on x86 CPUs for Windows, Linux, and macOS
GNU General Public License v2.0
13.46k stars 1.11k forks source link

macOS on VirtualBox on WSLg #525

Closed myspaghetti closed 2 years ago

myspaghetti commented 2 years ago

Here's a sort-of tutorial for compiling the vboxdrv module for WSLg, adapted from the Darling guide and the Hanna J guide.

No support is offered for installing WSLg, compiling a kernel, or compiling and loading the vboxdrv module.

This process can and will break, since WSLg is still in beta. Without further ado:

Hooray, now you can run the script, version 0.99.1.0 or higher, and install macOS on VirtualBox on WSLg, super-slowly.

Follow the script and you're done. Please mind that in my limited experience, there appears to be some disk I/O issue which slows the VirtualBox VM considerably, so booting macOS takes about ten minutes and installation takes many hours. If you're already compiling kernels and kernel modules, you might as well skip VirtualBox altogether and head directly to OSX-KVM on WSL2/WSLg which is a lot faster.

IgnacioSanchezRamirez commented 2 years ago

I have got this error: Can you help me? I have got a windows pc, with bash, I think that it is wsl2, but if I uninstall I cannot install with this script macos. I try to install it in a linux pc and I dont had any problem, everything goes perfect,.

Checking that VirtualBox starts the virtual machine without errors.

Checking that VirtualBox uses hardware-supported virtualization.

Virtualbox is not using hardware-supported virtualization features. Check that software such as Hyper-V, Windows Sandbox, WSL2, memory integrity protection, and other Windows features that lock virtualization are turned off. Exiting.

myspaghetti commented 2 years ago

WSL2 uses Hyper-V which blocks VirtualBox from accessing VT-x/AMD-V. macOS guests on VirtualBox require VT-x/AMD-V. The script only works on WSL2/WSLg if you enable nested virtualization and load the vboxdrv kernel module. No support is offered for running the script on WSL2/WSLg.

IgnacioSanchezRamirez commented 2 years ago

I had disable Hyper-V and I installed the VM correctly. I think that you could put this script line in you specification, so it could help to others users.

myspaghetti commented 2 years ago

Right now I believe Oracle will not support VirtualBox on WSL2/WSLg, and I assume the extremely limited performance is here to stay, so the script isn't officially supported on WSL2/WSLg. I do heartily recommend QEMU/KVM as the performance on WSL2/WSLg is very good.

jmaldon1 commented 2 years ago

@myspaghetti Are there any tutorials online to get a mac virtual machine similiar to the one this script creates but on WSL2/WSLg? Or are we on our own?

myspaghetti commented 2 years ago

All the steps are here. When the WSLg kernel is updated you'll have to change the version number from 5.10.y to whichever you're running, but otherwise all the steps are stable. Regardless, VirtualBox is extremely slow on WSL2/WSLg so you'll save time going directly for OSX-KVM.

tcab commented 2 years ago

VirtualBox has steadily improved over time. Version 6.1.3 runs OK under Hyper-V. For example, I am running Ubuntu in VirtualBox under WSLg in Windows 11. Does this fact improve the prospects of this project?

Unfortunately nested VT-x/AMD-V is still not supported - not sure if its just a matter of time or a technological limitation.

P.S. I looked at the OSX-KVM link and its a serious commitment to follow all those steps - we need a script for that!

myspaghetti commented 2 years ago

@tcab mind the difference between VirtualBox on Windows using NEM, and VirtualBox on a WSLg host.

To clear things up: