Arch Linux Installation
Sources used:
- ArchWiki Installation Guide https://wiki.archlinux.org/title/Installation_guide
- StackOverflow https://stackoverflow.com/
- Arch Linux Forum https://bbs.archlinux.org/
Preparing the Arch ISO
Downloading the ISO
From the official website https://archlinux.org/download/
Verifying signatures
On Windows 11, open PowerShell as administrator:
certutil -hashfile ".\archlinux-2025.07.01-x86_64.iso" SHA256
On Linux:
sha256sum archlinux-2025.07.01-x86_64.iso
Compare the obtained hash with the one listed on the Arch website.
Preparing USB
In Windows simpy use Rufus or something else
In Linux (Arch in this case) follow next instructions:
Identify the USB device
lsblk
Example:
sdb
├─sdb1
Make sure you correctly identify the USB drive — choosing the wrong device will erase your data!
Unmount all USB partitions
sudo umount /dev/sdX*
Wipe old filesystem signatures and bootloaders
sudo wipefs -a /dev/sdX
Create a new GPT partition table
sudo parted /dev/sdX mklabel gpt
Create a single FAT32 partition
sudo parted -a optimal /dev/sdX mkpart primary fat32 0% 100%
Format the partition as FAT32
sudo mkfs.vfat -F32 /dev/sdX1
Write the ISO to the USB using dd
sudo dd bs=4M if=~/Downloads/archlinux-x86_64.iso of=/dev/sdX status=progress oflag=sync
Sync and safely remove the USB
sync
Preparing for installation
Enabling EFI
- VirtualBox: go to Machine Settings → System → Enable EFI
- Physical machine: enter BIOS and enable the appropriate settings (see your motherboard manual)
Checking CPU architecture
cat /sys/firmware/efi/fw_platform_size
Possible outputs:
- 64 → UEFI-64b
- 32 → UEFI-32b
- If nothing is returned → the machine was not booted in UEFI mode (see above)
Changing keyboard layout
Checking available layouts
localectl list-keymaps | grep 'pl'
Selecting a layout
loadkeys pl
Checking internet connection
For a wired network, the machine should connect to the internet automatically.
Checking network configuration
ip a
Test connection
ping ping.archlinux.org
Updating system clock
timedatectl
If this is a VM, dual-boot, or you came from Windows, the time may be incorrect (Just Windows Things). Don't worry at this stage; it will be fixed later.
Disk partitioning
For a single disk, if you want to use 100% of the space.
Displaying current disks and partitions
fdisk -l
Example output
Already configured disk
Disk /dev/nvme1n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors
Disk model: Lexar SSD NM790 2TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 130CE33F-082D-419A-AFBC-5EA31EA0B140
Device Start End Sectors Size Type
/dev/nvme1n1p1 2048 2099199 2097152 1G EFI System
/dev/nvme1n1p2 2099200 10487807 8388608 4G Linux swap
/dev/nvme1n1p3 10487808 4000796671 3990308864 1.9T Linux filesystem
Selecting the disk
fdisk /dev/nvme1n1
Partitioning
| Mount point | Type | Recommended size |
|---|---|---|
| /boot | efi | 1GiB |
| /swap | swap | 4GiB |
| / | root | at least 23-32GiB |
g - GPT table
n - new partition
t - type of partition
Creating EFI partition
n → 1 → Return (default start) → +1G
t → 1 → uefi
Creating swap partition
n → 2 → Return → +4G
t → 2 → swap
Creating root partition
n → 3 → Return → Return (all remaining space)
w - write changes and exit fdisk
Check partitions:
fdisk -l
Formatting partitions
EFI partition:
mkfs.fat -F 32 /dev/nvme1n1p1
SWAP partition:
mkswap /dev/nvme1n1p2
swapon /dev/nvme1n1p2
Root/system partition:
mkfs.ext4 /dev/nvme1n1p3
Mounting
Mount system partition:
mount /dev/nvme1n1p3 /mnt
Create directory and mount EFI partition:
mount --mkdir /dev/nvme1n1p1 /mnt/boot
Installation
Required packages
pacstrap -K /mnt base linux linux-firmware
Additional recommended packages
- base-devel – compilers, make, autoconf, needed for AUR
- networkmanager – useful for automatic network management
- vim – text editor
- grub – bootloader
- efibootmgr – manage EFI entries
CPU and GPU drivers (adjust to your hardware, here Ryzen 7 9800X3D + RTX 4070 Super): * amd-ucode – microcode for Ryzen * nvidia – NVIDIA driver * nvidia-utils – NVIDIA libraries and tools
System configuration
Generate fstab:
genfstab -U /mnt >> /mnt/etc/fstab
Check fstab contents
cat /mnt/etc/fstab
If no errors, continue.
Chroot
arch-chroot /mnt
Set time
Set timezone:
ln -sf /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
Synchronize hardware clock:
hwclock --systohc
Locale
Edit locales:
vim /etc/locale.gen
Uncomment en_US.UTF-8 and pl_PL.UTF-8 UTF-8
Generate locales:
locale-gen
Set locale.conf
echo "LANG=en_US.UTF-8" >> /etc/locale.conf
Set keyboard layout:
echo "KEYMAP=pl" >> /etc/vconsole.conf
Network
Change hostname:
echo "pc-arch-mn" >> /etc/hostname
Enable NetworkManager:
systemctl enable NetworkManager
GRUB
Install GRUB
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB-Arch
Generate config
grub-mkconfig -o /boot/grub/grub.cfg
Change root password
passwd
Finishing
Exit chroot:
exit
Unmount:
umount -R /mnt
Reboot:
reboot
Make sure to remove the installation media (USB drive, etc.)
After reboot
Create a user
Install sudo:
pacman -S sudo
Create a sudo user:
useradd -m -G wheel -s /bin/bash mateusz
Set user password:
passwd mateusz
Allow wheel group full permissions:
EDITOR=vim visudo
Uncomment:
%wheel ALL=(ALL:ALL) ALL
Lock root account
Log in as new user. Check sudo permissions:
sudo whoami
Should return
root. If not, fix before continuing.
Lock root account:
sudo passwd -l root
Unlock root account (if needed):
sudo passwd -u root
Install additional packages
pacman -S kitty dolphin git xorg plasma sddm
- kitty – terminal emulator
- dolphin – KDE file manager
- git – git
- xorg – X11 display server
- plasma – KDE Plasma desktop environment
- sddm – graphical login manager
Enable SDDM:
systemctl enable sddm
Reboot:
reboot