Should you switch to a Linux Desktop?

No. If you’re reading this looking for me to convince you then the answer is likely no, you probably shouldn’t switch to a Linux Desktop.

A little background first

I’ve been using a Linux desktop (laptop) as my daily driver since late 2015. Now I know that’s not quite a long as people who started using Slackware way back in 1993 but I consider 6 years of using Linux as a primary OS to be a fairly decent amount of experience to pull from. I actually really like Linux, but there’s a reason my tower PC is running Windows 10.

When I first started learning Linux I made the same mistake a lot of people in Cyber Security do. I downloaded Kali Linux as my first OS. For those of you that aren’t familiar with Kali Linux it’s a fantastic distribution of Linux loaded up with a lot of ethical hacking tools on it. What it is not however, is a daily drive distribution. Kali, back in 2015, still had a lot of permission issues. The rest of the world of Linux had moved away from making the default account root, but not Kali. Other distros supported dual booting and installing along a Windows’s partition, but not Kali. Suffice to say that I made about every blunder you could imagine trying to install Kali on my Wife’s old laptop but eventually I got it working and my adventures in Linux began.

Linux comes in flavors

Unlike with Windows or MacOS, Linux is free and open source. One of the licenses that it operates with, the GNU public licenses, allows users to; take, modify, and redistribute Linux however they want. This has lead to a massive forked tree of different flavors of Linux, called distribution or distros for short. These distros could be generalized distros like Ubuntu, or high specialized distros like Kali, or they could be niche distros like Hanna Montana Linux. That’s the freedom and benefit of Linux’s commitment to being open source. Want your Linux distro to be nyan cat focused? Make it that way.

The image below is fairly dated but it’s a good showcase of just how rapidly Linux distros expand with forks of GNU/Linux being developed and then forked themselves to create a different flavor. One of the more popular fork paths goes GNU/Linux (1991) -> Debian (1993) -> Ubuntu (2004) -> Linux Mint (2006) -> Cinnamon (2011). This path came about as people wanted a Linux flavored operating system that looked and felt more like Windows so they took already existing Linux distros and changed then to their liking.

Now this image is outdated, since 2007 there has probably been hundreds of additional distros created that are forks of forks. Even the North Koreans use a fork of Ubuntu Linux as the official operating system of their country. They call it Red Star Linux and you can download it, but you shouldn’t.

So is Linux right for you?

Every year the Linux enthusiast I work with talk about how “this is the year of the Linux desktop” but that’s not really true. For the vast vast population of people, you included dear reader, Linux is probably not the right OS. But why?

It’s missing a lot of tools you probably use daily

This is going to be a hard stop for most people. A lot of the tools you use on a daily basis are limited to Windows Only, and it’s not just niche programs. Major things like Microsoft Office or Adobe Suite are just not available on Linux. Yes there are technically alternative, almost anything can open a PDF nowadays and you LibreOffice comes preinstalled to handle documents, excel, powerpoint, etc, but they’re not quite the same.

A prime example of this is in my work we use “smart” PDFs. They’re PDFs that have customized actions based on the text in the cells. These PDFs only work in Adobe Reader, you can’t even open then in other PDF readers. If you’re the type to use Photoshop or Lightroom then bad news, they don’t exist on Linux. You can use the free alternative, Gimp, but you’re now relearning an entirely new tool.

The major programs are fortunate enough to have alternatives readily available and easy to find with Google, but your Niche programs will suffer. When I was in college analyzing police crime datasets, including datasets of the 9/11 attacks, we used a program called Ucinet. This program is Windows only. My Wife had to use IBM SPSS for her statistics course, which is a paid program that does not officially support Linux. There’s a five page installation guide for how to download and compile the source code to get it running, but you should not need to be compiling anything by source.

But you can virtualize them?

Now I know some of my more tech savvy readers point out that you can install VirtualBox and create a Windows VM specifically for these niche programs, and you’re correct but missing the point. Yes it’s true that you can generally install these programs on a virtual machine to get them to run it’s not always the best idea for a few reasons. Both the programs I mentioned above are used for analyzing large datasets of information. VMs are splitting their available RAM with the Host OS so they’re never going to be able to use the full RAM available to the host. Secondly the VM itself and everything on it is running as a process on the host, along with the host’s processes. CPUs are designed to handle multiple processes at one time but if it becomes too much data trying to pass through then you get IO delay as the CPU places some things on the backburner to process others. Meaning that virtualizing a Windows instance specifically to run a niche program is not going to be an ideal solution as you’ll experience system lag.

Furthermore most basic computer, especially cheap ones, barely have enough RAM to run Windows effectively. Windows 10, technically, only needs 4GB of RAM to run but if you’ve ever tried you’ll know that you really need closer to 8GB. Most computers you can but in a store like Beastbuy or Target will only have 8GBs of RAM, and since VMs have to share their RAM with the Host you now have a Windows VM with less RAM then recommended trying to run a RAM hungry program like SPSS.

Finally, virtualizing Windows to run specific programs might be against the ToS for the program, preventing them from working. When my wife took some online college classes they had her download this locked down web browser specifically for the test. This web browser was a major pain the @$$ because it required me to disable things like RDP, Hyper-V, and other programs I use on a completely separate account from my wife. When she tried to open the web browser to take the test on her computer profile it would refuse to open unless I disabled Hyper-V services on my profile. I took to attempting to virtualize this program and found out that it straight refused to open if it thought it was in a VM. I eventually had to trick it by modifying the registry keys used for hardware identification so it didn’t see virtualized iSCSI hardware, but that was a dumb work around I had to do just so my wife could take her college finals. (In reality it was because I was annoyed with the program, but that’s besides the point).

This isn’t specific to just that web browser either. Some programs outright refuse to run in a VM and others, particularly in gaming, have clauses in their ToS that VMs are against the rule.

Okay, but there’s Wine. Wine isn’t emulation.

Yes, you’re correct. Wine is technically not windows emulation and therefore should not have the problems listed above. That’s true, but Wine has it’s own problems. The last version of Adobe Acrobat (PDF Reader) to work near natively on Wine was v5.0 (released in 2001). Some Linux distros have Adobe Acrobat v15 marked as silver (meaning some bugs but overall workable) and others have it marked as “garbage” (meaning it doesn’t even start).

Microsoft Office is another example of programs not working well with Wine. The last compatible version of Office that worked well in Wine was 2016 (before Microsoft moved to O365 for everyone). With Office getting a 2022 release similar to Office 2016 we might see more support in Wine again but I don’t like to hedge my bets like that.

Software compatibility is one of the major things that you should consider when deciding if you should switch to Linux or not. Do the programs you use have direct Linux counterparts? Are there FOSS Linux alternatives? If there are then you should try them to make sure they work the you want before hand. If there’s not then are you able, technically and knowhow wise, to set them up in a VM or in Wine?

Linux is more secure though right?

Kind of, but not really. One of the biggest arguments people make when advocating for Linux is it’s “inherent” security versus Windows. I personally think this is a fallacy based on misunderstanding. Linux has some really good security practices such as AppArmor and SELinux which segment applications away from each other and away from the Kernel itself. This means that an exploitation of a specific program will have a more difficult time moving to other programs or to the Kernel itself.

On the other side though Linux makes some strange decisions. Why is there no Firewall enabled by default? Perhaps though the real reason Linux appears more secure is because there’s simply less Linux malware around. Let’s get one thing clear; Linux is not infallible. Linux malware does exist, and when it happens its usually really bad because of the level of control that users are allowed over the system.

But the real concern is simply knowledge. By this point most people know the general rules for keeping Windows safe; keep AntiVirus on, don’t go to shady websites, don’t install random programs, don’t click on suspicious links. Microsoft has taken great strides in trying to help keep Windows secure; antivirus is built in (and effective), smart screen helps prevents suspicious downloads and bad websites, and the firewall is enabled by default. Linux doesn’t have any of these. There’s not built in AV, no firewall enabled by default, nothing to prevent users from going to bad websites.

Phishing is a huge concern with Linux, arguably more of a concern then on Windows. I’ll cover this more in a different section but it’s pretty common to have to troubleshoot issues in Linux. Most of the time I’m troubleshooting a problem I’ll find some script or command on StackOverflow that is supposed to fix the issue. Most of the time these are legitimate and they do fix the problem but I’ve definitely seen times where a script or a command would break a system. Let’s take a look at an example.

:(){ :|:& };:

Does that look like anything to you? No? Well that’s a fork bomb which will continuously spawn more instances of the command prompt in the background until the system is out of resources and can’t run anything. Thankfully a simple reboot will fix this issue but if you’re looking for an answer to a problem you’re having and don’t know what you’re tying you could run something like this and cause yourself issues.

Let’s take another look:

curl -sSL https://install.pi-hole.net | bash

This script is the legitimate Pi-Hole install script, but its inherently unsafe. This command downloads an unknown script and then immediately tries to run it by piping it into bash. The script it downloads is hundreds of lines long. While this script is fine its a good example of how a simple one line command can completely change a system.

If you’re not intimately familiar with how Linux works then you might run one of these scripts trying to troubleshoot one of the many problems that come up.

Linux has issues with hardware compatibility

Do we remember the old days of Windows XP where every peripheral we bought came with a little install CD? Wanted to use a new keyboard? Install it, want to use a new Network Card? Install it. Want to use a new webcam? Install the drivers for it. And god help you if you lost the CD. You were searching online looking for the right drivers. Those were dark days right? Glad we don’t have to do that anymore, unless you’re on Linux. Now Linux isn’t as bad as XP was; you can plug keyboard and mice directly into Linux and they work without issues, but a lot of other devices have issues. I’ve installed new USB wireless cards that didn’t work right out of the box, I had to go to the developer’s website, download the driver source code, and then compile it myself. I’ve had laptop integrated microphones not work until I found the right firmware to install. The smart card reader for my work doesn’t have the firmware to actually read the card, preventing me from logging in to my work accounts.

Updates can break hardware compatibility as well

I remember back in the day of Ubuntu 18.10 (second half of 2018); I ran an apt update && apt full-upgrade -y to update my software and broke my wireless network card in the process. Running apt update && apt full-upgrade -y is the equivalent of hitting install updates on windows. I had to take my laptop and plug it into the router so I could search StackOverflow and look for a fix. I forget exactly what the fix was but I had to modify a system configuration file in /etc/ to re-enable wireless.

And this wasn’t an isolated incident. I once attempted to update the underlying Linux kernel and when I rebooted the system I was unable to load the OS.

Some distros of Linux are more stable then others. Debian is frequently referred to as the system for systems. Usually updates for Debian are thoroughly tested before they are rolled out to everyone. Debian is what I run on my daily driver and it’s been rock solid in the last two years.

Linux is not very user friendly

There’s a lot of things I could discuss here but I’m going to focus on two things.

  • Installing programs
  • Troubleshooting problems

Installing programs

Depending on who you talk to Linux is easier, or harder than Windows to install programs. In Windows you traditionally search for a program, download an exe, and install that exe. In Linux you use a package manager which maintains a list of all the current programs configured for your distribution. Linux has gotten better about showing applications in their app stores making it a one click to install, but not every program works like that.

Some programs you can download a .deb file from the internet and install it like Windows, sometimes you can find programs in the app store, sometimes you have to use the command line interface (CLI) to install it with apt. Those are all the easy installation methods, but they’re not all of the installation methods.

I’ve had to install a substantial number of programs by going to github and downloading source code, then compiling it. Sometimes these projects have an easy install script that you just run and it installs everything, other times I’ve had manually compile and configure things. I’ll have to add path variables to scripts, place files in in certain directories so they can run, download dependencies, and download binaries that don’t have an easy install script.

Last month Linus Tech Tips (LTT) attempted to install Steam on his PopOS Linux distro and broke everything. What happened here was a priority issue. The Steam install LTT used was built for a different Linux distribution which used a different desktop environment. Because the Steam expected different variables it uninstalled the environment variables that were already there causing the environment to not load.

This should never happen, but it did. The team behind PopOS fixed it because LTT is a popular YouTuber but this bug has existed for years. Except it’s not actually a bug, its how the system works. See packages are defined in /etc/apt/sources and /etc/apt/sources.d/. Things that are in /etc/apt/sources take priority over /sources.d/ when installing. If it’s in sources then it’s a higher priority then /sources.d/. Essentially this means that if there’s a discrepancy, like a package wanting an environment variable that’s not there, it will keep the variable in /sources/ instead of removing it like what happened.

Sound complicated? That’s because it is. Which leads into my other point.

Troubleshooting problems

Troubleshooting problems is a nightmare. I’ve already talked about issues I’ve come across working with Linux a few paragraphs ago but I want to emphasis here that there was very little actual useful error logs. I had to do a lot of Googling to find people experiencing similar issues and then trying their solutions until something worked. Who knows what other issues I created for myself by blindly following other people’s suggestions.

So is Linux right for you?

That really depends on your level of competence with technology and willingness to Google problems then try to fix things. As much as I enjoy Linux I can’t say that my last 6 years have been entirely enjoyable experiences. By comparison Windows just works. Yes it may have some quirky behaviors, such as taking forever to update, and not giving you complete control over the system but I’m not spending hours searching how to resinstall the drivers for my Wireless NIC, or rebuilding the entire system from scratch after a bad kernel update.

I will probably wind up switching to a Debian desktop in 2025 when Window 10 reaches EoL (since my desktop doesn’t officially support 11) but I’m not looking forward to the switch permanently and I’ll probably be remote desktoping into my Windows 11 VM for most things.

Linux just isn’t ready for prime time mainline user usage yet, and honestly I don’t know if they ever will be. Things like what happened to LTT should never be allowed to happen. A user trying to install a program by normal means should never be able to accidently overwrite critical system variables required for the device to boot.

Linux has come a long way since the days of Slackware, but it still has a lot to go before it’s ready for “the year of the Linux Desktop”.

WordPress Appliance - Powered by TurnKey Linux