External Publication
Visit Post

Artix The CHAD WAY

tr1x_em April 8, 2026
Source

Setting up boot options

Setting up the ssh

sudo -i # Become root  echo "PermitRootLogin yes" >> /etc/ssh/sshd_config  rc-service sshd start # Started the ssh service  ip -4 address show scope global # would show the ip  ssh root@192.168.1.10 # SSH into the account

Adding ZFS Repo

sed -i 's/#ParallelDownloads/ParallelDownloads/' /etc/pacman.conf # Add zfs arch repo to /etc/pacman.conf tee -a $INST_MNT/etc/pacman.conf << 'EOF' [archzfs] # TODO: Change this to `Required` once it's announced that the signing system is finalized. SigLevel = Never Server = https://github.com/archzfs/archzfs/releases/download/experimental EOF pacman -Sy --noconfirm archzfs-dkms && modprobe zfs

Setting up vars for smooth installation

INST_TZ=/usr/share/zoneinfo/Asia/Kolkata INST_HOST='artix' # Put your host name here INST_OS='artixlinux' INST_LINVAR='linux-zen' INST_MNT=/mnt

Would suggest setting pacman parallel download to something like 5-8 Now partion and we need 2 parts

part1 = EFI (512mb as its only needed for zfs bootmenu) part2= Root (greater than 20gb)

Example of good partion

Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 83884031 82833408 39.5G Solaris root


DISK=/dev/disk/by-id/nvme-foo_NVMe_bar_512GB DISK_BOOT=${DISK}-part1 DISK_ROOT=${DISK}-part2

Formatting partions

Format the bootpartion

 mkfs.fat -n BOOT $DISK_BOOT

Setting up the root partion (with encrpytion)

zgenhostid # Generate a host id echo '<passphrase>' > /etc/zfs/rpool.key chmod 000 /etc/zfs/rpool.key    zpool create \  -o ashift=12 \  -O acltype=posixacl \  -O canmount=off \  -O compression=zstd \  -O dnodesize=auto \  -O normalization=formD \  -O relatime=on \  -O xattr=sa \  -O mountpoint=/ \  -R $INST_MNT \  -O encryption=aes-256-gcm \  -O keylocation=file:///etc/zfs/rpool.key \  -O keyformat=passphrase \  rpool \  $DISK_ROOT

keylocation is needed if u want a smooth boot experince and not put in password 2 times

Create container datasets:

zfs create -o canmount=off -o mountpoint=none rpool/ROOT zfs create -o canmount=off -o mountpoint=none rpool/DATA


 zfs create -o mountpoint=/ -o canmount=noauto rpool/ROOT/$INST_OS

Mount root filesystem dataset and boot partition:

zfs mount rpool/ROOT/$INST_OS mkdir -p $INST_MNT/boot/efi mount $DISK_BOOT $INST_MNT/boot/efi

Important to not mount to base boot partion as it would let u have a unbootable installation

Create datasets to separate user data from root filesystem:

zfs create -o mountpoint=/ -o canmount=off rpool/DATA/$INST_OS  for i in {usr,var,var/lib}; do  zfs create -o canmount=off rpool/DATA/$INST_OS/$i done  for i in {home,root,srv,usr/local,var/log,var/spool,var/tmp}; do  zfs create -o canmount=on rpool/DATA/$INST_OS/$i done  chmod 750 $INST_MNT/root chmod 1777 $INST_MNT/var/tmp

Now you should be ending up with a structure something like

artix-live:[root]:/mnt# zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 4.02M 37.8G 192K /mnt rpool/DATA 2.25M 37.8G 192K none rpool/DATA/artixlinux 2.06M 37.8G 192K /mnt rpool/DATA/artixlinux/home 192K 37.8G 192K /mnt/home rpool/DATA/artixlinux/root 192K 37.8G 192K /mnt/root rpool/DATA/artixlinux/srv 192K 37.8G 192K /mnt/srv rpool/DATA/artixlinux/usr 384K 37.8G 192K /mnt/usr rpool/DATA/artixlinux/usr/local 192K 37.8G 192K /mnt/usr/local rpool/DATA/artixlinux/var 960K 37.8G 192K /mnt/var rpool/DATA/artixlinux/var/lib 192K 37.8G 192K /mnt/var/lib rpool/DATA/artixlinux/var/log 192K 37.8G 192K /mnt/var/log rpool/DATA/artixlinux/var/spool 192K 37.8G 192K /mnt/var/spool rpool/DATA/artixlinux/var/tmp 192K 37.8G 192K /mnt/var/tmp rpool/ROOT 568K 37.8G 192K none rpool/ROOT/artixlinux 376K 37.8G 376K /mnt

NOTE: i use osname as if u wanna boot another os but on same disk u could do that (yeah its possible and its easy lmk if you want a tutorial

Package installation

basestrap $INST_MNT base vim grub connman connman-openrc openrc elogind-openrc

then install

basestrap $INST_MNT $INST_LINVAR $INST_LINVAR-headers archzfs-dkms sudo efibootmgr wget intel-ucode # If your computer has hardware that requires firmware to run basestrap $INST_MNT linux-firmware sof-firmware


cp /etc/hostid /mnt/etc cp /etc/resolv.conf /mnt/etc mkdir /mnt/etc/zfs # plese ignore if you get prompted it already exists cp /etc/zfs/rpool.key /mnt/etc/zfs cp /etc/pacman.conf /mnt/etc/pacman.conf cp /etc/resolv.conf $INST_MNT/etc/resolv.conf echo $INST_HOST > $INST_MNT/etc/hostname ln -sf $INST_TZ $INST_MNT/etc/localtime echo "en_US.UTF-8 UTF-8" >> $INST_MNT/etc/locale.gen echo "LANG=en_US.UTF-8" >> $INST_MNT/etc/locale.conf

No kernel installation because we have to install linux-cachyos as it comes with zfs pre installed and openzfs supports max kernel ver as 6.1

Setup mount points

fstabgen -U $INST_MNT | grep "/boot/EFI" >> $INST_MNT/etc/fstab

ZFS dont need other mount points it manages them internally it only need efi

echo $INST_HOST > $INST_MNT/etc/hostname  ln -sf $INST_TZ $INST_MNT/etc/localtime echo "en_US.UTF-8 UTF-8" >> $INST_MNT/etc/locale.gen echo "LANG=en_US.UTF-8" >> $INST_MNT/etc/locale.conf

Chrooting and setting it up

Chroot:

artix-chroot $INST_MNT /usr/bin/env DISK=$DISK DISK_ROOT=$DISK_ROOT \  DISK_BOOT=$DISK_BOOT INST_UUID=$INST_UUID bash --login

Generate locales: locale-gen

Generate zpool.cache:

zpool set cachefile=/etc/zfs/zpool.cache rpool

Set the root password:

passwd

Setting up cachyos repos:

sudo pacman-key --recv-keys F3B607488DB35A47 --keyserver keyserver.ubuntu.com sudo pacman-key --lsign-key F3B607488DB35A47  sudo pacman -U 'https://mirror.cachyos.org/repo/x86_64/cachyos/cachyos-keyring-20240331-1-any.pkg.tar.zst' \ 'https://mirror.cachyos.org/repo/x86_64/cachyos/cachyos-mirrorlist-22-1-any.pkg.tar.zst' \ 'https://mirror.cachyos.org/repo/x86_64/cachyos/cachyos-v3-mirrorlist-22-1-any.pkg.tar.zst' \ 'https://mirror.cachyos.org/repo/x86_64/cachyos/cachyos-v4-mirrorlist-22-1-any.pkg.tar.zst' \ 'https://mirror.cachyos.org/repo/x86_64/cachyos/pacman-7.1.0.r9.g54d9411-2-x86_64.pkg.tar.zst'

Then add

# If your CPU only supports x86-64, then add the [cachyos] repositories # cachyos repos [cachyos] Include = /etc/pacman.d/cachyos-mirrorlist  # If your CPU supports x86-64-v3, then add [cachyos-v3],[cachyos-core-v3],[cachyos-extra-v3] and [cachyos] # cachyos repos  [cachyos-v3] Include = /etc/pacman.d/cachyos-v3-mirrorlist [cachyos-core-v3] Include = /etc/pacman.d/cachyos-v3-mirrorlist [cachyos-extra-v3] Include = /etc/pacman.d/cachyos-v3-mirrorlist [cachyos] Include = /etc/pacman.d/cachyos-mirrorlist  # If your CPU supports x86-64-v4, then add [cachyos-v4], [cachyos-core-v4], [cachyos-extra-v4] and [cachyos] # cachyos repos  [cachyos-v4] Include = /etc/pacman.d/cachyos-v4-mirrorlist [cachyos-core-v4] Include = /etc/pacman.d/cachyos-v4-mirrorlist [cachyos-extra-v4] Include = /etc/pacman.d/cachyos-v4-mirrorlist [cachyos] Include = /etc/pacman.d/cachyos-mirrorlist  # If your CPU is based on Zen 4 or Zen 5, add [cachyos-znver4], [cachyos-core-znver4], [cachyos-extra-znver4] and [cachyos]  [cachyos-znver4] Include = /etc/pacman.d/cachyos-v4-mirrorlist [cachyos-core-znver4] Include = /etc/pacman.d/cachyos-v4-mirrorlist [cachyos-extra-znver4] Include = /etc/pacman.d/cachyos-v4-mirrorlist [cachyos] Include = /etc/pacman.d/cachyos-mirrorlist

Install kernel and headers

pacman -S linux-cachyos linux-cachyos-headers

NOTE: ZFS SHOULD BE BEFORE FILE SYSTEM else you would get rootfs error

and then add your keyfile to mkinctopi

FILES=(/etc/zfs/rpool.key /boot/intel-ucode.img)

Regenrate intrafms

mkinitcpio -P

Make a user for youself

useradd -m -G wheel -s /bin/bash trix passwd trix

Then edit visudo file

EDITOR=vim visudo

Uncomment:

%wheel ALL=(ALL:ALL) ALL

and switch to that user

su - trix

Setup the zfs service

git clone https://gitlab.com/aur3675443/zfs-openrc cd zfs-openrc sudo cp zfs-* /etc/init.d/ chmod +x /etc/init.d/zfs-*

Then activate the service

sudo rc-update add zfs-import boot ## (This is needed!) sudo rc-update add zfs-load-key boot ## (Only if you need it!) sudo rc-update add zfs-zed boot ## (This is needed!) sudo rc-update add zfs-mount boot ## (THIS IS IMPORTANT!! Otherwise the zpool(s) will be imported but not mounted!)

Setting up zbm

sudo zpool set bootfs=rpool/ROOT/artixlinux rpool

Now setup boot commands

sudo zfs set org.zfsbootmenu:commandline="noresume init_on_alloc=0 rw spl.spl_hostid=$(hostid) video=1920x1080" rpool/ROOT

Now setting up efi

sudo su mkdir -p /boot/efi/EFI/zbm wget https://get.zfsbootmenu.org/latest.EFI -O /boot/efi/EFI/zbm/zfsbootmenu.EFI efibootmgr --disk /dev/sda --part 1 --create --label "ZFSBootMenu" --loader '\EFI\zbm\zfsbootmenu.EFI' --unicode "spl_hostid=$(hostid) zbm.timeout=3 zbm.prefer=rpool zbm.import_policy=hostid video=1920x1080" --verbose

NOTE CHANGE the var in commad to ur linking /dev/sda should be disk not part while part is the part in which efi is

Exit and clean up

exit umount /mnt/boot/efi zpool export rpool reboot

Discussion in the ATmosphere

Loading comments...