10 Things to Do After Installing Linux
Ten essential post-install steps for any Linux desktop: updates, drivers, firewall, codecs, backups, SSH hardening, and service cleanup — all with modern commands.
Before you start
- ▸A completed Linux installation with sudo or root access
- ▸Active internet connection
- ▸Basic comfort running commands in a terminal
A fresh Linux install is a blank slate. The default configuration gets you running, but a handful of targeted steps will make the system stable, secure, and genuinely pleasant to use. Work through these ten tasks in order — most take under five minutes each.
1. Apply All Pending Updates
Repositories often ship newer packages than the installer ISO contained. Sync and upgrade before doing anything else.
Debian / Ubuntu
sudo apt update && sudo apt full-upgrade -y
Fedora / RHEL / Rocky
sudo dnf upgrade --refresh -y
Arch
sudo pacman -Syu
Reboot afterward if the kernel or firmware was updated. On systemd systems you can check whether a reboot is needed:
[ -f /run/reboot-required ] && echo "Reboot required" || echo "No reboot needed"
2. Install Proprietary Drivers
Open-source drivers cover most hardware well, but NVIDIA GPUs and some Wi-Fi adapters need proprietary firmware for full performance.
Debian / Ubuntu — automatic detection
sudo ubuntu-drivers install
On Debian without ubuntu-drivers, enable non-free firmware and install via apt:
sudo apt install firmware-linux nvidia-driver
Fedora — RPM Fusion required
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install akmod-nvidia
Arch
sudo pacman -S nvidia nvidia-utils
After installing NVIDIA drivers, reboot and verify the GPU is active:
nvidia-smi
Output will list driver version and GPU name. On Wayland, also confirm GBM_BACKEND=nvidia-drm is set if you see a blank screen after login.
3. Enable the Firewall
Ubuntu ships with ufw; Fedora and RHEL use firewalld. Both sit on top of nftables on modern kernels. Enable and verify.
Ubuntu / Debian (ufw)
sudo ufw enable
sudo ufw status verbose
Fedora / RHEL / Rocky (firewalld)
sudo systemctl enable --now firewalld
sudo firewall-cmd --state
Arch (choose one)
# ufw
sudo pacman -S ufw
sudo systemctl enable --now ufw
sudo ufw enable
The default policies — deny incoming, allow outgoing — are correct for a desktop. Only open ports you explicitly need.
4. Install Multimedia Codecs
Patent-encumbered codecs (H.264, AAC, MP3) are excluded from many default installs. Add them so your browser and media player work out of the box.
Ubuntu
sudo apt install ubuntu-restricted-extras
Debian
sudo apt install libavcodec-extra ffmpeg
Fedora
sudo dnf install gstreamer1-plugins-{bad-\*,good-\*,base} gstreamer1-plugin-openh264 \
gstreamer1-libav lame\* ffmpeg --exclude=gstreamer1-plugins-bad-free-devel
Arch
sudo pacman -S gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav ffmpeg
5. Set Up Automatic Security Updates
Security patches should not wait for you to remember to run them. Configure unattended upgrades for the security pocket only — leave feature updates manual.
Debian / Ubuntu
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Fedora / RHEL / Rocky
sudo dnf install dnf-automatic
sudo sed -i 's/^upgrade_type.*/upgrade_type = security/' /etc/dnf/automatic.conf
sudo systemctl enable --now dnf-automatic.timer
Arch
Arch does not ship a supported partial-update mechanism. Use a cron job or systemd timer to run pacman -Syu unattended, but be aware full upgrades can occasionally require manual intervention.
6. Configure a Backup Solution
Data loss on a system you have just configured is painful. Set up at least one backup before adding personal files.
Timeshift is the simplest choice for system snapshots using btrfs subvolumes or rsync.
# Debian/Ubuntu
sudo apt install timeshift
# Fedora
sudo dnf install timeshift
# Arch (AUR)
yay -S timeshift
Launch timeshift-gtk (or timeshift --wizard in a terminal) to pick snapshot type and schedule. For home-directory backups to a separate drive or remote location, Déjà Dup (GNOME Backups) integrates directly with the desktop:
sudo apt install deja-dup # Debian/Ubuntu
sudo dnf install deja-dup # Fedora
7. Install Essential Applications
The default app selection covers basics, but most users need a few extras. Install in one shot rather than one at a time.
A practical baseline set
# Debian/Ubuntu
sudo apt install vim curl wget git htop neofetch flatpak gnome-software-plugin-flatpak
# Fedora
sudo dnf install vim curl wget git htop neofetch flatpak
# Arch
sudo pacman -S vim curl wget git htop neofetch flatpak
Enable Flathub for the widest Flatpak app catalog:
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
8. Harden SSH (If You Use Remote Access)
If your machine is ever accessed remotely, disable password authentication and use key-based login instead. Generate a key pair on the client machine first:
ssh-keygen -t ed25519 -C "[email protected]"
Copy the public key to the server:
ssh-copy-id user@server_ip
Then on the server, edit /etc/ssh/sshd_config and set:
sudo sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
Confirm you can still log in with your key before closing your current session.
9. Set Your Hostname and Timezone
A meaningful hostname makes logs readable; the correct timezone keeps scheduled jobs and log timestamps accurate.
sudo hostnamectl set-hostname my-workstation
# List available timezones
timedatectl list-timezones | grep America
# Set yours
sudo timedatectl set-timezone America/New_York
# Verify
timedatectl status
Sample output (will vary):
Local time: Mon 2025-06-09 14:32:01 EDT
Universal time: Mon 2025-06-09 18:32:01 UTC
RTC time: Mon 2025-06-09 18:32:01
Time zone: America/New_York (EDT, -0400)
10. Review systemd Services and Disable Unnecessary Ones
Many packages install and enable background services automatically. Audit what is running and disable anything you do not need to reduce attack surface and shorten boot time.
# List all enabled services
systemctl list-unit-files --state=enabled --type=service
# Check boot time breakdown
systemd-analyze blame
Common candidates for disabling on a desktop that has no local print jobs, no Bluetooth, or no NFS mounts:
sudo systemctl disable --now cups bluetooth avahi-daemon
Re-enable any service you need later with sudo systemctl enable --now <service>. Never disable services blindly — read what each one does first.
Verification Pass
Run this quick checklist to confirm everything took effect after a final reboot:
sudo apt list --upgradable(ordnf check-update) returns nothing.nvidia-smiorlspci -k | grep -A2 VGAshows your GPU and its driver.sudo ufw statusorsudo firewall-cmd --stateshows active / running.- A test video in Firefox or mpv plays without errors.
timedatectl statusshows the correct timezone and NTP service: active.
Troubleshooting
NVIDIA — black screen after driver install on Wayland
Add nvidia_drm.modeset=1 to your kernel command line in /etc/default/grub, then run sudo update-grub (Debian/Ubuntu) or sudo grub2-mkconfig -o /boot/grub2/grub.cfg (Fedora). This is required for the NVIDIA GBM backend used by modern compositors.
ufw blocks a service you just installed
Use named profiles where available: sudo ufw allow 'Nginx Full'. For arbitrary ports: sudo ufw allow 8080/tcp. Always be as specific as possible — prefer port + protocol over opening a wide range.
dnf-automatic timer not firing
Check systemctl status dnf-automatic.timer and confirm apply_updates = yes is set in /etc/dnf/automatic.conf if you want it to actually install (not just download) updates.
Frequently asked questions
- Do I need to do all ten steps on every Linux install?
- Steps 1–4 are essentially universal. Steps 5–10 depend on your use case: skip SSH hardening if you never use remote access, and skip proprietary drivers if your hardware works fine with open-source ones.
- Is the built-in firewall really necessary on a home desktop?
- Yes. Even behind a home router doing NAT, a local firewall limits exposure from other devices on the same network and catches misconfigured services that accidentally bind to 0.0.0.0.
- Why use Flatpak instead of just the distro repos?
- Flatpak gives you newer versions of apps like Spotify, VS Code, and Kdenlive that distro repos often lag on, plus sandboxing. It complements rather than replaces native packages.
- Timeshift or Déjà Dup — which should I use?
- Use both for different purposes. Timeshift protects the OS and system config (ideal for rolling back a bad update). Déjà Dup protects your personal files in /home and can back up to remote or cloud storage.
- Will disabling Bluetooth and CUPS break anything?
- Only if you actually use those features. If you have no Bluetooth peripherals and never print, disabling them is safe. Re-enable with 'sudo systemctl enable --now bluetooth cups' whenever you need them.
Related guides
How to Back Up Your Linux System
Learn how to back up your Linux system using Timeshift, rsync, Borg, and Restic — then tie it all together with a practical 3-2-1 backup routine.
How to Choose a Linux Distribution
Match a Linux distro to your real needs — desktop, server, rolling vs LTS, hardware quirks, and package ecosystems — without wading through marketing noise.
How to Dual-Boot Linux and Windows
Shrink the Windows partition, install Linux without breaking the bootloader, configure GRUB, and handle Secure Boot — all in the correct order.
How to Download and Install Linux
Choose a Linux distro, download and verify the ISO, write it to USB with dd or Etcher, then boot and run the graphical installer — covered step by step.