Artix Linux install guide
Guide to installing Artix Linux with OpenRC and full disk encryption for UEFI and BIOS systems
Introduction
The goal of this guide is to set up a minimal installation of Artix Linux with OpenRC as an init system and full disk encryption on an UEFI or BIOS system. This guide is meant to be read alongside the Artix and Arch wiki respectively. It does not cover implementing Secure Boot
Acquire an installation image
- Go to the downloads page https://artixlinux.org/download.php
- Scroll down to the Official ISO images section.
- Under the base section, download the file starting with
artix-base-openrc
and ending with.iso
Prepare an installation medium
Windows
Use Rufus
Linux
- Insert a USB flash drive into your PC with at least 2 GB of space available on it.
- Find the corresponding block device for the flash drive in
/dev
folder. Usually it is/dev/sdb1
- Write the image to the flash drive (assuming your flash drive is
/dev/sdb1
).
This command will wipe the /dev/sdb1
partition
doas dd bs=4M if=~/Downloads/artix-base-openrc-*-x86_64.iso of=/dev/sdb1 conv=fsync oflag=direct status=progress
Boot the live environment
Artix Linux installation images do not support Secure Boot. You will need to disable Secure Boot in your BIOS to boot the installation medium.
- Power off your PC.
- Insert the flash drive into the computer on which you are installing Artix Linux.
- Power on your PC and press your boot menu key.
- Boot the installation medium.
Enter the live environment
Login with the default credentials.
- Username:
root
- Password:
artix
Connect to the internet
Via Ethernet
Connect the computer via an Ethernet cable
Via WiFi
rfkill unblock wifiip link set wlan0 upconnmanctl
agent onscan wifiservices
Network names can be tab-completed.
connect wifi_dc85de_383039_managed_psk
connect {your WiFi name}quit
Verify internet connectivity
ping artixlinux.org
Update the system clock
Activate the NTP daemon to synchronize the computer’s real-time clock
rc-service ntpd start
Partition the disk
Throughout this guide nvme0n1
will be used as the target install drive.
- Install and run
gdisk
pacman -Sy gdiskgdisk /dev/nvme0n1
- Delete any existing partitions. Repeat until none are left.
Command (m for help): d
- Create a boot partition
Command (m for help): nPartition number (1-128, default 1):First sector (...):Last sector (...): +512MHex code or GUID (...): ef00
- Create a root partition
Command (m for help): nPartition number (2-128, default 1):First sector (...):Last sector (...):Hex code or GUID (...): 8300
- Write the changes
Command (m for help): wDo you want to proceed? (Y/N): y
- Verify partitioning
lsblk
It should look something like this
NAME MAJ:MIN RM SIZE RO TYPEnvme0n1 259:0 0 465,8G 0 disk├─nvme0n1p1 259:1 0 512M 0 part└─nvme0n1p2 259:2 0 465,3G 0 part
Encrypt root partition
- Encrypt your root partition
Make sure to enter a secure passphrase and to write it down
cryptsetup luksFormat /dev/nvme0n1p2Are you sure (Type `yes` in capital letters): YES
- Open the encrypted partition
cryptsetup open /dev/nvme0n1p2 root
Create filesystems
- Create the boot file system
mkfs.fat -F32 /dev/nvme0n1p1
- Create the root file system
mkfs.ext4 /dev/mapper/root
Mount file systems
- Mount the root file system
mount /dev/mapper/root /mnt
- Mount the boot file system
mount -m /dev/nvme0n1p1 /mnt/boot
- Verify mounting
lsblk
It should look something like this
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSnvme0n1 259:0 0 465,8G 0 disk├─nvme0n1p1 259:1 0 512M 0 part /mnt/boot└─nvme0n1p2 259:2 0 465,3G 0 part └─root 254:0 0 465,2G 0 crypt /mnt
Install essentials
Install the base system, kernel, init system and other essential packages.
basestrap /mnt base linux linux-firmware openrc elogind-openrc cryptsetup cryptsetup-openrc efibootmgr doas nano
Install AMD or Intel microcode, depending on your system’s CPU
AMD CPU
Install AMD CPU microcode updates
basestrap /mnt amd-ucode
Intel CPU
Install Intel CPU microcode updates
basestrap /mnt intel-ucode
Generate file system table
fstabgen -U /mnt >> /mnt/etc/fstab
Switch to new Installation
artix-chroot /mnt bash
Network stack
pacman -S wpa_supplicant networkmanager networkmanager-openrc iwd iwd-openrcrc-update add NetworkManagerrc-update add iwd
[device]wifi.backend=iwd
MAC randomization
MAC randomization can be used for increased privacy by not disclosing your real MAC address to the WiFi network.
[device-mac-randomization]wifi.scan-rand-mac-address=yes
[connection-mac-randomization]ethernet.cloned-mac-address=randomwifi.cloned-mac-address=random
Localization
Set the locale
Feel free to change en_DK.UTF-8
to your preferred locale such as en_US.UTF-8
or en_GB.UTF-8
- Uncomment
en_DK.UTF-8
#en_CA.UTF-8 UTF-8#en_CA ISO-8859-1en_DK.UTF-8 UTF-8#en_DK ISO-8859-1#en_GB.UTF-8 UTF-8#en_GB ISO-8859-1
- Generate locales
echo 'LANG=en_DK.UTF-8' > /etc/locale.conflocale-gen
Set the timezone
ln -sf /usr/share/zoneinfo/Asia/Dubai /etc/localtime
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
Set hardware clock from system clock
hwclock --systohc
Hostname
Set your preferred hostname, I will be using artixmachine
throughout this guide.
echo 'artixmachine' > /etc/hostname
# Use fallback hostname if /etc/hostname doesn't existhostname="localhost"hostname="artixmachine"
# Static table lookup for hostnames.# See hosts(5) for details.
127.0.0.1 localhost::1 localhost127.0.1.1 artixmachine.localdomain artixmachine
Initramfs
In the HOOKS
array, add encrypt
between block
and filesystems
HOOKS=(... block encrypt filesystems ...)
Generate initramfs images
mkinitcpio -P
Add a user
- Set the root password.
passwd
- Create a user and set his password.
useradd -m artixuserpasswd artixuser
Configure doas
- Create the config file and set the appropriate permissions
touch /etc/doas.confchown -c root:root /etc/doas.confchmod -c 0400 /etc/doas.conf
- Add the following
permit artixuser as rootpermit nopass artixuser as root cmd pacman
Boot loader
Check for UEFI support
If you see a bunch of files listed when executing the following command, use EFISTUB. If you do not see a bunch of files listed, your system does not support UEFI and you should use GRUB.
ls /sys/firmware/efi/efivars
EFISTUB
- Get the UUID of your root partition
blkid -s UUID -o value /dev/nvme0n1p2
- Create a boot entry
Replace xxxx with the UUID that you just obtained.
Replace intel-ucode.img
with amd-ucode.img
if you have an AMD CPU.
efibootmgr -c -d /dev/nvme0n1 -p 1 -l /vmlinuz-linux -L "Artix" -u "cryptdevice=UUID=xxxx:root root=/dev/mapper/root rw initrd=\intel-ucode.img initrd=\initramfs-linux.img loglevel=3 quiet"
GRUB
- Install grub on your boot partition
pacman -S grubgrub-install /dev/nvme0n1
- Get the UUID of your root partition
blkid -s UUID -o value /dev/nvme0n1p2
- Edit the GRUB config file
It should look something like this with xxxx being the UUID that you just obtained
GRUB_CMDLINE_LINUX="cryptdevice=UUID=550e8400-e29b-41d4-a716-446655440000:root root=/dev/mapper/root"GRUB_ENABLE_CRYPTODISK=y
GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=UUID=xxxx:root root=/dev/mapper/root"#GRUB_ENABLE_CRYPTODISK=y
- Generate the config file
grub-mkconfig -o /boot/grub/grub.cfg
Reboot
- You can now reboot and enter into your new installation
Unplug your flash drive after the screen turns black
exitumount -R /mntreboot now
Post install
You will now be greeted with a similar screen as when you first booted from the flash drive.
Login using the credentials that you set, if you followed the example your username would be artixuser
.
Add arch repositories and sort for fastest mirrors
Add arch extra repository
- Install packages and fetch mirrorlist
doas pacman -Syu artix-archlinux-support curldoas pacman-key --populate archlinuxdoas sh -c "curl https://archlinux.org/mirrorlist/all -o /etc/pacman.d/mirrorlist-arch"
- Activate Arch mirrors
#Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch#Server = https://ftpmirror.infania.net/mirror/archlinux/$repo/os/$arch#Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch#Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch
- Edit the pacman config file
##Arch[extra]Include = /etc/pacman.d/mirrorlist-arch
##[multilib]##Include = /etc/pacman.d/mirrorlist-arch
Sort for fastest mirrors
doas pacman -Syu reflector pacman-contribdoas reflector --verbose -p https -l 30 -f 5 --sort rate --save /etc/pacman.d/mirrorlist-archdoas sh -c "curl https://gitea.artixlinux.org/packages/artix-mirrorlist/raw/branch/master/mirrorlist -o /etc/pacman.d/mirrorlist.bak"doas sh -c "rankmirrors -v -n 5 /etc/pacman.d/mirrorlist.bak > /etc/pacman.d/mirrorlist"
AUR
Add Chaotic-AUR
doas pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.comdoas pacman-key --lsign-key 3056513887B78AEBdoas pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'doas pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
[chaotic-aur]Include = /etc/pacman.d/chaotic-mirrorlist
Install paru
doas pacman -Syudoas pacman -S paru
Replace sudo with doas
doas pacman -Rdd sudodoas ln -s /usr/bin/doas /usr/bin/sudo
Laptop power profiles
Install and enable the powerprofiles daemon
doas pacman -S power-profiles-daemon power-profiles-daemon-openrcdoas rc-update add power-profiles-daemondoas rc-service power-profiles-daemon start
Add swap
doas fallocate -l 4G /swapfiledoas chmod 600 /swapfiledoas mkswap /swapfiledoas swapon /swapfiledoas cp /etc/fstab /etc/fstab.bakecho '/swapfile none swap sw 0 0' | doas tee -a /etc/fstab
Auto-mount an external LUKS encrypted drive
doas pacman -S cryptsetup-openrc fdiskdoas fdisk /dev/sdb>g, n, w
doas cryptsetup luksFormat /dev/sdb1doas cryptsetup luksOpen /dev/sdb1 hdd1doas mkfs.ext4 /dev/mapper/hdd1doas mkdir /mnt/hdd1doas mount /dev/mapper/hdd1 /mnt/hdd1doas chown artixuser:artixuser /mnt/hdd1doas dd if=/dev/urandom of=/root/keyfile_hdd1 bs=512 count=4doas chmod 0400 /root/keyfile_hdd1doas cryptsetup luksAddKey /dev/sdb1 /root/keyfile_hdd1UUID=$(doas blkid -s UUID -o value /dev/sdb1)
target=hdd1source=UUID='$UUID'key=/root/keyfile_hdd1wait=2
doas rc-update add dmcrypt bootdoas reboot