Arch Linux Installation: A Precise, Minimal Foundation
Deploying Arch Linux is a deliberate exercise in control. The “installer” is a command shell, leaving everything—partition layout, filesystems, network configuration—to you. No default package set, no hidden daemons. Result: a system you understand, with zero excess.
Why Arch? Engineering Rationale
- Minimalism: No TTYs, GNOME, or “default” text editors dropping in unless requested.
- Rolling updates: System stays current; major upgrades are absorbed via routine package updates.
- Documentation: The Arch Wiki explains not just what but why—the difference between learning and blindly following.
- Package selection: pacman/yay delivers upstream software hours or days after upstream release.
Not everything is plug-and-play. Some hardware (NVIDIA, Wi-Fi adaptors, some HiDPI displays) requires manual intervention.
Pre-Install: Inventory & Prerequisites
- Target hardware: UEFI x86_64 system. (Legacy BIOS possible, but UEFI process shown.)
- USB drive: 2GB or larger.
- Alternate internet access for troubleshooting (phone hotspot, second box).
- Familiarity: Ability to interpret disk layouts, terminal-based editors (nano, vim), troubleshooting aptitude.
Install Workflow
flowchart TD
A[Download ISO] --> B[Create Boot Media]
B --> C[Boot Target System]
C --> D[Partition Disks]
D --> E[Format/FS Setup]
E --> F[Mount]
F --> G[Install Base]
G --> H[System Config]
H --> I[Bootloader]
I --> J[First Boot]
Brief summary in table form:
Step | Purpose | Key Command/Note |
---|---|---|
1 | Write USB installer | dd , Rufus, Etcher |
2 | Boot into Arch live | UEFI preferred |
3 | Partition/format | fdisk /parted |
4 | Mount file systems | mount , mkdir |
5 | Pacstrap base | pacstrap |
... | System configuration | arch-chroot |
... | Install bootloader | bootctl |
Stepwise Execution—with Selected Pitfalls
1. Prepare Installation Media
-
Download latest ISO (
archlinux-2024.06.01-x86_64.iso—SHA256 verify
). -
Create bootable drive (erase target first):
sudo dd if=archlinux-2024.06.01-x86_64.iso of=/dev/sdX bs=4M status=progress oflag=sync
Critical:
/dev/sdX
must be correct—dd is destructive. Uselsblk
to identify before and after plugging in the stick.
2. Boot and Access Console
Select USB in UEFI firmware/boot manager. If you see a “root@archiso” prompt, environment is ready.
3. Confirm UEFI Mode
ls /sys/firmware/efi/efivars
If directory exists, you’re in UEFI. Otherwise, reset firmware settings; many modern devices default to Secure Boot—disable it for Arch unless you plan to set up Secure Boot signing.
4. Network
Try:
ping archlinux.org
If it fails, use iwctl
for Wi-Fi:
iwctl
# inside iwctl
station device scan
station device get-networks
station device connect "your_ssid"
Known Gotcha: Some Broadcom chipsets lack immediate driver support; wired is faster.
5. Time Sync
timedatectl set-ntp true
Why: System time drift breaks SSL cert validation and package sync.
6. Disk Partitioning
Assume /dev/nvme0n1
for NVMe (or /dev/sda
for SATA):
parted /dev/nvme0n1 -- mklabel gpt
parted /dev/nvme0n1 -- mkpart ESP fat32 1MiB 513MiB
parted /dev/nvme0n1 -- set 1 esp on
parted /dev/nvme0n1 -- mkpart primary ext4 513MiB 100%
ESP = EFI System Partition, required by UEFI bootloaders.
Note: For full disk encryption (production laptops), use cryptsetup luksFormat
post-partition, pre-format.
7. Format Partitions
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.ext4 -L rootfs /dev/nvme0n1p2
8. Mount
mount /dev/nvme0n1p2 /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
9. Bootstrap Base System
pacstrap /mnt base linux linux-firmware nano
Add vim
, git
, or other tools if you prefer. nano is a minimal fallback.
10. Generate Filesystem Table
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab
Look for device UUIDs, not direct /dev/nvme0n1pX
paths. For removable disks, using labels or UUIDs is safer.
11. chroot
arch-chroot /mnt
Now operating inside new root filesystem.
12. Localization & Clock
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
hwclock --systohc
nano /etc/locale.gen
# Uncomment: en_US.UTF-8 UTF-8 (or preferred locale)
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
13. Host Identity
echo "archvm01" > /etc/hostname
cat <<EOF > /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 archvm01.localdomain archvm01
EOF
Adjust hostname as appropriate for fleet inventory.
14. Set Root Password
passwd
Input strong, unique password. Keyboards may default to US layout, mind special key positions.
15. Enable Networking
pacman -Sy --noconfirm networkmanager
systemctl enable NetworkManager
Alternative: systemd-networkd for headless or infrastructure roles—less attack surface.
16. Bootloader (systemd-boot on UEFI)
Install loader:
bootctl install
Configure loader:
cat <<EOF > /boot/loader/loader.conf
default arch
timeout 3
editor no
EOF
Create entry:
cat <<EOF > /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=LABEL=rootfs rw
EOF
Root via LABEL=rootfs
is more robust than device name.
Known Issue: Omitting initrd
line will break boot; double check spelling.
17. Finalization and Reboot
exit
umount -R /mnt
reboot
Remove USB media when POST starts. UEFI boot order sometimes places the newly installed entry below the USB; reorder via firmware if needed.
Post-Install: Recommendations
- Log in as root. Create a non-root user:
Add sudo privileges (installuseradd -m -G wheel -s /bin/bash alice passwd alice
sudo
, thenEDITOR=nano visudo
, uncomment%wheel
line). - Desktop: For minimal X with i3, install
xorg-server i3
. - Microcode: For Intel CPUs, add
intel-ucode
to pacstrap and boot entry; for AMD, useamd-ucode
. - Regularly consult
journalctl -xb
when troubleshooting post-boot errors—common for missing hooks or mistyped loader entries.
Non-obvious tip: Keep a copy of the exact ISO version used; in rare cases, pacstrap may install an incompatible kernel if the live image is badly out of sync with the package mirrors. If in doubt, run pacman -Syy
before pacstrap.
Conclusion
The Arch install process prioritizes direct control. This isn’t a “fire and forget” install—each decision, from filesystems to bootloader, affects downstream system management. Lean, flexible, and always current—once you’ve documented your build steps and tuned for local hardware quirks, it’s a reproducible, reliable baseline for servers, workstations, or containers.
For anomalies, hardware edge cases, or custom filesystems (btrfs, ZFS, LVM-on-LUKS), always refer to the Arch Wiki—the real install tool.
Got issues, or spot an undocumented behavior in your install logs? That’s normal—document and resolve, then consider contributing findings to the Arch forums or Wiki.