Print this and check off each step as you go!
- Download Arch Linux ISO from https://archlinux.org/download/
- Create bootable USB with Rufus/balenaEtcher
- BACKUP ANY DATA you need from the two 1TB NVMe drives
- Decide: Maximum capacity (2TB) or Redundancy (1TB usable)?
- Write down a strong encryption passphrase (you'll type it multiple times)
- Insert USB drive and boot from it (press F12/F9/F2 during startup)
- Select "Arch Linux install medium" from boot menu
- Wait for
root@archiso ~ #prompt
Connect to Internet:
If Wired:
- It should work automatically
If WiFi:
- Run:
iwctl - Type:
station wlan0 scan - Type:
station wlan0 get-networks - Type:
station wlan0 connect "YourNetworkName" - Enter WiFi password
- Type:
exit
Verify Connection:
- Run:
ping -c 3 archlinux.org - Confirm you see replies
- Run:
lsblk - Identify your two 1TB NVMe drives (should be
nvme0n1andnvme1n1) - CRITICAL: Confirm these are the correct drives to erase
- Ignore
sda(that's your USB installer)
Wipe Both Drives:
- Run:
wipefs -a /dev/nvme0n1 - Run:
wipefs -a /dev/nvme1n1
Partition First Drive (nvme0n1) - WITH boot partition:
- Run:
cfdisk /dev/nvme0n1 - Select: "gpt" (if asked for label type)
- Select: "New" → Type: "1G" → Press Enter
- Select: "Type" → Choose: "EFI System"
- Move down to free space → Select: "New" → Press Enter (uses all remaining)
- Leave as "Linux filesystem"
- Select: "Write" → Type: "yes" → Press Enter
- Select: "Quit"
Partition Second Drive (nvme1n1) - NO boot partition:
- Run:
cfdisk /dev/nvme1n1 - Select: "gpt"
- Select: "New" → Press Enter (uses all space as ONE partition)
- Leave as "Linux filesystem"
- Select: "Write" → Type: "yes" → Press Enter
- Select: "Quit"
Verify Partitions:
- Run:
lsblk - MUST SEE:
nvme0n1p1(1GB),nvme0n1p2(~930GB),nvme1n1p1(~931GB) - If layout is wrong, go back and repartition!
- Run:
mkfs.fat -F32 /dev/nvme0n1p1 - Verify:
blkid /dev/nvme0n1p1(should showTYPE="vfat")
Encrypt First Partition:
- Run:
cryptsetup luksFormat /dev/nvme0n1p2 - Type: "YES" (uppercase)
- Enter your passphrase (twice)
- Write down your passphrase somewhere safe!
Encrypt Second Partition:
- Run:
cryptsetup luksFormat /dev/nvme1n1p1 - Type: "YES" (uppercase)
- Enter the SAME passphrase (twice)
CRITICAL - Verify Both Are Encrypted:
- Run:
cryptsetup isLuks /dev/nvme0n1p2 && echo "✓ nvme0n1p2 encrypted SUCCESS" - Run:
cryptsetup isLuks /dev/nvme1n1p1 && echo "✓ nvme1n1p1 encrypted SUCCESS" - MUST SEE two SUCCESS messages - if not, go back and re-encrypt!
- Run:
cryptsetup open /dev/nvme0n1p2 cryptroot1 - Enter your passphrase
- Run:
cryptsetup open /dev/nvme1n1p1 cryptroot2 - Enter your passphrase
- Verify:
ls /dev/mapper/(should showcryptroot1andcryptroot2)
Choose ONE option:
Option A - Maximum Capacity (2TB):
- Run:
mkfs.btrfs -f -m single -d single -L omarchy /dev/mapper/cryptroot1 /dev/mapper/cryptroot2
Option B - Redundancy (1TB usable):
- Run:
mkfs.btrfs -f -m raid1 -d raid1 -L omarchy /dev/mapper/cryptroot1 /dev/mapper/cryptroot2
Verify:
- Run:
btrfs filesystem show /dev/mapper/cryptroot1 - MUST SEE BOTH
cryptroot1andcryptroot2listed as devices
- Run:
mount /dev/mapper/cryptroot1 /mnt - Run:
mkdir /mnt/boot - Run:
mount /dev/nvme0n1p1 /mnt/boot - Verify:
mount | grep /mnt(should show both mounts)
- Run:
pacstrap -K /mnt base linux linux-firmware btrfs-progs nano networkmanager git curl sudo - Wait 5-15 minutes for download and installation
- Verify no errors in output
Generate Filesystem Table:
- Run:
genfstab -U /mnt >> /mnt/etc/fstab
Enter New System:
- Run:
arch-chroot /mnt - Your prompt should change (might still say "archiso" but you're in chroot)
Set Timezone (replace with your region/city, e.g., America/New_York):
- Run:
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime - Run:
hwclock --systohc
Set Hostname (choose a name for your computer):
- Run:
echo "your-hostname" > /etc/hostname
Configure Locale:
- Run:
nano /etc/locale.gen - Find line:
en_US.UTF-8 UTF-8(or your locale) - Remove the
#at the start of that line - Press:
Ctrl+X, thenY, thenEnter - Run:
locale-gen - Run:
echo "LANG=en_US.UTF-8" > /etc/locale.conf
Create Console Config (prevents error):
- Run:
echo "KEYMAP=us" > /etc/vconsole.conf - (Change
usto your keyboard layout if different)
Set Root Password:
- Run:
passwd - Enter a password (twice)
Create User:
- Run:
useradd -m -G wheel your-username - (Replace
your-usernamewith your desired username)
Set User Password:
- Run:
passwd your-username - Enter a password (twice)
Enable Sudo for User:
- Run:
EDITOR=nano visudo - Find line:
# %wheel ALL=(ALL:ALL) ALL - Remove the
#at the start to uncomment it - Press:
Ctrl+X, thenY, thenEnter
Edit Initramfs Configuration:
- Run:
nano /etc/mkinitcpio.conf - Find the line starting with:
HOOKS= - Replace it with:
HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)
- Key changes:
systemd(notudev),sd-vconsole(notkeymap consolefont),sd-encrypt(notencrypt) - Press:
Ctrl+X, thenY, thenEnter
Regenerate Initramfs:
- Run:
mkinitcpio -P - You might see warnings - that's okay, but no ERRORS
- Verify you see "Image generation successful"
Install GRUB:
- Run:
pacman -S grub efibootmgr - Press
Enterto confirm - Run:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB - Verify you see "Installation finished. No error reported."
Get UUIDs and Build GRUB Line:
- Run these commands (they build the line for you):
UUID1=$(blkid -s UUID -o value /dev/nvme0n1p2)
UUID2=$(blkid -s UUID -o value /dev/nvme1n1p1)
echo "Copy this line:"
echo "rd.luks.name=$UUID1=cryptroot1 rd.luks.name=$UUID2=cryptroot2 root=/dev/mapper/cryptroot1"- IMPORTANT: Copy the ENTIRE line that starts with "rd.luks.name"
Edit GRUB Configuration:
- Run:
nano /etc/default/grub - Find the line:
GRUB_CMDLINE_LINUX="" - Paste your copied line inside the quotes
- Should look like:
GRUB_CMDLINE_LINUX="rd.luks.name=uuid1=cryptroot1 rd.luks.name=uuid2=cryptroot2 root=/dev/mapper/cryptroot1" - Leave
GRUB_ENABLE_CRYPTODISK=ycommented out (leave the # in front) - Press:
Ctrl+X, thenY, thenEnter
Generate GRUB Config:
- Run:
grub-mkconfig -o /boot/grub/grub.cfg - IMPORTANT: Verify you see "Found linux image" and "Found initrd image" in output
- Run:
ls -lh /boot/grub/grub.cfg(should be at least 4-5KB)
Verify GRUB Config Has Encryption Parameters:
- Run:
grep "rd.luks.name" /boot/grub/grub.cfg | head -1 - MUST SEE: Two
rd.luks.name=parameters with actual UUID values (not "$UUID") - Should all be on ONE line starting with
linux /vmlinuz-linux
- Run:
systemctl enable NetworkManager
Run Quick Verification:
echo "=== Partitions ==="
lsblk | grep nvme
echo -e "\n=== Encryption ==="
cryptsetup isLuks /dev/nvme0n1p2 && echo "✓ nvme0n1p2 encrypted" || echo "✗ PROBLEM"
cryptsetup isLuks /dev/nvme1n1p1 && echo "✓ nvme1n1p1 encrypted" || echo "✗ PROBLEM"
echo -e "\n=== Btrfs Devices ==="
btrfs filesystem show /dev/mapper/cryptroot1
echo -e "\n=== GRUB Config ==="
ls -lh /boot/grub/grub.cfg
grep "rd.luks.name" /boot/grub/grub.cfg | head -1
echo -e "\n=== User & Sudo ==="
id your-username
grep "^%wheel" /etc/sudoers- Check all output looks correct before proceeding!
- Run:
exit(leaves chroot) - Run:
umount -R /mnt - Run:
cryptsetup close cryptroot1 - Run:
cryptsetup close cryptroot2 - Remove USB drive
- Run:
reboot
- System should show GRUB menu (might auto-boot)
- You'll be prompted for encryption passphrase TWICE (once for each drive)
- Enter your passphrase both times
- Wait for login prompt
- Login as your regular user (not root) with your password
Connect to Internet:
- Wired: Should work automatically
- WiFi: Run
nmtui, select "Activate a connection", choose network
Test Internet:
- Run:
ping -c 3 google.com
Verify Disk Setup:
echo "=== Disk Layout ==="
lsblk
echo -e "\n=== Encrypted Volumes ==="
sudo dmsetup ls
echo -e "\n=== Btrfs Devices ==="
sudo btrfs filesystem show /
echo -e "\n=== Available Space ==="
df -h /- Verify both
cryptroot1andcryptroot2are listed - Verify btrfs shows both devices
- Verify available space matches your choice (2TB or 1TB)
- Run:
curl -fsSL https://omarchy.org/install | bash - Follow the Omarchy installer prompts
- Wait for installation to complete
- Reboot when prompted
You now have Omarchy running on your dual-drive encrypted setup!
If you get "device not found" error at boot:
- Boot back into Arch USB
- Unlock drives:
cryptsetup open /dev/nvme0n1p2 cryptroot1andcryptsetup open /dev/nvme1n1p1 cryptroot2 - Mount:
mount /dev/mapper/cryptroot1 /mntandmount /dev/nvme0n1p1 /mnt/boot - Chroot:
arch-chroot /mnt - Check GRUB config has correct UUIDs:
grep rd.luks.name /boot/grub/grub.cfg - Regenerate if needed:
grub-mkconfig -o /boot/grub/grub.cfg
If encryption prompts don't appear:
- Check initramfs has sd-encrypt:
lsinitcpio /boot/initramfs-linux.img | grep sd-encrypt - Verify GRUB config has rd.luks.name parameters
Key Points:
- Use systemd hooks (
sd-encrypt, notencrypt) - Use rd.luks.name syntax (not
cryptdevice) - Both passphrases must be identical
- Create regular user before installing Omarchy
- Always verify encryption SUCCESS before continuing
Good luck! Take your time and check off each step as you go.