FPL is part of the Destination Linux Network

How To Install Arch Linux: A Step by Step Installation Guide

Share:

Share on twitter
Share on reddit
Share on linkedin
Share on telegram
Share on facebook
Share on email

The installation of Arch has been and continues to be a rite-of-passage within the Linux community. Although there are many guides that discuss the steps needed to install Arch Linux, I couldn’t resist writing my very own guide. This guide promises to be different by being a narrative-style approach to the topic. The goals of this guide are to be educational, informative, and to make & keep it simple (in the spirit of the Arch philosophy). The guide assumes that you have some proficiency with the command line and have a basic understanding of Linux. I hope that this guide can help you succeed with this rite and put you in control of a system that you have built from the ground-up.

As an Arch user, the Arch Wiki will be an extremely valuable resource to you. This resource is so well-composed and maintained that even non-Arch users glean knowledge, wisdom, and solutions from it daily.

And now, may the adventure begin…


Download the Arch ISO

The first thing that we need to do is to obtain an image of Arch Linux. To do so, let’s visit the the Arch Linux download page to download the ISO image file.


Boot the System to the Arch ISO

Depending upon the type of system that Arch will be installed on, there are different methods of booting the Arch ISO.

Physical Machine

For physical machines, a bootable medium can be created from the Arch ISO file.

Prepare Live Bootable USB

Although an optical disk could have been used to create a bootable physical medium, USB was chosen due to its relevance. There are many ways to prepare a live USB, one of them is via the dd command. It is worth noting that you should be very cautious when using the dd command since it can overwrite running disks. There are other options as well such as SUSE Image Writer, Fedora Image Writer, Mint Stick and others. The scope of this guide won’t be able to provide a guide for each writer tool so we’ll stick with dd for this guide. Remember, be careful with dd since it is nicknamed “disk destroyer” for a reason.

# dd if=/location/of/iso/file of=/device/entry/of/usb/drive

Boot to USB

Insert the USB drive into the physical machine and boot into the USB drive. BIOS settings/boot order may need to be adjusted to ensure that the physical machine boots from the USB drive.

Confirm You are In

Once you have properly booted into the Arch ISO, a prompt similar to the one below will be displayed.

root@archiso ~ #

Virtual Machine

Virtual machines do not require a physical medium to be created. The Arch ISO file can be mounted as a virtualized optical disk within the virtualized optical drive.

Confirm You are In

Once you have properly booted into the Arch ISO, a prompt similar to the one below will be displayed.

root@archiso ~ #

Verify Connectivity to the Internet

During the installation, I prefer to have a wired connection to the Internet. This guide has been written based on a machine that is connected to the Internet using a wired connection.

To check Internet connectivity, simply ping a website as shown in the example below.

root@archiso ~ # ping -c 4 archlinux.org
PING archlinux.org (95.217.163.246) 56(84) bytes of data.
64 bytes from archlinux.org (95.217.163.246): icmp_seq=1 ttl=47 time=206 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=2 ttl=47 time=181 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=3 ttl=47 time=181 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=4 ttl=47 time=181 ms

--- archlinux.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 180.629/187.159/205.907/10.828 ms

Update the System Clock

Now that we have confirmed connectivity to the Internet, we can leverage NTP. Use timedatectl command to ensure the system clock is accurate by enabling NTP.

root@archiso ~ # timedatectl set-ntp true
Starting Network Time Synchronization...
[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Time Set.
[  OK  ] Reached target System Time Synchronized.

Disk Partitioning

In order for us to have a working distribution, we have to create some partitions on the target hard disk so that we can properly install and run Arch Linux. There are numerous tools and commands that can be used for disk partitioning. This guide uses fdisk to create the partitions.

The recommended partition schemes vary depending on whether or not the system has UEFI mode enabled.

So, let’s verify if UEFI mode is enabled by checking for the existence of this directory:

root@archiso ~ # ls /sys/firmware/efi/efivars
ls: cannot access '/sys/firmware/efi/efivars': No such file or directory

Based on the output of the command above, we can determine that the system being used in this guide does not have UEFI.

Now, we can list all existing disk and disk partitions. For the purposes of this guide and for a simpler installation, a virtual machine has been created with a blank 20GB hard disk identified by /dev/sda.

root@archiso ~ # fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop0: 566.52 MiB, 594034688 bytes, 1160224 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Let’s begin the partitioning process on the /dev/sda hard disk.

root@archiso ~ # fdisk /dev/sda

Welcome to the fdisk (util-linux 2.36.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xa1936afe.

Command (m for help):

If you would like to see all fdisk commands, this is an ideal opporunity to press the m key and Enter to display a list of all commands. You could do that for your information (FYI). However, this guide will walk you through the commands that are needed to partition the disk.

Before we create any partitions, let’s review the recommended partition schemes.

Recommended Partition Schemes

The schemes below are mere recommendations and can be altered to your liking. Notably, there are many viewpoints on the size of a swap partition, so take these recommendations with a grain of salt and do what suits you best. After all, that’s the beauty of creating your very own system from the ground-up.

NON-UEFI

Mount PointPartitionPartition TypePartition SizeFile System
/mnt/dev/sda1LinuxRemainder of the deviceext4
[SWAP]/dev/sda2Linux swapMore than 512 MiBext4

UEFI

Mount PointPartitionPartition TypePartition SizeFile System
/mnt/boot or mnt/efi/dev/sda1EFI System Partition260MB – 512MBfat32
/mnt/dev/sda2Linux x86-64 root (/)Remainder of the deviceext4
[SWAP]/dev/sda3Linux swapMore than 512MiBext4

Create the Partitions

Since we have a non-UEFI system, it makes sense to follow the NON-UEFI partition scheme above. This means that we will create 2 partitions: a swap partition (Linux swap) and a partition where root will be mounted (Linux).

We have a hard drive that is approximately 20GB in size, so we can easily spare approximately half of a gigabyte (512MB) for the Linux swap partition (/dev/sda2). Leaving us with approximately 19.5GB for the Linux partition (/dev/sda1).

Linux Partition

First, let’s create the Linux partition (/dev/sda1/).

Command (m for help): n

Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p   

Partition number (1-4, default 1): 1

First sector (2048-41943039, default 2048): 2048

Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943049, default 41943039): +19.5G

Created a new partition of type 'Linux' and of size 19.5 GiB.

Swap Partition

Next, let’s go ahead and create the Linux swap partition (/dev/sda2/).

Command (m for help): n

Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p   

Partition number (2-4, default 2): 2

First sector (40896512-41943039, default 40896512): 40896512

Last sector, +/-sectors or +/-size{K,M,G,T,P} (40896512-41943039, default 41943039): 41943039

Created a new partition 2 of type 'Linux' and of size 511 MiB.

With the Linux swap partition, we need to change the partition type so that it is a true swap partition.

If you would like to see all partition types, this is an ideal opporunity to press the l key and Enter to display a list of all partition types. You could do that for your information (FYI). However, this guide will walk you through the commands that are needed to partition the disk.

We now need to change the partition type of our intended Linux swap partition (/dev/sda2).

Command (m for help): t

Partition number (1,2, default 2): 2

Hex code or alias (type L to list all): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Verify Proposed Partition Table

Before we save our changes and commit them to the disk, let’s take a moment to verify that everything was done correctly.

Command (m for help): p
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc12ff6e9

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sda1           2048 40896511 40894464 19.5G 83 Linux
/dev/sda2       40896512 41943039  1046528  511M 82 Linux swap / Solaris

Write Partition Table to Disk

Finally, let’s write the newly created partition table to the disk and exit the fdisk utility.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@archiso ~ #

Create File System

The creation of the partitions in the previous steps simply drew boundaries on the storage space offered by the hard disk and specified the type of space betweeen each boundry line. In order for these partitions to be of any use, they should be initialized with a file system and have the swap partition enabled.

Again depending on the type of system (UEFI, non-UEFI), the process will vary.

NON-UEFI

For our non-UEFI system, let’s create an ext4 file system on the root partition (you may choose any other viable file system).

root@archiso ~ # mkfs.ext4 /dev/sda1
mke2fs 1.45.6 (20-Mar-2020)
Creating filesystem with 5111808 4k blocks and 1277952 inodes
Filesystem UUID: ca970c3e-5a47-468c-8ff7-6ba9dda277af
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Also, let’s prepare the swap partition.

root@archiso ~ # mkswap /dev/sda2
Setting up swapspace version 1, size = 511 MiB (535818240 bytes)
no label, UUID=12e273d1-4dc4-4151-9ffe-6a09ae78be38

root@archiso ~ # swapon /dev/sda2

UEFI

For the EFI partition type, create a FAT32 file system.

# mkfs.fat -F32 /dev/sda1

For the root partition, create an ext4 file system (or any other viable file system of your choice).

# mkfs.ext4 /dev/sda2

Prepare the swap partition:

# mkswap /dev/sda3
# swapon /dev/sda3

Optimize Mirrors

Much like any other distro, Arch Linux relies on mirrors to obtain updates. There are a plethora of mirrors that are hosted on hundreds of servers spanning the entire globe. Usually, the mirrors which are geographically nearer in distance should provide for the fastest connection speeds.

Arch Linux comes with a file known as the “mirrorlist” which contains all known mirrors. However, this file is not optimized since it contains every single mirror. We could manually go through this file and edit it, but that would take quite some time. Luckily, there is a tool (Python script) called reflector that has been created that will automatically optimize the file for us. We just need to provide some input.

Sync the pacman Repository

Before we go about downloading any applications/tools, we should update the repository and ensure that we have the latest and greatest available to us.

root@archiso ~ # pacman -Syy
:: Synchronizing package databases...
 core                            132.8 KiB  5.64 MiB/s 00:00 [#################################] 100%
 extra                          1633.0 KiB  10.4 MiB/s 00:00 [#################################] 100%
 community                         5.3 MiB  8.91 MiB/s 00:00 [#################################] 100%

Install reflector

With a fully-updated repository, we are in good-standing to install the reflector tool so that we can optimize the /etc/pacman.d/mirrorlist file for local mirrors.

root@archiso ~ # pacman -S reflector
resolving dependencies...
looking for conflicting packages...

Packages (1) reflector-2021-1

Total Download Size:   0.03 MiB
Total Installed Size:  0.10 MiB
Net Upgrade Size:      0.01 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
 reflector-2021-1-any             25.9 KiB 0.00   B/s 00:00 [#################################] 100%
(1/1) checking keys in keyring                              [#################################] 100%
(1/1) checking package integrity                            [#################################] 100%
(1/1) loading package files                                 [#################################] 100%
(1/1) checking for file conflicts                           [#################################] 100%
(1/1) checking available disk space                         [#################################] 100%
:: Processing package changes...
(1/1) upgrading reflector                                   [#################################] 100%
:: Running post-transaction hooks...
(1/2) Reloading system manager configuration...
(2/2) Arming ConditionNeedsUpdate... 

Back up Existing Mirrorlist File

It doesn’t hurt to make a backup of a file that is going to be changed. Let’s make a backup of the /etc/pacman.d/mirrorlist file.

root@archiso ~ # cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak

Run reflector Against the Mirrorlist File

Execute the reflector command to optimize the /etc/pacman.d/mirrorlist file. The end result will be a leaner file which contains the most optimal entries. Since I am in the United States, I have used “US” as the country code within the command.

root@archiso ~ # reflector -c "US" -f 12 -l 10 -n 12 --save /etc/pacman.d/mirrorlist

Install Arch Linux

Our system has now been prepared and optimized to take on the install of Arch Linux. This phase involves mounting the Linux partition and installing desired packages using the pacstrap command on to the mounted Linux partition.

Mount the Linux Partition

We must mount the root directory before we can perform any installation.

NON-UEFI

root@archiso ~ # mount /dev/sda1 /mnt

UEFI

root@archiso ~ # mount /dev/sda2 /mnt

Perform the Installation

Use the pacstrap command to install Arch Linux, required packages, and any additional packages (in this case, the nano text editor) to the mounted Linux partition. Additional packages can always be installed later; the installation of nano as an additional package was included to demonstrate the ability of the pacstrap command (and to promote nano as my favorite text editor which will come in handy later in this guide).

root@archiso ~ # pacstrap /mnt base linux linux-firmware nano

After issuing the command above, the screen will be very busy with the installation of multiple packages which comprise the Arch Linux distribution. Once complete, we can now say that we have installed Arch Linux! But, there’s still more to do: configuration, bootloader installation, and selecting a desktop environment.


Configure the Installed Arch System

During the configuration phase, we will start things off by setting the root partition to mount automatically. Then, we will set the timezone so that it reflects the current/local timezone. Next, we will set the locale so that dates, times, numbers, etc. are formatted correctly based on the geographical locale of the machine. Also, we can take this opportunity to make some minor network configurations so that this machine has a proper and accurate identity on the network. Finally, we can enhance the security of the machine by setting a password for the root user.

Automating the Mounts

Let’s create the /etc/fstab so that the root partition is mounted automatically when the system is booted. The /etc/fstab file can be edited manually, but our goal is to simplify the installation of Arch Linux. Similar to what we did with the reflector tool to automate the optimal mirror selection process, we will introduce and use yet another tool to create the /etc/fstab file.

We can automatically generate the fstab file using the genfstab command.

root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab

Change Root

Recall that we initially booted into this machine using an image file. We are still in the root directory of the image file and our session is in RAM. Now that we have installed Arch Linux, we need to switch to the physically installed root partition using the arch-chroot command.

Change root to the root directory at /mnt.

root@archiso ~ # arch-chroot /mnt

Setting the Timezone

At the beginning of this guide, we were able to set NTP to true. This ensured that we had the correct time, but did not ensure that we had the correct timezone. In this step, we will apply the correct timezone (UTC offset) so that the time represented in our installation is relevant to the geographical location.

Use the timedatectl command to find your timezone. You can use the arrow keys and the PgUp and PgDn keys to navigate through the list. Once complete press q to exit the list.

[root@archiso /]# timedatectl list-timezones

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

[root@archiso /]# ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Run hwclock to generate /etc/adjtime.

[root@archiso /]# hwclock --systohc

Setting Up Locale

The term “locale” refers to language, number, date and currency formats The file /etc/locale.gen contains locale settings and system languages and is commented by default. We must open this file using a text editor and uncomment the line which contains the desired locale. This is why nano was installed previously using the pacstrap command.

Open the /etc/locale.gen file and remove the “#” from the start of the line which contains your locale. Then, save the file.

[root@archiso /]# nano /etc/locale.gen

Since I am in the United States, the following entry has been uncommented prior to saving the file and the locale of en_US.UTF-8 will be used for the remainder of the steps.

# /etc/locale.gen

en_US.UTF-8 UTF-8 

Generate the /etc/locale.conf file.

[root@archiso /]# locale-gen
Generating locales...
  en_US.UTF-8... done
Generation complete.

Create and set the LANG variable.

[root@archiso /]# echo LANG=en_US.UTF-8 > /etc/locale.conf
[root@archiso /]# export LANG=en_US.UTF-8 

Network Configuration

Let’s use that text editor once more to give our machine a hostname and proper identity on the network.

Create the /etc/hostname file and add the hostname entry. Then, save the file.

[root@archiso /]# nano /etc/hostname

This entry has been added:

# /etc/hostname

ArchLinuxPC

Create the /etc/hosts file and add the proper entries. Then, save the file.

[root@archiso /]# nano /etc/hosts

These entries have been added:

# /etc/hosts

127.0.0.1 localhost
::1 localhost
127.0.1.1 ArchLinuxPC

Root Password

Finally, let’s give the root user a password for the sake of security.

Use the passwd command to set the password for root.

[root@archiso /]# passwd
New password:
Retype new password:
passwd: password updated successfully

Install Grand Unified Bootloader (GRUB)

Up to this point, we have created a functional Arch Linux system. It has been installed on the root partition, but a bootloader is needed to properly and automatically load our newly installed system. There are a few choices when it comes to bootloaders. I have chosen to use GRUB as the bootloader of choice for this guide.

Once again, we have two general methods of installing a bootloader: the UEFI and non-UEFI methods.

NON-UEFI

For our non-UEFI system, the process is shown below.

Install the grub package.

[root@archiso /]# pacman -S grub
resolving dependencies...
looking for conflicting packages...

Packages (1) grub-2:2.04-8

Total Download Size:    6.74 MiB
Total Installed Size:  32.91 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
 grub-2:2.04-8-x86_64              6.7 MiB 6.97 MiB/s 00:01 [#################################] 100%
(1/1) checking keys in keyring                              [#################################] 100%
(1/1) checking package integrity                            [#################################] 100%
(1/1) loading package files                                 [#################################] 100%
(1/1) checking for file conflicts                           [#################################] 100%
(1/1) checking available disk space                         [#################################] 100%
:: Processing package changes...
(1/1) installing grub                                       [#################################] 100%
Generate your bootloader configuration with:
  grub-mkconfig -o /boot/grub/grub.cfg
Optional dependencies for grub
    freetype2: For grub-mkfont usage
    fuse2: For grub-mount usage
    dosfstools: For grub-mkrescue FAT FS and EFI support
    efibootmgr: For grub-install EFI support   
    libisoburn: Provides xorriso for generating grub rescue iso using grub-mkrescue
    os-prober: To detect other OSes when generating grub.cfg in BIOS systems
    mtools: For grub-mkrescue FAT FS support
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate... 

Install GRUB to the hard disk.

[root@archiso /]# grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.

Finally, generate the /boot/grub/grub.cfg file.

[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initrd image(s) in /boot: initramfs-linux-fallback.img
done

UEFI

Install the grub package.

[root@archiso /]# pacman -S grub efibootmgr

Create the directory where EFI partition will be mounted.

[root@archiso /]# mkdir /boot/efi

Mount the ESP partition.

[root@archiso /]# mount /dev/sda1 /boot/efi

Install GRUB to the hard disk.

[root@archiso /]# grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi

Finally, generate the /boot/grub/grub.cfg file.

[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg

Create a User Account

This is an excellent opportunity to create a user account. A non-root account is a preferred method of logging into the graphical desktop environment which will be install in the next section. The method of creation for the user account will automatically create the home directory for the user as well. In addition, we can give this account sudo privileges. For that, we will also need to install the sudo command, itself.

Add User and Home Directory

Use the useradd command with the -m option to create a new user and to generate the home directory for the new user.

[root@archiso /]# useradd -m deep

User Password

Set up user password.

[root@archiso /]# passwd deep
New password:
Retype new password:
passwd: password updated successfully

Install sudo

Install the sudo command.

[root@archiso /]# pacman -S sudo
resolving dependencies...
looking for conflicting packages...

Packages (1) sudo-1.9.5.p2-1

Total Download Size:    1.09 MiB
Total Installed Size:   4.45 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
 sudo-1.9.5.p2-1-x86_64         1116.4 KiB 15.6 MiB/s 00:01 [#################################] 100%
(1/1) checking keys in keyring                              [#################################] 100%
(1/1) checking package integrity                            [#################################] 100%
(1/1) loading package files                                 [#################################] 100%
(1/1) checking for file conflicts                           [#################################] 100%
(1/1) checking available disk space                         [#################################] 100%
:: Processing package changes...
(1/1) installing sudo                                       [#################################] 100%
:: Running post-transaction hooks...
(1/3) Reloading system manager configuration...
Running in chroot, ignoring command 'daemon-reload'
(2/3) Creating temporary files...
(3/3) Arming ConditionNeedsUpdate... 

Give User sudo Privileges

NOTE: The configuration file for sudo is /etc/sudoers. This file should always be edited with the visudo command. The visudo command locks the “sudoers” file, saves edits to a temporary file, and then checks the file’s syntax before copying it to /etc/sudoers.)

Set an editor for use when launching visudo.

[root@archiso /]# EDITOR=nano visudo

Add the following line for the newly created user. Then, save the file.

# /etc/sudoers

deep ALL=(ALL) ALL

Install a Desktop Environment

If you thought swap partition sizes and text editors were controversial, they don’t compare to the tribalism that exists for desktop environments. But that’s what makes Linux amazing: the freedom to choose. There are many desktop environments that can be used with Arch Linux. My favorite desktop environments have been included below (in no particular order).

Choose your desktop environment, perform the installation, and finalize the configuration. If you are unsure about the options presented during the installation of your desktop environment of choice, choose the defaulted options. Then, let’s reconnect in the Summary section of this tutorial.

NOTE: KDE doesn’t allow the root user to login directly. You must initially login with the user account created in the previous section.

GNOME

Install the Xorg display server.

[root@archiso /]# pacman -S xorg

Install the GNOME desktop environment.

[root@archiso /]# pacman -S gnome

Enable the GDM display manager and Network Manager.

[root@archiso /]# systemctl enable gdm.service
[root@archiso /]# systemctl enable NetworkManager.service

Exit from chroot.

[root@archiso /]# exit

Shutdown.

root@archiso ~ # shutdown now

Remove the live USB/medium and power back on.

CINNAMON

Install the Xorg display server.

[root@archiso /]# pacman -S xorg

Install the Xorg terminal.

[root@archiso /]# pacman -S xterm

Install the Cinnamon desktop environment.

[root@archiso /]# pacman -S cinnamon

Install the GDM display manager.

[root@archiso /]# pacman -S gdm

Enable the GDM display manager and Network Manager.

NOTE: During the login process, look for a settings (gear) icon. This icon will allow you to choose the Cinammon desktop environment.

[root@archiso /]# systemctl enable gdm.service
[root@archiso /]# systemctl enable NetworkManager.service

Exit from chroot.

[root@archiso /]# exit

Shutdown.

root@archiso ~ # shutdown now

Remove the live USB/medium and power back on.

KDE

Install the Xorg display server.

[root@archiso /]# pacman -S xorg

Install plasma, plasma-wayland-session, and kde-applications.

[root@archiso /]# pacman -S plasma plasma-wayland-session kde-applications 

Enable the SDDM display manager and Network Manager.

[root@archiso /]# systemctl enable sddm.service
[root@archiso /]# systemctl enable NetworkManager.service

Exit from chroot.

[root@archiso /]# exit

Shutdown.

root@archiso ~ # shutdown now

Remove the live USB/medium and power back on.


Summary

Congratulations! You now have a working Arch Linux system which you have designed based on your choices and preferences. Arch, by default, is a rolling-release distribution. This means that you shouldn’t have to install it more than once for any system. One of the benefits (and drawbacks) of being a rolling release like Arch, is that you are always on the cutting edge (and sometimes bleeding edge) of system and software updates which, at times, can be unstable. Arch is an excellent distribution for a personal workstation or development machine. However, you should avoid deploying Arch on critical machines which are intended to run in a production environment. If (or when) you run into trouble, the Arch Wiki will be an excellent source of any further configuration, troubleshooting, or general/specific knowledge about a given topic.

This was just the beginning; there is much more to install, configure, tweak, and learn. I hope that you have enjoyed this guide and have gained some insight into the installation of Arch Linux. You can now boast to your friends and colleagues about your distro of choice. Don’t hesitate to sprinkle in the occasional, “By the way, I use Arch” in casual conversations.

There’s many more tutorials here on FrontPageLinux and If you’d like more from me then visit my author archive to find all of my previous articles / tutorials.