-
-
Notifications
You must be signed in to change notification settings - Fork 1
Arch Linux Installation Guide
Complete beginner-friendly step-by-step guide for installing Arch Linux, including partitioning, base system installation, and bootloader configuration.
- Pre-Installation Checklist
- Booting the Installation Media
- Verifying Boot Mode
- Connecting to the Internet
- Updating System Clock
- Partitioning the Disk
- Formatting Partitions
- Mounting the Filesystems
- Installing Essential Packages
- Configuring the System
- Installing Bootloader
- Rebooting
- Post-Installation
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
Two ways to install Arch Linux:
- Archinstall (Recommended for beginners)
- Interactive installer (Archinstall 3.0.12 in November 2025 ISO)
- Guided setup process
- Easier for new users
- Manual Installation (This guide)
- Full control over installation
- Learn how Arch works
- More customization
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
Steps:
- Insert USB drive with Arch Linux ISO
- Power on computer
- Access boot menu
- Press
F12,F8,F10, orEsc(varies by manufacturer) - Or set USB as first boot in BIOS/UEFI
- Select USB drive from boot menu
- Wait for boot - You'll see Arch Linux boot messages
What you'll see:
- Arch Linux install medium (x86_64, UEFI)
- Arch Linux install medium (x86_64, BIOS)
- Archinstall (if using November 2025+ ISO)
For beginners, use Archinstall:
# After booting, run:
archinstall
# Follow interactive prompts:
# - Language
# - Keyboard layout
# - Disk partitioning
# - Desktop environment
# - User account
# - BootloaderNote: Archinstall 3.0.12 (November 2025) includes improved reliability and security features.
Choose based on your system:
- UEFI: Modern systems (2012+)
- BIOS: Older systems
You'll see:
root@archiso ~ #
This is the live environment - a temporary system running from USB.
Verify UEFI or BIOS:
# Check if UEFI
ls /sys/firmware/efiResults:
- Directory exists: UEFI mode
- No such file or directory: BIOS mode
Why it matters:
- UEFI: Use
EFI System Partition(ESP) - BIOS: Use
MBRpartition table
Verify internet access:
# Check network interfaces
ip link
# Shows network interfaces (eth0, wlan0, etc.)
# Test connection
ping -c 3 archlinux.orgExpected 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
Usually works automatically:
# Check if connected
ip link show
# Look for "state UP"
# If not connected, try:
dhcpcd
# Requests IP address via DHCPConnect 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.orgExplanation:
-
iwctl: Interactive WiFi control tool -
station wlan0: WiFi interface -
scan: Scan for networks -
get-networks: List available networks -
connect: Connect to network
Update system clock:
# Update system clock
timedatectl set-ntp true
# Verify
timedatectl statusExpected 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
List available disks:
# List block devices
lsblkExpected 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
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) |
Partition disk:
# Replace /dev/sda with your disk
fdisk /dev/sdafdisk 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!
Graphical partitioner:
cfdisk /dev/sdaSteps:
- Select partition table type (GPT for UEFI)
- Create partitions using menu
- Set partition types
- Write changes
Format EFI System Partition:
# Replace /dev/sda1 with your EFI partition
mkfs.fat -F32 /dev/sda1Explanation:
-
mkfs.fat: Creates FAT32 filesystem -
-F32: FAT32 format - Required for UEFI boot
Format root partition:
# Replace /dev/sda2 with your root partition
mkfs.ext4 /dev/sda2Alternative filesystems:
# Btrfs (with snapshots)
mkfs.btrfs /dev/sda2
# XFS
mkfs.xfs /dev/sda2Explanation:
-
mkfs.ext4: Creates ext4 filesystem (most common) -
mkfs.btrfs: Creates btrfs filesystem (snapshots, compression) -
mkfs.xfs: Creates XFS filesystem (high performance)
Create swap partition:
# Replace /dev/sda3 with your swap partition
mkswap /dev/sda3
swapon /dev/sda3Or use swap file (alternative):
# Create swap file after mounting root
fallocate -l 4G /mnt/swapfile
chmod 600 /mnt/swapfile
mkswap /mnt/swapfile
swapon /mnt/swapfileExplanation:
-
mkswap: Formats partition as swap -
swapon: Activates swap -
fallocate: Creates file of specified size -
chmod 600: Sets secure permissions
Mount root filesystem:
# Replace /dev/sda2 with your root partition
mount /dev/sda2 /mntMount EFI System Partition:
# Create mount point
mkdir -p /mnt/boot/efi
# Mount EFI partition
mount /dev/sda1 /mnt/boot/efiCheck mounted filesystems:
# List mounted filesystems
lsblkExpected 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
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-firmwareExplanation:
-
pacstrap: Installs packages to mounted filesystem -
base: Essential Arch Linux packages -
linux: Latest kernel -
linux-lts: Long-term support kernel -
linux-firmware: Hardware firmware
Useful packages:
# Text editor
pacstrap /mnt vim nano
# Network tools
pacstrap /mnt networkmanager
# Bootloader
pacstrap /mnt grub efibootmgr # For UEFI
pacstrap /mnt grub # For BIOSGenerate filesystem table:
# Generate fstab
genfstab -U /mnt >> /mnt/etc/fstab
# Verify
cat /mnt/etc/fstabExpected 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
Enter installed system:
# Chroot into new system
arch-chroot /mntPrompt changes to:
[root@archiso /]#
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 --systohcConfigure locale:
# Edit locale file
vim /etc/locale.gen
# Or
nano /etc/locale.genUncomment desired locale:
# Uncomment (remove #):
en_US.UTF-8 UTF-8
Generate locale:
locale-genSet locale:
echo "LANG=en_US.UTF-8" > /etc/locale.confSet computer name:
# Set hostname
echo "myhostname" > /etc/hostname
# Add to hosts file
vim /etc/hostsAdd to /etc/hosts:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
Set root password:
passwd
# Enter password twice** Important**: Remember this password!
Create regular user:
# Create user
useradd -m -G wheel username
# Set password
passwd username
# Install sudo
pacman -S sudo
# Edit sudoers
EDITOR=vim visudoUncomment 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
Useful packages:
# Network manager
pacman -S networkmanager
# Text editors
pacman -S vim nano
# Documentation
pacman -S man-db man-pages texinfoFor 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.cfgFor 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.cfgExplanation:
-
grub-install: Installs GRUB bootloader -
--target=x86_64-efi: UEFI target -
--efi-directory: EFI partition mount point -
grub-mkconfig: Generates boot menu configuration
For UEFI only:
# Install systemd-boot
bootctl install
# Create boot entry
bootctl --path=/boot/efi installExit chroot and reboot:
# Exit chroot
exit
# Unmount filesystems
umount -R /mnt
# Reboot
rebootRemove USB when system reboots.
After reboot:
- Login as root or your user
-
Enable NetworkManager (if installed):
sudo systemctl enable --now NetworkManager -
Connect to network:
nmtui # Text-based network manager -
Update system:
pacman -Syu
Complete setup:
- Install desktop environment (if desired)
- Install graphics drivers
- Configure audio
- Install additional software
- Set up firewall
- Configure user account
This guide covered:
- Booting installation media - Starting from USB
- Partitioning - Creating disk partitions
- Formatting - Creating filesystems
- Mounting - Mounting filesystems
- Installing packages - Base system installation
- Configuration - System setup
- Bootloader - GRUB installation
- Rebooting - First boot
Key Takeaways:
- Follow steps carefully
- Have ArchWiki open for reference
- Take your time
- Backup everything first
- Verify each step before proceeding
- Arch Linux Post-Installation - Essential steps after installation
- Arch Linux Package Management - Using pacman and AUR
- Arch Linux System Configuration - System setup and services
- ArchWiki Installation Guide: https://wiki.archlinux.org/title/Installation_guide
This guide is based on the ArchWiki Installation Guide. For the most up-to-date information, always refer to the official ArchWiki.