How to Install Arch Linux
Install Arch Linux using the guided archinstall script or the full manual method — covering partitioning, base system, bootloader, and first-boot setup.
Before you start
- ▸A USB drive of at least 1 GB for the bootable installer
- ▸A target machine with UEFI firmware (Secure Boot temporarily disabled)
- ▸An active internet connection during installation
- ▸Basic familiarity with the Linux command line and disk concepts
Arch Linux gives you a minimal, rolling-release base and the freedom to build exactly the system you want. The official installer image ships with archinstall, a guided script that covers most common setups in minutes. Below that sits the fully manual method, which every serious Arch user should understand at least once. Both methods are covered here, starting with the pre-boot checklist that applies to both.
Prerequisites and Pre-Boot Setup
Download the latest ISO from archlinux.org/download and verify the PGP signature before writing it to a USB drive. Use a drive of at least 1 GB.
# Verify the ISO signature (replace filename with actual ISO name)
gpg --keyserver-options auto-key-retrieve --verify archlinux-x86_64.iso.sig
# Write the ISO to a USB drive (replace /dev/sdX with your device)
dd bs=4M if=archlinux-x86_64.iso of=/dev/sdX conv=fsync oflag=direct status=progress
Boot from the USB. In your firmware (UEFI), disable Secure Boot for the install; it can be re-enabled later with a signed bootloader. Confirm you are in UEFI mode by checking that /sys/firmware/efi/efivars is populated.
ls /sys/firmware/efi/efivars
Connect to the Internet
A wired connection is detected automatically. For Wi-Fi, use iwctl.
iwctl
# Inside the iwctl prompt:
device list
station wlan0 scan
station wlan0 get-networks
station wlan0 connect "YourSSID"
exit
# Confirm connectivity
ping -c 3 archlinux.org
Method 1: Install with archinstall
archinstall is a Python-based guided installer included on every Arch ISO since 2021. It handles partitioning, locale, network, desktop environments, and bootloader configuration. It is the recommended path for most users who want a working system quickly.
archinstall
The interactive menu walks you through the following choices in order:
- Mirrors — select your region to pull the fastest servers.
- Locale / keyboard layout — set language and keyboard.
- Drive(s) — choose the target disk and a partitioning strategy. "Best-effort" creates a sensible GPT layout automatically. You can also define custom partitions here.
- Disk encryption — optional LUKS2 full-disk encryption with a passphrase.
- Bootloader — Grub or systemd-boot; systemd-boot is lighter and well-supported on UEFI.
- Swap — swapfile or none.
- Hostname, root password, user account.
- Profile — Desktop (GNOME, KDE Plasma, Sway, etc.), server, or minimal.
- Audio — PipeWire (recommended) or PulseAudio.
- Additional packages — type any extra packages, space-separated.
- Network configuration — NetworkManager is the right choice for desktops.
After confirming the summary screen, archinstall partitions the disk, installs the base system, and configures everything. When it finishes, reboot and remove the USB drive.
reboot
Method 2: Manual Installation
The manual method gives you full control over every decision. It also ensures you actually understand how an Arch system is constructed, which matters when something breaks at 2 AM.
Step 1: Partition the Disk
Use fdisk -l to identify your target disk, then partition it with gdisk or fdisk. A standard UEFI layout needs at least an EFI System Partition (ESP) and a root partition.
fdisk /dev/sda
# Inside fdisk:
# g — create GPT table
# n — new partition (EFI): +512M, type 1 (EFI System)
# n — new partition (root): remaining space, type 20 (Linux filesystem)
# w — write and exit
Step 2: Format and Mount
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mount /dev/sda2 /mnt
mount --mkdir /dev/sda1 /mnt/boot
If you want Btrfs with subvolumes (useful for snapshots), replace the ext4 line with mkfs.btrfs /dev/sda2 and create @ and @home subvolumes before mounting.
Step 3: Install the Base System
pacstrap -K /mnt base linux linux-firmware
Add packages you know you need now: base-devel vim networkmanager man-db man-pages. A kernel for AMD CPUs benefits from amd-ucode; Intel needs intel-ucode. Microcode is important — include it.
pacstrap -K /mnt base linux linux-firmware base-devel vim networkmanager amd-ucode man-db
Step 4: Generate fstab
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab # verify it looks correct
Step 5: Chroot and Configure
arch-chroot /mnt
# Time zone (replace with your own)
ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
hwclock --systohc
# Locale
sed -i 's/#en_US.UTF-8/en_US.UTF-8/' /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
# Hostname
echo "myhostname" > /etc/hostname
# Set root password
passwd
# Create a regular user
useradd -mG wheel youruser
passwd youruser
# Uncomment %wheel ALL=(ALL:ALL) ALL in sudoers:
VISUDO_EDITOR=vim visudo
Step 6: Install and Configure the Bootloader
systemd-boot is simple and requires no extra packages on UEFI systems.
bootctl install
# Create the boot entry (adjust root UUID and microcode as needed)
ROOT_UUID=$(blkid -s UUID -o value /dev/sda2)
cat > /boot/loader/entries/arch.conf << EOF
title Arch Linux
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options root=UUID=${ROOT_UUID} rw quiet
EOF
# Set default entry and timeout
cat > /boot/loader/loader.conf << EOF
default arch.conf
timeout 3
editor no
EOF
Step 7: Enable Essential Services and Reboot
systemctl enable NetworkManager
mkinitcpio -P # regenerate initramfs
exit # leave chroot
umount -R /mnt
reboot
Post-Install: Desktop and AUR
After the first boot, log in as your regular user. Install a desktop environment or window manager with pacman. Example with KDE Plasma and SDDM:
sudo pacman -Syu plasma sddm
sudo systemctl enable --now sddm
For AUR access, install paru or yay. These are AUR helpers built on top of pacman that handle PKGBUILD fetching and building automatically.
# Build paru from AUR (requires base-devel and git)
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/paru.git
cd paru && makepkg -si
Verification
After rebooting into the installed system, confirm the key components are working.
# Confirm UEFI boot
bootctl status
# Check running services
systemctl list-units --type=service --state=running
# Verify network
ip link
ping -c 3 archlinux.org
# Check for microcode load
dmesg | grep microcode
Troubleshooting
- System won't boot after install: Boot back from the USB, mount your partitions, and
arch-chroot /mnt. Check/boot/loader/entries/arch.conf— a wrong UUID is the most common cause. - No internet after first boot: Run
sudo systemctl enable --now NetworkManager. If you forgot to enable it before rebooting, this is the fix. - archinstall fails partitioning: Make sure the disk is not mounted and has no active device-mapper layers. Run
lsblkandwipefs -a /dev/sdXto clear stale signatures, then try again. - Pacman keyring errors: Run
sudo pacman -Sy archlinux-keyringfrom the live environment or chroot before continuing. - initramfs panic / root not found: Regenerate initramfs with
mkinitcpio -Pfrom chroot and double-check theoptions root=UUID=...line in your boot entry matchesblkidoutput.
Frequently asked questions
- What is the difference between archinstall and the manual method?
- archinstall is an interactive Python script that automates partitioning, package selection, and configuration through a menu. The manual method requires you to run each command yourself, giving you complete visibility and control over every setting.
- Should I use systemd-boot or GRUB?
- systemd-boot is simpler, ships with systemd, and works well for single-OS UEFI setups. GRUB is the better choice if you need BIOS/legacy boot support, multi-OS detection, or complex chainloading scenarios.
- Do I need to reinstall after a major kernel or system update?
- No. Arch is a rolling-release distribution. Run sudo pacman -Syu regularly to keep everything current — there are no version upgrades or reinstalls required.
- Is full-disk encryption supported during install?
- Yes. archinstall offers LUKS2 encryption as a menu option. In the manual method, set up LUKS2 with cryptsetup before formatting and mounting, then add the cryptdevice kernel parameter to your boot entry.
- Can I install Arch Linux on a system that already has Windows?
- Yes, but shrink the Windows partition from within Windows first using Disk Management. During the Arch install, create new partitions in the freed space. You can reuse the existing EFI System Partition instead of creating a new one — just mount it and do not format it.
Related guides
Alpine Linux on Servers and in Containers
Deploy Alpine Linux on servers and in containers: musl vs glibc trade-offs, apk package management, OpenRC init, security hardening, and container best practices.
Arch vs EndeavourOS vs Manjaro
Arch, EndeavourOS, and Manjaro compared honestly: repository differences, AUR compatibility, install experience, and which one suits your actual workflow.
The Best Linux Distros for Beginners
The best Linux distros for beginners in 2024: Ubuntu, Linux Mint, Fedora, and Pop!_OS compared with honest pros, cons, and setup tips.
The Best Linux Distros for Servers
Compare Ubuntu LTS, Debian, AlmaLinux, Rocky Linux, RHEL, Arch, and SLES for server use: support lifecycles, stability trade-offs, and how to choose the right fit.