1 - Download & verify ISO
Download the latest ISO from archlinux.org. Verify it with the official checksum.
sha256sum archlinux-2025.05.01-x86_64.iso
Tip: Ensure the hash matches the one published on the website.
2 - Create installer USB
On Linux, find your device with lsblk and write the ISO with dd. On Windows, use Rufus.
Linux
lsblk
sudo dd if=archlinux-2025.05.01-x86_64.iso of=/dev/sdX status=progress bs=4M conv=fsync
Replace /dev/sdX with your installer USB device.
Warning: Make sure that your USB drives do not contain any important data.
Windows
Use Rufus to write the ISO to your USB drive.
3 - Connect to the Internet
Now plug in the USB installer and boot from it.
This next step is only necessary if you are using a Wi-Fi connection. If you are using Ethernet, you can skip it.
Let’s connect to the internet using iwctl:
- Detect any Wi-Fi adapters:
- Scan for nearby networks:
- List available networks:
- Connect to your Wi-Fi:
- Test your connection:
iwctl device list
You should see a wireless interface (e.g., wlan0 or similar).
iwctl station wlan0 scan
iwctl station wlan0 get-networks
iwctl station wlan0 connect SSID
Replace SSID with your Wi-Fi network name, press ENTER, type your passphrase, and exit iwctl with exit.
ping -c3 archlinux.org
You should see some packets being sent and received.
4 - Partition target Drive
Example for a 120 GiB Drive
- EFI partition: 1 GiB
- Root partition: 118 GiB
Create two partitions on the target Drive (120GiB):
| # | Purpose | Size | Type / FS | Mount |
|---|---|---|---|---|
| 1 | UEFI system | 1 GiB | vfat (FAT32) | /boot |
| 2 | Root | 118 GiB | Ext4 | / |
Open the target drive with cfdisk, you need to create two partitions, an EFI partition and a root partition.
Warning: Double‑check the target device (e.g. /dev/sdY) with lsblk to avoid wiping the wrong disk.
cfdisk /dev/sdY
5 - Create Filesystems
Now that the partitions are ready, we need to format them with appropriate filesystems.
Formats the first partition as FAT32. This is typically used for EFI System Partitions.
mkfs.vfat -F32 /dev/sdY1
Formats the second partition (root partition) with the Ext4 filesystem.
mkfs.ext4 /dev/sdY2
6 - Mount the Filesystem
Next, we mount the root filesystem, the EFI partition.
Mounts the second partition (root partition) to /mnt.
mount /dev/sdY2 /mnt
Mounts the EFI system partition at /mnt/boot.
mount --mkdir /dev/sdY1 /mnt/boot
Lists the partitions, filesystems, and mount points to verify everything is set up correctly.
lsblk -pf /dev/sdY
7 - Install Base System
pacstrap -K /mnt linux linux-firmware linux-headers base base-devel nano \
networkmanager grub efibootmgr os-prober bash-completion dosfstools
Tip: You will need to add your CPU microcode package: for Intel, add intel-ucode; for AMD, add amd-ucode.
- linux – The Linux kernel.
- linux-firmware – Firmware files for various hardware devices.
- linux-headers – Kernel headers for building modules against the kernel.
- base – Essential packages for a minimal Arch Linux system.
- base-devel – Development tools for compiling software (make, gcc, etc.).
- nano – Simple terminal text editor.
- networkmanager – Network management daemon and CLI tools.
- grub – Bootloader to start the OS.
- efibootmgr – EFI boot manager to configure UEFI boot entries.
- os-prober – Detects other OS installations for bootloader configuration.
- bash-completion – Bash completions for core commands.
- dosfstools – Tools.
- intel-ucode – Microcode updates for Intel CPUs.
- amd-ucode – Microcode updates for AMD CPUs.
8 - Generate the Fstab
Generates the fstab file using UUIDs (-U) for all mounted partitions under /mnt, and writes it to /mnt/etc/fstab. This file tells the system which partitions to mount at boot.
genfstab -U /mnt > /mnt/etc/fstab
9 - System Configuration
Enters the new system environment at /mnt, so all following commands affect the installed system, not the live USB.
arch-chroot /mnt
Sets the system name to zombie, Change it to your own hostname, which identifies your computer on networks.
echo "zombie" > /etc/hostname
Use the command with your city name to find your timezone.
You can then use its output in the next command that links your local timezone file to /etc/localtime for correct system time.
timedatectl list-timezones | grep Tokyo
ln -sf /usr/share/zoneinfo/Japan/Tokyo /etc/localtime
Writes the system time to the hardware clock so it stays accurate after reboots.
hwclock --systohc
Uncomment the locale you want to use by removing the # in this example it's en_US.UTF-8 UTF-8 and then save the file.
nano /etc/locale.gen
Generates the locale files specified in /etc/locale.gen.
locale-gen
Change the en_US.UTF-8 to the locale you uncommented in the /etc/locale.gen file.
echo "LANG=en_US.UTF-8" > /etc/locale.conf
Add your own keymap by changing us to your keyboard layout.
echo "KEYMAP=us" > /etc/vconsole.conf
Prompts to set a strong password for the root account.
passwd
Creates the user with a home directory and adds them to the wheel group for administrative privileges.
Replace <yourUserName> with your own username.
useradd -mG wheel <yourUserName>
Sets the password for your new user account.
passwd <yourUserName>
This allows users in the wheel group to use sudo for administrative tasks.
Uncomment the line at the bottom of the file by removing the # from: %wheel ALL=(ALL) ALL and save the file.
EDITOR=nano visudo
10 - Install GRUB
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB --recheck
--target=x86_64-efi installs GRUB for UEFI systems.
--efi-directory=/boot specifies the EFI system partition.
--bootloader-id=GRUB names the boot entry.
--recheck ensures device detection is refreshed.
Generate GRUB configuration
Automatically generates the GRUB configuration file, detecting all kernels and operating systems.
grub-mkconfig -o /boot/grub/grub.cfg
11 - Networking
Using NetworkManager
NetworkManager handles wired, wireless, and VPN connections.
It also manages DNS automatically.
systemctl enable NetworkManager
After installing the system and rebooting, to connect to your Wi-Fi network, just run sudo nmtui and select your Wi-Fi network. As for Ethernet, it should connect automatically if the Ethernet cable is plugged in.
12 - Hosts
Edit /etc/hosts with nano and add:
127.0.0.1 localhost
::1 localhost
127.0.1.1 YourHostName.localdomain YourHostName
Replace YourHostName with your system’s hostname.
Maps hostnames to IP addresses locally, ensuring your system can resolve its own hostname without querying DNS.
13 - Finish
Leaves the chroot environment, returning to the live installer system.
exit
Reboot the system. Remove the installation media
reboot
14 - Post Installation
sudo pacman -S fastfetch
fastfetch
Et voilà! You now have installed Arch Linux.