636 lines
No EOL
12 KiB
Markdown
Vendored
636 lines
No EOL
12 KiB
Markdown
Vendored
---
|
|
title: "Artix Linux install guide"
|
|
description: "Guide to installing Artix Linux with OpenRC and full disk encryption for UEFI and BIOS systems."
|
|
date: "2025-01-07"
|
|
---
|
|
|
|
---
|
|
|
|
## 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 wiki's.
|
|
|
|
---
|
|
|
|
## Acquire an installation image
|
|
|
|
1. Go to the downloads page https://artixlinux.org/download.php
|
|
2. Scroll down to the **Official ISO images** section.
|
|
3. Under the **base** section, download the file starting with `artix-base-openrc` and ending with `.iso`
|
|
|
|
---
|
|
|
|
## Prepare an installation medium
|
|
|
|
### Windows
|
|
|
|
Use [Rufus](https://rufus.ie/en), here is a [guide](https://www.wikihow.com/Use-Rufus) if you need it.
|
|
|
|
### Linux
|
|
|
|
1. Insert a USB flash drive into your PC with at least 2 GB of space available on it.
|
|
2. Find the corresponding block device for the flash drive in `/dev` folder. Usually it is `/dev/sdb`.
|
|
3. Burn the image to the flash drive (assuming your flash drive is /dev/sdb and that your terminal is opened in the directory of the image)
|
|
|
|
```sh
|
|
sudo dd bs=4M if=./artix-base-openrc-YYYY.MM.DD-x86_64.iso of=/dev/sdb conv=fsync oflag=direct status=progress
|
|
```
|
|
|
|
---
|
|
|
|
## Boot the live environment
|
|
|
|
> [!Info]
|
|
>Artix Linux installation images do not support Secure Boot. You will need to disable Secure Boot to boot the installation medium.
|
|
|
|
1. Power off your PC.
|
|
2. Insert the flash drive into the computer on which you are installing Artix Linux.
|
|
3. Power on your PC and press _boot menu_ key.
|
|
4. 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
|
|
|
|
> [!Note]
|
|
>When encountering a code block as below throughout this guide, execute the commands within it directly in the terminal.
|
|
|
|
```sh
|
|
sudo rfkill unblock wifi
|
|
sudo ip link set wlan0 up
|
|
connmanctl
|
|
```
|
|
|
|
> [!Tip]
|
|
>Network names can be tab-completed.
|
|
|
|
```sh
|
|
agent on
|
|
scan wifi
|
|
services
|
|
```
|
|
|
|
> [!example]
|
|
>connect wifi_dc85de828967_38303944616e69656c73_managed_psk
|
|
|
|
```sh
|
|
connect {WiFi name}
|
|
quit
|
|
```
|
|
|
|
### Verify internet connectivity
|
|
|
|
Check for internet
|
|
```sh
|
|
ping artixlinux.org
|
|
```
|
|
|
|
---
|
|
|
|
## Update the system clock
|
|
|
|
Activate the NTP daemon to synchronize the computer's real-time clock:
|
|
```sh
|
|
rc-service ntpd start
|
|
```
|
|
|
|
---
|
|
|
|
## Partition the disk
|
|
|
|
1. Install `gdisk`.
|
|
```sh
|
|
pacman -Sy gdisk
|
|
```
|
|
|
|
2. Partition your drive. You can find your drive name using the `lsblk` command.
|
|
|
|
> [!Note]
|
|
> `nvme0n1` will be used as the target install drive throughout this guide, adapt it to your drive name.
|
|
> If you have an hdd, your drive will start with `sda`.
|
|
|
|
```sh
|
|
gdisk /dev/nvme0n1
|
|
```
|
|
|
|
2. Delete any existing partitions
|
|
```txt
|
|
Command (m for help): d
|
|
```
|
|
|
|
3. Create a boot partition
|
|
```txt
|
|
Command (m for help): n
|
|
Partition number (1-128, default 1):
|
|
First sector (...):
|
|
Last sector (...): +512M
|
|
Hex code or GUID (...): ef00
|
|
```
|
|
|
|
4. Create a root partition
|
|
```txt
|
|
Command (m for help): n
|
|
Partition number (2-128, default 1):
|
|
First sector (...):
|
|
Last sector (...):
|
|
Hex code or GUID (...): 8300
|
|
```
|
|
|
|
5. Save the changes
|
|
```txt
|
|
Command (m for help): w
|
|
Do you want to proceed? (Y/N): y
|
|
```
|
|
|
|
6. Verify partitioning
|
|
```sh
|
|
lsblk
|
|
```
|
|
|
|
> [!Note]
|
|
>It should look something like this:
|
|
|
|
```txt
|
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
|
|
nvme0n1 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
|
|
|
|
1. Encrypt your root partition.
|
|
|
|
> [!Tip]
|
|
>Make sure to enter a secure passphrase and to write it down in a secure place as you will not be able to change it later
|
|
|
|
```sh
|
|
cryptsetup luksFormat /dev/nvme0n1p2
|
|
Are you sure (Type `yes` in capital letters): YES
|
|
```
|
|
|
|
2. Open the encrypted partition
|
|
```sh
|
|
cryptsetup open /dev/nvme0n1p2 root
|
|
```
|
|
|
|
---
|
|
|
|
## Create file systems
|
|
|
|
1. Create the boot file system
|
|
```sh
|
|
mkfs.fat -F32 /dev/nvme0n1p1
|
|
```
|
|
|
|
1. Create the root file system
|
|
```sh
|
|
mkfs.ext4 /dev/mapper/root
|
|
```
|
|
|
|
---
|
|
|
|
## Mount file systems
|
|
|
|
1. Mount the root file system
|
|
```sh
|
|
mount /dev/mapper/root /mnt
|
|
```
|
|
|
|
2. Mount the boot file system
|
|
```sh
|
|
mount -m /dev/nvme0n1p1 /mnt/boot
|
|
```
|
|
|
|
3. Verify mounting
|
|
```sh
|
|
lsblk
|
|
```
|
|
|
|
> [!Note]
|
|
>It should look something like this:
|
|
|
|
```txt
|
|
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
|
|
nvme0n1 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.
|
|
|
|
```sh
|
|
basestrap /mnt base linux linux-firmware openrc elogind-openrc cryptsetup cryptsetup-openrc efibootmgr doas nano
|
|
```
|
|
|
|
> [!Note]
|
|
> Install AMD or Intel microcode, depending on your system's CPU
|
|
|
|
### AMD CPU
|
|
|
|
Install AMD CPU microcode updates
|
|
|
|
```sh
|
|
basestrap /mnt amd-ucode
|
|
```
|
|
|
|
### Intel CPU
|
|
|
|
Install Intel CPU microcode updates
|
|
|
|
```sh
|
|
basestrap /mnt intel-ucode
|
|
```
|
|
|
|
---
|
|
|
|
## Generate File System Table
|
|
|
|
```sh
|
|
fstabgen -U /mnt >> /mnt/etc/fstab
|
|
```
|
|
|
|
---
|
|
|
|
## Switch to New Installation
|
|
|
|
```sh
|
|
artix-chroot /mnt bash
|
|
```
|
|
|
|
---
|
|
|
|
## Network stack
|
|
|
|
```sh
|
|
pacman -S wpa_supplicant networkmanager networkmanager-openrc iwd iwd-openrc
|
|
rc-update add NetworkManager
|
|
rc-update add iwd
|
|
|
|
cat << EOF >> /etc/NetworkManager/conf.d/wifi_backend.conf
|
|
[device]
|
|
wifi.backend=iwd
|
|
EOF
|
|
```
|
|
|
|
### MAC randomization
|
|
|
|
> [!Info]
|
|
>MAC randomization can be used for increased privacy by not disclosing your real MAC address to the WiFi network.
|
|
|
|
```sh
|
|
cat << EOF >> /etc/NetworkManager/conf.d/00-macrandomize.conf
|
|
[device-mac-randomization]
|
|
wifi.scan-rand-mac-address=yes
|
|
|
|
[connection-mac-randomization]
|
|
ethernet.cloned-mac-address=random
|
|
wifi.cloned-mac-address=random
|
|
EOF
|
|
```
|
|
|
|
## Localization
|
|
|
|
### Set the locale
|
|
|
|
> [!Note]
|
|
>Feel free to change `en_DK.UTF-8` to your preferred locale such as `en_US.UTF-8` or `en_GB.UTF-8`
|
|
|
|
1. Uncomment `en_DK.UTF-8`
|
|
```sh
|
|
nano /etc/locale.gen
|
|
```
|
|
|
|
2. Generate locales.
|
|
```sh
|
|
locale-gen
|
|
echo 'LANG=en_DK.UTF-8' > /etc/locale.conf
|
|
```
|
|
|
|
---
|
|
|
|
## Set the time zone
|
|
|
|
> [!example]
|
|
>`ln -sf /usr/share/zoneinfo/Asia/Dubai /etc/localtime`
|
|
|
|
```sh
|
|
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
|
|
```
|
|
|
|
---
|
|
|
|
## Set hardware clock from system clock
|
|
|
|
```sh
|
|
hwclock --systohc
|
|
```
|
|
|
|
---
|
|
|
|
## Hostname and Host
|
|
|
|
> [!Note]
|
|
>Change `artix` to your desired hostname in all of the following commands
|
|
|
|
```sh
|
|
echo 'artix' > /etc/hostname
|
|
```
|
|
|
|
1. Edit `/etc/conf.d/hostname`
|
|
```sh
|
|
nano /etc/conf.d/hostname
|
|
```
|
|
|
|
2. Replace `hostname="localhost"` with `hostname="artix"`
|
|
|
|
3. Edit `/etc/hosts`
|
|
```sh
|
|
nano /etc/hosts
|
|
```
|
|
|
|
4. Add the following:
|
|
```conf
|
|
127.0.0.1 localhost
|
|
::1 localhost
|
|
127.0.1.1 artix.localdomain artix
|
|
```
|
|
|
|
---
|
|
|
|
## Initramfs
|
|
|
|
1. Edit `/etc/mkinitcpio.conf`
|
|
```sh
|
|
nano /etc/mkinitcpio.conf
|
|
```
|
|
|
|
2. In the `HOOKS` array, add `encrypt` between `block` and `filesystems`
|
|
|
|
> [!Note]
|
|
>It should look something like this:
|
|
|
|
```conf
|
|
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt filesystems fsck)
|
|
```
|
|
|
|
3. Run this
|
|
|
|
```sh
|
|
mkinitcpio -P
|
|
```
|
|
---
|
|
|
|
## Add a user
|
|
|
|
1. Set the root password.
|
|
```sh
|
|
passwd
|
|
```
|
|
|
|
2. Create a user and set his password.
|
|
|
|
> [!Tip]
|
|
>Change `artix` to your desired username
|
|
|
|
```sh
|
|
useradd -m artix
|
|
passwd artix
|
|
```
|
|
|
|
---
|
|
|
|
## Configure doas
|
|
|
|
1. Create the config file.
|
|
```sh
|
|
touch /etc/doas.conf
|
|
chown -c root:root /etc/doas.conf
|
|
chmod -c 0400 /etc/doas.conf
|
|
```
|
|
|
|
2. Edit `/etc/doas.conf`
|
|
```sh
|
|
nano /etc/doas.conf
|
|
```
|
|
|
|
3. Add the following:
|
|
```conf
|
|
permit artix as root
|
|
permit nopass artix as root cmd pacman
|
|
```
|
|
|
|
---
|
|
|
|
## Boot Loader
|
|
### Check for UEFI support
|
|
|
|
> [!Tip]
|
|
>If you see a bunch of files listed, use EFISTUB.
|
|
>If you do not see a bunch of files listed, your system does not support UEFI and you should use GRUB.
|
|
|
|
```sh
|
|
ls /sys/firmware/efi/efivars
|
|
```
|
|
|
|
### EFISTUB
|
|
|
|
1. Get the UUID of your root partition.
|
|
```sh
|
|
blkid -s UUID -o value /dev/nvme0n1p2
|
|
```
|
|
|
|
2. Create a boot entry where xxxx is the UUID that you obtained earlier.
|
|
|
|
> [!Tip]
|
|
>Replace xxxx with the UUID that you obtained earlier.
|
|
>Replace `intel-ucode.img` with `amd-ucode.img` if you have an AMD CPU
|
|
|
|
```sh
|
|
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
|
|
|
|
1. Install grub on your boot partition
|
|
```sh
|
|
pacman -S grub
|
|
grub-install /dev/sda
|
|
```
|
|
|
|
2. Get the UUID of your root partition.
|
|
```sh
|
|
blkid -s UUID -o value /dev/nvme0n1p2
|
|
```
|
|
|
|
3. Edit `/etc/default/grub`
|
|
```sh
|
|
nano /etc/default/grub
|
|
```
|
|
|
|
4. Add the following to the `GRUB_CMDLINE_LINUX` line, where xxxx is the UUID that you obtained earlier.
|
|
```conf
|
|
cryptdevice=UUID=xxxx:root root=/dev/mapper/root
|
|
```
|
|
|
|
> [!Note]
|
|
>It should look something like this:
|
|
|
|
```conf
|
|
GRUB_CMDLINE_LINUX="cryptdevice=UUID=550e8400-e29b-41d4-a716-446655440000:root root=/dev/mapper/root"
|
|
```
|
|
|
|
5. Uncomment `#GRUB_ENABLE_CRYPTODISK=y`
|
|
|
|
6. Generate the config file.
|
|
```sh
|
|
grub-mkconfig -o /boot/grub/grub.cfg
|
|
```
|
|
|
|
---
|
|
|
|
## Reboot
|
|
|
|
1. You can reboot and enter into your new installation.
|
|
```sh
|
|
exit
|
|
umount -R /mnt
|
|
reboot now
|
|
```
|
|
|
|
> [!Note]
|
|
>Unplug your flash drive after the screen turns black.
|
|
|
|
---
|
|
|
|
## 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 `artix`.
|
|
|
|
### Add arch repositories and sort for fastest mirrors
|
|
#### Add arch extra repository
|
|
|
|
1. Install packages
|
|
```sh
|
|
doas pacman -Syu artix-archlinux-support curl
|
|
doas pacman-key --populate archlinux
|
|
doas sh -c "curl https://archlinux.org/mirrorlist/all -o /etc/pacman.d/mirrorlist-arch"
|
|
```
|
|
|
|
2. Edit `/etc/pacman.d/mirrorlist-arch`
|
|
```sh
|
|
doas nano /etc/pacman.d/mirrorlist-arch
|
|
```
|
|
|
|
3. Uncomment the first server entries under the worldwide section
|
|
|
|
4. Edit `/etc/pacman.conf`
|
|
```sh
|
|
doas nano /etc/pacman.conf
|
|
```
|
|
|
|
5. Add the following to the bottom of the file
|
|
```conf
|
|
##Arch
|
|
[extra]
|
|
Include = /etc/pacman.d/mirrorlist-arch
|
|
|
|
##[multilib]
|
|
##Include = /etc/pacman.d/mirrorlist-arch
|
|
```
|
|
|
|
#### Sort for fastest mirrors
|
|
|
|
```sh
|
|
doas pacman -Syu reflector pacman-contrib
|
|
doas reflector --verbose -p https -l 30 -f 5 --sort rate --save /etc/pacman.d/mirrorlist-arch
|
|
doas 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
|
|
#### Install paru
|
|
|
|
```sh
|
|
doas pacman -S --needed base-devel
|
|
git clone https://aur.archlinux.org/paru.git
|
|
cd paru
|
|
makepkg -si
|
|
cd ..
|
|
rm -rf paru
|
|
```
|
|
|
|
#### Replace sudo with doas
|
|
|
|
```sh
|
|
doas pacman -Rdd sudo
|
|
doas ln -s /usr/bin/doas /usr/bin/sudo
|
|
```
|
|
|
|
### Laptop power profiles
|
|
|
|
Install and enable the powerprofiles daemon
|
|
|
|
```sh
|
|
doas pacman -S power-profiles-daemon power-profiles-daemon-openrc
|
|
doas rc-update add power-profiles-daemon
|
|
doas rc-service power-profiles-daemon start
|
|
```
|
|
|
|
### Add swap
|
|
|
|
```sh
|
|
doas fallocate -l 4G /swapfile
|
|
doas chmod 600 /swapfile
|
|
doas mkswap /swapfile
|
|
doas swapon /swapfile
|
|
doas cp /etc/fstab /etc/fstab.bak
|
|
echo '/swapfile none swap sw 0 0' | doas tee -a /etc/fstab
|
|
```
|
|
|
|
### Auto-mount an external LUKS encrypted drive
|
|
|
|
```sh
|
|
doas fdisk /dev/sdb
|
|
>g, n, w
|
|
|
|
doas cryptsetup luksFormat /dev/sdb1
|
|
doas cryptsetup luksOpen /dev/sdb1 hdd1
|
|
doas mkfs.ext4 /dev/mapper/hdd1
|
|
doas mkdir /mnt/hdd1
|
|
doas mount /dev/mapper/hdd1 /mnt/hdd1
|
|
doas chown artix:artix /mnt/hdd1
|
|
doas dd if=/dev/urandom of=/root/keyfile_hdd1 bs=512 count=4
|
|
doas chmod 0400 /root/keyfile_hdd1
|
|
doas cryptsetup luksAddKey /dev/sdb1 /root/keyfile_hdd1
|
|
UUID=$(doas blkid -s UUID -o value /dev/sdb1)
|
|
|
|
doas sh -c "cat << EOF >> /etc/conf.d/dmcrypt
|
|
target=hdd1
|
|
source=UUID='$UUID'
|
|
key=/root/keyfile_hdd1
|
|
wait=2
|
|
EOF"
|
|
|
|
doas rc-update add dmcrypt boot
|
|
doas reboot
|
|
``` |