{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreiefppc344o7fnv5kjeyj5z35374aumpxhkrhn3bh5xwmlxrxvxmai",
    "uri": "at://did:plc:juel22jnyivm6ojvmlllcorc/app.bsky.feed.post/3mj2qlyn6lrx2"
  },
  "path": "/blog/artix-the-chad-way/",
  "publishedAt": "2026-04-08T00:00:00.000Z",
  "site": "https://trix.is-a.dev",
  "textContent": "# Setting up boot options\n\n# Setting up the ssh\n\n\n    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\n\n# Adding ZFS Repo\n\n\n    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\n\n# Setting up vars for smooth installation\n\n\n    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\n\nWould suggest setting pacman parallel download to something like 5-8 Now partion and we need 2 parts\n\npart1 = EFI (512mb as its only needed for zfs bootmenu) part2= Root (greater than 20gb)\n\nExample of good partion\n\n\n    Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 83884031 82833408 39.5G Solaris root\n\n\n    DISK=/dev/disk/by-id/nvme-foo_NVMe_bar_512GB DISK_BOOT=${DISK}-part1 DISK_ROOT=${DISK}-part2\n\n# Formatting partions\n\nFormat the bootpartion\n\n\n     mkfs.fat -n BOOT $DISK_BOOT\n\n## Setting up the root partion (with encrpytion)\n\n\n    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\n\nkeylocation is needed if u want a smooth boot experince and not put in password 2 times\n\nCreate container datasets:\n\n\n    zfs create -o canmount=off -o mountpoint=none rpool/ROOT zfs create -o canmount=off -o mountpoint=none rpool/DATA\n\n\n     zfs create -o mountpoint=/ -o canmount=noauto rpool/ROOT/$INST_OS\n\nMount root filesystem dataset and boot partition:\n\n\n    zfs mount rpool/ROOT/$INST_OS mkdir -p $INST_MNT/boot/efi mount $DISK_BOOT $INST_MNT/boot/efi\n\nImportant to not mount to base boot partion as it would let u have a unbootable installation\n\nCreate datasets to separate user data from root filesystem:\n\n\n    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\n\nNow you should be ending up with a structure something like\n\n\n    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\n\nNOTE: 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\n\n## Package installation\n\n\n    basestrap $INST_MNT base vim grub connman connman-openrc openrc elogind-openrc\n\nthen install\n\n\n    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\n\n\n    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\n\nNo 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\n\nSetup mount points\n\n\n    fstabgen -U $INST_MNT | grep \"/boot/EFI\" >> $INST_MNT/etc/fstab\n\nZFS dont need other mount points it manages them internally it only need efi\n\n\n    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\n\n# Chrooting and setting it up\n\nChroot:\n\n\n    artix-chroot $INST_MNT /usr/bin/env DISK=$DISK DISK_ROOT=$DISK_ROOT \\  DISK_BOOT=$DISK_BOOT INST_UUID=$INST_UUID bash --login\n\nGenerate locales: locale-gen\n\nGenerate zpool.cache:\n\n\n    zpool set cachefile=/etc/zfs/zpool.cache rpool\n\nSet the root password:\n\n\n    passwd\n\nSetting up cachyos repos:\n\n\n    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'\n\nThen add\n\n\n    # 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\n\nInstall kernel and headers\n\n\n    pacman -S linux-cachyos linux-cachyos-headers\n\nNOTE: ZFS SHOULD BE BEFORE FILE SYSTEM else you would get rootfs error\n\nand then add your keyfile to mkinctopi\n\n\n    FILES=(/etc/zfs/rpool.key /boot/intel-ucode.img)\n\nRegenrate intrafms\n\nmkinitcpio -P\n\nMake a user for youself\n\n\n    useradd -m -G wheel -s /bin/bash trix passwd trix\n\nThen edit visudo file\n\n\n    EDITOR=vim visudo\n\nUncomment:\n\n\n    %wheel ALL=(ALL:ALL) ALL\n\nand switch to that user\n\n\n    su - trix\n\nSetup the zfs service\n\n\n    git clone https://gitlab.com/aur3675443/zfs-openrc cd zfs-openrc sudo cp zfs-* /etc/init.d/ chmod +x /etc/init.d/zfs-*\n\nThen activate the service\n\n\n    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!)\n\n## Setting up zbm\n\n\n    sudo zpool set bootfs=rpool/ROOT/artixlinux rpool\n\nNow setup boot commands\n\n\n    sudo zfs set org.zfsbootmenu:commandline=\"noresume init_on_alloc=0 rw spl.spl_hostid=$(hostid) video=1920x1080\" rpool/ROOT\n\nNow setting up efi\n\n\n    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\n\nNOTE CHANGE the var in commad to ur linking `/dev/sda` should be disk not part while part is the part in which efi is\n\n## Exit and clean up\n\n\n    exit umount /mnt/boot/efi zpool export rpool reboot",
  "title": "Artix The CHAD WAY",
  "updatedAt": "2026-04-08T00:00:00.000Z"
}