Manual Arch Linux Installation with Limine Bootloader and KDE Plasma

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.

  1. 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/
  1. 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)

  1. Query the Root partition UUID:
blkid | grep Root
  1. 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!

Leave a Comment