Base Installation¶
This section covers bootstrapping the system so that it can boot and function on its own.
3.1. Mounting Volumes¶
We need to mount our volumes before we can bootstrap and configure the installation.
All the volumes need to be mounted in /mnt, to their appropriate mount points.
mount /dev/mapper/volume-root /mnt
mkdir /mnt/boot
mount /dev/sdx1 /mnt/boot
mkdir /mnt/home
mount /dev/mapper/volume-home /mnt/home
swapon /dev/mapper/volume-swap
3.2 Bootstrapping¶
Bootstrap the base system onto the disk. This might take a while depending on your connection.
pacstrap /mnt base base-devel linux linux-firmware neovim zsh git
Tip
You can replace linux with whatever kernel you want.
For example, consider linux-zen for better performance in everyday use.
Note
Install your text editor of choice.
This guide shall use nvim, but feel free to use vi, vim, nano or whatever else.
Next, generate the fstab file.
While the -U option is not really required for LVM, I still prefer using UUIDs.
genfstab -Up /mnt > /mnt/etc/fstab
Now chroot into the system.
Don't worry, the prompt change is expected.
arch-chroot /mnt
3.3 Network Access¶
We are currently getting our network connection from the Arch ISO. If we boot into the actual installation, we won't have any internet connection.
pacman -S networkmanager inetutils
systemctl enable NetworkManager
If your device does not have Wi-Fi capabilities, you may skip to the next step.
For Wi-Fi, I recommend going with the newer iwd, which is what we have used in the Arch ISO.
pacman -S iwd
systemctl enable iwd
Next, configure NetworkManager to use iwd as a backend.
Simply create the /etc/NetworkManager/conf.d/wifi_backend.conf file with the following contents:
[device]
wifi.backend=iwd
That's it. You will now be able to have network access from your own machine after installation.
Note
NetworkManager takes control of iwd, so you cannot use iwctl to connect to wireless networks anymore.
Instead, use nmcli, as described on the Wiki.
3.4 Root Password¶
Set the password for the root account.
passwd
It's also a good idea to enable the wheel group, so you can run commands as root with other administrator users after the installation.
In /etc/sudoers, uncomment the following lines. (Use wq! to bypass readonly file warning.)
%wheel ALL=(ALL) ALL
3.5 Initramfs¶
Because we are using 
LVM on LUKS, we need to add
the encrypt and lvm2 hooks into mkinitcpio.conf.
pacman -S lvm2
nvim /etc/mkinitcpio.conf
Change the hooks line to:
HOOKS=(base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck)
Then build the initramfs image by running:
mkinitcpio -p linux
Note
If when bootstrapping with pacstrap you installed a custom kernel, that same kernel should be passed
to the -p option (e.g. mkinitcpio -p linux-zen).
3.6 Boot Loader¶
We can now install a boot loader.
In this guide, we will be using systemd-boot.
First, install the microcode depending on your system's CPU.
pacman -S amd-ucode
Install the boot loader.
bootctl install
Edit the configuration file at /boot/loader/loader.conf with the following:
default arch
timeout 3
editor 0
This achieves the following:
* Sets arch as the default entry (to be created soon).
* Offers the user three seconds to select another entry before booting the default.
* Does not allow the kernel parameters to be edited.
Now we need to add an entry for arch.
nvim /boot/loader/entries/arch.conf
Follow the template:
title Arch Linux
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options cryptdevice=UUID={UUID}:volume root=/dev/mapper/volume-root quiet rw
You will need to adjust it as follows:
- The titlecan be whatever you want displayed in the boot menu.
- Change to your relevant *-ucode.imgdepending on your system.
- Again, a custom kernel will result in a different linux and init image.
  (e.g. /vmlinuz-linux-zenand/initramfs-linux-zen.img)
- The {UUID}should be replaced by the block device ID of the encrypted partition (/dev/sdx2), which you can get by runningblkid /dev/sdx2.
Tip
If using vim, you can insert the output of the blkid command right in the editor by typing:
^ESC :r! blkid /dev/sdx2
3.7. Unmount and Reboot¶
We no longer need the Arch ISO as the base system is already configured. Unmount the volume, turn off the swap, close the LVM and LUKS container, and reboot.
exit # Or Ctrl+D to get out of `chroot`.
umount -R /mnt
swapoff /dev/mapper/volume-swap
vgchange -a n volume
cryptsetup close /dev/mapper/lvm
reboot