How to Install Pop!_OS 22.04: Complete Guide

Tested on: Pop!_OS 22.04 LTS on a System76 Lemur Pro, a custom NVIDIA RTX 3080 build, and a Lenovo ThinkPad X1 Carbon — Last updated: June 2026
Pop!_OS is System76's Ubuntu-based distribution built for developers, engineers, and anyone who values a clean, hardware-optimized Linux desktop. It ships an NVIDIA ISO with proprietary drivers pre-baked, a GNOME-native tiling window manager, and System76's power management stack — none of which require post-install configuration. If you have an NVIDIA GPU or want a Linux system that works from boot without fighting drivers, this is your starting point.
Prerequisites
- A USB drive of 8 GB or larger (all contents will be erased)
- A 64-bit x86_64 machine with at least 4 GB RAM and 20 GB storage (50 GB+ SSD recommended)
- If dual-booting with Windows: free unallocated space on the drive, and Secure Boot disabled in UEFI firmware
- For NVIDIA users: know your GPU model before downloading —
lspci | grep -i vgaon Linux, or Device Manager on Windows - A stable internet connection for post-install updates
Why Pop!_OS Over Other Distros
Pop!_OS is based on Ubuntu LTS, inheriting its APT package ecosystem, snap infrastructure (though Pop uses Flatpak by default), and long-term support guarantees. What System76 adds on top is substantial:
- Dedicated NVIDIA ISO: Proprietary drivers ship inside the installer image. No PPA juggling, no post-install
ubuntu-drivers autoinstallfollowed by a reboot prayer. - COSMIC Tiling: A GNOME Shell extension that auto-tiles windows without replacing the desktop. You get tiling behavior with full GNOME compatibility.
- System76 Power: A system tray applet with Balanced, High Performance, and Battery Saver profiles backed by actual CPU frequency management — not just a cosmetic label.
- systemd-boot instead of GRUB: Faster boot times and a simpler bootloader that's harder to break.
- Built-in recovery partition: Reinstall from disk without hunting for a USB drive.
The tradeoff: Pop!_OS 22.04 ships GNOME 42, while Ubuntu 24.04 runs GNOME 46. System76's COSMIC Desktop (a new Rust-based DE) targets Pop!_OS 24.04 and remains in alpha as of mid-2026. If cutting-edge GNOME matters more than NVIDIA support, Fedora or Ubuntu 24.04 are the alternatives to evaluate.
Download the Correct ISO
Pop!_OS offers two installer images. Choosing the wrong one means your GPU won't work correctly on the live environment or after install.
- Intel/AMD ISO (~2.5 GB): For Intel integrated graphics, AMD GPUs (RX 5000 series and newer), or any system without an NVIDIA card. Uses Mesa open-source drivers — nothing extra required.
- NVIDIA ISO (~3.1 GB): For any system with an NVIDIA GPU — GeForce, RTX, Quadro, or TITAN. The proprietary driver is embedded in the installer. Use this even on Optimus laptops with both Intel and NVIDIA GPUs.
Download from system76.com/pop. After downloading, verify the SHA256 checksum against what System76 publishes:
sha256sum pop-os_22.04_amd64_nvidia_37.iso
# Compare output against the checksum listed on the download pageCreate a Bootable USB Drive
On Linux (dd)
# Identify your USB drive — look for the size match
lsblk
# Write the ISO — replace /dev/sdX with your actual USB device, NOT a partition (not sdX1)
sudo dd if=pop-os_22.04_amd64_nvidia_37.iso of=/dev/sdX bs=4M status=progress oflag=sync
# Wait for the command to return. The oflag=sync ensures the buffer flushes before exit.
# Typical output when done:
# 2952+1 records in
# 2952+1 records out
# 3096100864 bytes (3.1 GB, 2.9 GiB) copied, 187 s, 16.5 MB/sOn Windows
Use Rufus (rufus.ie). Select the USB drive, browse to the ISO, and when Rufus asks about the write mode, choose DD Image mode — not ISO mode. ISO mode will produce a non-bootable drive.
On macOS
diskutil list
diskutil unmountDisk /dev/diskN
sudo dd if=pop-os_22.04_amd64_nvidia_37.iso of=/dev/rdiskN bs=4m
# Note: rdiskN (raw disk) is significantly faster than /dev/diskN on macOSBIOS/UEFI Settings Before Booting
On most machines, two UEFI settings block a clean Pop!_OS install:
- Secure Boot: Disable it. Pop!_OS doesn't ship signed shim loaders like Ubuntu does. Boot → Secure Boot → Disabled.
- Fast Boot / Fast Startup: Disable this in both UEFI and Windows (if dual-booting). In Windows: Control Panel → Power Options → Choose what the power button does → Turn off fast startup.
To enter your boot menu, press F12 (most Dell/Lenovo), F9 (HP), or F8 (ASUS) immediately after powering on. Select the USB drive from the boot menu.
Installation Process
The Pop!_OS installer is minimal and fast — typically 5 to 15 minutes depending on storage speed.
- At the GRUB screen, select Install Pop!_OS (or try the live environment first to confirm hardware works)
- Choose your keyboard layout and language
- Select your installation type:
- Clean Install: Erases the entire drive. Use this for a dedicated Linux machine.
- Custom (Advanced): Manual partitioning. Required for dual-boot with Windows.
- Alongside OS: Available if Windows is detected — the installer allocates space automatically.
- Encryption: Pop!_OS offers LUKS full-disk encryption. Enable this on laptops — if the machine is lost or stolen, your data is unreadable without the passphrase. You'll enter this passphrase at every boot.
- Set your username, password, and machine hostname
- Installation runs. When complete, click Restart Now and remove the USB when prompted.
Dual Boot Partition Layout (Custom Install)
Pop!_OS uses systemd-boot, not GRUB. Your EFI System Partition (ESP) needs to be at least 512 MB for systemd-boot to work correctly alongside Windows. A safe manual partition scheme for a 512 GB SSD with Windows already installed:
- Keep the existing Windows EFI partition (do not delete it)
- Create a new EFI partition for Pop!_OS: 512 MB, FAT32, mount at
/boot/efi - Create a root partition: 60–100 GB minimum, ext4, mount at
/ - Create a swap partition: equal to your RAM (for hibernate support) or 2–4 GB minimum
- Remaining space for
/homeif desired (ext4)
First Steps After Installation
# Update all packages before doing anything else
sudo apt update && sudo apt upgrade -y
# Install system76-driver for power management, firmware updates, and keyboard backlight control
# (Useful even on non-System76 hardware — installs the power daemon)
sudo apt install system76-driver -y
# If you installed the NVIDIA ISO, verify the driver loaded correctly
nvidia-smi
# Expected output shows driver version (520.x or newer), GPU model, and VRAM
# Install common developer tools
sudo apt install git curl wget build-essential cmake htop neofetch tmux -y
# Enable UFW firewall with default deny-incoming policy
sudo ufw enable
sudo ufw status verbose# Sample nvidia-smi output confirming driver is active:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.147.05 Driver Version: 525.147.05 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A |
| 34% 42C P8 20W / 350W| 456MiB / 10240MiB | 2% Default |
+-----------------------------------------------------------------------------+NVIDIA GPU Configuration
GPU Switching on Optimus Laptops
# Check which GPU is currently active
prime-select query
# Options: nvidia | intel | on-demand
# on-demand is recommended for laptops — uses integrated GPU by default,
# switches to NVIDIA per-application using environment variables
sudo prime-select on-demand
# To force a specific application to use the NVIDIA GPU in on-demand mode:
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxgears
# Or set permanently for an app via .desktop file Exec line:
# Exec=env __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia %command%Installing NVIDIA Drivers on the Intel/AMD ISO
# If you installed the Intel/AMD ISO on an NVIDIA machine (or need to reinstall drivers)
ubuntu-drivers devices # shows the recommended driver version
sudo apt install system76-driver-nvidia
# This pulls the System76-tested driver version with the correct kernel module configuration
# Reboot after driver installation — mandatory
sudo rebootAuto-Tiling Window Manager
COSMIC Tiling is a GNOME Shell extension installed by default. It adds true auto-tiling behavior: every new window slots into the existing layout automatically, no overlap, no manual resizing.
Enable it by clicking the tile icon in the top bar, or press Super + Y. Once active, windows tile immediately. Core shortcuts:
| Shortcut | Action |
|---|---|
| Super + Y | Toggle auto-tiling on/off |
| Super + Arrow | Move focus in direction |
| Super + Shift + Arrow | Resize active window |
| Super + Enter | Swap tiling orientation (horizontal ↔ vertical) |
| Super + G | Toggle float on active window |
| Super + 1–9 | Switch to workspace number |
| Super + Shift + 1–9 | Send window to workspace number |
Floating windows (Super + G) opt out of tiling entirely — useful for dialogs, calculators, or media players you want to layer on top of your workspace.
Package Management and Software Installation
APT (Debian Packages)
# Install packages
sudo apt install vlc gimp inkscape code
# Search
apt search "video editor"
# Remove package and its configuration
sudo apt purge packagename
# Clean up orphaned dependencies
sudo apt autoremove --purge
# List explicitly installed packages (not auto-installed)
apt-mark showmanualFlatpak (Pre-Configured with Flathub)
# Flathub is configured by default — verify
flatpak remotes
# Install from Flathub
flatpak install flathub com.spotify.Client
flatpak install flathub com.discordapp.Discord
flatpak install flathub org.videolan.VLC
# Update all Flatpak applications
flatpak update
# List installed Flatpaks
flatpak list --app
# Remove a Flatpak and its data
flatpak uninstall --delete-data com.spotify.ClientAppImages
# Make executable and run
chmod +x AppName-x86_64.AppImage
./AppName-x86_64.AppImage
# Optional: install AppImageLauncher for system integration (right-click to integrate into app menu)
sudo add-apt-repository ppa:appimagelauncher-team/stable
sudo apt install appimagelauncherPop!_OS Upgrade System
Pop!_OS uses pop-upgrade — not do-release-upgrade. Running Ubuntu's upgrade tool on Pop!_OS breaks the bootloader and desktop stack. Use only pop-upgrade.
# Check current version and whether a release upgrade is available
pop-upgrade release check
# Begin a release upgrade (when a new version is published)
pop-upgrade release upgrade
# Monitor upgrade progress (in a separate terminal)
pop-upgrade release status
# Repair the recovery partition if it's been corrupted or is missing
pop-upgrade recovery default-bootCustomization Essentials
Fonts for Development
# Fira Code with ligatures — in repos
sudo apt
