Select Page

How I built a production Arch Linux portable workstation with LUKS encryption, Hyprland, and a modern, lightweight network stack – Part 1: installation and first boot.

Overview

Installing Arch Linux from scratch taught me more about Linux internals than years of using GUI heavy distributions. For DevOps engineers, understanding the fundamentals – from bootloaders to network stacks to display servers isn’t optional any longer. When it comes to troubleshooting production systems, a command of CLI tools and understanding the Linux filesystem is what sets pros apart from those who just run apt install.

This Lenovo T480 build uses LUKS2 encryption, LVM for storage flexibility, systemd-networkd for networking, and – in the next installment – Hyprland as a Wayland compositor. Every component was deliberately chosen and manually configured.

Bottom line: Full disk encryption with LUKS2, 512GB encrypted storage with LVM flexibility, pure Wayland environment, and systemd-networkd for networking.

Hardware

Lenovo T480 specifications:

  • CPU: Intel Core i7-8550U (4 cores, 8threads @ 1.8GHz)
  • Memory: 16GB DDR4
  • Storage: 512GB NVMe SSD
  • Graphics: Intel UHD Graphics 620
  • Firmware: Latest Lenovo BIOS (v1.36.0)

This laptop provides enough power for development work while maintaining good battery life and Intel integrated graphics.

Disk Encryption Architecture

LUKS + LVM Strategy

The storage setup uses LUKS2 for full disk encryption with LVM on top for flexible volume management:

Key design decisions:

  1. Separate /boot partition: Required for systemd-boot, unencrypted but contains no sensitive data
  2. LUKS2 container: Uses the entire second partition, providing hardware-level AES encryption
  3. LVM inside LUKS: “LUKS on LVM” approach – encrypt once, flexible volumes inside
  4. Conservative root size: 32GB for the system partition for data
  5. Dedicated swap: 8GB encrypted swap space

Encryption Details

Security benefits:

  • Data at rest is encrypted with AES
  • Password required at boot to unlock
  • Even with physical access, data remains protected
  • Individual volumes can be resized without re-encrypting

Boot Configuration

systemd-boot Setup

Using systemd-boot instead of GRUB for a simpler, faster boot process:

The boot entry (/boot/loader/entries/arch.conf) handles LUKS unlocking:

How it works:

  1. UEFI loads systemd-boot from ESP (/boot)
  2. systemd-boot loads kernel and fallback initramfs
  3. Early userspace (initramfs) prompts for LUKS password
  4. rd.luks.name tells systemd to unlock the specific UUID
  5. LVM activates volumes inside the decrypted container
  6. System boots from /dev/mapper/midir-root

Network Stack

Modern systemd Networking

Using systemd-networkd and systemd-resolved instead of NetworkManager for a lightweight, integrated approach:

systemd-networkd handles network interfaces:

The IgnoreCarrierLoss setting prevents the interface from going down during brief WiFi disconnections.

iwd (iNet wireless daemon) manages WiFi:

  • Modern replacement for wpa_supplicant
  • Lower memory footprint
  • Better performance
  • Integrates with systemd-networkd

systemd-resolved provides DNS resolution:

First Boot

Stay tuned…