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).

  • Matt@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    3 hours ago

    If you ever need to activate Windows for free then type irm https://get.activated.win/ | iex to PowerShell.