Over the years I have used a great many operating systems. When considering a desktop operating system my needs have almost always been driven by which platform I was currently developing for. Not only are developer toolsets better on the platforms they are intended for but it helps to be fully familiar with a platform if you are going to develop for it. Where I’ve had to work in a couple of different platforms at the same time I’ve used virtual machines.
Back last summer I built the ultimate host for virtual machines with 28 cores (56 threads) and more than enough horse power to run a few dozen virtual machines – and I have been using it since. My primary operating system has been Windows 10 since last year. It was macOS for most of the prior decade, Linux before that for about five years and Windows before that back in the mid -90s.
Recently my workload has changed and moved away from Windows C++/.Net development to MATLAB and Python workloads often running in a Linux environment. I was using Hyper-V on my main machine but found it fell when it came to providing virtual 3D graphics acceleration inside a Linux host (something I need at the moment). Thankfully the truly amazing VMware Workstation has me covered nicely – it has worked so well that I’ve been really enjoying working outside Windows recently.
This got me thinking. Does Windows need to be my main operating system?
What I Need
I’m very happy in a land of virtualisation. Having constructed a workstation with hardware specifically to play-well in a highly virtualised world I have no problem running half a dozen machines at any point in time nor do I ever feel that I’m slowed down by it. With that realisation I can technically run any operating system as my main operating system if it meets my functional requirements – so what does that entail?
- World of Warcraft. This is number one on the list – not because it’s the most important thing in my life but because it’s a pain when considering which platform to run as it does have an impact on my choices. I have played WoW since it launched in Europe and will continue to do so. I play no other games so overall 3D performance doesn’t matter to me but a non-high-end raiding experience is a pre-requisite.
- Microsoft productivity tools (Word, Excel, Project, OneNote, PowerPoint) must be available to me quickly and stably – I don’t wish to use any alternatives because frankly they all suck (commercial or otherwise) and I am fully-licensed in the Windows world
- Ability to run virtual machines well on a selection of platforms – preferably with hardware pass-through for USB and PCIe and these should start and run at boot as a service rather than requiring me to remember to start them
- Video editing for Guy, Robot. I currently use Premiere Pro with Windows as my main operating system, but I’m not wedded to it and would happily switch here. I already use Audacity as my main audio component rather than Adobe Audition (despite an Adobe CC license) and have been underwhelmed with a lot of PP’s functionality and performance
- Access to software development environments that allow me to work on my current projects – often requiring access to hardware plugged in to the machine and definitely a way for this to work across multiple monitors (I don’t just want single monitor remote desktop here)
I’ve spent the last week trying to decide if I want to switch from Windows 10. The honest truth is there is absolutely zero justification for moving from Windows as my main platform. As someone who has worked on every major platform and has seen Windows change more than just a little since the early 1990s I can say without a shadow of a doubt that Windows 10 is technically an awesome operating system. You may disagree with the Microsoft-endorsed Spyware and other policies but from a technical stack perspective I really like it. However, I also miss tinkering on a regular basis so if I accept that “I am a geek and I like to play” as being a valid reason then Windows can be retired. Additionally out of all my systems that run on my main PC it is only my Windows 10 install itself that wants to reboot several times a week. I’ve hacked around to prevent Windows 10 from getting the carte-blanche reboot rights it has by default but it is still annoying when the my system takes so long to get through the BIOS and boot. It would be nice for my main OS to not have these issues.
I went through a bunch of Linux distributions but kept getting an urge to try something a little different. I run BSD in one form or another on my network in a few places – my routers are BSD-powered, my NAS is BSD-powered and for many years a lot of my network devices were. I was over the moon to read that NetBSD finally does actually run on a toaster having made jokes about it for many years.
So I hatched a plan – could FreeBSD become my main operating system? I realised I would still need Linux for some applications and Windows definitely for Visual Studio and Microsoft productivity tools. That should be easy enough – there are a couple of solutions here – bhyve, Xen or VirtualBox. For Linux in particular I loved the idea of using it in headless mode and sharing my FreeBSD X windows session between Linux and FreeBSD with an NFS-mounted home directory shared between the two. This felt like such an elegant and beautiful solution that I really wanted to implement it immediately. For World of Warcraft it seemed that WINE running natively within FreeBSD may be the best option although the frame rate is never going to be great solely in WINE.
Ultimately for my virtual machines I would get to the point that I needed to access hardware. VirtualBox is out of the window here as it’s just not an enterprise-grade piece of software and doesn’t have the required functionality. This is where I started getting really disappointed because bhyve doesn’t yet support hardware pass-thru. Once I realised Xen was now supported in FreeBSD I felt it may be a choice but sadly no hardware pass-thru there either. Furthermore neither of them support a remotely viable virtual 3D graphics mode in guest operating systems. This means a couple of things:
- I could never do software development requiring direct access to hardware other than within FreeBSD
- If I ever wanted to do graphics pass-thru for playing WoW I was going to be without luck
I’d love to be proved wrong here, but I just cannot make this solution work as long as I want the chance to pass-thru hardware or potentially play WoW using native graphics rates in Windows (by passing through a dedicated GPU to the VM).
After abandoning what I thought would be the most fun idea in a while I went back to looking at Linux virtualisation technologies and distributions before deciding what I would do.
And the Winner Is…
Unsurprisingly the winner is me switching back to Linux. I’m a little sad I couldn’t make something more exotic work but until bhyve is more stable and FreeBSD becomes better at virtualisation then it really is between a type 1 hypervisor (such as ESXi), Windows or Linux.
For years I used Slackware (from version 3.3 to 9.1) as my main desktop with Window Maker. I loved the fact that the operating system came with so little installed out of the box and my very first experience of Linux was selecting each and every component I wanted. There were no package dependencies and once I’d installed the operating system everything I wanted came from source. Despite the many hours of frustration in the early days this is where, how and why I learnt to use the operating system. This even led to me creating my own home-brew distribution of Linux back in 1999 used by just me and a few friends before I’d even heard of the Linux From Scratch project.
When I use a currently-popular distribution like Ubuntu I feel detached from the real operating system and (dare I say it) I feel like I’m in the world of Windows where everything is abstracted away unless I intentionally want to go out of my way and find it.
Arch Linux has helped me rekindle that old love. It’s now 20 years since I first went to the library to download Slackware on to 3.5” floppy disks and came home to install it but it feels to me that Arch is an excellent and natural progression of where Linux should be now. There is something still really exciting about delving in to the innards of your operating system and selecting dependencies that you desire rather than those that are mandated.
What about a desktop environment? As much as I’d love to say it’s going to be Window Maker again some 11 years after I last used it daily – sadly it doesn’t offer the productivity gains that I want. I’m currently somewhere between Gnome 3, XFCE and Enlightenment. I’ve never been much of a fan of KDE or QT in general and having had a poke around in the three of the above I can see pros and cons with each. Despite Gnome 3 looking pretty I suspect I’m going to start finding myself up against some productivity walls but I’m going to be open to all three to start with and happy to consider other alternatives. Enlightenment also has the advantage that I could switch to Wayland rather than X which I like the idea of.
Arch Linux and most likely Enlightment on Wayland – but what about the other important questions – Windows and virtualisation?
I’m going to give World of Warcraft a try in Wine – but this won’t give me a much better performance than FreeBSD would. Whilst WoW is a “Platinum” rated Wine app I’m not going to get the most out of my graphics card. The great thing about Linux compared to FreeBSD are the virtualisation options. Initially I’m going to go with VMware Workstation in Linux using a virtual 3D graphics card available to Windows. I am hoping the performance will be better than Wine and “good enough” to use. VMware will certainly meet all my other virtualisation requirements. Failing that the fun starts.
My fall-back option is to go with Xen. I considered KVM but ruled it out as the pass-thru and non-Linux guest support isn’t as strong as with Xen. Something also appeals to be about the slightly strange dom0 model on top of a type 1 hypervisor that makes me want to play with it. If I go this route it will be followed with me getting a second graphics card just for my Arch Linux host and passing through my GTX 960 to Windows so that I get truly native framerates in WoW. This definitely won’t be day one though.
This is happening so you’ll see more over the next few weeks – I’m not sure when I’ll get time to start but probably over the Easter break. I’ll be going with:
- Arch Linux
- Enlightenment on Wayland
- VMware Workstation initially
- Xen at a future point with secondary graphics card via pass-thru
I’ll do a series of blogs about the steps I’m going through as my install won’t be a bog-standard Arch (I’ll be using ZFS for starters as my filesystem and not going with X) – so stay tuned in the coming weeks and months for updates on my Linux build and a special few videos around gaming performance in WoW.