I’m an addict. I’m not addicted to drugs or anything (except for the socially accepted ones, e.g. coffee and chocolate) but rather to Amazon. So recently, on Black Friday, I got myself parts for a new PC. Yes, it is overpowered. And yes, I probably should’ve waited some more to order the parts. But that’s the deal with us addicts: we just can’t resist the rush.
Anyway…I now have a widely overpowered system on my hands and really no idea how to leverage all of that power…until now. I bring to you: my new home setup.
So, to understand my new (and improved) setup, you need to understand my current solution and workflow first. As mentioned on my “About me” page, I do some compiler and OS development in my free time. Now, I tried doing both on Windows, but as some of you might already know: Windows sucks.
Don’t get me wrong…I don’t hate Windows (in fact…I use it as my daily driver). It’s great for some use cases, but some things (e.g.: low level development, docker), it simply can’t handle. And I really don’t want to start a Windows vs Linux debate here. Because it’s dumb. Every user has their specific need. Not everyone will like Windows, not everyone will like Linux, not everyone will like MacOS. Period.
So I went on to try many things to compensate for Windows’ lacking support for these applications.
- Dualboot system: Absolute failure, way too hard to manage, unable to run Windows and Linux applications in parallel
- VMs: Better than dualboot, too slow for my taste (with Virtualbox as Hypervisor and Windows as host OS)
- Using Linux as a daily driver and looking for alternatives for applications that only run on Windows: even worse than dualboot
But finally, when I already wanted to give up, I stumbled upon something truly astonishing. A truly elegant solution to my problem: WSL or the Windows Subsystem for Linux.
WSL had it all. An amazing shell experience (with Hyper and ZSH), support for GUI applications (with Xming) and amazing performance. But recently, I noticed that it was lacking a couple important things like docker, KVM, tcpdump etc. My beloved WSL let me down. I knew, I wouldn’t be able to accept that. Not after all these letdowns. Not after all these failures. So now, I’m planning my new home setup. The one setup to rule them all. One that would support docker, KVM and friends.
I knew that Linus managed to do “X gamers on 1 CPU” with very minimal overhead. And I knew that GPU passthrough works like a charm on most hypervisors (in fact, I even made my own GPU passthrough benchmarks in ESXi). This gave me some inspiration and I had the following thought:
Can’t I just have one Windows 10 VM, with a passthroughed GPU. and one Ubuntu 18.04 LTS VM, for everything dev related that relies on Linux?
Yes. Yes, I can And because I want to keep my amazing shell experience, I’ll be running ZSH on Ubuntu and connecting to it via SSH on Hyper. Furthermore, I will be running X11 in remote mode and hosting my X-Server with Xming on Windows.
To sum it up: I still keep Hyper and Xming, can use my GPU on Windows for ML, gaming or editing and I can even run things on the Linux part of my new setup I couldn’t run on WSL.
Is this going to work? Am I going to have any overhead? How is the performance going to be? Did I just waste a lot of money for things I didn’t really need? Maybe. I honestly can’t answer these questions at the moment. But at least I know what to do with my OP system, right?
I’ll definitely follow up with another blog post describing the setup process.
One setup to rule them all, One setup to find them, One setup to bring them all, and in the darkness bind them.