Instalasi T4n OS dengan ZFS Root

Karena installer T4n OS tidak mendukung ZFS secara langsung, instalasi harus dilakukan via chroot. Selain beberapa hal terkait bootloader dan initramfs, prosesnya tidak jauh berbeda dari instalasi chroot biasa.

Pilihan Bootloader

ZFSBootMenu (Disarankan)

ZFSBootMenu adalah bootloader yang dirancang khusus untuk booting langsung dari ZFS pool. Fitur unggulan:

  • Mendukung enkripsi native ZFS
  • Menyediakan recovery environment (clone snapshot, manipulasi pre-boot)
  • Dapat booting dari pool manapun yang bisa di-import oleh driver ZFS modern
  • Void Linux adalah distribusi first-class di ZFSBootMenu

Panduan instalasi tersedia di dokumentasi ZFSBootMenu:

FirmwarePanduan
UEFIUEFI guide
BIOS/Legacysyslinux guide

Bootloader Tradisional (GRUB, dll.)

Jika tidak ingin menggunakan ZFSBootMenu, gunakan bootloader konvensional dengan catatan: buat partisi /boot terpisah menggunakan ext4 atau xfs untuk menghindari kompleksitas yang tidak perlu.

Media Instalasi

Installer T4n OS membutuhkan live image yang sudah menyertakan driver ZFS. Ada dua pilihan:

PilihanKeterangan
Build manualGunakan mklive.sh -p zfs dari repositori void-mklive
hrmpf (x86_64)Image pre-built dari anggota tim Void, sudah termasuk modul ZFS

Partisi Disk

Setelah booting dari live image ZFS, buat partisi disk:

PartisiTipeKeterangan
EFI SystemEFI (khusus UEFI)Format dengan mkfs.vfat
GRUB BIOS bootBIOS boot (khusus BIOS+GPT)Tidak diformat
/bootext4 atau xfsWajib jika tidak pakai ZFSBootMenu
SwapLinux swapOpsional — lihat catatan di bawah
ZFS poolType code: BF00Sisa disk, satu partisi untuk satu pool

Catatan swap:

  • Swap bisa diletakkan di ZFS zvol, namun berisiko deadlock kernel saat memory pressure tinggi.
  • Jika ingin menggunakan hibernasi, wajib gunakan partisi swap terpisah — kernel tidak dapat resume dari zvol.

Format partisi non-ZFS:

mkfs.vfat /dev/sda1   # EFI
mkfs.ext4 /dev/sda2   # /boot
mkswap /dev/sda3   # swap (opsional)

Membuat ZFS Pool

Buat pool pada partisi yang sudah disiapkan. Gunakan path dari /dev/disk/by-id/ agar lebih aman:

zpool create -f -o ashift=12 \
    -O compression=lz4      \
    -O acltype=posixacl     \
    -O xattr=sa             \
    -O relatime=on          \
    -o autotrim=on          \
    -m none zroot /dev/disk/by-id/<id-partisi>

Ganti <id-partisi> dengan ID disk yang sesuai (cek dengan ls /dev/disk/by-id/).

⚠️ Selalu gunakan /dev/disk/by-id/ atau /dev/disk/by-partuuid/ — hindari /dev/sda3 karena penamaan dapat berubah dan menyebabkan gagal import.

Export lalu re-import pool dengan path alternatif sementara:

zpool export zroot
zpool import -N -R /mnt zroot

Membuat Filesystem ZFS

Buat hierarki filesystem. Konvensi umum menempatkan root OS di bawah ROOT:

# Parent untuk boot environments
zfs create -o mountpoint=none zroot/ROOT

# Root filesystem T4n OS
zfs create -o mountpoint=/ -o canmount=noauto zroot/ROOT/void

# Home directory (opsional tapi disarankan)
zfs create -o mountpoint=/home zroot/home

canmount=noauto pada filesystem root berguna agar ZFS tidak otomatis me-mount satu boot environment di atas yang lain jika terdapat beberapa sistem yang terpasang.

Mount Hierarki ZFS

# Mount root secara manual terlebih dahulu
zfs mount zroot/ROOT/void

# Mount semua filesystem lainnya secara otomatis
zfs mount -a

Simpan konfigurasi pool ke cache untuk mempercepat import saat boot:

mkdir -p /mnt/etc/zfs
zpool set cachefile=/mnt/etc/zfs/zpool.cache zroot

Mount partisi non-ZFS:

# /boot
mkdir -p  /mnt/boot
mount /dev/sda2 /mnt/boot

# EFI (khusus UEFI)
mkdir -p  /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

Instalasi Sistem

Lanjutkan dengan instalasi chroot standar (lihat Instalasi via Chroot) hingga bagian sebelum Finalisasi.

Sebelum menjalankan langkah finalisasi, instal paket ZFS dan konfigurasi dracut:

mkdir -p /etc/dracut.conf.d
cat > /etc/dracut.conf.d/zol.conf <<EOF
nofsck="yes"
add_dracutmodules+=" zfs "
omit_dracutmodules+=" btrfs resume "
EOF

xbps-install -S zfs

Kemudian lanjutkan langkah Finalisasi dari panduan chroot (generate initramfs, install bootloader, reboot).

Ringkasan Langkah

#LangkahKeterangan
1Pilih bootloaderZFSBootMenu (disarankan) atau GRUB + /boot terpisah
2Boot live image ZFShrmpf atau build manual dengan -p zfs
3Partisi diskEFI + /boot + ZFS (type BF00)
4Buat ZFS poolzpool create dengan opsi yang sesuai
5Buat ZFS filesystemROOT/void + home
6Mount & simpan cache poolzfs mount -a + zpool set cachefile
7Instalasi chrootIkuti panduan instalasi chroot standar
8Konfigurasi dracut + ZFSzol.conf + xbps-install zfs
9Finalisasi & rebootGenerate initramfs, install bootloader

@T4n-Labs · @Gh0sT4n