Appendix G

Installing
Arch Linux

Arch doesn't hold your hand. That's the point. Two paths: archinstall for a guided setup that still teaches you the decisions, or a full manual install that walks you through every command.

2 install paths
Manual included
AUR setup

Read This First

Arch is different.

Debian installs a working system and asks you to configure it afterward. Arch installs nothing except a base system and asks you to build the rest. There is no graphical installer, no default desktop, no guided partitioning in the traditional sense. What you get is exactly what you add.

This is not a flaw — it's the design. After an Arch install you know every package on your machine because you put it there. When something breaks, you know where to look. The Arch Wiki is the best Linux documentation in existence, and you will use it constantly. That's normal.

Prerequisites

  • You've read Appendix C — Partitioning and decided on your partition layout
  • You have a working internet connection during install (ethernet is easier)
  • You're comfortable with the terminal basics from Lesson 04
  • A USB drive (≥1GB) to write the ISO

Two paths

archinstall
Guided TUI installer · recommended for first install
A Python script included on the Arch ISO. Asks you about disk, locale, desktop, user account, and boots a working system. Still makes you understand the choices — it doesn't hide them, it just structures them. Faster than manual. Good starting point.
Manual install
Every command by hand · full understanding
The traditional Arch install — partition, format, mount, bootstrap, chroot, configure, install bootloader. Takes 30–60 minutes the first time. Do this at least once. You will understand Linux partitioning, the chroot environment, and the boot process far better for having done it.

Get and write the ISO

# Download from archlinux.org/download — use a mirror near you
# Verify the signature (PGP key listed on the download page)
gpg --keyserver-options auto-key-retrieve --verify archlinux-*.iso.sig

# Write to USB (replace sdX with your device — confirm with lsblk first)
sudo dd if=archlinux-*.iso of=/dev/sdX bs=4M status=progress conv=fsync
sudo sync

Path A

Using archinstall.

Boot the ISO, connect to the internet, and run one command. archinstall walks you through the same decisions as a manual install through a navigable menu. Each choice is explained.

1
Boot the ISO and get online
Ethernet connects automatically. For Wi-Fi, use iwctl:
iwctl
# Inside iwctl:
device list
station wlan0 scan
station wlan0 get-networks
station wlan0 connect "NetworkName"
exit

# Confirm connectivity
ping -c 3 archlinux.org
2
Run archinstall
archinstall is already on the ISO. It presents a menu — work through each item top to bottom before selecting Install.
archinstall
Key choices to make in the menu:
Mirrors → select your country
Locales → en_US.UTF-8 (or your locale)
Disk config → Use best-effort layout OR manual partitioning
Filesystem → ext4 for simplicity; btrfs for snapshots
Swap → enable (swapfile)
Hostname → your machine name
Root password → set one
User account → create a non-root user, add to wheel group
Profile → Desktop → choose your DE/WM
Audio → Pipewire
Kernels → linux (default) or linux-lts for stability
Bootloader → Grub (simplest); systemd-boot is fine if you know EFI
When all items are configured, select Install. archinstall will partition, format, install packages, and configure the system. It may ask whether to chroot in afterward — do it to make any manual adjustments, then exit and reboot.
3
First boot
Remove the USB and boot into your new system. Log in as your user, then jump to Post-install below.

Path B — The Real Install

Manual, step by step.

Same first step as archinstall: boot the ISO and get online. Everything after that is manual. Commands are for a UEFI system with a single disk — the most common setup.

1
Boot the ISO and connect
Same as archinstall Path A, Step 1.
# Wi-Fi if needed
iwctl
station wlan0 connect "NetworkName"
exit

ping -c 3 archlinux.org
2
Partition the disk
Identify your disk with lsblk, then partition. This example creates a three-partition UEFI layout. Adjust sizes for your disk and preferences (see Appendix C).
lsblk
# Identify your disk — typically /dev/sda, /dev/nvme0n1, etc.

gdisk /dev/sda
# Inside gdisk:
# o → create new GPT partition table (destroys existing data)
# n → new partition
# 1 → partition number
# (enter) → first sector default
# +512M → EFI partition size
# ef00 → EFI System partition type
#
# n → 2 → (enter) → +2G → 8200 (Linux swap)
# n → 3 → (enter) → (enter, rest of disk) → 8300 (Linux filesystem)
#
# w → write and exit
3
Format the partitions
# EFI partition — must be FAT32
mkfs.fat -F32 /dev/sda1

# Swap
mkswap /dev/sda2
swapon /dev/sda2

# Root partition
mkfs.ext4 /dev/sda3
If you're using NVMe, partitions are /dev/nvme0n1p1, /dev/nvme0n1p2, etc. If you want a separate /home, create a fourth partition and format it the same way.
4
Mount the partitions
# Mount root first
mount /dev/sda3 /mnt

# Create and mount the EFI directory
mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

# If you have a separate /home partition:
mkdir /mnt/home
mount /dev/sda4 /mnt/home
5
Install the base system
pacstrap bootstraps packages into /mnt. The minimal base gives you a working system; add kernel, firmware, and your text editor of choice.
pacstrap -K /mnt base linux linux-firmware base-devel vim networkmanager
Swap linux for linux-lts if you want the long-term support kernel. Add amd-ucode or intel-ucode for CPU microcode updates (strongly recommended).
6
Generate the filesystem table
genfstab reads your current mounts and writes the /etc/fstab file that tells the system what to mount at boot.
genfstab -U /mnt >> /mnt/etc/fstab

# Review it — should show /, /boot/efi, and swap
cat /mnt/etc/fstab
7
Enter the new system (chroot)
arch-chroot changes your root into the new install. Everything you do from here happens inside the new system, not the ISO.
arch-chroot /mnt
8
Configure the system
# Timezone
ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
hwclock --systohc

# Locale — uncomment en_US.UTF-8 in /etc/locale.gen
vim /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf

# Hostname
echo "myhostname" > /etc/hostname

# Root password
passwd

# Create your user
useradd -m -G wheel -s /bin/bash yourusername
passwd yourusername

# Enable sudo for wheel group
# Uncomment: %wheel ALL=(ALL:ALL) ALL
EDITOR=vim visudo

# Enable NetworkManager at boot
systemctl enable NetworkManager
9
Install a bootloader
GRUB is the most common choice and handles dual-boot automatically. systemd-boot is simpler on single-OS UEFI systems.
## GRUB (handles dual-boot, most compatible):
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

## systemd-boot (simpler, UEFI-only, single OS):
bootctl install
# Then create /boot/loader/entries/arch.conf — see wiki.archlinux.org/Systemd-boot
10
Exit, unmount, and reboot
exit
# Back in the ISO live environment
umount -R /mnt
reboot
# Remove the USB when the screen goes blank

After the Install

pacman and the AUR.

You've booted into a working Arch system with no desktop. Everything from here is additive — install exactly what you want.

pacman essentials

# Update everything
sudo pacman -Syu

# Install a package
sudo pacman -S firefox

# Search for a package
pacman -Ss searchterm

# Remove a package (and its unneeded dependencies)
sudo pacman -Rns packagename

# Show what's installed
pacman -Q

# Find which package owns a file
pacman -Qo /usr/bin/vim

Install your desktop

# XFCE (recommended starter — familiar, lightweight)
sudo pacman -S xfce4 xfce4-goodies lightdm lightdm-gtk-greeter
sudo systemctl enable lightdm

# Fluxbox (minimal WM, no DE)
sudo pacman -S xorg xorg-xinit fluxbox
# Then: echo "exec startfluxbox" > ~/.xinitrc && startx

# i3 (tiling WM)
sudo pacman -S xorg i3 dmenu i3status

# GNOME
sudo pacman -S gnome gnome-extra
sudo systemctl enable gdm

The AUR — your unfair advantage

The Arch User Repository contains user-maintained PKGBUILDs — build scripts for software not in the official repos. This includes proprietary apps, cutting-edge tools, and niche utilities. Install an AUR helper to manage them like any other package.

# Install paru (AUR helper — recommended)
sudo pacman -S git base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si

# Now use paru exactly like pacman, for both repos and AUR
paru -Syu
paru -S google-chrome
paru -S proton-ge-custom-bin

AUR packages are user-maintained — read the PKGBUILD

Anyone can submit to the AUR. Before installing an AUR package, run paru -G packagename to download and review the PKGBUILD. Popular, well-maintained packages (thousands of votes) are generally safe. New or obscure packages deserve more scrutiny.

pacman flags quick reference The ones you'll actually use
pacman -Syu # sync + upgrade everything
pacman -S pkg # install
pacman -Ss term # search repos
pacman -Si pkg # package info
pacman -Rns pkg # remove + deps + config
pacman -Q # list all installed
pacman -Qe # list explicitly installed (not deps)
pacman -Qdt # orphans — deps with no dependents
pacman -Rns $(pacman -Qdtq) # remove all orphans
pacman -Qo /path/to/file # which package owns this file

The Arch Wiki

wiki.archlinux.org is the definitive reference — not just for Arch, but for Linux in general. The page for any application, service, or hardware issue you encounter will likely have a detailed, current, accurate article. Bookmark it. Use it before asking anywhere else.