I moved to Arch after getting tired of the outdated Ubuntu-based repositories in Pop!_OS. I wanted a clean, rolling system that I could fully control.
This guide is for anyone who wants:
- Full disk encryption with LVM on LUKS
- Hyprland as the Wayland compositor
- NVIDIA drivers (yes, on Wayland!)
- A minimal, keyboard-driven environment
I used the Arch ISO and booted in UEFI mode.
🛠️ Disk Setup: LVM on LUKS
… lsblk layout example
1. Partitioning with gdisk
/dev/nvme0n1p1 EFI system (512M)
/dev/nvme0n1p2 LUKS (rest of the disk)
2. Encrypt main partition
cryptsetup luksFormat /dev/nvme0n1p2
cryptsetup open /dev/nvme0n1p2 cryptlvm
3. Set up LVM
pvcreate /dev/mapper/cryptlvm
vgcreate vg0 /dev/mapper/cryptlvm
lvcreate -L 32G vg0 -n root
lvcreate -l 100%FREE vg0 -n home
lvcreate -L -256M vg0/home
LVM - ArchWiki: If a logical volume will be formatted with ext4, leave at least 256 MiB free space in the volume group to allow using e2scrub(8).
4. Format partitions
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.ext4 /dev/vg0/root
mkfs.ext4 /dev/vg0/home
5. Mount partitions
mount /dev/vg0/root /mnt
mount --mkdir /dev/vg0/home /mnt/home
mount --mkdir /dev/nvme0n1p1 /mnt/boot
📦 Base Installation
pacstrap /mnt base linux linux-firmware lvm2 base-devel linux-headers amd-ucode vim sudo networkmanager man-pages man-db texinfo
Strictly Required:
base
: a minimal package set to define a basic Arch Linux installation.linux
: the latest stable Linux kernel.linux-firmware
: firmware files to support various hardware (Wi-Fi cards, GPUs, etc.).
Required:
lvm2
: tools for Logical Volume Mangement (LVM), required by our disk partitioning.
Optional (but useful):
base-devel
: development tools required to build software from source.linux-headers
: kernel headers needed for building kernel modules (e.g. NVIDIA driver, VirtualBox, etc.).amd-ucode
: CPU microcode updates for AMD processors — improves stability and performance. Useintel-ucode
instead if you have an Intel CPU.vim
: a funny text editor.sudo
: lets regular users run commands as root.networkmanager
: a service to manage network connections easily (Wi-Fi, Ethernet, etc.).man-pages man-db texinfo
: packages for accessing documentation inman
andinfo
pages.
⚙️ System Configuration
1. Generate fstab and chroot
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
Fstab - ArchWiki: The fstab(5) file can be used to define how disk partitions, various other block devices, or remote file systems should be mounted into the file system.
chroot
: change root into the new system.
2. Set Timezone
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc
Replace /Region/City
with your Region and City.
For example, if you live in France, you will probably change this by /Europe/Paris
.
3. Localization
Uncomment your locale (e.g. en_US.UTF-8 UTF-8
) in /etc/locale.gen:
vim /etc/locale.gen
Then generate locales:
locale-gen
Create /etc/locale.conf
:
echo "LANG=en_US.UTF-8" > /etc/locale.conf
Set your keyboard layout:
echo "KEYMAP=fr" > /etc/vconsole.conf
Yes! I’m writing with a French keyboard 😯
4. Set Hostname
echo "archy" > /etc/hostname
Replace archy
with whatever you want.
5. Enable Networking
systemctl enable NetworkManager
💾 Boot Setup
Now, I will configure a systemd-based initramfs and a boot loader so that I can unlock the encrypted volume at boot, following the instructions from the LVM on LUKS - ArchWiki.
1. Configure mkinitcpio
Add the hooks for systemd, LUKS and LVM support:
vim /etc/mkinitcpio.conf
Find the HOOKS=
line and set it to:
HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt lvm2 filesystems fsck)
Then regenerate the initramfs:
mkinitcpio -P
This ensures the initramfs includes everything needed to prompt for your LUKS passphrase ands activate the LVM volumes.
2. Configure boot loader
Install the systemd boot loader to the EFI system partition
bootctl install
Grab the UUID of the encrypted partition:
DEVICE_UUID=$(blkid -o value -s UUID /dev/nvme0n1p2)
Create /boot/loader/entries/arch.conf
:
tee /boot/loader/entries/arch.conf > /dev/null <<EOF
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options rd.luks.name=device-UUID=$(DEVICE_UUID)=cryptlvm root=/dev/vg0/root rw
EOF
If you want, you can also create a /boot/loader/loader.conf
file to set boot-time kernel or loader options.
🪪 User accounts
1. Create a user account
useradd -m -G wheel username # Replace `username` by your username
passwd username
2. Give superpowers to your user account
Enable sudo
for the wheel group.
Edit the sudoers file:
visudo
Uncomment the following line:
%wheel ALL=(ALL:ALL) ALL
3. lock the root account (optional but recommended)
passwd -l root
🔄 Reboot into your new system
exit
unmount -R /mnt
reboot
🎉 To be continued…
Bravo! You now have a fresh Arch Linux installation.
This was just the first step. In the next part, we will install and configure ZRAM, NVIDIA drivers, and Hyprland.