How To Install Arch Linux: A Comfy 100% Arch Installation Guide
archlinux LinuxThis is the complete, foundational Arch Linux installation guide on MusaBase, designed to help you build a clean, flexible, and fully customized Arch Linux system from scratch.
Hi everyone, welcome to MusaBase! In this comprehensive, step-by-step Arch Linux installation guide , you’ll learn how to set up Arch Linux the right way — starting from a minimal base and gradually shaping it into a system that fits your exact needs.
This guide is designed for both first-time Arch users and those coming from other Linux distributions. If you’ve previously worked with manually configured systems like installing Debian the hard way or are exploring modern immutable operating systems such as Fedora Silverblue , this Arch Linux installation guide will help you understand Linux at a deeper, more flexible level.
In this guide, we’ll cover:
- Creating a bootable USB and booting into the Arch Linux live ISO
- Manual disk partitioning and filesystem setup for Arch Linux
- Successfully chrooting into the new Arch environment
- Base system installation using pacstrap, along with core system configuration including time zone, locales, root password, and creating a sudo-enabled user
- Installation and configuration of the GRUB bootloader
- Installing essential packages and preparing the system for a desktop environment or advanced workflows
By the end of this guide, you’ll overcome common installation roadblocks and have a fully functional Arch Linux system ready for advanced customization and real-world use.
Why This Arch Linux Installation Guide Is Different
When I was installing Arch Linux for the first time, I was jumping back-n-forth between differnet pages across the internet. Every tutorial had its unique style and steps, but what I was really looking for was a smooth, step-by-step flow that clearly explained what will happen, when i run the certain command. After a few hours, my Chrome tabs were out of control because the information was scattered across multiple pages, forum posts, and documentation references.
Even the official Arch Linux installation wiki, while extremely detailed, can feel overwhelming for new users due to the sheer amount of information presented at once. However, it remains the best resource available, and it helped me greatly, especially with manual hard disk partitioning, something I was genuinely afraid of, as I didn’t want to accidentally format all of my hard drives.
Most Arch Linux installation tutorials focus on speed, automation, or shortcuts. But i made this guide from my real-life experience, mistakes, solutions and designed it to help you understand what you’re doing at every step, making your Arch Linux installation easy and smooth.
- No archinstall or automated installers
- No pre-written scripts or hidden automation
- Everything explained step by step with context
- All installation steps covered in one complete page
- Focused on learning and understanding, not rushing the install
- Built for users who want full control over their Arch Linux system
This guide walks you through a complete manual Arch Linux installation on a single page, focusing on understanding each step instead of relying on automation or scripts.
Prerequisites
Although Linux itself is a lightweight operating system, installing Arch Linux requires a solid understanding of the process. Since Arch Linux follows a manual installation method, mistakes, such as accidentally formatting your hard drive can happen. To avoid data loss, I strongly recommend testing the installation steps in a Virtual Machine first. Once you are confident that everything works smoothly, you can proceed with installing it as your main OS.
Before continuing, ensure your system meets the following requirements. I will be using the Arch Linux Official Installation Guide for this walkthrough, and I am installing it on a UEFI system.
Minimum System Requirements:
- RAM: At least 512 MB, but 2 GB is recommended.
- Storage: At least 1 GB, but 20 GB is recommended for a complete setup.
- Processor: x86-64 compatible.
- Internet Connection: A stable internet connection is required.
- USB Drive: At least 2 GB of storage for creating a bootable installer.
Step 1: Acquire Arch Linux ISO & Create a Bootable USB
You can use any USB bootloader utility, such as Rufus, Balena Etcher, or dd. For this guide, I am using the Universal USB Installer (UUI) because it is lightweight and easy to use.
1.1: Download UUI:
- Visit the Universal USB Installer (UUI) website and download the tool to create a bootable USB.
Once you have downloaded and launched the tool, you will see the following window:
1.2: Download the Arch Linux ISO:
- Now, it is time to download the Arch Linux ISO file. You can get it from the official Arch Linux website:
- Download Arch Linux ISO
After visiting the website, you will see a list of available ISO files. If you have a torrent client like uTorrent or qBittorrent, you can download the ISO using the torrent file. Simply click on the torrent link to initiate the download. Alternatively, you can download the ISO file directly from your browser.
1.3: Creating a Bootable USB for Arch Installation:
Follow these steps to create a bootable USB drive for Arch Linux:
- Run UUI and select your USB drive. To prepare your USB for EFI booting, simply check the "Prepare this drive" option, and UUI will automatically apply the necessary adjustments.
- Click on the second dropdown menu and select Arch Linux from the list.
- Once Arch Linux is selected, browse and provide the Arch Linux ISO file to UUI.
- Finally, click the "Create" button. UUI will now start flashing the ISO onto your USB drive.
Visual Guide:
Refer to the following images for further clarification:
Step 2: Boot into the Arch Linux Installer
To run Linux or its installation media, you must disable Secure Boot in your system's BIOS/UEFI settings. Follow these steps:
- Enter BIOS/UEFI Settings: Restart your computer and access the BIOS/UEFI settings (usually by pressing F2, F12, ESC, or DEL during startup).
- Disable Secure Boot: Locate the Boot Options or Security section, disable Secure Boot, then save changes and exit.
- Access the Boot Menu: As your computer restarts, open the Boot Menu (often the same key as BIOS/UEFI, or F8/F11/F12 depending on your motherboard).
- Select the USB Drive: Choose your bootable USB drive from the list to launch the Arch Linux live environment.
Step 3: Setting Up the Installation Environment
Once you successfully boot into the USB, you will see this screen:
- Navigate the Boot Menu: Use your arrow keys to select the first option: Arch Linux install medium (x86_64, UEFI).
- Press Enter. This will load the Linux installation files and automatically proceed to the terminal prompt.
The first thing we want to do here is check if our internet is up and running. Use the ping command to test connectivity:
ping archlinux.org
If you see a response with time values, your internet is working correctly:
Stop the Ping Command:
- Press Ctrl + C to stop the running command.
For Wi-Fi Connections:
- Run the iwctl command to open the interactive network management prompt.
- Run device list (or station list) to identify your wireless interface.
- Type station wlan0 scan followed by station wlan0 get-networks to scan for available Wi-Fi networks.
- Look for the SSID that belongs to your network.
- Connect using the command: station wlan0 connect "YOUR_SSID_NAME".
- Enter your Wi-Fi password when prompted.
Once connected, use the ping command again to verify your internet access.
Step 4: Disk Partitioning using cfdisk
There are multiple ways to create partitions for Arch Linux, including fdisk, cfdisk, parted, and gparted. In this tutorial, we will use cfdisk, which provides a simple curses-based graphical interface.
- Run the utility by typing:
cfdisk
- Select GPT and press Enter.
- After selecting the gpt label, you will see the following screen:
Navigating the cfdisk Interface
- Use the Up () & Down () arrow keys to move between disk partitions.
- Use the Left () & Right () arrow keys to navigate the options menu at the bottom.
4.1: Creating the Boot Partition
- Select [ New ] and press Enter.
You will be prompted to specify the partition size. I am allocating 1 GB to the boot partition. Use capital G for Gigabytes. While you can adjust this, it should not be less than 512 MB.
4.2: Creating the Swap Partition
The Swap partition acts as virtual memory when the system runs out of physical RAM.
- Select the remaining Free space and press Enter.
- Allocate between 8 GB and 32 GB based on your system's memory needs. For this guide, I am using 10 GB.
4.3: Creating the Root Partition
Now, we will allocate the remaining disk space to the root partition.
- Select the last Free space, which will automatically be set to the remaining capacity. Press Enter.
4.4: Writing the Partition Table
Once you have created all your partitions, you must commit the changes by writing the new partition table to the disk.
- Use the arrow keys to select [ Write ]. A prompt will appear asking for confirmation.
- Type yes and press Enter.
All partitions are now successfully created. Your final partition structure should look like this:
4.5: Finalizing the Partition Setup
- Select [ Quit ] from the menu to exit cfdisk and return to the terminal.
Step 5: Formatting Partitions
Now, we need to format each partition with its respective File System:
- Root partition: Will be formatted using the EXT4 file system.
- Boot partition: Will be formatted as an EFI System Partition (FAT32).
- Swap partition: Will be initialized as SWAP space.
5.1: Listing Storage Devices
Run the lsblk command to identify your partitions and ensure you are targeting the correct devices:
lsblk
| Device | Type | Purpose |
|---|---|---|
| loop0 | Virtual device | Arch ISO data |
| sda | Physical storage | Main internal HDD/SSD |
| sdb | USB flash drive | External installation media |
5.2: Formatting the Root Partition
First, we will format the root partition (e.g., /dev/sda3) using the mkfs command:
mkfs.ext4 /dev/sda3
5.3: Formatting the Boot Partition
Next, format the boot partition (e.g., /dev/sda1) as FAT32. This is required for UEFI systems:
mkfs.fat -F 32 /dev/sda1
5.4: Setting Up the Swap Partition
The swap partition (e.g., /dev/sda2) is initialized differently than regular data partitions:
mkswap /dev/sda2
All partitions are now formatted and initialized. We are ready to mount them and begin the installation.
Step 6: Mounting Partitions
Now that we have created and formatted our partitions, it's time to mount them. Mounting attaches the filesystem of a partition to the directory tree so that the OS can read and write data to it. In the live ISO environment, we will mount our partitions under the /mnt directory.
6.1: Mount the Root Partition
First, we must mount the root partition. This must be done first because all other mount points (like boot) reside inside the root directory structure. For this guide, the root partition is /dev/sda3.
- Run:
mount /dev/sda3 /mnt
6.2: Mount the Boot Partition
Next, we mount the boot partition. Since we are using UEFI, we need to mount it to /mnt/boot/efi. However, this directory does not exist yet within our freshly mounted root partition, so we must create it.
- Create the directory using the mkdir tool:
mkdir -p /mnt/boot/efi
Now, mount the boot partition (/dev/sda1) to the directory we just created:
mount /dev/sda1 /mnt/boot/efi
6.3: Enabling the Swap Partition
The swap partition doesn't require mounting to a directory. Instead, we "activate" it so the system can use it as virtual memory. For this guide, it is /dev/sda2.
- Run:
swapon /dev/sda2
6.4: Verifying the Mount Points
To confirm that everything is mounted in the correct hierarchy, run the list block devices command again:
lsblk
- Confirm your output shows the MOUNTPOINTS column matching the layout below:
Step 7: Installing the Base System
Arch Linux provides the pacstrap script to install essential packages into the root filesystem of a new installation.
7.1: Installing Linux Firmware and Base Packages
- To install the Linux firmware and base packages necessary for managing the OS, run:
pacstrap /mnt base linux linux-firmware sof-firmware base-devel grub
efibootmgr nano networkmanager
It can take up to 5 to 10 minutes depending on the speed of your internet connection.
What is Pacstrap Installing:
7.2: Resolve Common Errors
If you hit any error while downloading packages from pacstrap, then try one of the following methods:
7.2.1: PGP Signature Error ("Invalid or Corrupted Package")
If you hit any error related to unknown trust such as:
invalid or corrupted package (PGP signature)
signature from "Foo <[email protected]>" is unknown trust
This usually happens because of an outdated keyring. We just need to reinitialize it by running these commands:
pacman -Sy archlinux-keyring
pacman-key --init
pacman-key --populate archlinux
7.2.2: System Clock Error
- Incorrect time makes valid signatures appear expired or invalid.
- If your system clock is not synced with your region, then the "invalid signature" error can still occur even after trying the pacman-key --init method.
- To fix this, run:
timedatectl set-ntp true
hwclock -w
- After syncing your system clock, run the keyring update again.
7.2.3: Mirror or Network Download Failures
- This error usually occurs due to:
- A bad internet connection
- Proxy misconfiguration
- Outdated mirror list
failed to retrieve some files
download library error
Connection timed out after 10000 milliseconds
404 or certificate errors during download
It is either because of a faulty network connection or proxy, or an outdated or slow mirror list.
Verify Internet Connection:
- Start by checking whether the network connection is up and running:
ping archlinux.org
Clear Proxy Variables
- As a precaution, clear all related variables by running:
unset \
http_proxy https_proxy ftp_proxy rsync_proxy \
HTTP_PROXY HTTPS_PROXY FTP_PROXY RSYNC_PROXY
Refresh and Optimize the Mirror List with Reflector
- A fast, up-to-date mirror list is important. Use Reflector to automate this process.
- Install or update Reflector in the live environment by running:
pacman -Sy reflector
- Optional: Back up any existing mirror list:
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
- Next, generate a fast, new mirror list using HTTPS , by sorting by speed and selecting recently synchronized mirrors:
reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
7.3: Update Pacman and Re-run Pacstrap
- Next, refresh the package databases by running this command:
pacman -Syy
- Finally, retry the pacstrap installation:
pacstrap /mnt base linux linux-firmware sof-firmware base-devel nano grub efibootmgr networkmanager
Step 8: Generating the File System Table or fstab
During the installation, we manually mounted the partitions at
/mnt, but these mounts are temporary.
Now, we need to retrieve the filesystem information from these temporary mounts
and store it in a configuration file. This ensures that the system automatically
mounts these partitions at every startup, allowing Linux to locate its files
and data properly.
Genfstab
is a
Bash
script that is used to automatically detect all mounts under a given mount point.
Its output can then be redirected into a file, usually
/etc/fstab.
- To fetch the filesystem information, run:
genfstab /mnt
At this point, we can see the mounted filesystems listed in the terminal. However, we do not need this output displayed on the terminal. Instead, we need to save it to a file.
- To store the mount information in an actual file, run:
genfstab /mnt > /mnt/etc/fstab
Now, the fstab content from the terminal is saved inside a file.
- To verify that the filesystem table has been successfully stored in /mnt/etc/fstab, run:
cat /mnt/etc/fstab
Step 9: Chrooting or Changing Root into the Installed System
Now, we need to switch from the root directory of the live environment to the newly installed Arch system’s root directory
(chroot).
Before installing any Desktop Environment, we must install and configure essential services
(e.g., set up system configuration files, install the bootloader,
set the root password, and create a user account).
- To change the current root to the installed system’s root, run:
arch-chroot /mnt
Note that when you change the root from the live installation environment to the installed system’s environment, the shell prompt color will change:
Now, we can install and configure the necessary components.
Step 10: Configuring the Base System
In the chroot environment, we need to configure several files necessary for the system and add a user account. Although you can use the root account with full access, it is not recommended until you are fully aware of the risks. The items to configure in the chroot include:
- Setting Up Time Zone
- Localization
- Hostname
- Root Password
- Add a User and Granting sudo Privileges
- User Password
- Sudo Setup
10.1: Setting Up Time Zone
- To set our timezone to localtime, run:
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
- The actual command would look like this:
ln -sf /usr/share/zoneinfo/Asia/Karachi /etc/localtime
- To confirm that the time has been set correctly, run:
date
- Next, synchronize the system clock by running:
hwclock --systohc
10.2: Localization
A locale is a set of parameters that defines your system's language, region, and cultural conventions. It includes settings for:
- Language: The language used for system messages, menus, and user interfaces.
- Character Encoding: How text is encoded (e.g., UTF-8, fr_FR.UTF-8).
- Regional Conventions: Formats for dates, times, numbers, and currency.
- Run:
nano /etc/locale.gen
The above nano command will open the locale.gen file in the terminal from there we can set locale to our needs.
- Nano will open up a file like this:
- We can navigate this file with keyboard's arrow keys.
- Select the preset you want and delete # from the line. It will uncomment that preset.
I am choosing en_US encoding for my system. But you can choose your preferred encoding.
- Press CTRL + O to save the changes, then press ENTER. To exit the file, press CTRL + X.
- Now we need to generate the locale we just uncommented.
- To generate locale, run:
locale-gen
- Now we have to specify the locale in the locale.conf file because some programs would be using this file.
- Run:
nano /etc/locale.conf
It will open up an empty text file, where we will specify our locale.
- Type the locale preset in the locale.conf file like this LANG=en_US.UTF-8 or fr_FR.UTF-8 depending on your locale and save the file.
LANG=en_US.UTF-8
- Press Ctrl + O to save the changes. And press Enter to apply the changes.
- Now Press Ctrl + X to exit from the file. It will exit you to terminal.
10.3: Hostname
The hostname is the name assigned to your system on a network, which helps identify your computer when communicating with other devices.
- Run:
nano /etc/hostname
This may open an empty file. Type the desired hostname (for my system I am typing MusaBase).
- Type the hostname you want.
- After adding the hostname, save & exit the file with Ctrl + O and Ctrl + X.
10.4: Root Password
Now for security, we need to set the root password.
- The root user (superuser) has full control over the system.
- The root password is used to log in as root and perform administrative tasks.
- Run:
passwd
After entering the passwd command, you will be prompted to enter and re-enter the password for the root user.
Make sure to use a strong password, as root has full system control.
10.5: Add a User with sudo Privileges
Adding a user with sudo privileges in Linux improves security by limiting direct root access and reducing the risk of accidental system damage, while also enabling controlled administrative access with auditability.
- Run:
useradd -m -G wheel -s /bin/bash username
10.5.1: User Password
Now we have to set a password for the user we just added.
- Run:
passwd username
10.5.2: Sudo Setup
Finally, set up sudo for the new user in the wheel group to allow controlled administrative access without directly using the root account. This improves security, prevents accidental system damage, and allows for auditability of privileged commands. Instead of logging in as root, the user can temporarily gain elevated privileges using sudo.
- Type:
EDITOR=nano visudo
It will open up a sudoers file in the terminal where we will make the changes.
- Navigate to the bottom with keyboard arrow keys.
- Navigate until you find this line:
# %wheel ALL=(ALL:ALL) ALL
- Use the Del key or Backspace to remove the # symbol.
- Now press Ctrl + O to save the changes, then press Enter to apply the changes.
- Now to exit press Ctrl + X and it will exit you to the terminal.
Step 11: Updating System with User Account
Now that we have added sudo privileges for our new user, it's time to test some sudo operations to verify that the new user has the necessary permissions. First, we will change our user.
- To change from root to the user we added, run:
su username
Now, we will run a simple update command using pacman.
- Run:
sudo pacman -Syu
The above command will prompt you for your user's password, then update your system if any updates are available. If your system is already up-to-date, it will simply inform you that no updates are needed.
My system was missing some updates, so the -Syu updated my system, but you might not have to.
Step 12: Enabling Core Services
Before finally restarting the PC and logging into the installed system, we need to enable some core services. However, before enabling core services, we must exit from your user's shell prompt [username@archiso /] and return to the root shell prompt [root@archiso /].
- To exit from the user's shell prompt, run:
exit
Now, we will enable core services like:
- Enabling Network Manager
- Grub Bootloader
12.1: Enable Network Manager
We'll use the systemctl command to ensure that the system can automatically manage network connections after reboot.
- Run:
systemctl enable NetworkManager
12.2: Grub Bootloader
GRUB (GRand Unified Bootloader) is a powerful and flexible bootloader used in Linux systems to manage the startup process. It loads the operating system kernel into memory and allows you to select between multiple OS installations. GRUB supports both UEFI and BIOS, offers a command-line interface, and can be customized for advanced boot configurations.
- Run:
grub-install /dev/sda
# OR
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
Now that GRUB is installed, you also need to generate its initial configuration file.
- To generate the GRUB config file, run:
grub-mkconfig -o /boot/grub/grub.cfg
Step 13: Rebooting
Now that all the steps are complete, we will exit the chroot environment and unmount all drives to prepare for rebooting into the newly installed Arch Linux operating system.
- To exit from the chroot environment, simply run:
exit
Next, unmount all drives that are not in use before rebooting the system.
- To unmount all non-busy drives, run:
umount -a
Finally, reboot the system. This will take you to the GRUB Bootloader, where you can select and boot into your newly installed Arch Linux operating system.
- Run:
reboot
Step 14: Boot into Freshly Installed Operating System
After rebooting, the system will load into the GRUB Bootloader, and you will see the following screen:
Once you select Arch Linux, you will be greeted by Arch Linux's tty1 welcome screen, displaying your configured hostname:
At this point, enter the username and password you set during the user creation process, then press Enter.
After successfully entering your credentials, you will be logged into your Arch Linux distribution. You will then see the following screen:
Here you go! Now you have a fully installed and minimally configured Arch Linux system running on your PC.
π Congratulations, your Arch Linux base system is installed and ready!
At this point, you have a solid foundation. From here, you can move forward depending on how you want to use your system.
That’s it for this guide. If you run into any issues, feel free to leave a comment—I’ll be happy to help.
101 out, I’ll see you in the next one! π



















