How to Install Arch Linux: A Beginner’s Practical Guide

Install Arch Linux without the hassle! This guide simplifies the process with step-by-step instructions, perfect for beginners and enthusiasts alike.

Many Linux users want to try Arch Linux, but the general notion that it is difficult to install and learn stops them. When people say it is “hard,” they mean it takes effort. Yes, you have to put a little more blood, sweat, and tears into installing and setting everything up.

On the other hand, however, as a reward, you’ll end up with a system you understand well and tailored exactly to your needs and tastes.

Following this guide, you can install Arch directly on your computer or on a virtual machine using VirtualBox or other virtualization software. One thing’s for sure—with our guidance, success is inevitable, and the outcome will amaze you. So, are you ready to dive into the deep end with me? Let’s do it!

Preinstallation Notes to Virtualbox and KVM Users

IMPORTANT! Before installing, VirtualBox and KVM users must enable EFI in the virtual machine settings. On VirtualBox, click “Settings,” then switch to the “System” page and mark “Enable EFI (special OSes only).”

Arch Linux VirtualBox Install: Enable EFI

If you have decided to install Arch on KVM using Virtual Machine Manager, do not rush to press the “Finish” button when creating the virtual machine. Ensure you have checked the “Customize configuration before install” option, then press “Finish.”

In the newly opened window, select “UEFI” from the “Firmware” drop-down menu, then confirm with “Apply” and finally hit “Begin Installation.”

Arch Linux Virtual Machine Manager (KVM) Install: Enable EFI

1. Download the Arch Linux Installation Image

The first thing we need to do is obtain Arch’s ISO installation image. To do so, visit the Arch Linux download page and grab the latest one.

Download Arch Linux's installation ISO image.
Download Arch Linux’s installation ISO image.

2. Prepare Live Bootable USB

Once your Arch Linux ISO file finishes downloading, you can create a live USB from it. There are many ways to do this, one of the most common being to use the dd command.

Alternatively, you can use applications such as Etcher or Ventoy, which are good options for those who prefer a GUI.

3. Boot Arch Linux from the Live USB

Once you have created a live USB, shut down your computer, plug the USB into it, and boot your system.

Important clarification: You can sometimes not boot from a live USB with secure boot enabled. If so, access the BIOS and turn off the secure boot first.

Arch provides two installation options: Legacy and UEFI mode. UEFI (Unified Extensible Firmware Interface) is more up-to-date and preferable, so this guide will bet on it. Once you boot into Arch’s ISO, you should see a screen similar to the image below.

Boot Arch's installation ISO.
Boot Arch’s installation ISO.

Choose the “Arch Linux install medium (x86_64, UEFI)” option and hit “Enter.”

After the installer decompresses and loads the Linux kernel, you will be automatically thrown to a terminal with root privileges. Here’s where our Arch journey starts!

Start Installing Arch Linux.
Start Installing Arch Linux.

4. Verify Connectivity to the Internet

First, check the internet connection. To do so, ping a website, as shown in the example below.

ping -c 3 archlinux.orgCode language: Bash (bash)
Make sure you have working internet connectivity.
Make sure you have working internet connectivity.

If you use a wired connection, DHCP picks it up automatically. However, if you receive an error message, you must first configure a working one before moving on.

5. Partition the Disk

The next step in our Arch Linux installation guide is partitioning the hard drive. Here is where you will likely find the most trouble if you are unfamiliar with partitioning tools such as fdisk or cfdisk. But don’t worry, it is easy, as you’ll see.

First, list your disks and partitions:

fdisk -lCode language: Bash (bash)
List disks and partitions.
List disks and partitions.

As you can see from the image above, for this guide, I created a virtual machine with a blank 20GB hard disk identified as “/dev/vda.”

For a basic partitioning, we’ll create the following layout:

  • /dev/vda1: EFI System partition with 500MB size, FAT32 formatted. This provides space for storing bootloaders and other files required for booting.
  • /dev/vda2: Swap partition, 4GB size. Swap space is used to extend the virtual memory beyond the installed physical one (RAM) or for suspend-to-disk support.
  • /dev/vda3: Linux partition, with the remaining free disk space size, ext4 formatted. This is the root (“/“) partition on which our Arch Linux operating system, files, and other information will be stored.

5.1 Create EFI System Partition

Let’s start creating a disk layout partition table by running the cfdisk command against the machine’s hard drive, select the “GPT” label type, and hit “Enter.”

cfdisk /dev/vdaCode language: Bash (bash)
Select GPT type partition table.
Select GPT type partition table.

Then, with “Free Space” highlighted, hit “New” from the bottom menu. You can navigate the menu options using the “Tab” or arrow keys.

Create a boot partition.
Create a boot partition.

Type the partition size in MB (“500M“) and press the “Enter” key.

Set boot partition size.
Set boot partition size.

With the “/dev/vda1” still selected, select “Type” from the menu at the bottom and choose the “EFI System” partition type.

Set boot partition type.
Set boot partition type.
Set boot partition type.
Set boot partition type.

You’ve finished configuring the EFI System partition.

Boot partition successfully created.
Boot partition successfully created.

5.2 Create Swap Partition

Now, let’s move on and create the swap partition using the same procedure. Highlight “Free space” again and hit “New.”

Create a swap partition.
Create a swap partition.

Type the partition size in GB (“4G“) and press the “Enter” key.

Set swap partition size.
Set swap partition size.

With the “/dev/vda2” still selected, select “Type” from the bottom menu and choose “Linux swap” partition type.

Set swap partition type.
Set swap partition type.
Set swap partition type.
Set swap partition type.

You’ve finished configuring the swap partition.

The swap partition has been successfully created.
The swap partition has been successfully created.

5.3 Create Root Partition

Finally, you must create the root (“/“) partition. Once again, for the last time – I promise, highlight the “Free space” row and hit “New.”

Create a root partition.
Create a root partition.

For size, leave the default size value. This means all the remaining free space to be used. Next, press the “Enter” key.

Set root partition size.
Set root partition size.

With the “/dev/vda3” row still selected, select “Type” and choose the “Linux filesystem” partition type.

Set root partition type.
Set root partition type.
Set root partition type.
Set root partition type.

Configuring the root partition is done. You’re all set.

The root partition has been successfully created.
The root partition has been successfully created.

5.3 Write Changes to Disk

Next, you need to save the changes made. Choose “Write” from the menu at the bottom and hit “Enter.”

Write changes to disk.
Write changes to disk.

When asked, type “yes” and press the “Enter” key.

Confirm writing changes to disk.
Confirm writing changes to disk.

We’re done here. Select “Quit” and press “Enter” to do so.

Exit the cfdisk partitioning rool.
Exit the cfdisk partitioning rool.

6. Create File System

With all partitions ready, it’s time to create the file system. But first, let’s review the partition table summary by running the following:

fdisk -lCode language: Bash (bash)
Review the partitions table.
Review the partitions table.

The “/dev/vda” disk now has three partitions (“/dev/vda1,” “dev/vda2,” and “/dev/vda3“) shown above. Good job!

Okay, but what did we just do? In short, the partitions created in the previous steps drew boundaries on the storage space offered by the hard drive and specified the type of space between each boundary line.

It’s time now to format those partitions with the required file systems. For the EFI one (“/dev/vda1“), create a FAT32 file system.

mkfs.fat -F32 /dev/vda1Code language: Bash (bash)
Formatting the EFI partition as FAT32.
Formatting the EFI partition as FAT32.

Next stop – the swap partition (“/dev/vda2“):

mkswap /dev/vda2
swapon /dev/vda2Code language: Bash (bash)
Format and activate the swap partition.
Format and activate the swap partition.

Lastly, for the root partition (“/dev/vda3“), create an ext4 file system:

mkfs.ext4 /dev/vda3Code language: Bash (bash)
Format the root partition as ext4.
Format the root partition as ext4.

7. Install Arch Linux

Now, after all that somewhat boring disk partitioning and formatting, we’ve finally arrived at the most exciting part—the actual installation of Arch Linux.

First, we must mount the root partition (“/dev/vda3“) to the “/mnt” directory before we can perform any installation.

mount /dev/vda3 /mnt

Now, let’s set up the EFI partition (“/dev/vda1“) to store the bootloader files. We’ll mount it to “/mnt/boot,” but since that directory doesn’t exist yet, we’ll need to create it first before proceeding with the mount.

mkdir /mnt/boot
mount /dev/vda1 /mnt/boot
Mounting the root and EFI partitions.
Mounting the root and EFI partitions.

You’ll notice that none of the commands above generate any output. This simply means they’ve executed successfully.

Let’s double-check that everything is properly mounted in the right spots.

lsblk
Listing the mounting points.
Listing the mounting points.

Great! Everything looks as expected. Now, with root and EFI partitions mounted, it’s time to install the core Arch system.

pacstrap -K /mnt base linux linux-firmware sudo nanoCode language: Bash (bash)

It will take some time to download and install these packages, so be patient. In the end, you’ll see a screen like the one shown below. Your next stop is system configuration. Let’s move on.

Installing core Arch Linux system.
Installing core Arch Linux system.

8. Configure the Installed Arch System

After the installation completes, generate a “/etc/fstab” file for your new Arch Linux system by issuing the following command:

genfstab -U /mnt >> /mnt/etc/fstabCode language: Bash (bash)

Now that we have Arch installed, we must chroot into the installed root partition (“/dev/sda1“), which is mounted under the “/mnt” directory.

arch-chroot /mntCode language: Bash (bash)

From here, let’s first configure the timezone. Find your preferred one (“/usr/share/zoneinfo/Zone/SubZone“) where “Zone/SubZone” is your location, such as “America/New_York,” “Europe/Paris,” “Asia/Bangkok,” and so on. You got the idea.

Create a symbolic link to set the timezone (replace “America/New_York” with your timezone).

ln -sf /usr/share/zoneinfo/America/New_York /etc/localtimeCode language: Bash (bash)

Now, we need to set up the locale. The file “/etc/locale.gen” contains locale settings and system languages with all entries commented by default. So, we must open this file using a text editor and uncomment the line containing the desired locale.

nano /etc/locale.genCode language: Bash (bash)

Uncomnent “en_US.UTF-8 UTF-8” and “en_US ISO-8859-1” (by removing the “#” sign), and any other needed locales in “/etc/locale.gen.” Then, press “Ctrl+O” followed by “Enter” to save, and finally, “Ctrl+X” to exit the editor.

Setting up locales.
Setting up locales.

Now generate the locale config file using the below command:

locale-genCode language: Bash (bash)
Generating locales.
Generating locales.

Run the command below to synchronize the hardware clock. It automatically creates a “/etc/adjtime” file containing descriptive information about the hardware mode clock setting and clock drift factor.

hwclock --systohcCode language: Bash (bash)

Create and set the “LANG” variable.

echo LANG=en_US.UTF-8 > /etc/locale.confCode language: Bash (bash)

Now, we’ll set the hostname. A hostname is the computer’s name. Since I’m not the most creative at choosing names, I’ll opt for “arch.” I’m sure you all could come up with something way better.

echo "arch" > /etc/hostnameCode language: Bash (bash)

Add this name to the “/etc/hosts.” Edit the file with Nano and add the following lines (replace “arch” with the hostname you chose earlier).

nano /etc/hostsCode language: Bash (bash)
127.0.0.1      localhost
::1            localhost
127.0.1.1      archCode language: Bash (bash)

Don’t forget to set the password for the root account:

passwdCode language: Bash (bash)
Set a password for the root user.
Set a password for the root user.

You’ll be asked to type it twice, but be attentive, as you will see nothing while typing.

9. Install the Bootloader (systemd-boot)

I relied on a good old GRUB as my go-to bootloader for years. But then I discovered systemd-boot, a sleek and lightweight alternative built right into systemd. Honestly, it makes GRUB feel a bit redundant—why pile on extra software when systemd-boot already does the job so efficiently?

Plus, there are some clear advantages to using systemd-boot over GRUB. It loads faster than GRUB because it has a simpler design and fewer features, integrates tightly with UEFI firmware, and uses the UEFI boot manager directly. Moreover, unlike GRUB, systemd-boot does not use scripts, etc.

So, for this guide, we’ll stick with this approach, which I recommend for all systemd-based systems. Let’s first install a single package:

pacman -S efibootmgrCode language: Bash (bash)

Setting it up on our fresh Arch installation couldn’t be easier:

bootctl installCode language: Bash (bash)

Next, open the “/boot/loader/loader.conf” file and paste the following contents into it:

nano /boot/loader/loader.confCode language: Bash (bash)
default  arch.conf
timeout  10
console-mode max
editor   noCode language: Bash (bash)

As a final step, create a file named “arch.conf” inside the “/boot/loader/entries/” directory, adding the following contents to it:

nano /boot/loader/entries/arch.confCode language: Bash (bash)
title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=/dev/vda3 rwCode language: Bash (bash)

Finally, save the file and exit.

10. Install a Desktop Environment on Arch Linux

Our fresh Arch Linux currently contains only the essential software packages needed to manage the system from the command line, with no desktop environment installed. But as you might expect from Arch, it offers all those available in its repositories.

Below, I’ll show you how to install KDE Plasma. Don’t worry—I’m not here to ignite the never-ending debate about which desktop environment reigns supreme.

Plasma just strikes a nice balance between a traditional desktop feel and nearly endless customization options, which fits perfectly with the Arch philosophy. That’s why I’ve chosen it for this guide. So, let’s install it.

pacman -S plasma-meta kde-applications-metaCode language: Bash (bash)

Now, let’s talk about video drivers. If you have an NVIDIA GPU, I highly recommend using the proprietary driver—it’s the best way to unlock your GPU’s full potential. Here’s how you can install it:

pacman -S nvidia nvidia-utils nvidia-settingsCode language: Bash (bash)

If you’re using an AMD GPU, you’re in luck! Unlike NVIDIA, AMD is strongly committed to open-source development, and Linux supports AMD GPUs right out of the box.

In fact, you only need the “mesa” package, which was automatically installed as a dependency when you set up the KDE Plasma desktop environment a little while ago.

Additionally, for Vulkan support (important for gaming and other GPU-intensive applications), install the following package:

pacman -S vulkan-radeonCode language: Bash (bash)

One last important clarification about video support: If you set up Arch Linux as a virtual machine, whether using VirtualBox, KVM, or any other virtualization software, you can skip installing the drivers mentioned above. VMs rely on their own virtual video drivers to handle video support for Linux guests, so there’s no need for additional driver installation.

Finally, enable the SDDM (the default KDE display manager) and Network Manager to start automatically at system boot.

systemctl enable sddm
systemctl enable NetworkManager
Enabling SDDM and Network Manager services.
Enabling SDDM and Network Manager services.

11. Create a Regular User Account

Create a regular user account for your daily tasks, replacing “bobby” in the example below with the username of your choice. Additionally, we make it a “wheelgroup member to enable the execution of sudo commands, which we’ll set up in just a moment.

useradd -m -G wheel bobbyCode language: Bash (bash)

Be sure to set a password for the new user:

passwd bobbyCode language: Bash (bash)
Adding a regular user account to Arch Linux.
Adding a regular user account to Arch Linux.

Next, enable sudo privileges for a newly created user:

EDITOR=nano visudoCode language: Bash (bash)

Scroll down the screen and find the line shown below, then uncomment it by removing the “#” from the start.

# %wheel ALL=(ALL) ALLCode language: Bash (bash)
Add sudo privileges to a user.
Add sudo privileges to a user.

12. Arch Linux Installation is Done

And here we are, wrapping up our fresh Arch installation. The big moment has finally arrived! Unmount the root partition and reboot to your newly installed Arch Linux system.

exit
umount -R /mnt
rebootCode language: Bash (bash)

The systemd-boot boot manager will greet you. Wait a few seconds or press “Enter” to start loading the operating system.

Systemd-boot bootloader.
Systemd-boot bootloader.

KDE Plasma’s SDDM login manager will welcome you. Enter the user password to log in and enjoy your freshly installed Arch Linux system in all its glory.

Arch Linux has been successfully installed.
Arch Linux has been successfully installed.
Arch Linux with KDE Plasma 6 desktop environment.
Arch Linux with KDE Plasma 6 desktop environment.

From this point, you can install what you want and configure your Arch Linux according to your needs and preferences. Furthermore, now is the perfect moment to check out our “Arch Linux Post-Installation Essential Steps” guide—it’s a must for getting your Arch journey off to a smooth and hassle-free start.

In addition, our comprehensive “The Beginner’s Guide to Using Pacman on Arch Linux” reading will teach you everything you need to know for managing software, providing you with the confidence, solid knowledge, and clear understanding to navigate and work seamlessly with Arch’s package manager.

Conclusion

And here we are, at the end of our adventure, installing Arch Linux. I know it was a bit long, but I have tried to cover all the steps and explain their essence. Now, you can proudly tell the world, “I use Arch, BTW.” I have to admit… so do I.

In addition, as an Arch user, don’t forget to check out this treasure trove called Arch Wiki. It is so well-composed and maintained that even non-Arch users glean knowledge and solutions daily.

Thank you for your time spent on this guide! I’d love to hear about your experience with the installation process. Feel free to share your thoughts in the comments below—I always enjoy reading what you have to say.

Bobby Borisov

Bobby Borisov

Bobby, an editor-in-chief at Linuxiac, is a Linux professional with over 20 years of experience. With a strong focus on Linux and open-source software, he has worked as a Senior Linux System Administrator, Software Developer, and DevOps Engineer for small and large multinational companies.

Think You're an Ubuntu Expert? Let's Find Out!

Put your knowledge to the test in our lightning-fast Ubuntu quiz!
Ten questions to challenge yourself to see if you're a Linux legend or just a penguin in the making.

1 / 10

Ubuntu is an ancient African word that means:

2 / 10

Who is the Ubuntu's founder?

3 / 10

What year was the first official Ubuntu release?

4 / 10

What does the Ubuntu logo symbolize?

5 / 10

What package format does Ubuntu use for installing software?

6 / 10

When are Ubuntu's LTS versions released?

7 / 10

What is Unity?

8 / 10

What are Ubuntu versions named after?

9 / 10

What's Ubuntu Core?

10 / 10

Which Ubuntu version is Snap introduced?

The average score is 69%