Skip to content

Arch Linux

Nikhil Prabhu edited this page Apr 5, 2026 · 8 revisions

Enable auto-decrypt for LUKS encrypted boot drive (Btrfs) with TPM 2.0

  • Install the necessary tools: sudo pacman -S tpm2-tss tpm2-tools
  • Identify the LUKS partition (the one with FSTYPE as crypto), and note down its NAME and UUID: lsblk -f
  • Enroll the TPM keyslot: sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=7 /dev/<NAME>
  • Open /etc/mkinitcpio.conf, and find the HOOKS=(...) line. Within the braces, replace udev with systemd, and encrypt with sd-encrypt.
  • Open /etc/default/grub, and find the line GRUB_CMDLINE_LINUX="...". Look for cryptdevice=<UUID>=...:root, and replace it with rd.luks.name=<UUID>=root root=/dev/mapper/root
  • Regenerate and reboot:
    sudo mkinitcpio -P
    sudo grub-mkconfig -o /boot/grub/grub.cfg

Enable Plymouth splash screen for boot (AMD GPU)

  • Install Plymouth: sudo pacman -S plymouth
  • Open /etc/mkinitcpio.conf, and find the HOOKS=(...) line. Within the braces, add plymouth after systemd, but before sd-encrypt [!IMPORTANT]
  • Find the MODULES(...) line, and add amdgpu and btrfs to it.
  • Open /etc/default/grub, and add the following to GRUB_CMDLINE_LINUX_DEFAULT="...": quiet splash loglevel=3 rd.systemd.show_status=auto rd.udev.log_priority=3 vt.global_cursor_default=0
  • Regenerate and reboot:
    sudo mkinitcpio -P
    sudo grub-mkconfig -o /boot/grub/grub.cfg

Fix slow Steam downloads (DNS Latency Bottleneck)

Problem

On Arch Linux, Steam download speeds may be significantly lower than the actual ISP bandwidth (e.g., capping at 30 Mbps on a 400 Mbps line). This occurs because the Steam Linux client is exceptionally "chatty"; it sends individual DNS requests for the thousands of small data "chunks" it pulls from the Content Delivery Network (CDN).

Because Arch Linux does not enable a local DNS cache by default, every chunk request requires a round-trip to the ISP's DNS servers. These micro-delays (20–50ms each) aggregate into a massive performance bottleneck that prevents the download stream from reaching full network saturation.

Solution: Local DNS Caching with systemd-resolved

Enabling a local DNS resolver moves the lookup process from the network (milliseconds) to local memory (nanoseconds). This effectively eliminates the "handshake" delay for each data chunk.

1. Enable the Resolver Service

This starts the systemd-resolved daemon, which acts as a local DNS stub listener on 127.0.0.53.

sudo systemctl enable --now systemd-resolved

2. Update the System Resolver Configuration

For applications to actually use the local cache, /etc/resolv.conf must point to the systemd-resolved stub. The most robust way to do this on Arch is via a symbolic link:

sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

Clone this wiki locally