Updates make using Windows 10 as an occasional dual boot on a laptop a pain. I usually use the machine with limited or no internet and no power handy, so if I accidentally let it update I'm SOL. As a result I found myself reaching for Windows less and less.
Do you need to dual boot? I switched to using Linux full time, and running Windows in a VM when needed. It also simplifies the workflows because you don't need to reboot to switch between the systems
If you're running Windows to play games, you need your virtualized Windows to be able to take 100% control (or close to 100%, anyway) of the GPU to get equivalent performance to playing the same game on Windows running directly on the hardware. This "GPU passthrough" turns out to be complicated to do, particularly on VirtualBox, which ('cuz it's free) is the virtualization platform your average hobby user is likely to be using.
(Which is too bad, because I would love to be able to stop dual booting just to be able to play some games.)
Now there is Proton by Valve. it's a wrapper for wine and a few other components. Most games just work now. There are of course some exceptions like ring of elysium doing kernel patches for ring zero DRM and Anti-Cheat. But I would say 90% of my steam library just works out of the box.
I've found the performance penalty in practice to be only a few percentages, since virtualization is supported at the hardware level / HyperV. Essentially undetectable. YMMV. Parallels Desktop and/or VMware Fusion are superior (IMO) for GPU passthrough, but virtualbox can work.
As to why someone would want to run this; there is a case where dual-boot is the only alternative : the practical difficulty, if you're a developer who runs Docker -- it doesn't play well with VirtualBox. https://forums.docker.com/t/running-docker-and-virtualbox-on...
> As to why someone would want to run this; there is a case where dual-boot is the only alternative : the practical difficulty, if you're a developer who runs Docker -- it doesn't play well with VirtualBox. https://forums.docker.com/t/running-docker-and-virtualbox-on....
Not quite. That only applies to "Docker for Windows/Mac", while a developer primarily running Linux would presumably run native Docker.
More generally, the actual problem here is that there can generally only be one hypervisor running at a time, since it grabs exclusive control of some system resources. Docker itself isn't a hypervisor, but DfW/M use the native hypervisor of their respective OS (Hyper-V and Hypervisor.Framework, respectively) to run the Linux distro boot2docker (where the actual Docker Engine is ran), and neither of those like to coexist with Virtualbox.
There is also the older Docker Toolbox (for both Windows and macOS) that used Virtualbox as its backing hypervisor, and so will happily coexist with other Vbox VMs.
But all of this is about coexisting hypervisors at the same "level". Some hypervisors (such as KVM) support nested virtualization, in which case you could run any (one) other hypervisor inside a VM managed by that hypervisor. For testing purposes I have ran DfW inside KVM, and it worked fine (if a bit slow).
Apparently a eGPU will solve this. Plug the eGPU into the host machine/laptop, pass through into the windows VM, and itt'l work (apparently) without having to mess about with, well, anything. Would love to hear if someone has actually had any success with this approach.
eGPUs won't help at all there. If your chipset and CPU support IOMMU virtualization (generally any Skylake+ or Ryzen CPU will, chipsets tend to vary more) then you can already do it with your internal discrete GPU, otherwise those will block it anyway.
However, even then the GPU's PCIe slot will need to be in a separate IOMMU group (generally only the case if it is connected directly to the CPU, bypassing the chipset, usually the case for 1-2 slots per mobo at most), which I strongly doubt Thunderbolt slots would be prioritized for.
It's not even just for games. I test my app (Aether, https://getaether.net), on a Windows VM, and I noticed that the performance characteristics of some apps change if you do that. Some parts of some apps can slow down two orders of magnitude, especially if it's doing anything related to painting frames.
I can do dual boot, but then I lose my dev environment, it's valuable to be able to apply a patch, compile a new version and try it on the Windows machine.
I finally gave in and ordered a Windows desktop box for testing yesterday.
There was a time my business relied on a Windows-only browser app for several banking operations. The thing I liked most about the VM is that it was immutable - the moment I rebooted, it went back to its previous state.
For updates, I made it mutable, applied only the updates and made it immutable again.
In my case I don't think there's much that's Windows only that I can't use on my Phone (like Office) or Tablet. The only laptop I'm keeping with Windows is my Surface Book 2, I did boot Kubuntu on it to test it out, it looked beautiful but unless Microsoft officially supports Linux on their devices I don't think I will bother, it's nice and works, so I can't complain.
The only other machine I have with Windows is a desktop I never turn off, so it updates itself when I'm not around.
I'm dualbooting so that I can use Reason (music software) and the occasional game, but I'm picking up Renoise which runs on Linux (and is more suited to mouse-less composition.) I'll probably still arrange, mix, and master in Reason though (but I'll do that on my gaming machine which is still running win7.)
I run Windows 10 Pro under VirtualBox on Ubuntu - hardware is a Dell XPS 9560 (7th gen i7).
Performance is basically native, I use it for PhotoShop and for video editing in Premiere. I was even playing with Propellorhead Reason the other day dabbling in making some music.
Modern x86's have instruction set extensions to make VMs almost free of any overhead. The only performance hit you have is for the memory you don't allocate to the VM.
> The only performance hit you have is for the memory you don't allocate to the VM.
Also disk I/O. Increased disk latency can kill the VM performance, and it will increase, if the virtual disk is inside a (sparse) file, inside a filesystem.
VMware has well implemented integration tools that take care of mouse transfer, clipboard, and resizing the desktop. Windows in a Linux VM works well there.
I use Windows 10 Enterprise via KVM on Fedora 29. It works quite well, even for more intensive tasks. I do not have a dedicated GPU, so I am not sure about image editing. The only thing I've noticed that is a bit annoying (and it happens in almost any virtual environment) is real-time audio for stuff like video conferencing. When I conference with people who insist on using WebEx or Skype for Business, the audio though the Windows VM is always popping and skipping slightly. Never enough to disrupt the meeting, but it can be annoying.
I still use Windows for work but 10 pushed me to use Linux exclusivley for personal use. I was an MS fanboy through Windows 7. Since, I've been learning non-MS development environments and loving it. My next job will not use .NET, SQL or Azure. I'm thankful they're messing up so bad.
Out of curiosity, why not .NET? I'm not the biggest fan of Windows 10, but I'm liking the open-source direction that MS has taken with .NET Core and other tools.
Well because its just another embrace/extend/extinguish.
And its not worth the upgrade treadmill of minor version bumps for essential features. Look no further than Linux/PowerShell that requires security turned down, and has almost no features. Its a hook to get you to use Windows.
Open source isn't enough. The tricky, some times forced, telemetry in their software is unforgivable. It's been a while since I checked, maybe they addressed those concerns, but it's too late, the trust is destroyed.
That "Option to force download over a metered connection set" from the flowchart is yours to control via the Allow updates to be downloaded automatically over metered connections policy. It is not forced on you by MS. So setting the connection to metered will pause the updates.