Arch Install Guide

This streamlined guide is customized for your Mini ITX build with:

1. Create Installation Media

  1. Download latest Arch ISO from archlinux.org
  2. Use dd or Etcher to create bootable USB

2. Boot from USB

  1. Enter BIOS (Del or F2 at startup)
  2. Set boot priority to USB device
  3. Disable Secure Boot

3. Initial Setup

# Verify internet connectivity
ping -c 3 archlinux.org

# Update system clock
timedatectl set-ntp true

4. Partition NVMe Drive

# List disks to identify your SK Hynix drive
lsblk

# Launch partitioning tool
fdisk /dev/nvme0n1

# Create partitions:
/dev/nvme0n1p1: EFI partition - 512MB (type: EFI System)
/dev/nvme0n1p2: Boot partition - 1GB (type: Linux filesystem)
/dev/nvme0n1p3: LVM partition - Remaining space (type: Linux LVM)

5. Set Up LVM

# Create physical volume
pvcreate /dev/nvme0n1p3

# Create volume group (replace "vg0" with desired name)
vgcreate vg0 /dev/nvme0n1p3

# Create logical volumes:
# 96GB for root
lvcreate -L 96G vg0 -n root

# 1TB for home
lvcreate -L 1024G vg0 -n home

# Leave remaining space unallocated for future use
# You can check available space with:
vgs

6. Format Partitions

# Format EFI partition
mkfs.fat -F32 /dev/nvme0n1p1

# Format boot partition
mkfs.ext4 /dev/nvme0n1p2

# Format root partition
mkfs.ext4 /dev/vg0/root

# Format home partition
mkfs.ext4 /dev/vg0/home

7. Mount Partitions

# Mount root
mount /dev/vg0/root /mnt

# Create mount points
mkdir -p /mnt/boot
mkdir -p /mnt/boot/efi
mkdir -p /mnt/home

# Mount other partitions
mount /dev/nvme0n1p2 /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot/efi
mount /dev/vg0/home /mnt/home

8. Install Base System with LTS Kernel

# Install essential packages with LTS kernel
pacstrap /mnt base base-devel linux-lts linux-lts-headers linux-firmware amd-ucode vim lvm2

9. Generate fstab

genfstab -U /mnt >> /mnt/etc/fstab

10. Chroot into New System

arch-chroot /mnt

11. Basic System Configuration

# Set timezone (replace with your timezone)
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc

# Configure locale
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf

# Set hostname
echo "your-hostname" > /etc/hostname

# Configure hosts file
echo "127.0.0.1 localhost" > /etc/hosts
echo "::1       localhost" >> /etc/hosts
echo "127.0.1.1 your-hostname.localdomain your-hostname" >> /etc/hosts

12. Configure mkinitcpio for LVM

# Edit mkinitcpio.conf
vim /etc/mkinitcpio.conf

# Add 'lvm2' to HOOKS between 'block' and 'filesystems':
# HOOKS=(base udev ... block lvm2 filesystems ...)

# Regenerate initramfs
mkinitcpio -P

13. Install Network Manager and Other Essential Packages

pacman -S networkmanager grub efibootmgr os-prober
pacman -S iwd wireless_tools wpa_supplicant dialog

14. Enable Network Services

systemctl enable NetworkManager

15. Install GRUB

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

16. Set Root Password

passwd

17. Create User

useradd -m -G wheel -s /bin/bash yourusername
passwd yourusername

18. Configure sudo

EDITOR=vim visudo
# Uncomment %wheel ALL=(ALL) ALL

19. AMD-Specific Packages

pacman -S amd-ucode mesa vulkan-radeon libva-mesa-driver mesa-vdpau

20. Enable Multilib Repository for Steam/i386 Support

# Edit pacman.conf
vim /etc/pacman.conf

# Uncomment these lines:
# [multilib]
# Include = /etc/pacman.d/mirrorlist

# Update package database
pacman -Sy

21. Install Light KDE

# Install X.org
pacman -S xorg xorg-server

# Install minimal KDE Plasma
pacman -S plasma-desktop sddm

# Install minimal KDE applications
pacman -S dolphin konsole kate kwrite plasma-pa plasma-nm

# Enable display manager
systemctl enable sddm.service

22. Install ZFS Support (archzfs repository) didn’t really work, installed zfs-dkms once rebooted into system

# Install development tools
pacman -S git

# Install the archzfs repository key
pacman-key -r DDF7DB817396A49B2A2723F7403BD972F75D9D76
pacman-key --lsign-key DDF7DB817396A49B2A2723F7403BD972F75D9D76

# Add the archzfs repository
echo -e '\n[archzfs]\nServer = https://archzfs.com/$repo/$arch' >> /etc/pacman.conf

# Update database and install ZFS packages
pacman -Sy
pacman -S zfs-linux-lts zfs-utils

# Enable ZFS services
systemctl enable zfs.target
systemctl enable zfs-import-cache.service
systemctl enable zfs-mount.service
systemctl enable zfs-import.target

23. Install Steam and Gaming Support

# Install Steam and gaming dependencies
pacman -S steam ttf-liberation lib32-vulkan-radeon lib32-mesa

24. Reboot and Enjoy

exit
umount -R /mnt
reboot

25. Post-Install Setup

After first boot:

# Enable SSD TRIM
systemctl enable fstrim.timer

# Optimize for your Ryzen 7 7700X
pacman -S cpupower
systemctl enable cpupower

# Generate ZFS cache for faster imports
zpool set cachefile=/etc/zfs/zpool.cache [your-zpool-name]

Expanding or Creating New LVM Volumes Later

# Check available space in your volume group
vgs

# Create a new logical volume
lvcreate -L SIZE_IN_GB vg0 -n volumename

# Or extend an existing logical volume
lvextend -L +SIZE_TO_ADD /dev/mapper/volumename
# For example, to add 50GB to root:
lvextend -L +32G /dev/mapper/vg0-root

# After extending, resize the filesystem
resize2fs /dev/mapper/vg0-volumename

# Or if you want to use all remaining space:
lvextend -l +100%FREE vg0/volumename
resize2fs /dev/vg0/volumename

Mounting ZFS External Drives

# Import a ZFS pool from an external drive
zpool import -a 
# Or specify a specific pool
zpool import [pool-name]

# If needed, create a mountpoint
mkdir -p /mnt/external

# Mount a ZFS dataset
zfs mount [dataset-name]
# Or set a custom mountpoint
zfs set mountpoint=/mnt/external [dataset-name]
# Install Yay AUR helper
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si

# Performance monitoring
pacman -S htop nvme-cli

# AMD-specific tools
pacman -S ryzen-controller

Note:

As of 2025-12-16 gamehenge is on intel nuc, ZFS remains installed on arch linux but unused.