Arch Linux is widely known for its flexibility and for giving users total control over their operating system.
While the archinstall script has made things easier, performing a manual installation remains the best way to understand how your system operates under the hood.
In this post, I’ll share my personal step-by-step procedure for installing Arch Linux from scratch, covering everything from disk partitioning to setting up the KDE Plasma desktop environment and the lightweight Limine bootloader.
1. Initial Setup and Keyboard
After booting into the Arch ISO, I adjust my keyboard layout to Brazilian ABNT2
loadkeys br-abnt2
2. Disk Partitioning and Formatting
Check available storage drives using fdisk -l and launch cfdisk to create your partition scheme.
fdisk -l
cfdisk
- EFI Partition: At least 4 GB (recommended to hold multiple kernels and boot files safely).
- Root Partition: Remaining drive space.
Format the partitions with appropriate filesystems and labels:
mkfs.fat -F32 -n EFI /dev/EFI_partition
mkfs.ext4 -L Root /dev/Root_partition
3. Mounting Partitions and Swap File
Mount the root partition under /mnt and structure the required subdirectories:
mount /dev/Root_partition /mnt
bash
mkdir -pv /mnt/{boot,swap}
mount /dev/EFI_partition /mnt/boot
Instead of a dedicated swap partition, generate a 4 GB swapfile directly inside the swap folder:
mkswap -U clear --size 4096M --file /mnt/swap/swapfile
swapon /mnt/swap/swapfile
4. Updating Mirrors and Pacman Settings
Update your mirror list to ensure maximum download speeds during the base installation:
reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
(Optional) Edit /etc/pacman.conf to uncomment Color and insert ILoveCandy right below [options].
Sync repository databases:
pacman -Syy
5. Installing System Base
Deploy essential system packages to /mnt:
pacstrap -K /mnt base linux linux-firmware reflector sudo vim fish
Generate the fstab configuration file:
genfstab -U /mnt >> /mnt/etc/fstab
Transfer your optimized Pacman configuration to the target system:
cp -v /etc/pacman.conf /mnt/etc/ && cp -Rv /etc/pacman.d/* /mnt/etc/pacman.d/
6. System Configuration (Chroot)
Chroot into your freshly installed system:
arch-chroot /mnt
Timezone and Locales:
ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
hwclock --systohc
sed -i 's/#pt_BR.UTF-8/pt_BR.UTF-8/g' /etc/locale.gen
sed -i 's/#en_US.UTF-8/en_US.UTF-8/g' /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" >> /etc/locale.conf
echo "KEYMAP=br-abnt2" >> /etc/vconsole.conf
Network, Hostname, and User Account:
echo my-hostname > /etc/hostname
passwd
# Create user account with Fish shell
useradd -m -g users -G wheel -c 'Your Name' -s /usr/bin/fish your_user
passwd your_user
# Grant sudo access
echo 'your_user ALL=(ALL) ALL' | sudo EDITOR='tee -a' visudo
7. Installing Base Utilities and KDE Plasma Desktop
Install system tools and networking utilities:
pacman -S --noconfirm --needed dosfstools os-prober mtools networkmanager dialog sudo rsync limine efibootmgr openssh exfat-utils plymouth dnsutils base-devel wget inetutils
Install the complete KDE Plasma desktop suite alongside Pipewire audio stack and plugins:
pacman -S --noconfirm --needed plasma-meta xorg-xlsclients bluez-utils blueman packagekit-qt6 gnome-disk-utility konsole okular dolphin ark spectacle gwenview kcalc kio kio-extras ffmpegthumbs kdegraphics-thumbnailers kimageformats qt6-imageformats kdesdk-thumbnailers tuned tuned-ppd alacritty dolphin-plugins kio-fuse kwalletmanager pipewire pipewire-alsa pipewire-pulse pipewire-jack wireplumber plasma-pa
Enable critical system services:
systemctl enable NetworkManager
systemctl enable sshd
systemctl enable sddm
systemctl enable avahi-daemon
8. Limine Bootloader Setup
Limine is an extremely fast, modern bootloader serving as a great replacement for GRUB.
- Prepare the directory on your EFI partition and copy the Limine executable:
mkdir -p /boot/EFI/limine
cp -v /usr/share/limine/BOOTX64.EFI /boot/EFI/limine/
- Register the entry inside your motherboard’s UEFI boot menu via
efibootmgr:
efibootmgr --create --disk /dev/sdX --part 1 --label "Arch Linux" --loader '\EFI\limine\BOOTX64.EFI' --unicode
(Replace /dev/sdX with your target drive, e.g., /dev/sda or /dev/nvme0n1)
- Query the Root partition UUID:
blkid | grep Root
- Create the configuration file
/boot/limine.conf:
vim /boot/limine.conf
Add the boot entry, substituting your Root partition UUID:
timeout: 3
/Arch Linux
protocol: linux
path: boot():/vmlinuz-linux
cmdline: quiet root=UUID=YOUR-UUID-HERE rw mitigations=off
module_path: boot():/initramfs-linux.img
Conclusion
Exit chroot (exit), unmount all active filesystems (umount -R /mnt), and restart your computer (reboot). Your Arch Linux machine is fully configured, powered by KDE Plasma, and booting seamlessly through Limine!