I'll admit it — I've been a Microsoft user since DOS 2. I still maintain that DOS 3.3 was the greatest operating system ever made. These days I'm on Windows 10 and quite content with it. Most of the applications I rely on are Windows-only, with some available on Mac as well, but I can get everything I need for my development work through Windows without much trouble. Linux as a server platform is a different kettle of fish entirely — by all accounts it excels there. But this post is about the desktop experience for home or work users, and specifically my own experience so far.
At the moment I'm setting up an Nvidia Jetson TX1 development board to explore GPU programming, IoT, and robotics. I have a long way to go on all of these fronts, but I'm genuinely looking forward to the journey.
The catch is that the development environment for the Jetson TX1 — including its flashing utility — is Linux-based (Ubuntu, specifically), which has pushed me in that direction whether I like it or not.
My first instinct was to run Ubuntu inside Hyper-V, mainly so I could keep access to all my Windows applications at the same time. As it turns out, Hyper-V doesn't support USB pass-through, which made it completely useless for this purpose. A bit of Googling revealed that Oracle's VirtualBox does support USB pass-through — great.
The problem was that VirtualBox and Hyper-V won't coexist, so I had to uninstall Hyper-V first. I don't know a great deal about the underlying architecture of virtual machines, but I'd imagine a system can only support one VM engine at a time. Fair enough.
With VirtualBox installed and Ubuntu set up again (along with the Nvidia JetPack installation), I attempted to run the flashing software. It detected the Jetson via the passed-through USB connection — promising — but kept failing at various points during the flashing process. I turned to the Nvidia developers forum for help, only to receive this response: "Nvidia does not support virtual machines for JetPack and device flashing."
That left me with no choice but to set up a dual-boot configuration on my desktop.
The Dual-Boot Setup — Easier Said Than Done
In principle, dual-booting Windows and Ubuntu sounds straightforward. In practice, it requires a little more care than the guides online tend to suggest. The first decision is how to partition your drive. Windows, naturally, has already claimed the entire disk for itself and isn't particularly enthusiastic about sharing. I used the Disk Management tool in Windows to shrink the existing partition and free up space for Ubuntu — which worked fine, though it felt faintly like negotiating with a difficult landlord.
The Ubuntu installer itself is actually quite polished and handles the partition setup reasonably well if you point it in the right direction. Where things get interesting is with the bootloader. GRUB — the boot menu that lets you choose between Windows and Ubuntu at startup — installed itself without drama, and on reboot I was presented with a tidy menu offering both options. So far so good.
What nobody tells you, however, is that Windows Update has a habit of occasionally trampling over the boot configuration, leaving you staring at an error message instead of a boot menu. It happened to me once already. Fixing it isn't impossible — you boot from a Ubuntu live USB, run a couple of terminal commands to reinstall GRUB, and you're back in business — but it's the sort of thing that would send a less technical user into a panic. It certainly gave me pause.
The other minor frustration with dual-booting is the constant context switching. Need to quickly check something in Windows? Reboot. Want to get back to the Jetson work? Reboot again. It sounds trivial, but when you're in the middle of something it breaks your flow in a way that a virtual machine — had it been viable — would not. You come to appreciate just how seamlessly Windows lets you move between tasks.
The Linux Struggle — Drivers and Software
Once Ubuntu was installed and the JetPack software for the Jetson TX1 was working perfectly, I allowed myself a brief moment of satisfaction. Then I started trying to actually use Linux as a desktop operating system, and the cracks began to show.
The driver situation is, frankly, a mess — at least for my hardware. There are no proper Nvidia drivers for my graphics card, so while my monitors work, they're running without full driver support. Performance is fine for everyday use, but you're aware that things aren't quite as they should be. The irony of Nvidia being the reason I'm on Linux while simultaneously failing to support Linux properly is not lost on me.
The Sound Blaster Z is a complete non-starter. No driver exists, which means no audio through that card at all. I've tried a few suggested workarounds from forums — none of them worked. In Windows, I plugged it in, the driver installed automatically, and I never thought about it again. That's the standard people are used to, and Linux simply doesn't meet it for anything outside a fairly narrow band of common hardware.
Then there's the software installation experience. On Windows, the process is almost insultingly simple: find the thing you want, download it, double-click, next-next-finish. On Linux, you quickly discover there are several completely different ways to install software, and working out which one applies to what you need is its own learning curve. APT-GET is the standard package manager for Ubuntu and works well when the software you want is in the repositories — which is often, but not always. DPKG handles individual package files. Then there's Snap, which Ubuntu has been pushing more aggressively of late. And if the software you need isn't packaged at all, you may find yourself compiling from source, which opens up an entirely different rabbit hole.
The dependency problem deserves special mention. On more than one occasion I've attempted to install something, only to be told it requires another package, which requires another, which conflicts with something already installed. Resolving these chains of dependencies manually is genuinely tedious, and it's the kind of friction that Windows eliminated years ago. To be fair, when APT-GET works cleanly it's actually rather elegant — but when it doesn't, it can consume an afternoon.
Windows vs Linux — An Honest Comparison
I want to be fair here, because I recognise that I'm coming at this as someone who has spent decades in the Windows world. There are things Linux does genuinely well.
The terminal is excellent. PowerShell has improved considerably over the years, but the Linux command line still feels more powerful and consistent for the kind of development work I'm doing. Once you're comfortable in it, you start to understand why so many developers prefer it.
Stability is another area where Linux earns respect. In the time I've been running Ubuntu, I haven't had a single crash. Windows, for all its polish, still manages the occasional inexplicable freeze or blue screen, and the forced reboots for updates remain one of life's great annoyances. Ubuntu updates on my schedule, quietly, without drama.
And the price — Ubuntu is free. The entire ecosystem of software I've installed to replace my Windows tools has cost me nothing. That counts for something, even if getting it all working has cost me time.
But here's the honest truth: Windows simply works better as a general-purpose desktop operating system for most people. The hardware support is vastly superior. The software ecosystem is larger and more polished. The user experience — from installation through to daily use — is smoother, more consistent, and more forgiving of non-standard setups. Microsoft has had decades to sand down the rough edges, and it shows.
Linux on the desktop has improved enormously over the years, and I don't want to dismiss that progress. But there remains a gap between what Linux enthusiasts describe and what a normal user actually encounters when they sit down in front of it. The enthusiasm is understandable — the system has real strengths — but the rough edges are still there, and they catch you regularly.
There is a certain irony in the fact that it's Nvidia pushing me towards Linux, yet they don't provide a Linux driver for their own graphics card.
My next step is to install Ubuntu on my laptop and experience the whole thing fresh on that machine, including trying out free alternatives to the office software I'm used to. A clean slate, without the complication of dual-booting or unfamiliar hardware, might give Linux a fairer chance to impress me.
I'm keeping an open mind. I'll learn the system, grow accustomed to its ways, and give it every reasonable opportunity. But until installation is more straightforward, and until driver support catches up with the real world of consumer hardware, Linux will remain the preserve of enthusiasts and professionals with specific use cases — not the general public.
I genuinely hope that before long I'll be writing a follow-up post titled "I'm in Love with Linux."


0 Comments