I’ve been seeing a lot of people wanting to switch to GNU/Linux(shortly just Linux) recently, owing to various reasons including Windows 10 EOL, forced integration of AI tools, screenshot spying, bloatware, etc. and I thought I’d make a comprehensive guide based on my experience.
Please feel free to correct me when I’m mistaken.
Step 1-A:
To dual boot with Windows or not.
(Skip to Step 2 if you don’t want Windows.)
Decide how much you rely specifically on Windows based apps.
For most apps, there are open source and/or free alternatives.
-
M$ Office → LibreOffice.
-
Edge → LibreWolf, Ungoogled-chromium/Trivalent.
-
Outlook → BetterBird, and a shout-out to the new Tuta Mail client.
-
Photoshop → Krita, GIMP
-
Premiere Pro → Davinci Resolve, Kdenlive
There are also workarounds to run Windows apps on Linux using a VM(Virtual Machine) or containers, which you’ll have to experiment or look up others’ experiences.
→ A few multiplayer games with invasive kernel-level anti-cheat(like Valorant, LoL, Apex, Destiny2, Rainbox Six Siege, Fortnite, some Battlefield ones) will not run on Linux.
Check if it’s the case with the game you play on ProtonDB.
Steam with its Proton support will just run majority of games otherwise.
98% of my 500+ games library on Steam just works.
→ For those who use Epic Games, your library will work through Lutris or Heroic.
-
Heroic will have a library of all your games and each one will have its own prefix, I think.
-
Lutris just has one prefix for Epic games and all the games in its library and runs like the Windows equivalent.
→ Those sailing high seas can still use Lutris/Heroic/Bottles to run stuff. IYKYK. Make sure to play around with winetricks and change runners if things don’t work. There’s a slight learning curve if you’re using Lutris and stuff on your own. Get the relevant community’s help when needed.
I personally dual boot two different Linux distros, one of which is to run stuff from the high seas.
Step 1-B:
If you don’t have alternatives or if VM/containers don’t run the apps you use properly, you will have to stick to dual booting Linux with Windows.
If you do, try to install Linux on a separate HDD/SSD. If you don’t have a spare drive, you can still install Linux in the same drive as Windows, but Windows has a history of breaking dual boot configurations and Linux’s bootloader. In this scenario, all you just need is to keep a USB drive with your distro’s ISO handy so you can live boot, open CLI and fix the bootloader.
Also, after installation, don’t try to run games directly from external NTFS drive on Linux. You’ll have issues.
You can always continue to copy/run files from an NTFS drive on Linux. But since NTFS is windows’ proprietary filesystem, expect it to corrupt it. It can be easily be fixed by chkdsk(disk Error checking) on Windows. So, don’t panic about this.
If you don’t need to use your external drive on Windows at all, convert it to ext4 and safely use it on Linux.
If you want to use your external drive on both Windows and Linux without corruption, exFAT supposedly works better, but exFAT doesn’t have journaling and similar features. So, a power cut during file transfer might cause data loss.(?)
I started out dual booting with Windows myself as I was scared if some things wouldn’t work, but gradually, I’ve been able to ditch Windows completely.
Step 1-C:
If you’re using the same drive for dual booting, you’ll have to make some space on it for Linux to use. Windows can make it harder sometimes, so you might end up using some 3-rd party partion manager tools to force it, if it wouldn’t allow you.
→ Also, disable Hibernation, turn off Virtual Memory in Advanced System Settings and set paging size to 0. You can turn it back on after installing Linux.
→ To make some space, go to Disk Management and shrink your Windows volume based on your choosing. You should ideally be able to get as much free space as you see in Properties of your C Drive. If this doesn’t work, then try a reputable 3-rd party partition manager to shrink it.
→ Once shrunk, you’d see unallocated space of your chosen size. This is where we’re going to install Linux.
Step 2-A:
Picking a distribution. There are a lot to pick from.
The three big parent ones are Debian, Fedora and Arch and many other distributions are built on top of them. There’s also OpenSuse, which supports RPM packages that is typically used on Fedora. There are also a lot more independent distros like Gentoo, Void, Nix, Qubes of which I’m not much familiar with. You can explore those communities if interested.
Debian is a fixed release distro. Fedora is semi-rolling, and Arch & OpenSuse Tumbleweed are rolling/bleeding-edge.
-
Debian(Slow to update but supposedly stable) → Ubuntu(has unfriendly snap) → Mint(most popular and friendly). I’d not recommend Ubuntu based on my experience. But if you want to, go ahead.
-
Fedora(Natively, it has only FOSS packages by default and requires a bit of really simple initial config for proprietary Nvidia driver and codecs- refer RPM Fusion).
Fedora derivatives like Nobara/Bazzite usually have Nvidia driver and proprietary codecs already installed. Make sure to choose their ISO file that has Nvidia support.
- Only try regular Arch install if you have enough time and patience. [If you’re a novice, avoid AUR if possible since they are all user submitted packages there.]
Otherwise, try Cachy-OS that is Arch-based. It has a GUI package manager.
SteamOS, also Arch-based, is typically not recommended for Desktop systems, I think.
- OpenSuse Tumbleweed is also rolling distro like Arch. Has a nice installer and a GUI package manager. This is what I’m currently using after a lot of distro hopping, along with another Fedora based distro.
Most of these are regular traditional distros except Bazzite. Bazzite is an image-based or an atomic distribution, which is supposedly hard to break. The core of it is untouched and applications can then be installed using Flatpak/Containers. If packages are installed natively, they will be layered on top of the image. If something goes wrong after an update, it can be rolled back to the previous working image.
Note: Regular Fedora based distros offer the ability to switch to 2 previous kernel versions during boot.
There are also other atomic distros like Kinoite(Fedora KDE in atomic form), Silverblue(Fedora Gnome in atomic form), Secureblue(if you take security very seriously), Aurora, etc.
At first, you may pick a distro that’s not for you. In which case, always have a back up of your important data elsewhere and be ready to install another distro that you’d like to try.
Step 2-B:
Picking a Desktop Environment (also Display Server and Window Manager/Compositor). TLDR note: Only worry about choosing Desktop Environment. Ignore others if needed.
Desktop Environment is how an OS looks like and all that you can customize with the GUI.
A lot of distros support KDE & Gnome by default.
There’s Cinnamon used in Mint.
XFCE is a lightweight DE.
Cosmic DE(still in alpha) is based on Rust(memory-safe).
Optional reading:
These DE typically have their own Window Manager(X11) or Compositor(Wayland). I’ve never strayed away from the default stacking managers that most Desktop Environments provide. But feel free to explore others out there if you’re into it. Popular tiling managers are i3 on X11 and Sway on Wayland.
Now, Display Server is the simply the underlying protocol coordinating input/output. There are only two that exists. Xorg’s X11 and Wayland. X11 is the legacy display server that is used by many distros, but slowly being phased out.
Wayland is the newer display server that is supposedly more secure with GUI isolation(which X11 lacks) and supports features like HDR. Applications that are developed to run for X11 run on Wayland too using compatibility layers like x-Wayland.
-
Cinnamon on Mint works well on X11 from last I used it and Wayland is only experimental. If you’re choosing Mint, you’ll probably be sticking to X11 for now.
-
KDE and Gnome, both have wayland support. Gnome is soon phasing out X11.
-
Xfce has recently introduced wayland support.
→ On most DE, both Wayland and X11 can be used by switching over in the Login Screen.
Speaking of login screen, there’s the Display Manager. If you’re asked to pick anything in some distros, just use SDDM(for plasma), GDM(for gnome), lightDM(for others).
Step 3-A:
Now, time to get the distro ISO file from their legit websites. Some of them support torrent downloads too.
Distros like Fedora package different environments as spins. So, there will be Fedora KDE, Fedora Workstation(Gnome), Fedora Cosmic, and so on.
Mint’s native ISO will have Cinnamon bundled. It also has a separate XFCE version and LMDE version(derived from Debian instead of Ubuntu).
In other cases, if you have an Nvidia card, make sure to select the Nvidia version of the ISO if they offer you that way.
Step 3-B:
Preparing a USB drive with Ventoy:
Before anyone asks, Rufus is great, but only works on Windows and you’ll have to format an ISO with it everytime you want to use a different one and you’re only limited to one ISO at a time.
Ventoy on the other hand, has cross-compatibility. It is a one time installation. You can just drag and drop or copy & paste multiple distro ISOs in it as long as you have the space in the USB drive.
Avoid Balena Etcher. I’ve seen people have issues with it.
Ventoy should have both GUI and CLI method to install. Check their site.
Step 3-C:
Meddling with BIOS:
BIOS/UEFI can be accessed during the startup of a system usually with F2/Delete/F12.
- SecureBoot(a Microsoft feature) has to be turned off before installation.
Note: If you’re not dual-booting or don’t need Mircosoft’s secureboot, you can continue to leave it disabled after installation too.
If you want it however, it can be turned on again after installation. If turned on, a secureboot key for your linux distro has to be registered. You’ll have to create a keypair using ‘mokutil’ and register this with a password. Check your distro documentation regarding how to do this.
Exception: From what I recall, Nobara does not support SecureBoot.
-
Fast boot can be turned off too.
-
SATA mode should preferably be in AHCI.
-
Boot order can be changed and the installation USB can be prioritized to boot first too. This step can also be done by accessing the boot menu, typically by spamming F8 or F10 on startup.
Step 4-A:
Installation & Partitioning:
- If you’re using auto-partitioning,
→ choose the unallocated free space if you’re dual booting on same drive. Distro installations will usually have options like ‘Install alongside Windows’.
→ Choose the windows drive otherwise if you’re getting rid of Windows. The installer will format the drive and install over it.
Note: You can also choose to encrypt your disk partition with a password with LUKS during installation.
Ignore the following if you’re using auto-partitioning.
- If you’re manually partitioning, you’ll typically have to create:
/boot/efi (EFI partition type – vfat filesystem) of about 300 MB to 600 MB space for boot loader.
/boot partition(linux extended boot - ext4) of about 1 GB to 2 GB size to store kernel images.
/ partition(Linux root x86_64 partition type – either ext4 or btrfs or one of your choosing), with the much of the rest of your free space.
/swap partition (Linux swap partition type – swap filesystem) with anywhere from 2 to 4 to 8 GB of size.
This is similar to the paging file and acts as extended Memory. This is optional, but good to have.
Note: I suspect most distros have fully started using GPT instead of legacy MBR even for EFI partition. So, hopefully, no one has any issues with that.
→ For your root filesystem, you can use the standard ext4 filesystem which has journaling features.
There’s also the popular Btrfs, which has Copy-on-Write feature that supposedly helps with better snapshots of system.
→ Additional Note: Timeshift backup program doesn’t work well with Btrfs on Fedora because of how the root volume is labeled there. I think the root is labeled as @ instead of /. Look into it if you want to use Timeshift on Fedora.
Nobara fixes this by default. So, you can use Timeshift in it.
OpenSuse distros have btrfs+snapper integration for backup.
→ Troubleshooting note for btrfs users:
Lately, during power cut or forced shutdown, Btrfs partition got corrupted due to a bug in the Linux Kernel(anywhere between 6.10 to 6.15, I think).
To fix this, use the command:
btrfs rescue zero-log <insert root partition address>
.
Eg.
btrfs rescue zero-log /dev/nvme0n1p3
OR
btrfs rescue zero-log /dev/sda3
Your root partition can be found by using the command ‘lsblk
’.
Step 4-B:
Post-install and Troubleshooting notes:
→ For those who ditched Windows completely, make sure to back up your data and convert your external drives’ Filesystem to ext4 too for Linux-only use.
→ For most apps, you can try to find a flatpak version(preferably verified ones). Some apps like Steam, Lutris, gamescope and OBS are recommended to be installed natively.
*Avoid Snap packages if you use Ubuntu.
→ In some distros, you have to manually add Flathub repository and use flatpak apps that are then integrated with your Desktop Environment’s AppStore.
To be safe, you can also check for a tick sign or a verified signature of the developer of your flatpak application. Distros like Mint have an option to just show you only verified apps.
Fedora has an extra repository of its own managed Flatpak applications. I avoided this and just directly used apps from Flathub though.
→ Remember to always update your system additionally after a kernel/GPU driver update, if you are using flatpak applications. This is so that the Flatpak runtimes(like Freedesktop stuff and other application platforms) will get updated and only then most flatpak apps will continue to work. Some distros take care of this during a regular update itself. But keep an eye out for this one.
→ Some distros like base Fedora only comes with FOSS apps. Install proprietary Nvidia driver and codecs separately by following the RPM-fusion site. (If you’re using Fedora derivatives like Nobara/Bazzite, you don’t even have to do the following. If you’re intimidated by it, just use a Fedora derivative.)
It involves installation of two RPM repos: free and non-free. Then, a few lines in the commandline to install Nvidia driver and ffmpeg codecs.
Those with AMD GPU can just install the proprietary codecs.
// For people who don’t want to read too much into the simple, one-time procedure can just follow this (as shown in RPM fusion site):
For Nvidia driver, type:
sudo dnf install akmod-nvidia
For optional CUDA support, type:
sudo dnf install xorg-x11-drv-nvidia-cuda
For Video acceleration support, type:
sudo dnf install nvidia-vaapi-driver libva-utils vdpauinfo
For Codecs, type:
sudo dnf swap ffmpeg-free ffmpeg –allowerasing
For additonal codecs:
sudo dnf update @multimedia --setopt="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
//
→ Screensharing with audio is still problematic with Discord even though it claims to have been fixed. Vesktop had fixed this a year ago or even before Discord even tried.
→ Some mkv files with eac3 audio may have issues with VLC. Haruna player, with its innate mpv stuff, manages to play those.
→ If Steam doesn’t launch the first time, type:
__GL_CONSTANT_FRAME_RATE_HINT=3 steam
→ For rolling & semi-rolling distros, the latest Nvidia drivers should have solved a lot of its issues.
If anyone still finds a blank screen after waking from sleep, try getting into TTY by pressing Ctrl+Alt+F3, followed by Ctrl+Alt+F2(or F1) to get back into your Graphical UI.
→ CachyOS and OpenSUSE has great GUI installers that allows one to choose packages during and after installation. Arch users are on their own with the Wiki.
→ Other distro users can still make use of the Arch Wiki in most cases. It’s very helpful. Case in point:
Arch has a guide to disable HSP/HFP of a Bluetooth headset by creating a file in .config folder in home(~) directory. I had to do this so that I can just use my external mic and avoid my Bluetooth headset going to poor quality audio codec when it uses BT microphone.
→ If anyone suddenly miss their Wifi/Bluetooth device and not even detected with ‘rfkill
’ command, then you might be overloading your USB ports that it doesn’t get enough power.
You might see a code “usb error -110” when you check your journalctl log or when you use the command :
journalctl -b 0 -p err
.
In this case, just unplug all your devices and powercycle your motherboard, i.e. you have to press your power button for 10-15 seconds. After that, your Wifi/BT device will be detected again.
→ Most distros have good enough firewall like ufw or Firewalld. One can also install OpenSnitch or Safing Portmaster if your distro supports it and have fine-grained control of your system.
→ If printing, local filesharing and geolocation are not needed, packages like ‘cups’, ‘samba’ and * ‘geoclue’ can be removed or *masked(disabled).
If you’re targeting this at Windows users who just heard about GNU/Linux and consider switching, this is a terrible guide.
Edge → LibreWolf, Ungoogled-chromium/Trivalent.
No. When someone wants to switch to GNU/Linux, don’t also shove your other opinions onto them. There’s nothing wrong with Firefox or Chromium, which often come preinstalled.
Picking a distribution. There are a lot to pick from.
This whole section is way too long. Here’s what it should say:
Use Linux Mint Cinnamon Edition.
If you want to say more:
Use Linux Mint Cinnamon Edition. Or if your entire focus is gaming, use Bazzite.
No new user gives a fuck what Linux distribution is. They don’t care what atomic distribution is. And talking to them about Arch can only lead to disaster.
SteamOS, also Arch-based, is typically not recommended for Desktop systems, I think.
No. Do not recommend unsupported distribution which doesn’t work with the most popular GPU brand to any new users.
Picking a Desktop Environment
This section unnecessary since the previous section should already direct the new user to either Mint or Bazzite.
Avoid Balena Etcher. I’ve seen people have issues with it.
And you think Rufus with magnitude of options and Ventoy will leave users with fewer problems?
If you’re using auto-partitioning,
There should be no ‘if’. A new user should not do manual partitioning. If they are interested in doing it, they’re already way too advanced to read your tutorial.
→ For those who ditched Windows completely, make sure to back up your data and convert your external drives’ Filesystem to ext4 too for Linux-only use.
Uh? Why? Let them use NTFS if the drive is in NTFS.
To be frank I prefer GNOME for normal users because it has a distinct and uniform interface and supports modern tech, amongst other issues I have with Linux Mint
In practice I have found that teaching people to use a new environment goes better than trying to replicate Windows which will frustrate people when it doesn’t work exactly like windows
And even for making your desktop look like windows, KDE is miles, leaps and bounds ahead of Cinnamon
Also, NTFS -STILL- has write bugs occasionally with the ntfs3g driver (cannot speak for the paragon kernel driver) so it can cause dirty fs issues from time to time although they will be fixed with a chkdsk
No. When someone wants to switch to GNU/Linux, don’t also shove your other opinions onto them. There’s nothing wrong with Firefox or Chromium, which often come preinstalled.
I said this was my experience and there is a reason why I started using/recommending these apps. A lot of people would just simply disagree with you claiming that Firefox or Chromium have nothing wrong. People already hate AI features being built into Firefox and don’t want google’s tentacles around their neck on chromium.
This whole section is way too long. Here’s what it should say: Use Linux Mint Cinnamon Edition. Or if your entire focus is gaming, use Bazzite.
Again, this has been my experience. And the title does say ‘comprehensive’ guide. Not a quick guide.
No new user gives a fuck what Linux distribution is. They don’t care what atomic distribution is. And talking to them about Arch can only lead to disaster.
I’ve been asked in Bluesky about what a distro is by some people. And I had to explain it to them. So yeah, they do care.
No. Do not recommend unsupported distribution which doesn’t work with the most popular GPU brand to any new users.
And that is exactly what I meant. Are you sure you’re reading it correctly? I included it and explicitly did not recommend it so that people don’t get misled from posts online making them believe that SteamOS will bring about the Year of the Linux and so on.
This section unnecessary since the previous section should already direct the new user to either Mint or Bazzite.
Mint is great. Bazzite is great.
But not everyone will be looking for X11 support and therefore Mint. And wrt Bazzite, not everyone will want to use an atomic distro.
I see you want to simply stuff and just ask people to resort to one or two things. But that’s not going to stop people. They’re going to experiment different things. Hence the ‘comprehensive’ guide. People reading carefully and having good reading comprehension will already see that I mentioned Mint to be the most friendly and popular, and also explained in detail about how one can rollback from a failed state with Bazzite.
That would already point the users, who want things to just work, towards them.
There should be no ‘if’. A new user should not do manual partitioning. If they are interested in doing it, they’re already way too advanced to read your tutorial.
I asked people to ignore it if they don’t want it. And once again, this is a ‘comprehensive’ guide.
Uh? Why? Let them use NTFS if the drive is in NTFS
I’ve explained what goes wrong with it and I’ve also stated for people who dual boot that NTFS can get corrupt and how to resolve it. For those who are only on Linux, I’ve been told that running fsck(file system consistency check) on a corrupted NTFS drive may not go well. Hence the reason I asked them to convert it to ext4.
If I’m wrong on this, please do shed light. I’ll correct myself on this.
I said this was my experience and there is a reason why I started using/recommending these apps. A lot of people would just simply disagree with you claiming that Firefox or Chromium have nothing wrong.
You’re writing a guide how to switch to GNU/Linux. If you want to discuss browsers, do it in another guide. If someone wants to switch operating systems, confusing them with browser choices isn’t helping.
Again, this has been my experience. And the title does say ‘comprehensive’ guide. Not a quick guide.
You’re also saying the guide is for people who recently got interested in switching to Linux. Those people don’t need to hear about Arch. They don’t need to understand what immutable distribution is. A comprehensive guide for that target audience should focus on comprehensively describing one or two distributions targeted at that target audience.
But not everyone will be looking for X11 support and therefore Mint.
Someone who just started looking into switching to Linux is looking for neither X11 nor Wayland support.
And wrt Bazzite, not everyone will want to use an atomic distro.
That’s why I wrote ‘if your entire focus is gaming.’ People who just want to play games, don’t care. They just want their stuff to work.
I see you want to simply stuff and just ask people to resort to one or two things. But that’s not going to stop people. They’re going to experiment different things.
Of course. But the way I see it, that’s not the target audience. Someone who so far had been using exclusively Windows, does not need to be front-loaded with all that information. Describe Mint in detail, especially pointing out differences they can face between Mint and Windows, and mention that other distributions also exist if they want to try them in the future.
You say this is a comprehensive guide, but it’s comprehensive in the sense that it touches on a lot of different topics. It goes broad with its scope, but for a new user going in more detail with typical Mint installation would be more useful.
For those who are only on Linux, I’ve been told that running fsck(file system consistency check) on a corrupted NTFS drive may not go well. Hence the reason I asked them to convert it to ext4.
I reckon converting would lead to more lost data than just using NTFS partition. This also locks users into using the drive under Linux. I just don’t think this is a useful recommendation for someone who is just switching from Windows.
LibreWolf and the likes are paranoidware/autismware and don’t work for most people’s workloads. Most people would like keeping history and other basic shit like sync that Firefox provides. Also, who hates Firefox’s features? You browse too much lemmy.
On the NTFS thing, Steam really does not like NTFS drives in my experience. Converting to Ext4 would be a good idea for gaming purposes.
I’ve read 70% of your guide and it seems great. I just hope people (not on Lemmy) will easily find it on the web when looking for help.
Good work for our community 👍
every time i see one of these i marvel at the effort spent and i’m glad to see people are still doing it because these are how i got started.
If you newbie linux user I really recommended create partition for /home and use LVM. That not so easy, but if you understand LVM Snapshots and partitioning that saved many hours for you. You can use partition manager for make /home snapshots and all system snapshots too if you have enough free space in LVM group. The downside of this feature is that you can’t take up the entire disk with partitions, otherwise there will be nowhere to take snapshots.
If you want change distro for example:
- create /home snapshot
- remove all ~/.* directories
- Start from iso and format only root partition for new system.
If you want do momething risky:
- Create / and /home shapshot.
- Try that.
- If all ok merge snapshots, If all go bad rollback to previous state.
Use btrfs for CoW snapshots, it’s much better
Do you really want to recommend btrfs to beginners? The FS for which the usage scheme needs to be checked on the site.
As for me, I messed up my home directory 4 years ago and since then I haven’t touched this fs and I don’t advise anyone. I need my Linux work machine not for experimentation and recovery from backups. It’s much easier to store the free 20 gigs on a disk.
Ah but you see. You can manage BTRFS snapshots graphically with Timeshift. There is also Snapper for automatic hooks and such.
Also, it’s literally less complicated than LVM
Btrfs also has automatic checksumming amongst MANY other features which can warm you about silent corruption.
saving this for later in case I ever finally decided to do the thing I’ve been thinking about doing now for 10+ years… maybe this time I will… maybe
There hasn’t been a better time before now and I think it will keep getting better. Linux used to be about making a lot of compromises. Now, it’s legitimately good on the desktop, although it’s admittedly still geared towards power users and developers.
I switched to a Mac right around when OS X was first released. Software was sometimes a little bit of an issue with things being Windows-only, but you could generally find something comparable on the Mac. During the next few years, it became increasingly common for developers to offer a Mac version alongside the Windows version and it changed everything. All of a sudden, Mac wasn’t a platform where you were going to run into a bunch of compatibility issues and people started adopting it.
That’s what Linux feels like these days. It’s finally reached the point of having enough market share that you don’t feel like a second class citizen using it. It is THE premier platform for developers and power users in the same way Mac became popular with developers 20-25 years ago. It’s the target platform for many developers considering it powers virtually the entire internet and a billion mobile devices. Also, what Valve did with Proton can’t be overstated. Their work on Proton and the Steam Deck is really a watershed moment for Linux. I think we are on the verge of seeing some decent Linux growth on the desktop.
It’s actually done much more quickly than anticipated (provided you have an extra drive or at least an extra partition handy). You can just put a live image on a pendrive (with BalenaEtcher or similar tool) and boot from it. You can then install it from the live image, or try another distro through the same process if you don’t like your first pick.
Alongside proton dB https://areweanticheatyet.com/ is also a good resource.
This is pretty good you should put davincibox in the Davinci resolve section because by default it won’t work on anything other than rocky linux