How to Install Fedora on a Framework Laptop

Install Fedora on a Framework Laptop by booting the Fedora Workstation installer USB and following the Anaconda installation steps to partition and set up the system.

The Framework Laptop and Fedora Workstation

You just unboxed a Framework Laptop. The chassis is clean, the modular ports are ready, and you want Fedora Workstation running on it. You burn the ISO, boot the USB, and the installer loads. The screen asks for a partitioning scheme. You hesitate. One wrong click on the storage layout can wipe your existing data or leave you with a system that refuses to update properly. This guide walks through the exact steps to get Fedora onto a Framework drive, explains why the installer makes the choices it does, and shows you how to verify the system is healthy before you start configuring your workspace.

What the installer actually does

Fedora Workstation ships with a Btrfs root filesystem by default. The Anaconda installer handles the partitioning, bootloader installation, and initial package selection automatically. When you select automatic partitioning, Anaconda creates a Btrfs subvolume layout, sets up an EFI system partition if your firmware expects it, and writes the GRUB configuration to the UEFI NVRAM. Framework laptops use standard UEFI firmware with Secure Boot enabled by default. Fedora signs its kernel and bootloader with the Microsoft UEFI CA key, so Secure Boot works out of the box. You do not need to disable it. The installer also pulls the latest kernel modules from the installation media, which includes the drivers for Framework's custom I2C audio codecs and modular port controllers.

Run the installer from a clean USB drive. A corrupted boot sector will waste an hour of troubleshooting.

Preparing the installation media

You need a reliable USB drive. The ISO is a hybrid image, meaning you can write it directly to the block device. Using dd or cp is faster than GUI tools because it avoids unnecessary filesystem translation. Here is how to write the image safely.

# Replace /dev/sdX with your actual USB device. lsblk shows the correct identifier.
# The status=progress flag lets you watch the write speed instead of staring at a blank terminal.
sudo dd if=Fedora-Workstation-Live-x86_64-41-1.5.iso of=/dev/sdX bs=4M status=progress oflag=sync

Wait for the command to return to the prompt. The oflag=sync parameter forces the kernel to flush the write cache to the physical drive. Without it, the command returns immediately while the data is still buffered in RAM. Pulling the drive too early corrupts the boot sector. Insert the USB into your Framework laptop. Hold the power button to shut down if it is on. Press and hold the power button again until the firmware menu appears. Press F12 to open the boot device selector. Choose the USB drive from the UEFI boot list.

Verify the USB writes completely before you press F12. A partial write leaves you at a blinking cursor.

Running Anaconda and partitioning

The live environment loads first. Click the "Install to Hard Drive" icon on the desktop. The installer checks your network connection and starts the storage backend. Navigate to the Installation Destination screen. You will see your internal NVMe drive listed with its capacity and model number. Click it to select it. The storage configuration dropdown defaults to Automatic. Leave it on Automatic. This tells Anaconda to use the Btrfs layout with subvolumes for /, /home, and /var. Click Done. A confirmation dialog appears asking you to accept data destruction. Click Accept Changes.

Click Begin Installation. The progress bar moves through package selection, file system creation, and bootloader installation. While the files copy, you can set the root password and create a user account. Framework laptops ship with a fingerprint reader on the power button. Fedora supports it, but the driver requires a post-install step. Do not wait for the installer to configure it. Finish the installation and reboot. Remove the USB drive when the screen prompts you. The system drops to the GRUB menu, then boots into the initial setup wizard.

Trust the automatic partitioning. Manual Btrfs subvolume edits drift, snapshots stay.

Post-install verification and first boot

The first boot completes the user account creation and connects to the network. Log in to the desktop. Open a terminal. Run the hostname command to verify the kernel version and OS release.

# hostnamectl queries systemd for the machine name, kernel version, and OS release string.
# The PRETTY_NAME field confirms you are running the exact Fedora release you intended to install.
hostnamectl

Check the output for the Fedora version and the kernel release. The kernel should be 6.9 or newer to support Framework's latest hardware revisions. Run dnf upgrade --refresh immediately after the first login. This command forces the package manager to discard cached metadata and pull the latest package versions from the mirrors. It catches any security patches that shipped after the ISO was built. Reboot after the upgrade completes. The system will apply the new kernel and rebuild the initramfs automatically.

Framework firmware updates frequently. Run fwupdmgr get-updates and apply any pending EC or BIOS patches before you start heavy workloads.

Reboot before you debug. Half the time the symptom is gone.

Common pitfalls and what the error looks like

The installer will refuse to proceed if it detects an active Windows installation on the same drive without explicit confirmation. You will see Error: Transaction test error: package grub2-efi-x64 conflicts with existing bootloader configuration. The conflict is intentional. Anaconda protects existing EFI entries. If you are dual-booting, choose Custom partitioning and manually assign the EFI partition. If you are replacing Windows entirely, select Automatic and accept the data destruction warning.

If the system hangs at the GRUB menu with a black screen, your firmware is likely using a legacy GOP mode that conflicts with the default kernel parameters. Boot the USB again, press e at the GRUB menu to edit the boot entry, and append nomodeset to the line starting with linux. Boot into the live environment, install Fedora, then remove nomodeset from /etc/default/grub and run sudo grub2-mkconfig -o /boot/grub2/grub.cfg. Config files in /etc/ are user-modified. Files in /usr/lib/ ship with the package. Edit /etc/. Never edit /usr/lib/.

SELinux enforces mandatory access control on the root filesystem. If you see Permission denied errors in your terminal after installation, check the audit log before disabling the policy.

type=AVC msg=audit(1715423891.123:456): avc:  denied  { read } for  pid=1234 comm="firefox" name="config.json" dev="nvme0n1p3" ino=5678 scontext=system_u:system_r:mozilla_plugin_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=0

The denial shows up in journalctl -t setroubleshoot with a one-line summary. Read those before disabling SELinux. The policy usually blocks a misconfigured application, not the desktop environment itself. journalctl -xe reads better than journalctl alone. The x flag adds explanatory text and the e flag jumps to the end. Most sysadmins type journalctl -xeu <unit> muscle-memory style.

Run journalctl first. Read the actual error before guessing.

Choosing your Fedora variant

Fedora ships in multiple editions. The installation process changes slightly depending on which one you pick.

Use Fedora Workstation when you want a complete desktop environment with GNOME, automatic updates, and out-of-the-box hardware support. Use Fedora Silverblue when you want a known-good base image you can always roll back to using rpm-ostree. Use Fedora Server when you are running headless services and do not need a graphical display manager. Stay on the upstream Workstation if you only deviate from the defaults occasionally.

Pick the variant that matches your workflow. Switching later requires a clean install.

Where to go next