Update Overwatch and HotS in Virtualbox from Linux!

Hey guys, it took me a long time and many attempts to figure this out.

In a nutshell, I use Linux for everything and would prefer NOT to run Windows at all.
But I love Overwatch.

How do you get so much disk space to dual boot on a laptop with a SSD?

It was even more of a tough decision to dual boot, because that meant “wasting” 20GB of my SSD on a Windows partition. Plus I want to update from linux, so another 15GB for a Windows VM. That’s 35GB and then Overwatch and Heroes of the Storm together consume almost 30GB. Then obviously I need to leave free space. And since I’m dual booting I figured I might as well run other old classic windows games. So the solution I came up with is pretty awesome. I use a magnetic hard drive for Windows, Games and extra storage space. Then my whole SSD is available for Linux goodness. I use one of those CD-Rom 2.5" HDD holders so I can have a magnetic drive and a SSD at the same time :smiley:

So I dual boot into Windows to play Overwatch…
But internet is slow and I don’t want to reboot into windows and wait an hour or two for a multi-GB Overwatch update. Sometimes I only have time for one quick-play.

I just want to reboot and play immediately!

So I update Overwatch from a Windows VM inside Linux.
This is my final method which works perfectly!!!

Definitions:

Native: “Windows running natively, on bare metal, without virtualization”
VB: “Windows running in Virtualbox.”

In my setup I’ve got Win 7 x64 SP1 in both environments.

Step 1. Install Win7 and Ubuntu on same computer, dual booting. (I used a separate physical hard drive for Windows). I put

    Battle .net          223M
    Overwatch            14.8G
    Heroes of the Storm  12.5G

All together inside a “Games” partition, at D:\_Blizzard\
You’ll need absolute minimum 50GB free for both games.

You can install at a different location, but take care

You could do it all in one partition or different location, but then you’ll need to adapt the hardlink paths and GET IT RIGHT and check it before running Battle .net in VB.
Battle .net in VB is very fragile, so don’t think you can just try stuff randomly, if you do most likely Battle .net will stop working and you’ll need to start from a fresh VB again.
This guide is written assuming you use the same location as me.

Step 2. Install Virtualbox on Ubuntu 18.04 from repos (I’ve got VB 5.2.10)
Step 3. Add a 1GB virtual disk to VB and give it drive letter D:
Step 4. Mount the Native games partition inside VB at E: (in my case I just attached the whole windows physical hard drive RAW to VB (which has a nice side-benefit that I can defrag the Native partitions from VB), but other methods might also work like shared folders etc)
Step 5. Make these dirs on D:

    D:\_Blizzard\
    D:\_Blizzard\Heroes of the Storm
    D:\_Blizzard\Overwatch

Step 6. Copy the contents of “E:\_Blizzard\Heroes of the Storm” into “D:\_Blizzard\Heroes of the Storm” except HeroesData. This dir must not exist on D:
Step 7. Copy the contents of “E:\_Blizzard\Overwatch” into “D:\_Blizzard\Overwatch” except data. This dir must not exist on D:

Step 8. Make “CreateBlizzardHardDirLinks.cmd” as below and then run it as Administrator.

    mklink /J "D:\_Blizzard\Overwatch\data" "E:\_Blizzard\Overwatch\data"
    mklink /J "D:\_Blizzard\Heroes of the Storm\HeroesData" "E:\_Blizzard\Heroes of the Storm\HeroesData"

Step 9. Test your links by browsing the directories. The data and HeroesData (respectively) directory links should work when you browse the game dirs D:\_Blizzard
Step 10. Make a snapshot while the system is still fresh (no Battle .net stuff has run yet) just in case.
Step 11. Run the Battle .net Launcher and you should also make a desktop shortcut to it.

    D:\_Blizzard\Battle.net\Battle.net Launcher.exe

This first run takes quite a while before anything happens, you’ll need to put in your Blizzard login details. After a while (maybe 5-15mins) Battle .net will say it found your games, check that the paths are both D:\_Blizzard\…

Congratulations. Now you can update your Blizzard games in VB while you’re in linux, and you’ll be ready to play immediately when you’re Native.


Overcoming Battle .net menu rendering problem

Menus in Battle .net don’t work properly in Virtualbox. When you click the menu dropdowns, nothing appears. To resolve this, drag the Battle .net window so it’s mostly off the screen, then when you click the “dropdown” menu button, the menu will appear outside of the Battle .net window, and you’ll be able to use the menu.

Bonus: Auto start Battle .net after delay

Make a file start-blizzard-after-delay.cmd in your start-menu’s Startup folder.
I’ve found the delay to actually be necessary when starting Battle .net from a batch file at startup (otherwise it goes to sleep or whatever). I set the delay such that it only starts Battle .net after the hard drive light stops flashing from the boot process. This turned out to be really nice because most of the time I just want to start Battle .net unattended, but in some situations I may want to do something different, so I just close the batch file before Battle .net starts.

@cd \
@cls
@echo Starting Battle.net in a few seconds
@timeout /t 10
"d:\_Blizzard\Battle.net\Battle.net Launcher.exe"

Previous things I tried which DO NOT work

Previously I tried installing Battle .net from scratch inside VB and trying to install Overwatch or HotS inside VB and then switch the data dirs after. What a nightmare. For whatever reason, you can run a native Battle .net installation inside VB without any problems. But after you’ve run a Battle .net installation inside VB and try run it natively again… it’s very likely to get corrupt/broken saying Agent has gone to sleep etc. But with the above method, you’re copying “everything” already installed into VB, at the exact same path as where it was Natively. And it works!

I also tried sharing the EXACT SAME Blizzard dirs (no copying) between native and VB, but that doesn’t work well. When I did that my native Battle .net got messed up. For whatever reason Battle .net works when you go Native > VB, then it won’t work anymore if you have run it in VB and then try run it in Native afterwards.

I also tried booting my Native installation as-is inside Virtualbox. Booting up DOES work, but then the Virtualbox drivers conflict with the native drivers. On my desktop with Intel 4600 graphics it actually worked okay for a while, but VBoxMouse.sys gave me a few BSOD’s (Windows Blue Screen of Death) in the middle of games, which was terrible obviously. So I deleted VBoxMouse.sys which stopped the BSOD, but then Windows was very hard to use inside Virtualbox because the mouse integration without the guest additions driver in Virtualbox is terrible. BUT when I tried the same trick on my laptop, the Virtualbox graphics drivers conflicted with my Optimus Nvidia drivers so badly that it couldn’t run Overwatch properly or at all after I installed the Virtualbox drivers.

Other things I looked into that definitely won’t work

GPU passthrough, letting Windows use the GPU exclusively and directly, running Windows inside KVM (IOMMU): My i7 CPU does not support VT-d.

Running Windows inside Qemu/KVM with a virtual GPU powered by Virgil.
This won’t work because it doesn’t support Direct3D yet.

It’s a pity that Battle .net won’t run without a GPU installed. Basically the only possible way to run Battle .net inside a VM is with Virtualbox or GPU passthrough.

Final thoughts

I’ve not tried running Overwatch in WINE, I hear it’s decent but saw there were a few bugs and decided to rather dual-boot for perfect trouble-free gameplay.

I’d prefer not to use Virtualbox obviously. I would prefer a lighter, simpler solution. Virtualbox on a Linux host seems to be quite buggy and unreliable and the Virtualbox Kernel Driver was marked as “Tainted Crap” by a Linux kernel developer back in 2011. I would much prefer to run a stable hypervisor like KVM, but as mentioned, Virtualbox is currently the only way. But anyways, who cares. It works for now.

It’s a great shame that Blizzard is building games in Direct3D instead of the cross-platform OpenGL. And it’s a great shame that Battle .net won’t run without Direct3D. And that I had to go to such great lengths to just update my game while in Linux.

Have fun!
AlienBalls :alien:

PS Blizzard Developers:
Please make it easier for us to keep Overwatch updated.

Here are 2 simple solutions I can suggest:

  1. SyncThing
  2. Rsync

(we can just use our blizzard login details)

I am using Linux Mint OS and i got to run Battlenet and Overwatch for a little bit inside LUTRIS , however there is some update that needs to be done and as i try to play online or with training bots i get this message “Applying update” then some error… probably because the update or the patch itself needs extra configurations . How can i either skip this or manually apply this Update on my Linux system or LUTRIS specifically

Please see After buying a new SSD and reinstalling overwatch it now crashes on launch - #2 by Tyrskorn-2108