Arch Linux, as the name implies, is a Linux distribution. Most of the more popular Linux distributions offer some sort of installer, graphical or CLI. Arch does not, what you do get are a set of scripts. The installation ISO contains a very basic system with the basic tools required to install a new system.

Below I will try and show you how to install Arch on your system. This is a minimal UEFI base system installation. You will have to configure the rest of your system yourself. This will get you up and running.

Step 1: Download Arch Linux

You can download the iso here.

Step 2: Create a live USB

Use Etcher to create the live USB.

Step 3: Boot from the live USB

You might have to disable secure boot on your system's bios to boot from USB. Once your system boots, select Boot Arch Linux option from the menu.

Step 4: Disk Partition/

Use fdisk to partition your disk(s).

To list the partitions use the command fdisk -l

The hard disk should be labelled /dev/sda or /dev/nvme0n1. Please use the appropriate disk labelling for your system. I'll be displaying all commands with /dev/sda.

Select the disk to format and partition.

fdisk /dev/sda

Delete any existing partitions with the command d. Now, let's create new partitions.

On UEFI systems, you must create an EFI partition at the beginning of your disk. Create an ESP partition by entering the command n. It will ask you to choose a disk number, enter 1. When it asks for First Sector press enter. For last sector (partition size), enter + 512M.

Change the type of the EFI partition to EFI System (instead of Linux system) by using the command t. Partition type = 1

Create the root partition. Usually most people create separate root, swap and home partitions. To keep it simple we will be creating a single root partition and put the home directory under the root directory. We will not be creating a swap partition. You could use a swapfile if you need to use swap.

Create the root partition with command n. Select p for primary partition. Select 2 for partition number. Press enter for first sector and press enter for last sector, this will use up all remaining space. When you are done with partitioning, enter command w, to wirte the changes to disk and exit out of fdisk.

Step 5: Create the filesystem

You should now have 2 partitions. EFI and root. Create a FAT32 file system on the first one (EFI). (Remember to replace /dev/sda1 and /dev/sda2 with your own system's partition labels.)

mkfs.fat - F32 /dev/sda1

Create an EXT4 file system for the root partition.

mkfs.ext4 /dev/sda2

Step 6: Connect to the Internet

If you are installing on a laptop or you don't have a wired connection, you can connect to WiFi using wifi-menu. Enter the command wifi-menu and follow the steps.

Test your internet connection with ping google.com

Step 7: Install Arch Linux

It's time to install. Mount the root partition.

mount /dev/sda2 /mnt

now that root is mounted run the following command to install all the necessary packages:

pacstrap /mnt base linux linux-firmware vim nano

It will take some time to download all the packages. Sit back, relax.

Step 8: Configure the system

Generate an fstab file to define how the disk partitions are mounted.

genfstab -U /mnt >> /mnt/etc/fstab

Now use arch-chroot and enter the mounted disk as root. You will now be using the newly installed Arch Linux system on the disk.

arch-chroot /mnt

Set the timezone by using the command timedatectl. Use the following command to list all available timezones.

timedatectl list-timezones

To set the timezone use the following command, replacing the timezone with your own.

timedatectl set-timezone America/Los_Angeles

The next step is locale setup. This sets the language, numbering, date and currency formats for your system. The file /etc/locale.gen holds all the local settings and systtem language in a commented format. Open the file with your favorite editor and uncomment the language you prefer. I will use en_US.UTF-8. Now generate the locale config with the commands below.

locale-gen

echo LANG=en_US.UTF-8 > /etc/locale.conf

export LANG=en_US.UTF-8

You can always change these later, if you change your mind.

Next we will set the hostname (your computer's name on the network) for your system. Create a /etc/hostname file and add the hostname entry to this file. I'll call mine 'arch'.

echo arch > /etc/hostname

Create a hosts file.

touch /etc/hosts

Add the following lines to it. Remember to replace 'arch' with your own chosen hostname.

127.0.0.1 localhost
::1 localhost
127.0.1.1 arch

Set the root password with command passwd.

Install the sudo package.

pacman -S sudo

Change your default editor to nano sudo EDITOR=nano visudo and uncomment the line %wheel ALL=(ALL) ALL.

Let's create a regular user with a home directory. My user will be 'jriv'.

useradd -m jriv

Now let's add the new user to the wheel group so we can use sudo

usermod -aG wheel jriv

Lastly let's set the user's password.

passwd jriv

Verify the new user with: id jriv

Step 9: Install Grub

Make sure your still using arch-chroot and install the required packages.

pacman -S grub efibootmgr

Create the directory where you'll mount the EFI partiton.

mkdir /boot/efi

Now mount the ESP partition you created earlier.

mount /dev/sda1 /boot/efi

Install Grub with the following commands.

grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi

grub-mkconfig -o /boot/grub/grub.cfg

Step 10: Install A Desktop Environment

Choose a desktop environment. I will be installing Gnome. First we need to install the display driver.

pacman -S xorg

Install the Gnome Desktop Environment. You can also install Gnome Extras to include an email client, an IRC client Gnome Teweaks, and a set of games.

pacman -S gnome gnome-extra

Enable the display manager and network manager.

systemctl enable gdm.service

systemctl enable NetworkManager.service

Exit chroot by entering exit and then shutdown your system by entering shutdown now

Take out the USB and turn on your system. If everything went well, you should see the Grub menu and then Gnome login screen.