A complete guide to installing Arch Linux with encryption, /, /boot and /home partitions, the KDE Plasma environment, and additional configuration
Step 1: Preparing the bootable USB drive
Download the Arch Linux ISO:
- Go to the official Arch Linux website and download the latest ISO image.
Create the bootable USB drive:
- Use
dd(Linux/MacOS):
Wheresudo dd if=archlinux.iso of=/dev/sdX bs=4M status=progress oflag=sync/dev/sdXis your USB drive.
- Use
Step 2: Configuring the laptop’s BIOS/UEFI
Power on the laptop and enter BIOS/UEFI (usually
F2orDelon startup).Check and configure:
- Boot Mode: enable UEFI.
- Secure Boot: disable.
- Fast Boot: disable.
- Enable AHCI for the disk (if available).
Make sure the USB drive is first in the boot order.
Step 3: Booting from the USB drive
- Boot from the USB drive by selecting it through the Boot Menu (
F12or a similar key). - In the startup menu select Arch Linux (x86_64).
Step 4: Network configuration
Connecting to the network via Wi-Fi:
- For interfaces with
iwctl:iwctl device list # Find your Wi-Fi interface station wlan0 scan station wlan0 connect "SSID" exit
- For interfaces with
Make sure the network is working:
ping archlinux.org
Step 5: Configuring mirrors (optional)
Update the mirror list:
pacman -S reflector
reflector --latest 10 --country='RU' --sort rate --save /etc/pacman.d/mirrorlist Step 6: Disk partitioning and encryption
Partitioning the disk with
fdisk:fdisk /dev/sda- Press
nto create a new partition:- EFI partition: size 512M, type
EFI System(code1in thetmenu). - Swap partition: size 8G, type
Linux Swap(code19in thetmenu) - Main partition: remaining space for encryption, type
Linux filesystem.
- EFI partition: size 512M, type
- Press
wto write the changes.
- Press
Formatting the EFI partition:
mkfs.vfat -F32 /dev/sda1Formatting and enabling Swap:
mkswap -L swap /dev/sda2 swapon /dev/sda2Setting up LUKS encryption:
cryptsetup luksFormat /dev/sda3 cryptsetup open /dev/sda3 DiskCreating LVM inside LUKS:
pvcreate /dev/mapper/Disk vgcreate VG0 /dev/mapper/Disk lvcreate -n ROOT -L 100G VG0 lvcreate -n HOME -l 100%FREE VG0Formatting the partitions:
mkfs.ext4 /dev/VG0/ROOT mkfs.ext4 /dev/VG0/HOMEMounting the partitions:
mount /dev/VG0/ROOT /mnt mkdir -p /mnt/boot /mnt/home mount /dev/sda1 /mnt/boot mount /dev/VG0/HOME /mnt/home
Step 7: Installing the base system
Install the base packages:
pacstrap /mnt base base-devel linux-lts linux-lts-headers linux-firmware bash-completion net-tools dnsutils dialog rsync wget os-prober mtools dosfstools nfs-utils ntfs-3g vim mlocate usbutils gvfs git iwd dhclient lvm2Create the
fstabfile:genfstab -U /mnt >> /mnt/etc/fstab
Step 8: System configuration
Enter the installed system:
arch-chroot /mntSet the root password:
passwdConfigure the timezone:
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime hwclock --systohcConfigure localization:
- In
/etc/locale.genuncomment:ru_RU.UTF-8 UTF-8 en_US.UTF-8 UTF-8 - Generate the locales:
locale-gen echo "LANG=ru_RU.UTF-8" > /etc/locale.conf
- In
Set the hostname:
echo "myhostname" > /etc/hostnameConfigure the network:
systemctl enable NetworkManager
Step 9: Bootloader configuration
Create the bootloader and a minimal kernel image (skip this and come back to it later if something doesn’t go according to plan)
pacman -S linux-firmware efibootmgrEdit /etc/mkinitcpio.conf like this:
MODULES=(ext4) HOOKS=(base udev autodetect plymouth microcode modconf kms keyboard keymap encrypt lvm2 consolefont block filesystems fsck) #resume if you have SWAP, otherwise it will complainA nice splash screen on login:
pacman -S extra/plymouthplymouth-set-default-theme -l # list themes plymouth-set-default-theme bgrt # or spinnerRebuild the minimal kernel image:
mkinitcpio -PInstall systemd-boot:
bootctl installpacman -S amd-ucodeCreate the bootloader entry file:
vim /boot/loader/entries/arch.confContents:
title Arch Linux linux /vmlinuz-linux-lts initrd /amd-ucode.img initrd /initramfs-linux-lts.img options cryptdevice=UUID=270f815e-a9ad-468d-883f-b7151ee5e3d2:crypt root=/dev/mapper/VG0-ROOT rw quiet splash loglevel=3 nowatchdog amd_pstate=active amdgpu.dc=1 amdgpu.noretry=0Find the UUID for the LUKS partition:
blkidReplace
<disk-UUID>in the bootloader configuration. Take the UUID of /dev/nvme0n1p3 - the partition with the whole encrypted Crypto_LUKS system, not boot and not SwapEdit loader.conf:
echo "default arch.conf" > /boot/loader/loader.conf
Step 10: Installing drivers
Install the paru package manager:
git clone https://aur.archlinux.org/paru.git cd paru sudo makepkg -siInstalling Intel graphics drivers (for AMD replace all ‘Intel’ with ‘amd’, for nvidia - search for your nvidia version)
Intel graphics use the xf86-video-intel and mesa drivers. Install them with the following command:
sudo pacman -S xf86-video-intel mesa lib32-mesa vulkan-intel lib32-vulkan-intel sudo pacman -S alsa-utils pulseaudioxf86-video-intel — 2D graphics driver. mesa — provides 3D graphics and OpenGL support. lib32-mesa — 32-bit version of Mesa for compatibility with 32-bit applications. vulkan-intel — Vulkan support for Intel. lib32-vulkan-intel — 32-bit version of Vulkan for Intel.
AMD:
pacman -S lib32-mesa vulkan-radeon lib32-vulkan-radeon vulkan-icd-loader lib32-vulkan-icd-loaderNVIDIA:
pacman -S nvidia-utils lib32-nvidia-utils nvidia-settings nvidia-dkms
Step 11: Installing the desktop environment
Install the graphical environment (KDE Plasma)
pacman -S plasma plasma-meta kde-applications-meta sddmEnable the display manager:
systemctl enable sddmInstall additional packages:
pacman -S konsole dolphin ark
Step 12: Creating a user and granting permissions
Create a user:
useradd -m -G wheel -s /bin/bash username passwd usernameConfigure
sudo:pacman -S sudo EDITOR=vim visudoUncomment the line:
%wheel ALL=(ALL) ALLReboot:
exit umount -R /mnt reboot
Step 13: Extras
Rebuilding the minimal kernel image:
mkinitcpio -PConsole styling:
paru -Ss alsiSystem update:
paru -Syyuu
Pacman configuration:
Uncomment in the /etc/pacman.conf file
[multilib] Include = /etc/pacman.d.mirrorlistColor ParallelDownloads = 10 ILoveCandyAutomatic package cache cleanup:
sudo pacman -S pacman-contrib sudo systemctl enable paccache.timerIt makes sense to disable building debug packages by turning off !debug and !strip:
sudo sed -i.bak '/^OPTIONS=/s/strip/!strip/; /^OPTIONS=/s/debug/!debug/' /etc/makepkg.conf