Arch Linux How To Install

Arch Linux How To Install

Reading time1 min
#Linux#OpenSource#Technology#ArchLinux#LinuxInstallation#SystemAdministration

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:

StepPurposeKey Command/Note
1Write USB installerdd, Rufus, Etcher
2Boot into Arch liveUEFI preferred
3Partition/formatfdisk/parted
4Mount file systemsmount, mkdir
5Pacstrap basepacstrap
...System configurationarch-chroot
...Install bootloaderbootctl

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. Use lsblk 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:
    useradd -m -G wheel -s /bin/bash alice
    passwd alice
    
    Add sudo privileges (install sudo, then EDITOR=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, use amd-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.