Skip to content

Arch Linux Installation Guide

Mattscreative edited this page Dec 5, 2025 · 4 revisions

Arch Linux Installation Guide

Complete beginner-friendly step-by-step guide for installing Arch Linux, including partitioning, base system installation, and bootloader configuration.


Table of Contents

  1. Pre-Installation Checklist
  2. Booting the Installation Media
  3. Verifying Boot Mode
  4. Connecting to the Internet
  5. Updating System Clock
  6. Partitioning the Disk
  7. Formatting Partitions
  8. Mounting the Filesystems
  9. Installing Essential Packages
  10. Configuring the System
  11. Installing Bootloader
  12. Rebooting
  13. Post-Installation

Pre-Installation Checklist

What You Need

Before starting:

  • Bootable USB drive with Arch Linux ISO (November 2025 or later recommended)
  • Internet connection (wired recommended)
  • Backup of important data
  • Hardware specifications noted
  • At least 1-2 hours available
  • ArchWiki open for reference

Installation Methods

Two ways to install Arch Linux:

  1. Archinstall (Recommended for beginners)
  • Interactive installer (Archinstall 3.0.12 in November 2025 ISO)
  • Guided setup process
  • Easier for new users
  1. Manual Installation (This guide)
  • Full control over installation
  • Learn how Arch works
  • More customization

Important Notes

Read before proceeding:

  • This will erase your disk (unless dual-booting)
  • Backup everything important
  • Have ArchWiki open: https://wiki.archlinux.org/title/Installation_guide
  • Take your time - don't rush
  • 2025 Update: November 2025 ISO includes Linux 6.17 kernel and Archinstall 3.0.12

Booting the Installation Media

Boot from USB

Steps:

  1. Insert USB drive with Arch Linux ISO
  2. Power on computer
  3. Access boot menu
  • Press F12, F8, F10, or Esc (varies by manufacturer)
  • Or set USB as first boot in BIOS/UEFI
  1. Select USB drive from boot menu
  2. Wait for boot - You'll see Arch Linux boot messages

Boot Menu Options

What you'll see:

  • Arch Linux install medium (x86_64, UEFI)
  • Arch Linux install medium (x86_64, BIOS)
  • Archinstall (if using November 2025+ ISO)

Using Archinstall (Easier Method)

For beginners, use Archinstall:

# After booting, run:
archinstall

# Follow interactive prompts:
# - Language
# - Keyboard layout
# - Disk partitioning
# - Desktop environment
# - User account
# - Bootloader

Note: Archinstall 3.0.12 (November 2025) includes improved reliability and security features.

Choose based on your system:

  • UEFI: Modern systems (2012+)
  • BIOS: Older systems

After Boot

You'll see:

root@archiso ~ #

This is the live environment - a temporary system running from USB.


Verifying Boot Mode

Check Boot Mode

Verify UEFI or BIOS:

# Check if UEFI
ls /sys/firmware/efi

Results:

  • Directory exists: UEFI mode
  • No such file or directory: BIOS mode

Why it matters:

  • UEFI: Use EFI System Partition (ESP)
  • BIOS: Use MBR partition table

Connecting to the Internet

Check Connection

Verify internet access:

# Check network interfaces
ip link
# Shows network interfaces (eth0, wlan0, etc.)

# Test connection
ping -c 3 archlinux.org

Expected output:

PING archlinux.org (95.217.163.246) 56(84) bytes of data.
64 bytes from 95.217.163.246: icmp_seq=1 ttl=54 time=45.2 ms
64 bytes from 95.217.163.246: icmp_seq=2 ttl=54 time=44.8 ms
64 bytes from 95.217.163.246: icmp_seq=3 ttl=54 time=45.1 ms

Wired Connection (Ethernet)

Usually works automatically:

# Check if connected
ip link show
# Look for "state UP"

# If not connected, try:
dhcpcd
# Requests IP address via DHCP

Wireless Connection (WiFi)

Connect to WiFi:

# Scan for networks
iwctl station wlan0 scan
iwctl station wlan0 get-networks

# Connect to network
iwctl station wlan0 connect "NetworkName"
# Enter password when prompted

# Check connection
ping -c 3 archlinux.org

Explanation:

  • iwctl: Interactive WiFi control tool
  • station wlan0: WiFi interface
  • scan: Scan for networks
  • get-networks: List available networks
  • connect: Connect to network

⏰ Updating System Clock

Set System Time

Update system clock:

# Update system clock
timedatectl set-ntp true

# Verify
timedatectl status

Expected output:

               Local time: Mon 2024-01-15 10:30:00 UTC
           Universal time: Mon 2024-01-15 10:30:00 UTC
                 RTC time: Mon 2024-01-15 10:30:00
                Time zone: UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Explanation:

  • timedatectl set-ntp true: Enables NTP synchronization
  • timedatectl status: Shows current time settings

Partitioning the Disk

Identify Disks

List available disks:

# List block devices
lsblk

Expected output:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 500G  0 disk
├─sda1   8:1    0   512M  0 part
└─sda2   8:2    0 499.5G  0 part

Explanation:

  • sda: First disk
  • sda1, sda2: Partitions on disk
  • SIZE: Disk/partition size

Partitioning Schemes

UEFI with GPT (Recommended):

Partition Size Type Mount Point
EFI System Partition 512 MB EFI System /boot/efi
Root Remaining Linux filesystem /
Swap 2-8 GB (optional) Linux swap (swap)

BIOS with MBR:

Partition Size Type Mount Point
Root Remaining Linux filesystem /
Swap 2-8 GB (optional) Linux swap (swap)

Using fdisk (Recommended)

Partition disk:

# Replace /dev/sda with your disk
fdisk /dev/sda

fdisk commands:

Command (m for help): g    # Create new GPT partition table
Command (m for help): n    # Create new partition
Partition number (1-128, default 1): 1
First sector (2048-104857566, default 2048): [Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-104857566, default 104857566): +512M

Command (m for help): t    # Change partition type
Selected partition 1
Hex code or alias (type L to list all): EF00    # EFI System

Command (m for help): n    # Create root partition
Partition number (2-128, default 2): 2
First sector (1050624-104857566, default 1050624): [Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (default 104857566): [Enter]

Command (m for help): w    # Write changes and exit

Explanation:

  • g: Creates GPT partition table (UEFI)
  • n: Creates new partition
  • t: Changes partition type
  • EF00: EFI System partition type
  • w: Writes changes to disk

** Warning**: This will erase all data on the disk!

Using cfdisk (Easier)

Graphical partitioner:

cfdisk /dev/sda

Steps:

  1. Select partition table type (GPT for UEFI)
  2. Create partitions using menu
  3. Set partition types
  4. Write changes

Formatting Partitions

Format EFI Partition (UEFI)

Format EFI System Partition:

# Replace /dev/sda1 with your EFI partition
mkfs.fat -F32 /dev/sda1

Explanation:

  • mkfs.fat: Creates FAT32 filesystem
  • -F32: FAT32 format
  • Required for UEFI boot

Format Root Partition

Format root partition:

# Replace /dev/sda2 with your root partition
mkfs.ext4 /dev/sda2

Alternative filesystems:

# Btrfs (with snapshots)
mkfs.btrfs /dev/sda2

# XFS
mkfs.xfs /dev/sda2

Explanation:

  • mkfs.ext4: Creates ext4 filesystem (most common)
  • mkfs.btrfs: Creates btrfs filesystem (snapshots, compression)
  • mkfs.xfs: Creates XFS filesystem (high performance)

Create Swap (Optional)

Create swap partition:

# Replace /dev/sda3 with your swap partition
mkswap /dev/sda3
swapon /dev/sda3

Or use swap file (alternative):

# Create swap file after mounting root
fallocate -l 4G /mnt/swapfile
chmod 600 /mnt/swapfile
mkswap /mnt/swapfile
swapon /mnt/swapfile

Explanation:

  • mkswap: Formats partition as swap
  • swapon: Activates swap
  • fallocate: Creates file of specified size
  • chmod 600: Sets secure permissions

Mounting the Filesystems

Mount Root Partition

Mount root filesystem:

# Replace /dev/sda2 with your root partition
mount /dev/sda2 /mnt

Mount EFI Partition (UEFI)

Mount EFI System Partition:

# Create mount point
mkdir -p /mnt/boot/efi

# Mount EFI partition
mount /dev/sda1 /mnt/boot/efi

Verify Mounts

Check mounted filesystems:

# List mounted filesystems
lsblk

Expected output:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 500G  0 disk
├─sda1   8:1    0   512M  0 part /mnt/boot/efi
└─sda2   8:2    0 499.5G  0 part /mnt

Installing Essential Packages

Install Base System

Install base packages and kernel:

# Install base system
pacstrap /mnt base linux linux-firmware

# For LTS kernel (more stable)
pacstrap /mnt base linux-lts linux-firmware

# For both kernels
pacstrap /mnt base linux linux-lts linux-firmware

Explanation:

  • pacstrap: Installs packages to mounted filesystem
  • base: Essential Arch Linux packages
  • linux: Latest kernel
  • linux-lts: Long-term support kernel
  • linux-firmware: Hardware firmware

Install Additional Packages (Optional)

Useful packages:

# Text editor
pacstrap /mnt vim nano

# Network tools
pacstrap /mnt networkmanager

# Bootloader
pacstrap /mnt grub efibootmgr    # For UEFI
pacstrap /mnt grub                # For BIOS

Configuring the System

Generate fstab

Generate filesystem table:

# Generate fstab
genfstab -U /mnt >> /mnt/etc/fstab

# Verify
cat /mnt/etc/fstab

Expected output:

# /dev/sda2
UUID=xxxx-xxxx-xxxx / ext4 rw,relatime 0 1

# /dev/sda1
UUID=XXXX-XXXX /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2

Explanation:

  • genfstab: Generates filesystem table
  • -U: Uses UUIDs (recommended)
  • fstab: Defines mount points at boot

Chroot into System

Enter installed system:

# Chroot into new system
arch-chroot /mnt

Prompt changes to:

[root@archiso /]#

Set Timezone

Set system timezone:

# List timezones
timedatectl list-timezones

# Set timezone (example: America/New_York)
ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime

# Or use timedatectl
timedatectl set-timezone America/New_York

# Generate /etc/adjtime
hwclock --systohc

Set Locale

Configure locale:

# Edit locale file
vim /etc/locale.gen
# Or
nano /etc/locale.gen

Uncomment desired locale:

# Uncomment (remove #):
en_US.UTF-8 UTF-8

Generate locale:

locale-gen

Set locale:

echo "LANG=en_US.UTF-8" > /etc/locale.conf

Set Hostname

Set computer name:

# Set hostname
echo "myhostname" > /etc/hostname

# Add to hosts file
vim /etc/hosts

Add to /etc/hosts:

127.0.0.1   localhost
::1         localhost
127.0.1.1   myhostname.localdomain myhostname

Set Root Password

Set root password:

passwd
# Enter password twice

** Important**: Remember this password!

Create User Account

Create regular user:

# Create user
useradd -m -G wheel username

# Set password
passwd username

# Install sudo
pacman -S sudo

# Edit sudoers
EDITOR=vim visudo

Uncomment this line:

%wheel ALL=(ALL) ALL

Explanation:

  • useradd -m: Creates user with home directory
  • -G wheel: Adds to wheel group (sudo access)
  • visudo: Safely edits sudoers file

Install Additional Software

Useful packages:

# Network manager
pacman -S networkmanager

# Text editors
pacman -S vim nano

# Documentation
pacman -S man-db man-pages texinfo

Installing Bootloader

GRUB (Recommended)

For UEFI systems:

# Install GRUB
pacman -S grub efibootmgr

# Install to EFI partition
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

# Generate GRUB config
grub-mkconfig -o /boot/grub/grub.cfg

For BIOS systems:

# Install GRUB
pacman -S grub

# Install to disk
grub-install --target=i386-pc /dev/sda

# Generate GRUB config
grub-mkconfig -o /boot/grub/grub.cfg

Explanation:

  • grub-install: Installs GRUB bootloader
  • --target=x86_64-efi: UEFI target
  • --efi-directory: EFI partition mount point
  • grub-mkconfig: Generates boot menu configuration

systemd-boot (Alternative)

For UEFI only:

# Install systemd-boot
bootctl install

# Create boot entry
bootctl --path=/boot/efi install

Rebooting

Exit and Reboot

Exit chroot and reboot:

# Exit chroot
exit

# Unmount filesystems
umount -R /mnt

# Reboot
reboot

Remove USB when system reboots.


Post-Installation

First Boot

After reboot:

  1. Login as root or your user
  2. Enable NetworkManager (if installed):
    sudo systemctl enable --now NetworkManager
  3. Connect to network:
    nmtui    # Text-based network manager
  4. Update system:
    pacman -Syu

Essential Next Steps

Complete setup:

  • Install desktop environment (if desired)
  • Install graphics drivers
  • Configure audio
  • Install additional software
  • Set up firewall
  • Configure user account

Summary

This guide covered:

  1. Booting installation media - Starting from USB
  2. Partitioning - Creating disk partitions
  3. Formatting - Creating filesystems
  4. Mounting - Mounting filesystems
  5. Installing packages - Base system installation
  6. Configuration - System setup
  7. Bootloader - GRUB installation
  8. Rebooting - First boot

Key Takeaways:

  • Follow steps carefully
  • Have ArchWiki open for reference
  • Take your time
  • Backup everything first
  • Verify each step before proceeding

Next Steps


This guide is based on the ArchWiki Installation Guide. For the most up-to-date information, always refer to the official ArchWiki.

Clone this wiki locally