I’ve been dual booting Linux and windows for about two years now, but in those two years, I have never booted into windows, except by mistake.
This made me think about removing windows and just saving that wasted space for Linux. I only ever dual booted for the off chance the peer pressure to play anti cheat games was too great, but so far it hasn’t.
For the off chance where I want to play a game that doesn’t run well on Linux, is it a good idea to do that via VM instead of dual boot, or is it too much hassle? Will there be performance hit or any issues with those games?
Thank you all for the helpful answers. I’ve deleted Windows and decided to not even try running it again.
Hello Gentoo Linux full-time!
The good ending
I was in the same boat as you and deleted Windows two years ago. Never regretted it and I’m sure you won’t either 😃
The VM isnt going to have the specs of a true Win boot because some of the resources will be used to run Linux. The Win VM will still take up some storage space even if dynamic. If youre really set on playing Win-only games that are resouce intensive, I dont recommend getting rid of a a true Win boot.
Or, you can be like me and just stick to games you can play on Linux only. As far as Im concerned, if my Linux Mint can’t play them, they don’t exist.
i’ve had good success with this but ofc ymmv. it can be hard to get your windows vm performance tweaking right and it can take a buttload of time. if you want best mitigation of anti-cheat risk and best performance then you should continue to dual boot imo.
Do you do this to play games with anti cheat? I read that some games detect that. Are there ways around it?
depending on how you virtualize your windows install, yes, there are ways to kind of “spoof” your machine details (like manufacturer, desktop instead of vm) but again, it won’t be fool-proof and it might take a lot of time to get working well. i definitely have not tested that many triple-a windows games with anti-cheat because that’s just not my gamer wheelhouse, but so far after spoofing some of my machine details (spoofed as a baremetal oem install) i haven’t had any issues.
What hypervisor are you using?
I use proxmox and run a couple windows VMs for Remote Desktop. I’ve passed through nvidia gpus and even at point had a nvidia grid setup running splitting up a P40 across multiple VMs.
The nvidia gpu’s require several config options to ‘spoof’ a real desktop and prevent the code 43 error but windows still identifies them as virtual machines. I’ve never found a way for trick windows itself into thinking it’s stand alone.
Correct me if I’m wrong, but I believe Nvidia stopped producing the stupid code 43 error on their (consumer) GPUs a while ago (version 465 of their drivers). The P40 is possibly different because it’s not a consumer chip, but for gaming GPUs it should work out of the box now.
I say should because Nvidias driver are hot piles of garbage so even if they intend to make it work in VMs now there’s a good chance it just doesn’t.
Its been a while since I’ve had any gpu’s attached to a windows VM but I think my time pre dates the change. I realized they were not actually doing anything for my given workloads so I sold most of them. The P40 is setup in a VM for tensorflow now and one of these days Ill get the time to go back to that.
Yeah, that makes a lot of sense. Nvidia intentionally broke consumer GPUs for so long that I’m pretty sure most people who know GPU passthrough exists still think you need to do the weird Nvidia workarounds!
I have recently been playing with VMs in Unraid and in the video tutorials I’ve seen they talk about about grouping together (by editing xml file[1]) the video with audio that comes the GPU to avoid that error. Also about passing a modified BIOS. Are those the workarounds been talked about here?
[1] multifunction=‘on’
for hypervisor i’m using libvirt+qemu. by doing this, a few lines in the .xml for the vm is all that is needed for me to enable some hyper-v feature flags to spoof to windows that it’s not a vm. check to see if proxmox has some hyper-v features you can enable for this purpose.
I’ve read that the anti cheat engines will be triggered by a virtual machine. Not sure which games you play but you might have issues if they are online.
It works great if you’re willing to put in the effort of setting everything up the right way and don’t care about the tiny performance impact and the lack of direct storage support. From what I can tell, the performance impact is in the low single-digit percentage range with modern hardware (VT-x + VT-d + IOMMU or the AMD equivalent). It’s hard to say if this is too much of a hassle, that really depends on how much experience you have.
There are some in depth tutorials available that will guide you through the setup step-by-step, but they involve a lot of config files that you may or may not need to alter to suit your setup.
Ease of use is increased a lot if your monitor(s) can be attached to a different GPU than the one you’re trying to pass through, for example if you’ve got an iGPU built into your processor.
If you’re passing through your only GPU, you will probably need to do some pretty weird shit to safely detach the GPU, reattach it to the VM, and then hope that nothing broke in the mean time because you have no way of knowing what’s going on. I recommend enabling SSH and getting an SSH client set up on your device before you go this path.
Be aware, though: some anticheat software considers VMs to be forbidden or even ban-worthy. You can try to start an arms race against this software but ultimately their millions of dollars will overcome your drive to play that one specific game.
I’m in the same place regarding Windows, only booting Windows to play some games from my hard drive (lol remember hard drives) but I don’t think I’ve booted that partition this year. With Valve’s work on Proton and Lutris for the non-steam games, I just don’t play that many incompatible games anymore. I’ve messed with passthrough VMs (specifically, Hackintosh through libvirt) and I found them not too hard to set up.
It used to be worth it, but Linux can run so many more games now thanks to Proton and other improvements. Most of the games that won’t run on Linux now don’t run due to anticheat, and many anticheat programs don’t like VM/GPU passthru.
So basically I don’t consider it worth it anymore.
Well in terms of anticheat, VM’s require immense amounts of knowledge to avoid detection. Ive heard specifically that Rainbow Six: Siege will ban you for playing under VM, as well as Valorant. Dual booting is best to avoid anticheat, but if that doesn’t matter, then a VM with passthrough can be extremely performant.
@cyclohexane Anti-cheat will often detect and prevent/ban it, so the use case it fills is that ever-shrinking group of games that run on Windows, can’t run under Wine/Proton, and don’t have anti-cheat.
Not sure it’s worth doing at all.
So it looks like either commit to dual booting, or commit to never playing those games…
Maybe I’ll just commit to never playing them. I’ve never used windows in 2 years, so it’s a waste keeping it…
Personally a game that doesn’t run on linux turn me down so much that i don’t want to play it at all. Check https://libregamewiki.org/Main_Page
Same here, dropped my dual boot since Jan 2020 and if I don’t see at least silver on www.protondb.com, I simply wait. Proton will get there eventually.
I wanted to go the VM route about a year ago, but I ended up deciding that it was just too much hassle and have kept my Windows dual boot for the extremely rare occasions that I need to use it.
I started out using the GTX 770 from my previous PC as the secondary graphics card to pass through to the VM - which is a lot easier than doing it with a single graphics card - but given how often I actually need to use Windows, I didn’t feel particularly comfortable with the extra power use.
So I decided I’d have a go at single GPU passthrough - which took me probably about six months of on/off (mostly off, admittedly) tweaking to get to a usable state. The first time I managed to boot Windows from my Linux install, I nearly cried. After a while fiddling with it, I decided that, as technologically awesome as it is, it really wasn’t that much different than running it on bare metal. The straw that broke the camel’s back was my inability to get Windows to gracefully hand the GPU back to Linux, despite the fact that it should have been as simple as reversing the steps to give Windows the GPU in the first place.
I’ve been running a setup like this for years without issues. Only the initial setup was a bit cumbersome, specifically getting it to work with just one GPU. Ran two for sometime before I got it working without issues though
It’s possible to do passthrough with a single GPU? I thought the whole point of passthrough was that the guest operating system took control of the hardware directly and that precluded sharing it with the host. Is single-GPU passthrough with an accelerated desktop on the host viable?
Yes it is, but ofc. the host screen goes blank when you start the VM. I run enerything on one virtualization host as VMs so this is not an issue. Basically I can run one machine that requires the gpu at a time, and of course all the headless ones like servers and the firewall keep running normally in the background.
I see, that makes sense. So basically serially passing the device around from one system to the next. Thanks for the response, it’s been a long time since I looked at passthrough and this is news to me.
Hey op if you do go with passing through your GPU check this out https://looking-glass.io/
GPU passthrough works amazingly well… when you have the required hardware and spend a lot of time to make it work.
It’s an elegant solution but it’s also difficult to setup and maintain. To be fair, I don’t think it’s worth it when you can just have a dual boot going. And you’re going to be running Microsoft’s software either way, soooo…
If you have a very particular workflow that makes it very painful to reboot, then yeah it’s worth it, and yeah it works perfectly well. Otherwise, dual booting when you need to is more efficient and less time consuming, I think.
I did this for a while with single GPU passthrough, Although keeping it working didn’t seem to be worth it in the long run.
I’ve got it working in the end, but it was a lot of fiddling, googling,reading and stealing tidbits from different guides and a lot of trial and error, so unless you have a specific usecase (in my case it being a VM on my living room media server & getting VR working) i would go with Proton first, dual boot second.