How To Install Arch Linux: A Comfy 100% Arch Installation Guide

How To Install Arch Linux: A Comfy 100% Arch Installation Guide

How to Install Arch Linux

This 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.

Neofetch Arch Linux



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:

Once you have downloaded and launched the tool, you will see the following window:

UUI GUI a Tool for Flashing USB with OS Images and Firmwares

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.

Arch Linux ISO Download Page

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:

Choosing Installation Method for Arch Linux Installer

  • 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.
Arch Linux Live ISO Environment

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:

Using ping Command to Check the Internet Connection on Arch Linux Live ISO

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
Running Cfdisk Utility in Live Arch Linux ISO
  • Select GPT and press Enter.
Choosing GPT Layout for Hard Disk Partitioning
  • After selecting the gpt label, you will see the following screen:
Cfdisk Interface on Arch Linux Live ISO

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.
Choosing Free Space to Create Boot Partition in Arch Linux

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:

Final Partition Layout for Arch Linux

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
Running lsblk Command to List out Hard Drive Information
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
Mounting the Root Partition at /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
Creating the Mountpoint for Boot Partition

Now, mount the boot partition (/dev/sda1) to the directory we just created:

mount /dev/sda1 /mnt/boot/efi
Mounting the Boot Partition

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
Turning on the Swap Area

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:
lsblk Verification of Mountpoints



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
Nano editor opening locale.gen file for editing

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
Creating new user and adding to wheel group for sudo privileges

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.

What's Next?

πŸ–₯️ Graphical Desktop: Follow my guide on installing KDE Plasma on Arch Linux to set up SDDM and essential apps.

Modern Workflow: Explore my Hyprland + HyDE setup for a minimal, keyboard-driven experience.

πŸ’» Dual-Booting: If you're sharing your PC with another OS, my Arch Linux dual-boot guide will help you with partitions and bootloaders.

🧠 Deep Dive: Want to push further? Check out the Gentoo Linux installation guide to learn how to build everything from source.

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! πŸš€

Load comments