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
- 1. Download the Arch Linux Installation Image
- 2. Prepare Live Bootable USB
- 3. Boot Arch Linux from the Live USB
- 4. Verify Connectivity to the Internet
- 5. Partition the Disk
- 6. Create File System
- 7. Install Arch Linux
- 8. Configure the Installed Arch System
- 9. Install the Bootloader (systemd-boot)
- 10. Install a Desktop Environment on Arch Linux
- 11. Create a Regular User Account
- 12. Arch Linux Installation is Done
- Conclusion
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).”
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.”
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.
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.
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!
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.org
Code language: Bash (bash)
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 -l
Code language: Bash (bash)
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/vda
Code language: Bash (bash)
Then, with “Free Space” highlighted, hit “New” from the bottom menu. You can navigate the menu options using the “Tab” or arrow keys.
Type the partition size in MB (“500M“) and press the “Enter” key.
With the “/dev/vda1” still selected, select “Type” from the menu at the bottom and choose the “EFI System” partition type.
You’ve finished configuring the EFI System partition.
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.”
Type the partition size in GB (“4G“) and press the “Enter” key.
With the “/dev/vda2” still selected, select “Type” from the bottom menu and choose “Linux swap” partition type.
You’ve finished configuring the swap partition.
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.”
For size, leave the default size value. This means all the remaining free space to be used. Next, press the “Enter” key.
With the “/dev/vda3” row still selected, select “Type” and choose the “Linux filesystem” partition type.
Configuring the root partition is done. You’re all set.
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.”
When asked, type “yes” and press the “Enter” key.
We’re done here. Select “Quit” and press “Enter” to do so.
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 -l
Code language: Bash (bash)
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/vda1
Code language: Bash (bash)
Next stop – the swap partition (“/dev/vda2“):
mkswap /dev/vda2
swapon /dev/vda2
Code language: Bash (bash)
Lastly, for the root partition (“/dev/vda3“), create an ext4 file system:
mkfs.ext4 /dev/vda3
Code language: Bash (bash)
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
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
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 nano
Code 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.
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/fstab
Code 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 /mnt
Code 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/localtime
Code 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.gen
Code 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.
Now generate the locale config file using the below command:
locale-gen
Code language: Bash (bash)
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 --systohc
Code language: Bash (bash)
Create and set the “LANG” variable.
echo LANG=en_US.UTF-8 > /etc/locale.conf
Code 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/hostname
Code 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/hosts
Code language: Bash (bash)
127.0.0.1 localhost
::1 localhost
127.0.1.1 arch
Code language: Bash (bash)
Don’t forget to set the password for the root account:
passwd
Code language: Bash (bash)
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 efibootmgr
Code language: Bash (bash)
Setting it up on our fresh Arch installation couldn’t be easier:
bootctl install
Code language: Bash (bash)
Next, open the “/boot/loader/loader.conf” file and paste the following contents into it:
nano /boot/loader/loader.conf
Code language: Bash (bash)
default arch.conf
timeout 10
console-mode max
editor no
Code 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.conf
Code language: Bash (bash)
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/vda3 rw
Code 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-meta
Code 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-settings
Code 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-radeon
Code 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
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 “wheel” group member to enable the execution of sudo
commands, which we’ll set up in just a moment.
useradd -m -G wheel bobby
Code language: Bash (bash)
Be sure to set a password for the new user:
passwd bobby
Code language: Bash (bash)
Next, enable sudo
privileges for a newly created user:
EDITOR=nano visudo
Code 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) ALL
Code language: Bash (bash)
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
reboot
Code language: Bash (bash)
The systemd-boot boot manager will greet you. Wait a few seconds or press “Enter” to start loading the operating system.
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.
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.