Hi! My name is Isaac Basque-Rice, I'm A Security Engineer and former Abertay Ethical Hacker, and this website is a repository for all the cool stuff I've done, enjoy!
By Isaac
Arch Linux is a “lightweight and flexible” Linux distribution that adheres to the KISS (keep it simple, stupid) principle of design.
Arch’s inherent customisability and lightweight design means it’s the distro of choice for many users who like to have a lot of control over their operating system, the ability to choose exactly what packages you want, what desktop environment, services, and components, it’s all up to you in Arch.
Not only do users have granular control over the operating system at pretty much all times, the packages found in the pacman
manager are the most up to date versions of the packages available across essentially any Linux distribution. Arch adopts a rolling release model, which means that as soon as a new kernel or application version is rolled out publicly it is immediately available to Arch users, this contrasts with many other Linux flavours and non-Linux operating systems, who tend to release updates in one big go.1
Arch’s installation process is famously complex and unforgiving, however this comes with a much more in-depth knowledge of how Linux works, having to configure drive partitions and aspects of networking manually results in an understanding of Linux far greater than a standard distro installation will afford you, and a greater sense of accomplishment to boot!
If any part of the installation confuses or confounds you, a final pro of Arch (which actually is relevant to most distributions) is the Arch Wiki, it’s some of the best and most comprehensive documentation on any piece of software I have ever come across, this website will be absolutely invaluable to you.
I will be installing Arch in VMWare Workstation Pro 16, with the license that comes with being in Abertay Uni. The .iso
, the file containing the required data for operating system installation, can be found here. In VMWare Arch comes under “Other Linux 5.x and later kernel 64-bit”2, I gave it 20GB disk space and 4GB RAM.
It’s also of critical importance that the OS is booted in UEFI mode, otherwise later steps mightn’t work (found this one out the hard way lol). To do this you right click the VM and go to Settings>Options>Advanced>Firmware Type
and switch BIOS
to UEFI
.
A note: DO NOT skip anything in here, missing one thing early on can have bad results much later down the line which could end uip in you having to restart the whole procedure
On booting for the first time, you should see this screen:
hit enter or wait 15 seconds, you should then be presented with this screen (a bash shell):
Now we can begin entering commands!
First we need to verify that we’re in UEFI mode (which we already switched to earlier), this can be done by running
ls /sys/firmware/efi/efivars
If a list of files is returned then we can move on to the next step, verifying network services.
The Arch installation environment should have already started network services for us, this is of great importance to us as there are some packages that we’re going to need to install during this process, specifically a text editor, in order to continue. To verify this, run:
ping -c 4 www.linuxconfig.org
If that worked, we can now move on to setting the correct time by updating the system clock with:
timedatectl set-ntp true
To partition the drive we first need to run lsblk
to verify the partitions currently present in the ISO. you should see a partition called loop0
, one called sr0
, and an extra one, most likely called sda
, which is the size that was allocated earlier on (20GB in this case).
To begin creating the installation partitions, run
cfdisk /dev/sda
When the following window shows up, select GPT
You should now see a window containing a menu with single line containing the word Free space
. This is the partition menu, we will be creating three partitions here:
sda1
, which will be a FAT32
formatted EFI
partition, where the bootloader etc will be stored
sda2
, which is going to be the root
partition, where the userspace will be
sda3
, a swap
partition, a space on disk used when the RAM is at capacity
Hit enter on Free space
(or new at the bottom), then type 500M
then hit the right arrow on your keyboard once to get to Type
, where you can select the type of partition in a menu, EFI System
is at the top
Go down and hit enter on Free space/New again, type 18.5G
, specifying the type isn’t necessary here
Repeat the step 1 more time, type 1G (if needed), Type
again, and select Linux Swap
Use the arrow keys to go to Write
along the bottom, hit enter, type the word yes
, and then Quit
the program
you now have the three necessary partitions to continue, you can verify this by trying lsblk
again and seeing all three sdax
partitions available in the correct sizes
Now we must create the filesystems by entering the following commands:
mkswap /dev/sda3 # swap partition
swapon /dev/sda3
mkfs.ext4 /dev/sda2 # root partition
mkfs.fat -F32 /dev/sda1 # EFI partition
Next we mount the partitions (we don’t need to mount swap)
mount /dev/sda2 /mnt # root partition
mkdir /mnt/boot # make dir for boot and mount
mount /dev/sda1 /mnt/boot
And there’s the filesystem partition!
To install the essential packages required for the base Arch system, we enter
pacstrap /mnt base linux linux-firmware
This may take a few minutes, could be a good time to grab a drink lmao.
When that’s finished we generate an fstab
(file systems table) file using the following command so the system knows where to mount the partitions on boot
genfstab -U /mnt >> /mnt/etc/fstab
Now the base is installed, we have to begin customising the system to our needs. Run
arch-chroot /mnt
to change root directory into the mounted partition to begin customisation.
The following will assume you are located in the United Kingdom, if not, research whatever region-specific settings are relevant to your area.
To specify time zone, enter
ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime
Next, you should install a text editor of your choice (I use vim) by running
pacman -S [editor] # generic
pacman -S vim # my command
Edit the /etc/locale.gen file and uncomment the locale that you require for your keyboard layout, in my case it will be the line containing en_GB.UTF-8 UTF-8
, on line 160, then run
locale-gen
in order to generate the locales.
Next, create and open a file located at /etc/locale.conf
, and add (in my case) the line LANG=en_GB.UTF-8
, then edit /etc/hostname
and add your chosen hostname, I will be going with izbrarch
. After this edit /etc/hosts
and add the following line:
127.0.0.1 localhost ::1 localhost 127.0.1.1 izbrarch.localdomain izbrarch
Next we have networking. At the moment, the Arch installation environment has a series of preconfigured network settings (in systemd
) in order to facilitate required installations, however the full post-installation system still needs a configured network. In order to configure this, run the following:
systemctl enable systemd-networkd # networking
systemctl enable systemd-resolved # dns resolution
After this, run the ip addr
command, this should show two sets of data, the first one, lo
, is localhost and therefore already configured with 127.0.0.1
, the second one, however (on my machine ens33
) is relevant for the next step
Create and edit a file located at /etc/systemd/network/20-wired.network
and add the following lines:
[Match] Name=ens33
[Network] DHCP=yes
The network configuration is now complete.
Change your password using the passwd
command
If you’re on an intel CPU, install intel-ucode
using pacman
The final stage to installing Arch is getting the bootloader in place, this is the software that is responsible for booting the computer. By far the most popular bootloader is GRUB
, which we will be installing to the EFI
partition in SDA1
pacman -S grub efibootmgr # get grub and an efi boot manager
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB # install
grub-mkconfig -o /boot/grub/grub.cfg # generate config file
After this we can exit the file system, reboot and we’re pretty much done! Run the following:
exit
umount -R /mnt
reboot
After this you can follow the Arch Wiki’s General Recommendations page with regards to what do to with a fresh install, or take a look at the List of Applications on there, too
Happy Arch-ing! :)