For more than twenty years I’ve always had some flavor of Linux running in my home, whether it was the OS powering my servers, my low-powered laptops, or even as my primary work computer. Though for the past few years I have been running a stripped-down version of Windows 10 (called “LTSC”, with much of the default bloat removed) for my primary desktop, Microsoft’s behavior toward users—particularly in regards to data-gathering and forced inclusion of their AI assistant into the desktop world—I think it’s time for me to go back to Linux as my primary operating system.

This blog post serves as a jumping off point as I work to replace Windows, and will hopefully provide some small guidance for others considering making a switch as well. The operating system defines many of the ways in which we interact with our computing devices, and so making a switch takes initial planning, the setting of expectations, and patience after the fact.

Several years ago I came across an essay called “Linux is not Windows” and while I would disagree with some of the finer points the author raises—the computing world has changed a lot since 2006 when it was written, after all—the overall tenor still rings true, particularly its first point. I encourage anyone looking at Linux as an operating system to read it, but even if you only read that first section I think you’ll be well-prepared to follow along the rest of this post.

I’ll start off with a brief examination of what Linux is, how it differs from Windows, and why I think now is a good time to make the switch, before diving into the deeper topics of how I’ve planned and prepped to make the migration as smooth as possible. Later posts will examine the process mid- and post-switch, as I’m hoping to throw some hours at this project over the coming weekend. With any luck, all my preparation will pay off!

So what is Linux?

Most people are aware of the two biggest players in the desktop and laptop operating system market: Microsoft and Apple. Microsoft’s Windows platform has dominated the landscape for thirty years, and provides a framework with a lot of options for users—there’s a high degree of flexibility in how the systems are configured and used. Apple’s MacOS ecosystem is much more restrictive—particularly when it comes to the hardware it will run on and generally coming with a much heftier price tag—but excels in specific areas that Microsoft’s more a la carte approach falls short of.

In my opinion, Microsoft has developed an ecosystem that says “here is a computer, use it however you like” while Apple has created one that says “if you don’t want to worry about complexity, we’ll tell you exactly how things should work,” and there’s a lot to be said about the strengths and weaknesses of each approach, and how generally applicable they are.

Barely cracking 5% of the desktop market share however, is a third option: Linux. Unlike Windows—which is only created, produced, and distributed by Microsoft—and MacOS—the same but through Apple—Linux at its core is a framework, a set of free tools, utilities, and standards that other companies can build their own ecosystems atop of. Linux comes in many different “flavors” or “distributions,” representing common bundles or collections of software that different organizations and communities have come together to build. While on the surface Ubuntu may look and act different from Slackware or CentOS, they are all Linux at their core, and aside from some small peculiarities unique to one distribution or another, they all largely operate the same way.

Roughly seven years ago I wrote about my own Linux journey, and how I found Slackware to be my distribution of choice, and so while I won’t rehash everything, the reason I have consistently chosen Slackware is that it is the most “pure Linux” of the major flavors. There’s very little hand-holding, almost no wizards or automatic installers, and it has been said that learning to use Slackware translates to knowledge of how Linux works, rather than a specific distribution.

With Microsoft Windows being the industry standard, and Linux a niche footnote in the ongoing operating system wars, why then would I want to subject myself to using a system that doesn’t work automatically out of the box? At its core, my reasoning is all about control.

The largest reason I have been using the LTSC version of Windows 10—which in and of itself isn’t available for most users—is because it removes much of the telemetry and bloat that a standard Windows installation has. There’s no Microsoft Store, there’s no Cortana AI assistant, there’s (less) data going back to Microsoft about my usage habits. I don’t have to fight with X-Box game overlays or having a Microsoft account to log in—the system and how it works is under as much of my control as I can make it.

As Windows 10 begins to sunset, with an end of life date in October 2025, Microsoft has been increasingly aggressive with its pushing of its next version, Windows 11. There are innumerable articles about the problems and privacy concerns with their latest OS—just look up “Windows Recall” for plenty of examples—but my largest gripe with the operating system is the inclusion of required “features” which only help Microsoft, and not the user. Greater integration into their online Microsoft Azure and Office 365 ecosystem, bonding of local computer accounts with online Microsoft accounts, forced/pushed advertisements and frequent forcing of Edge and Bing to be the internet browser and search engine of choice, and more all point to a company flexing its ability to squeeze data—and thus money—from users who just want things to work.

Moving to Linux affords me a lot of advantages over staying with Windows, and only a few downsides. Almost all of the software I use is either web-based or otherwise available for non-Microsoft operating systems—including LibreOffice as my preferred office suite, Firefox as my web browser, and GIMP for image editing—and I already find command-line scripts to be much better and more efficient ways to accomplish common tasks, an area where Linux shines. I even have a small Slackware machine on my home network specifically to run scripts which help me run my table-top role-playing games (see this article about audio and this one about graphics for more details).

Linux gives me all the usability of a modern operating system—both for my use of the command line and in a graphical context with KDE’s Plasma UI—without being tied to any for-profit organization or vendor. If I decided I didn’t like the direction KDE was going with their graphics, I could switch to GNOME, Fluxbox, or any number of other alternatives, all without formatting or reinstalling my system. Similarly, if I felt that Slackware wasn’t meeting my needs, I could reinstall almost any other Linux distribution, and all of my files and settings would remain exactly where I left them. That freedom, plus a level of control over the operating system, its background processes, and its core functionality that neither Microsoft nor Apple has ever given its users, means I’m in the driver’s seat of how I want the system to operate.

Now, that freedom does come with some responsibilities, as the “Linux is not Windows” article explores. Not everything is going to be set up exactly how I want it, or how I’m used to having it, right out of the box. I like the example given in #3b, where using Linux is like getting a LEGO set. You’re able to build almost any kind of car you want, but you have to take the initiative to read (and sometimes find) the instructions, and then follow them yourself. Ultimately though, that’s part of the job of working with the operating system at that deep of a level. If you wanted an operating system that you neither had access to really configure and clear guard-rails about what you were able to do with it, get a Mac instead.

An area where Linux has always lagged behind Windows is with gaming. AMD (née ATI) and nVIDIA are the two largest/primary manufacturers of gaming video cards, and they have put the majority of their software/driver development money toward where the largest market share is—in this case, Windows. Many people who used Linux as their “daily driver” PC still had either a second computer or configured a dual-boot situation where they could run their games under Windows, without the clunky and cumbersome overhead that comes with making games work within an emulated environment.

Several years ago however, something changed the game (pun intended), and that was the development and release of Valve’s Steam Deck: a hand-held device designed to run games from the world’s largest game distribution platform. What helped spur gaming on Linux is that the Steam Deck runs Linux, meaning Valve worked very closely with the major video card manufacturers in order to either natively support the free operating system or to streamline the process of emulation. At this point, not only do most games released in the past few years have smooth compatibility with Linux, even new and upcoming games (such as Path of Exile 2, which I’m personally excited for), are already verified as working.

Thus, with competing market forces—namely the continued enshittification of Windows—and the now expanded availability of gaming, I’m sure that now is the right time for me to make the switch back to Slackware Linux. Like with any major project, the more I can prepare and plan for, the smoother the transition will go, and so I’ve spent the past week or so cataloguing everything I will either need to do now, or do after installation, to make things hum.

Program Availability

One of the first things I did to test the viability of making this switch was to ensure that the programs I use every day and are most important to my productivity either are available or have feature-full alternatives available. In addition to the aforementioned LibreOffice and Firefox (both natively supported on Linux), other programs such as VLC (a video player) and ffmpeg (a media conversion tool) were considered. Ultimately, as I went down the list of programs I use on even an infrequent basis, there were only one or two which I couldn’t find easy or convenient conversions for. Eventually I’ll either find alternates or workarounds, or just not have the functionality those specific programs provided. In my case, it was not a big loss.

Perhaps most importantly, I verified that the method through which I log into work has a viable and functional Linux equivalent; if I would be unable (or at least, easily) to access my work network, the migration project would be dead in the water and I would abandon it straightaway.

Much of my modern socialization is done through video games, and I wanted to make sure the games I regularly play—as well as those upcoming titles I’m likely to dive into upon release—are also easily playable under Linux. Similarly to my office and productivity applications, I went down the list of games and checked for compatibility. Some were available natively, and others utilized Steams’ built-in emulation, but in the end all of the games are available.

The only program that I couldn’t find a clean replacement for was the connector which unites my StreamDeck (different than the “Steam Deck” mentioned above) with the Foundry virtual table-top software I use to run role-playing games. It’s a complicated workaround to get the device and the system talking to one another, and the developer was only able to make it work in Windows. There are some alternative, additional workarounds I’m looking at, but honestly it’s a small bit of functionality that I’ll be missing out of if I can’t get it sorted, so I will learn to live with whatever happens on that front.

New Functionality

As the “Linux is not Windows” article dives into, the way the operating systems work are simply different. There’s a fair amount of convergent evolution going on with the design of GUI elements like taskbars, notification areas, and program access, but with Linux’s focus on command-line utilization, there are many programs, applets, scripts, and more that could be a genuine performance and productivity boost available to me in Linux that just don’t exist—or at least, as cleanly—in Windows.

I did research into some of the best or most noteworthy Linux applications that have come out since I last used Linux as my primary OS, and wrote down several to install after the fact. While not strictly part of the migration process, I think an important aspect of a change like this is finding ways to use the operating system to its full potential, and that means exploring ways it can be used that are new, novel, or unique. After all, what’s the point of a migration like this if I’m going to use the new system exactly like the old?

New command-line applications I’ll be utilizing include: htop, mtr, tldr, duf, aria2, fdupes, and dog

Backing it Up

I am a big fan of keeping backups, and on more occasions than I can count, having a data available long after I thought its usefulness had lapsed has saved me an enormous amount of headache. Every time I go through and format my computer, I take a backup of my working directories (in Windows this would be c:\Users\[Username]) for storage on my server. While this will capture the files, it’s often still a sticky process to copy program preferences and the like over. This is where built-in account syncing services are often a big time-saver. Sure, I could manually copy Firefox profile data from my backup to my new computer, but it’s both easier and less error-prone to use the Firefox Sync feature. The same goes for my password manager, which I will force-sync before pulling the plug.

Since I do a fair amount of graphics creation/editing for the online RPGs I run, I also want to make sure to backup my Fonts folder (on Windows it’s c:\Windows\fonts) so I can reinstall them in Linux and not lose any functionality there. This is one of those areas that is easy to overlook and only realize it’s missing when it’s too late to recover; proper project planning saves time and frustration!

Since I want to avoid digital clutter as much as possible—I already have enough files and directories I ought to go back and sort through some day—this is a great opportunity to look at my Downloads, Documents, and Pictures folders to see if things in there are actually worth keeping, if I’m actually going to use or need those files again some day. Again, a little cleanup, housekeeping, and planning today can save a lot of work in the future. I’m all about effort paying off dividends in this way.

Device Details

Maybe it’s the geek in me, but I like to have a consistent theme when it comes to my devices. Over the years my network and desktops have been named after elements of Legends of the Five Rings, the solar system, EVE Online, and—most recently—Shadowrun. I think this time around I’ll set aside the neo-noir chrome and flash of cyberpunk dystopias and return to the deep recesses of space, where images from Hubble, the JWST, and maybe a hint of space video games come into play. Accordingly, I’ve decided on what to call the new desktop (its hostname), what my username will be, and what my command-line prompt will look like. I’ll browse through the KDE Plasma skins for something that looks respectfully futuristic, and I’ll upload a collection of space-themed wallpapers I’ve already put aside for the purpose.

For those who want their bash command prompts to clearly denote which user they are, on what system, and in what directory, here’s a small line I always add to my .bashrc files in order to customize the prompt for my needs. It makes the user and hostname bright green, the current working directory a dull blue, prompt separators white, and the prompt marker (a dollar sign for regular users) green. I use a similar line for root, swapping out green for an impossible-to-miss red.

export PS1="\[\033[01;32m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;32m\]\$ \[\033[00m\]"

I mentioned earlier that gaming for Linux has come a long way, thanks to the work of ad-hoc volunteer programmers and no small financial contributions by AMD and nVIDIA, but that doesn’t mean that everything is going to work out of the box. The Linux kernel—particularly Slackware’s default -huge version—does contain drivers and systems that will make advanced graphics cards work, but they won’t be tuned or high-performing without some additional steps, namely the installation of specific drivers designed for my particular video card. Slackware-specific instructions can be found on the Slackware wiki, though most distributions have a similar step-through process to get things dialed in.

Something that is abstracted in Windows but requires more in-depth management in a Linux machine, is the concept of a Swap partition. Simply put, swap is dedicated hard drive space the system uses when it runs out of available RAM or needs to hibernate. Windows handles this automatically through a single file (generally called pagefile.sys) but Linux typically requires the creation of an entire swap partition. The whys and hows are a bit beyond the scope of this blog post, but suffice it to say that dedicating an entire partition to the swap space means the system needs to go through fewer hoops to read from and write to the space, improving performance. While the old adage of “twice your RAM” have long been supplanted by other strategies, hard drives are spacious enough that I don’t feel bad throwing a hundred gigs or so at the swap partition, just so I never have to worry about it again.

In speaking of partitions, for desktop machines I usually throw /home on its own partition, separate from the rest of the operating system. This way I can easily reinstall the base system without worrying about my personal files, and I can also rest assured that if I download too much, it won’t constrain the rest of the system. For a server I may also specify a partition strictly for /var or /var/log, but again those fall more into advanced strategies for specific use cases beyond the scope of this blog.

There are a number of other bits and bobs I made sure to document or pre-research before pulling the trigger, but talking about them can easily descend into tech-speak that will turn off most users. In the spirit of completeness however, here are a few quick elements I added to my to-do list that haven’t already been mentioned:

Enable hard drive trimming, install third-party package management, decide where to NFS mount my server to the desktop and whether to symlink those connections, planning on when to change innittab for graphical boot, researching whether I should install multilib program libraries, which default programs to remove right out the gate, researching how to pair my bluetooth headset with my new system, researching the proper way to configure hibernation

Install Media

If you go down to the Apple store, it’s likely they will only sell you a laptop with the latest version of MacOS on it. Similarly, Microsoft is pushing vendors very hard to only sell Windows 11. Which then, is the right version of Linux to install? I’ve already mentioned that I’ve chosen Slackware as my distribution of choice, but should I be all set if I just grab the latest official version of Slackware (15.0 at the time of writing) and get to work?

Because I’m asking the question, you know the answer is “no.”

One of Slackware’s defining features is a slow and methodical release cycle, following a policy of “minimize breaking changes.” This means it can even be years between official releases—14.2 was released in 2016 and 15.0 in 2022—but that doesn’t mean that Slackware users are stuck on old versions for software or even core system components.

There is a constantly-upgraded version of Slackware that isn’t designated by a version number, but rather by the tag -current. These packages, and package updates, have been vetted by the community of developers who help advance Slackware as a distribution, and ensure that they all play nicely together. Slackware, being Linux, freely allows its users to install programs that don’t come through official channels—with some small hoops to jump through that may admittedly be daunting for new users—but for people who prefer a healthy mix of stability and reservation rather than bleeding-edge, the -current branch does a great job of incremental improvement.

Thus, I downloaded a copy of the up-to-date -current repository, created a bootable ISO, and burned it to a USB stick.

When it comes to keeping a Linux system upgraded, there’s a lot more than just clicking “check for updates” like users may be used to with Windows, or having Apple push updates to Macs on whatever schedule they choose, but even this process fits with the philosophy of Linux in general and Slackware in specific: the user owns the installation, not some other company. If someone wants to stay on a particular version of installed software, that’s their right and their obligation, much as the same applies to the rights and obligations if they want the latest and greatest, without all the polish of vetted updates.

While I did weigh the decision of installing 15.0 or -current fairly heavily, I have long seen the work, the ethics, and the responsiveness of the volunteers who help develop packages for Slackware, and am confident in my own ability to manage updates and upgrades on a schedule that works for me, and so the more recent (and ongoing) branch made the most sense for me. If I were building a server or other high-availability box, I would have stuck with the stable release rather than something that increments every week.

So what’s next?

My new harddrive arrived—I decided to keep my existing Windows installation handy in case the install went sideways long enough to eat into my work week—and my hope is to sit down and start the install process tonight. I’ll see how far I can get, keeping copious notes about snags I run into and options I choose for a future blog post, but I have high hopes that I can have a workable system by morning, with plenty of future tweaks to keep me busy over the weekend.

With any luck my next post will be about my first reactions to the new KDE Plasma GUI—I haven’t used KDE in more than 10 years so a lot has changed—and dialing in the system how I like. If I can connect to my employer’s network and log in, that’ll be enough for me to judge the experiment a success; everything beyond that, including the setup of games, communication apps, and tuning the kernel, is well within my ability to handle.


Header image by StockSnap from Pixabay, a fantastic source of royalty-free stock images