Switching to Linux Step By Step

There are a few things that I am an outspoken evangelist about. Of those, the one that I feel is actually a good idea for a lot of folks is switching to Linux full-time, or mostly full time. Many, however, have expressed their nervousness at making the switch. Would they be able to find applications that do what they need? Will they understand the interface? What distribution should they pick? Will any of their existing hardware work?

I’ve answered a few of these in the past in my Embracing OSS series and my more recent Ditching Windows Primer. The thing I haven’t really jumped into is the actual process of switching. What to look out for, how to back things up, if dual-booting is feasible or recommended, etc. This post is everything I knew or wished I knew before taking the plunge myself. We’ll start with the big stuff and drill down into specifics. I’m trying to make this as practical as possible without feeling like a tutorial or specific to one distribution.

Mental Preparation

I know this might sound hokey, but as you consider moving to Linux, you should ask yourself a few questions first. These will not only help you make decisions as you transition, but also confirm that you are actually interested in making the switch. If you come away from these feeling like you should stick with Windows or MacOS, that’s totally fine! Linux is not a one-size-fits-all OS and there are specific considerations to keep in mind.

Are you interested in learning new things?

It is okay to not have the time or energy to learn new things, especially with a computer. If you just want to sit down and do the things you want to do and not have a learning period, then that’s okay and you can continue using what you currently are. My approach is a “learn-as-you-go” one. As you do new things with your computer on the new OS, you will learn valuable skills that can be used elsewhere. If you take these instances as learning opportunities, you won’t need to sit down and “figure out” the OS in long sessions. You just learn new things as you need them. If this sounds interesting, then carry on!

Are you tied to very specific programs or hardware?

This isn’t an automatic pass/fail, but it is worth asking if you utilize specific software or hardware that may not work with Linux. If you use fancy control surfaces for image, video, or audio editing shortcuts and hotkeys, there may not be a driver or software available. If you absolutely must use full Photoshop or other Adobe suite programs, you should probably hold off. If you don’t mind missing out on some games that use Windows-specific anti-cheat and are fine with using alternative creative programs, then keep going!

How much will you use the PC? How opposed are you to maintenance tasks?

This is more of an informative decision. In my previously mentioned Ditching Windows primer, I go over the various distribution types and what kind of person each might be good for. This boils down to how much you enjoy tinkering, how much you are okay with using text configuration files and the terminal, and how interested you are in how the system works, rather than just if the system works. Even if your answers are “not a lot” and “I want it to be automatic,” there are definitely distros for you out there! That said, this guide is mostly aimed at the middle-of-the-road person who wants to use Linux, is okay with some tinkering, but prefers to stay out of the terminal and text configuration files when they can.

Hitting the Books

Most of the common Linux alternatives to commercial software are already available on other operating systems. You may even already be using some of it. LibreOffice, Gimp, Krita, REAPER, VLC, OBS, and Sunshine are all tools that are cross-platform. Start using some of these programs before you switch to make that transition earlier. If you have other specific needs, like video or audio editing software, look into cross platform alternatives to use as a bridge between your operating systems as you move over. This stage in the journey is specifically about making sure you have some familiarity with programs that you will probably interface with often so that the burden of learning new things all at once is lessened.

This is a good time to look into the general philosophy of Linux and familiarize yourself with some of the concepts that may be foreign to you if you’ve never used it extensively before. Here’s a few of them:

  • Least Privilege: Users are, by default, not able to access or make changes to important system functionality. They must authenticate again when they want to elevate to Administrator level to make changes.
  • Everything is a File: The base unit of the Linux system is the File. This includes things you’d expect to be files, like documents or pictures, but it also includes everything else like hardware devices, the RAM, drivers, and programs.
  • The output of a program is expected to be usable as input for another program: This matters more in the Terminal, but is still useful to know. If you run a program or command and it has an output, that output should be orderly and parsable so that another program could use it. For example, if you use ps to look at running processes on your system, the output should be able to be sent to grep to be searched. A composite command made of multiple sub-commands.

Additionally, this is a good time to pick your starter distribution. I say “starter” mostly because you should expect to want to change at some point after you make the switch. There’s a few good chances to switch as you move forward. Don’t expect to get it perfectly right on the first try. Some things you don’t think are important now may end up feeling crucial later. It’s important to be okay with trying a few times to get it right. For more on distributions, check out the Ditching Windows primer mentioned above.

Know Where Your Data Is.

A smooth transition is an organized transition. Use this as a chance to clean up your digital room. It sounds like a chore, but it is incredibly important. Windows and Windows programs love to store things all over the damn place. Now is also a good point to make a backup of your PC if you haven’t already. There are two types of people in the world. People who back up their data regularly, and people who haven’t lost everything yet. Here’s some places to look for data

  • C:/Users/<USERNAME>/AppData/ - The AppData directory. A hidden folder inside your user folder. Applications sometimes store configuration files or other data here, rather than make it easily accessible. Some applications fully install themselves here, since installing in the Program Files directory requires administrator privileges. Notably a lot of games have started storing save data here.

  • C:/Users/<USERNAME>/ - Your User folder. Everyone with an account on your PC has one. Inside are the usual Documents, Downloads, Desktop, Photos, Music, Videos, etc folders where most users will store their stuff. I recommend looking through this one separately from AppData because if you just back up the entire User folder it will take forever (a bajillion tiny files takes a long time to copy, more time than fewer larger files)

  • C:/Program Files/ and C:/Program Files(x86) - Where Windows likes to install applications to be used by multiple people. Some programs like to store configurations in their own folders, so it may be worth looking at to pull those out.

  • Hidden files and folders - Some programs will utilize hidden files or folders to store stuff. You can turn on hidden item visibility in the File Explorer options. If you use SSH for Git, for example, your keys are probably in your User folder in a directory called .ssh which will be hidden. One last tip for the Gamers: Many games store their saves in your User folder or in AppData, but others have unusual hiding places. Not every game uses Steam’s cloud save system, so using a tool like GameSave Manager to back them up is useful. Restoring them is going to be a little complicated, but certainly possible. More on that later, though.

The Half-Step Four Ways

Okay, so you’ve done your research. You have picked a distribution to try. You’ve even organized and backed up your files. Time to install, right? While this is generally my recommended method, since it removes your old OS as a crutch to go back to and will force you to learn your new environment more quickly, there are a couple ways to make the adoption more gradual, and let you try to find issues before you’re stuck on Linux fixing them. There’s four ways of doing this. I’ll introduce them in order of commitment.

We’re Doing it Live

Nearly all Linux distributions can be tested running live from a USB drive before doing a full install. By default this is a sandbox, a demo that you cannot make modifications to. You’ll need to use the provided browser and packaged software, but it will let you test the distribution with your hardware. Make sure Bluetooth and WiFi work. It will also let you build a to-do list of the changes you want to make to the system after install, what software you need to install, that sort of thing.

From the Machine

Another option is to simply try the Linux experience inside a virtual machine, run via any number of virtualization solutions. Keep in mind, though, that performance is likely going to be significantly worse on the Linux VM than if it was running on your hardware directly. You can’t easily split your GPU between the VM and the host operating system, so the VM is going to be rendering everything in software.

Persistent, isn’t it?

Some distributions allow for a Persistence file to be added tot their Live USB environment. Setting this up is more difficult, varies from distribution to distribution and may not even be possible, depending on what you want to try. My pick for this one is Ventoy. It’s a piece of software you install to your external drive that lets you boot disc images by simply dragging and dropping them onto the drive, then selecting Ventoy as the boot device upon startup. You can boot Windows installer images, but also Linux live images and Virtual Hard Disk images. This means you can install whatever OS you want to a virtual machine using freely available virtualization software like VirtualBox and drop the .VHD file from that machine onto your Ventoy USB drive and run that OS as if it was installed locally. Ventoy also supports Persistence files for some Linux distributions, though they haven’t been tested very recently. These are chunks of space on the USB drive that the Linux distro live environment can use as if it were the root filesystem, so you can install updates or new programs even on the live USB environment. Ventoy is the option I choose for work when I need to boot over to a recovery image on a computer that is so borked that I can’t recover it any other way.

The Double Up

Finally, the one everyone jumps to right away: Run both operating systems on one (or more) hard drives at the same time, shutting down to switch between them. This is generally easy to set up, allows you to fully utilize your hardware without running off of a potentially slower USB drive, and allows for trying both operating systems in tandem, right next to each other. The basic setup of this is to install Windows, but give it a partition the size of half the drive, then install Linux in the other half afterwards. This is possible, but I don’t recommend it. You should probably put each OS on its own drive instead. Windows has a nasty habit of taking over the bootloader sometimes, so putting your Linux install on another drive can prevent that from happening.

Doing it by Doing it

Okay so you’ve decided you want to fully make the jump. Whether this is after testing out a distribution or simply deciding to jump in with both feet, this is where the rubber truly meets the road. Below is a checklist of everything you might need to ensure a successful transition.

  • Back up your data in a readable format - While Linux can often read NTFS drives and even write to them sometimes, I highly recommend converting your external storage to Linux-friendly formats like ext4, exfat, and btrfs. You will lose all of the data on the drive in the format change, so make sure you copy the data off the drive before changing it!

  • Make a list of all of the programs you will want to use daily. Especially if you are installing on a laptop where you may not always have internet.

  • learn where the community for your distro hangs out. Many distro communities are very supportive. Knowing where to go for advice is powerful!

  • Set up a way to document your process. What you install, why you’re installing it, what commands you run in the terminal, what guides you follow, etc. The more you can pull offline and back up yourself, the better.

  • Create a backup of a known-working OS.

  • Keep an installer USB for your distribution made even after completing the install. Even if you don’t need it to completely reinstall the OS, the live environment can be used to fix a broken system. IT’s recommended to update your USB at least once a year.

  • Once you finish the initial setup of your system, make a full backup.

  • Set up routine off-machine backups. I use Vorta for this, which is a frontend for Borg backup

Ch-Ch-Ch-Changes

Now that you’re on Linux, you need to contend with the fact that everything is changeable. If you don’t like a part of your experience, it’s likely someone else has had the same complaint and you can change it. This is a major boon of Linux, but it comes at a cost: complexity. Under Windows, this isn’t so bad because you can’t really change anything that is fundamental to the OS. In Linux, though, you can pick and choose very low level components. It is therefore important to consider the kind of philosophy that will keep your system usable as much as possible long term and make it easy for your to understand over time and perform maintenance on. My philosophy on this topic can be boiled down into a few points:

  • Do not use scripts from the internet to make changes unless you know exactly what they do. Same for running random terminal commands.

  • A useful system is an operational system. Try to maintain system stability above all else.

  • The system should always trend towards simplicity. Complexity increases the chances of something going wrong.

  • Good backups allow for experimentation. These points are not prescriptive. They are merely suggestions, from one user of technology to others. It’s very easy to accidentally go overboard with changes on a Linux system. There’s always some new shiny thing, whether it’s a desktop environment, or program, or whatever. Many of the common pieces of software have been around for a long time for a reason. They don’t chase fads, but incorporate features and technologies when they are robust and ready for integration.

I of course have not always heeded this advice. I have absolutely annihilated my system before. It’s one of the reasons I also tend to recommend not getting super attached to your first ever Linux install. You’ll probably make mistakes and that is okay. You’ll probably also find a different distro that you like better eventually anyway and want to shop around. That is also perfectly good.