Arch Linux Install Guide 2024
Arch Linux allows for extensive customization during installation. This can be both exciting and overwhelming.
I’ve compiled these notes during installation. They’re raw, so refer to the Wiki for detailed instructions. I followed the same order, making it easy to compare and adjust based on your preferences.
This installation should serve as a solid foundation for a minimal Window Manager setup (e.g., Hyprland, Sway).
For a quicker setup, consider the official ArchInstall. However, manual installation can be more rewarding and educational.
What I Learned
- Using the right partitions skips the need for fstab/kernel parameters: Setting up your disk partitions according to the discoverable partition spec eliminates the need for configuring the fstab file and kernel parameters for systemd-boot, simplifying the process.
- Installing software without an AUR helper is easy: additional tools are not always necessary for installing software from the AUR (e.g., Chrome).
- Secure password storage without a full Desktop Environment: Without a full desktop environment like GNOME or KDE, manually setting up a keyring is essential for securing passwords, especially for applications like Chrome.
- Preference for swap file over swap partition: Initially, creating a swap partition is unnecessary. Opting for a swap file later is viable (not covered in these notes).
Commands
# Load keyboard layout if non-QWERTY
loadkeys xx
# Check for UEFI mode
cat /sys/firmware/efi/fw_platform_size # should return 64
# Wireless setup
iwctl
device list
station <device> scan
station <device> connect <SSID>
# Ensure accurate time
timedatectl
# Wipe disk securely
lsblk # List your disks
cryptsetup open --type plain -d /dev/urandom \
/dev/<block-device> to_be_wiped
dd if=/dev/zero of=/dev/mapper/to_be_wiped status=progress
cryptsetup close to_be_wiped
# Partition disk
cfdisk /dev/sdX
boot 1 GiB # EFI System
root # Linux root (x86-64)
# Format and mount partitions
mkfs.fat -F32 /dev/sdX1
cryptsetup luksFormat /dev/sdX2
cryptsetup open /dev/sdX2 cryptroot
mkfs.ext4 /dev/mapper/cryptroot
mount /dev/mapper/cryptroot /mnt
mount --mkdir /dev/sdX1 /mnt/boot
# Configure mirrorlist
reflector
# Install base system
pacstrap -K /mnt base linux linux-firmware intel-ucode \
e2fsprogs ntfs-3g sudo iwd pacman-contrib reflector \
man-db man-pages texinfo git neovim
# Copy network configuration
cp /etc/systemd/network/* /mnt/etc/systemd/network
# Chroot into the new system
arch-chroot /mnt
# Configure the system
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc
nvim /etc/locale.gen # Uncomment en_US.UTF-8
locale-gen
nvim /etc/locale.conf # LANG=en_US.UTF-8
nvim /etc/vconsole.conf # KEYMAP=xx
nvim /etc/hostname
nvim /etc/hosts
127.0.0.1 localhost
::1 localhost
nvim /etc/mkinitcpio.conf
# 'keyboard' needs to be before autodect if using a laptop
HOOKS=(systemd autodetect microconf modconf kms keyboard sd-vconsole
block sd-encrypt filesystems fsck)
mkinitcpio -P
ls /sys/firmware/efi/efivars # Must exist
# "world accessible" warning can be ignored,
# /boot will be mounted with the correct permissions on reboot
bootctl install
nvim /boot/loader/loader.conf # Use spaces instead of tabs
default arch.conf
timeout 4
console-mode max
editor no
nvim /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
nvim /boot/loader/entries/arch-fallback.conf
title Arch Linux (fallback initramfs)
linux /vmlinuz-linux
initrd /initramfs-linux-fallback.img
# Create user
useradd -m -G wheel <username>
passwd <username>
passwd --lock root # Disable root password
# Configure sudoers
EDITOR=nvim visudo -f /etc/sudoers.d/editor
Defaults editor=/usr/bin/nvim
visudo -f /etc/sudoers.d/wheel
%wheel ALL=(ALL:ALL) ALL
# Enable essential services
sudo systemctl enable systemd-boot-update.service
sudo systemctl enable systemd-timesyncd
sudo systemctl enable iwd
sudo systemctl enable systemd-resolved
sudo systemctl enable systemd-networkd
sudo systemctl enable paccache.timer
sudo systemctl enable reflector.timer
# https://wiki.archlinux.org/title/Solid_state_drive
sudo systemctl enable fstrim.timer
# Exit chroot and reboot
exit
umount -R /mnt
cryptsetup close cryptroot
reboot
# Some programs like browsers, Go and GnuPG read from resolv.conf
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
# Install keyring and login manager
sudo pacman -S gnome-keyring libsecret seahorse greetd
# Configure autologin
nvim /etc/greetd/config.tom
[initial_session]
command = "<command to start your window manager>"
user = "<username>"
# Configure PAM for gnome-keyring
nvim /etc/pam.d/greetd
#%PAM-1.0
auth required pam_securetty.so
auth requisite pam_nologin.so
auth optional pam_gnome_keyring.so
auth include system-local-login
account include system-local-login
session include system-local-login
session optional pam_gnome_keyring.so auto_start
# Install Chrome
cd ~/builds
git clone https://aur.archlinux.org/google-chrome.git
cd google-chrome
less PKGBUILD # Verify build script
makepkg -sirc
nvim ~/.config/chrome-flags.conf
--password-store=gnome-libsecret
--ozone-platform-hint=auto
From there, you can install a WM like Hyprland or Sway:
Have fun ^_^
Reminder
These notes reflect my personal exploration with Arch Linux. Feel free to modify and experiment with your own setup. The Arch Linux community and the Wiki are invaluable resources for guidance and troubleshooting.