Understanding the Anaconda Installer

A Complete Walkthrough

Anaconda is Fedora's graphical and text-mode installer, guiding you through disk partitioning, user creation, software selection, and bootloader setup before the first reboot.

The installer transaction

You boot from a USB drive, the GRUB menu appears, and you select the installer. The screen loads a clean interface with a central hub and several spokes. You click through localization, pick a disk, and hit Begin Installation. Two hours later, the system reboots. It works. But what if you need to dual-boot, or automate ten machines, or understand why Anaconda locked your disk layout the way it did. The installer is not a black box. It is a transactional system that stages changes, validates dependencies, and commits them only when every spoke is green.

How Anaconda stages changes

Anaconda does not write files directly to your disk as you click. It builds a transaction in memory. Each spoke represents a configuration domain. Localization sets locale and timezone. Software selects the package repository and group sets. System handles storage, network, and authentication. The warning triangles mean unmet prerequisites. The installer refuses to commit until every domain passes validation.

Think of it like a database transaction. You draft the changes, review the constraints, and apply them atomically. If power fails during the write phase, the disk remains in a known state. You can reboot and start over without wiping your existing data. The installer also separates runtime configuration from package defaults. Files in /etc/ are user-modified. Files in /usr/lib/ ship with the package. Anaconda writes to /etc/ during setup. It leaves /usr/lib/ untouched. This separation prevents manual edits from vanishing during a dnf upgrade --refresh.

Run the installer from a backup VM first if you are experimenting with custom layouts. A botched partition table can leave you unable to boot.

Booting and navigating the hub

Write the Fedora ISO to a USB drive using dd or Ventoy. Boot the machine. Select Start Fedora for the live environment or Install Fedora for the netinstall image. The live image downloads the base system from the USB and pulls updates from the mirror. The netinstall image downloads everything over the network. Choose based on your connection speed.

Once the installer loads, you see the hub. Click each spoke to configure it. The interface marks incomplete sections with a warning triangle. Resolve every triangle before the Begin Installation button activates. The hub design forces you to acknowledge each configuration domain. You cannot skip storage and expect the installer to guess your intent. You cannot skip network and expect a netinstall to succeed. The triangles are intentional friction. They prevent silent misconfigurations.

Click through each spoke deliberately. The installer will not proceed until every prerequisite is met.

Storage layout and partitioning

Storage is where most first-time installers make mistakes. Anaconda offers three paths. Use Automatic when you want a standard layout with an EFI system partition, a /boot directory, and an LVM volume group for / and swap. Use Custom when you need to define exact mount points, resize existing partitions, or exclude specific disks from the installation. Use Advanced Custom (Blivet-GUI) when you require a graphical partition editor that shows free space, partition flags, and filesystem types in a single view.

The automatic layout works for 90 percent of desktop installs. It creates an LVM volume group so you can resize / later without touching /boot. LVM abstracts physical disks into logical volumes. You can expand a logical volume as long as the volume group has free space. This flexibility matters when your home directory fills up months after installation.

If you are dual-booting with Windows, shrink the Windows partition from within Windows first. Linux tools can resize NTFS, but Windows refuses to boot if the filesystem journal is out of sync. Leave at least 20 gigabytes of free space. Select that free space in Anaconda. The installer will place the new partitions in the unallocated region. Do not delete the Windows partition unless you are certain you will not need it. Anaconda will overwrite the free space. It will not touch active partitions.

Verify the partition table before committing. A mismatched GPT and MBR signature will trigger a rollback.

Network configuration and hostname

Click Network & Host Name. Toggle the interface switch to bring the link up. Set a hostname if your network requires one. The netinstall image requires a working connection to download packages. The live image uses the connection to fetch updates during installation. If your interface fails to activate, check the physical link first. Wireless networks require a WPA key. Wired networks usually get an IP via DHCP. Static IPs require manual configuration in the spoke.

Fedora uses NetworkManager for runtime management. The installer configures the initial connection profile. You can change it later with nmcli or the GNOME settings panel. The installer writes the connection to /etc/NetworkManager/system-connections/. NetworkManager reads those files on boot. If you edit the files manually, run nmcli connection reload to apply changes. The runtime config and persistent config diverge if you skip the reload.

Test the connection before proceeding. A dropped mirror will halt the package download phase.

Committing the installation

Click Begin Installation. The right panel opens. Set a root password. Create a user account. Check the box to grant administrator privileges. This gives the user sudo access. Using a regular account with sudo is safer than logging in as root. The installer writes packages to disk. This phase takes time. Do not interrupt it. If the system loses power, the disk transaction rolls back to the last consistent state. You will need to reboot and run the installer again.

SELinux is enabled by default. The installer sets the correct contexts for /home, /var, and /boot. Do not disable SELinux during installation unless you have a specific hardware driver that refuses to load under enforced mode. You can switch to permissive mode later with setenforce 0 and debug the denials in journalctl -t setroubleshoot. The one-line summaries in that journal stream tell you exactly which process was blocked and why.

Let the transaction complete. Interrupting the write phase corrupts the package database.

Verifying the fresh system

The system reboots. GNOME Initial Setup may run. It asks for locale confirmation and online account sync. Skip it if you prefer to configure the system manually. Log in to the desktop. Open a terminal. Verify the release version.

cat /etc/fedora-release
# Confirms the exact Fedora release installed
# The file is maintained by the release package
# It updates automatically during major version upgrades

Check the storage layout to confirm the partitioning scheme.

lsblk -f
# Shows block devices, mount points, and filesystem types
# Verify that EFI, /boot, and LVM volumes match your expectations
# Look for the correct UUIDs if you plan to edit fstab later

Review the system journal to ensure services started cleanly.

journalctl -xe
# The x flag adds explanatory context to error lines
# The e flag jumps to the end of the journal
# Most sysadmins type this muscle-memory style after boot

Run journalctl first. Read the actual error before guessing.

Common pitfalls and error patterns

The installer will refuse to proceed if it detects conflicting partition tables. A disk with both MBR and GPT signatures triggers a warning. Wipe the disk signature if you are formatting a fresh drive. The installer will also pause if it finds an existing /boot partition that is too small. Fedora requires at least 1 gigabyte for /boot to hold multiple kernel versions. Resize the partition or select a different disk.

Network timeouts during netinstall are common on slow connections. Switch to the live ISO if the mirror drops packets. The live image caches the base system on the USB drive. It only downloads updates. Package conflicts appear during the transaction phase. The installer prints Error: Transaction test error: package kernel-core conflicts with kernel-core-extra. The conflict is intentional. Read the dependency tree before forcing. Forcing breaks the boot chain.

SELinux denials show up in journalctl -t setroubleshoot with a one-line summary. Read those before disabling SELinux. Disabling it masks the real problem. The problem is usually a missing file context or a misconfigured service port. Fix the context with restorecon -Rv /path. Reload the firewall with firewall-cmd --reload after every rule change. Otherwise the runtime config and the persistent config diverge.

Trust the package manager. Manual file edits drift, snapshots stay.

Automation with Kickstart

Manual installation works for one machine. It fails at scale. Anaconda supports Kickstart files for unattended deployments. A Kickstart file is a plain text configuration that pre-answers every spoke. You pass it via the kernel command line during boot.

inst.ks=https://example.com/fedora-42.ks
# Tells Anaconda to fetch the Kickstart file from the remote URL
# The installer reads the file before showing the GUI
# All spokes populate automatically from the directives

The file contains sections for partitioning, network, user creation, and package selection. You can host it on a local web server, a network share, or a USB drive. The installer validates the syntax before committing. If a directive is missing, Anaconda falls back to interactive mode for that spoke. This hybrid behavior prevents silent failures. You can test a Kickstart file by booting the ISO and appending the inst.ks parameter. Watch the installer populate the fields. Verify the layout before deploying to production hardware.

Fedora's release cadence is 6 months. The N-2 release goes EOL when N+1 ships. Plan upgrades on that cycle. Use dnf system-upgrade for crossing major releases. Do not conflate it with dnf upgrade --refresh. They are different commands.

Test the Kickstart file in a virtual machine. A broken directive will halt the deployment fleet.

Choosing your installation path

Use the live ISO when you need a working desktop environment before installation or when your network connection is unstable. Use the netinstall image when you want a minimal base system and have a reliable high-speed connection. Use Automatic partitioning when you are installing on a dedicated disk with no existing data. Use Custom partitioning when you are dual-booting or need to preserve existing Linux installations. Use Kickstart when you are deploying more than three identical machines or need reproducible build environments. Stick to the default LVM layout unless you have a specific requirement for btrfs or raw partitions.

Snapshot the system before the upgrade. Future-you will thank you.

Where to go next