๐Ÿ“˜ T4n OS Documentation

Apa itu T4n OS Docs?

T4n OS Docs adalah pusat dokumentasi resmi untuk sistem operasi T4n OS. Dokumentasi ini dirancang untuk membantu pengguna memahami, menggunakan, dan mengembangkan T4n OS dengan cara yang sederhana, terstruktur, dan profesional.

Dokumentasi ini mencakup

  • Panduan Instalasi & Penggunaan
  • Troubleshooting
  • Hal-hal yang Berkaitan dengan T4n OS

Tujuan

Menjadikan T4n OS mudah dipahami oleh siapa pun โ€” baik pemula Linux maupun pengguna tingkat lanjut.

โš ๏ธ Catatan: Dokumentasi ini masih dalam tahap pengembangan dan belum sepenuhnya sempurna. Mohon dimaklumi karena saat ini dikerjakan secara solo. Kontribusi dan masukan sangat diterima!


@T4n-Labs ยท @Gh0sT4n

Apa Itu T4n OS?

T4n OS adalah sistem operasi berbasis Void Linux yang dikembangkan dalam proyek T4n Labs. Proyek ini pertama kali diinisiasi oleh Gh0sT4n pada 17 Agustus 2025 โ€” seorang pelajar asal Atjeh (Darussa'adah Cot Tarom Baroh, SMKN 5 Takengon).

Dibangun di atas fondasi Void Linux, T4n OS mengusung filosofi:

"Keep Things Simple"

Sistem ini dirancang untuk memberikan performa tinggi, struktur yang bersih, dan kontrol penuh kepada pengguna โ€” tanpa komponen yang tidak diperlukan.

Asal Nama "T4n"

Nama "T4n" terinspirasi dari sosok Tan Malaka, seorang pemikir Indonesia yang dikenal dengan gagasan kemerdekaan berpikir dan kemandirian.

Penggunaan angka "4" sebagai pengganti huruf "a" menjadi simbol modernisasi sekaligus identitas digital T4n OS.

Karakteristik

AspekDetail
Package Managerxbps (binary)
Model RilisRolling Release
Filosofi SistemMinimal & Clean
Helper RepoVUR-Helper โ€” Void User Repository

Keunggulan

  • Ringan dan cepat
  • Tanpa bloatware
  • Struktur sistem bersih
  • Modular dan terkontrol

@T4n-Labs ยท @Gh0sT4n

Sejarah

Dari Ide Sederhana Menuju Fondasi Ekosistem

Di dunia Linux yang penuh pilihan, lahirnya sebuah distribusi baru bukan hanya soal teknis. Ia adalah manifestasi dari keresahan, hasrat, dan keberanian untuk mandiri. T4n OS bukan sekadar perangkat lunak โ€” ia adalah perjalanan membangun ekosistem T4n Labs.

Inisiasi & Reformasi (17 Agustus 2025)

Proyek T4n OS diinisiasi oleh Gh0sT4n pada 17 Agustus 2025. Dipilihnya tanggal ini bukan tanpa alasan โ€” ia adalah simbol kemerdekaan berpikir. Di tengah gejolak reformasi sosial yang melanda Indonesia saat itu, T4n OS lahir sebagai bentuk "Reformasi Digital".

Terinspirasi dari pemikiran Tan Malaka tentang kemandirian, T4n OS membawa misi untuk melepaskan pengguna dari kompleksitas yang tidak perlu dan ketergantungan pada sistem yang tertutup.

Ditempa oleh Prahara

Perjalanan menuju rilis perdana tidaklah mudah. T4n OS dikembangkan di tengah tantangan alam yang ekstrem di Aceh.

Oktober โ€“ November 2025:

  • Intensitas Hujan Tinggi โ€” menyebabkan banjir dan longsor di Sumatera
  • Krisis Pasokan โ€” hambatan distribusi pangan antara Aceh Tengah dan Bireuen
  • Krisis Energi โ€” pemadaman listrik total selama lebih dari satu bulan

Guncangan Alam:

  • Rentetan gempa bumi hingga 7 kali dalam semalam di Takengon
  • Status siaga Gunung Burni Telong

Namun, keterbatasan inilah yang membentuk filosofi T4n OS menjadi sistem yang tangguh, efisien, dan lincah.

Mengapa Void Linux?

Alih-alih membangun dari nol yang memakan waktu, T4n OS memilih berdiri di atas fondasi yang jujur: Void Linux. Pilihan ini didasari oleh prinsip Musannef (penyusunan yang sistematis) dan logika Manteq:

  1. Kontrol Penuh โ€” Penggunaan runit sebagai init system yang simpel dan cepat
  2. Performa Maksimal โ€” Tanpa beban bloatware yang memperlambat mesin
  3. Kesederhanaan Arsitektur โ€” Sejalan dengan prinsip "Keep Things Simple"
  4. Menentang Arus Utama โ€” T4n OS hadir untuk membuktikan bahwa distribusi Linux yang hebat tidak harus mengikuti standar mainstream

Arah Pengembangan

  • Let-X (VUR-Helper) โ€” Tools untuk mempermudah manajemen paket di T4n OS maupun Void Linux, menggunakan template dari VUR (T4n-Labs) atau Void Linux
  • VUR (Void User Repository) โ€” Membangun ekosistem paket mandiri dari dan untuk komunitas
  • Dokumentasi Terstruktur โ€” Penjelasan teknis yang disederhanakan agar mudah dipahami oleh siapa saja

T4n OS bukan proyek instan. Ia adalah manifesto keberanian untuk membangun teknologi yang merdeka โ€” lahir dari guncangan gempa dan kegelapan, menuju cahaya kemandirian.


@T4n-Labs ยท @Gh0sT4n

Instalasi

Bagian ini berisi informasi umum tentang proses instalasi T4n OS yang berbasis pada Void Linux. Untuk panduan konfigurasi tingkat lanjut, silakan lihat bagian Instalasi Lanjutan.

Persyaratan Sistem

T4n OS dirancang ringan dan efisien sehingga dapat berjalan pada perangkat dengan spesifikasi rendah. Untuk pengalaman yang lebih stabil dan nyaman, berikut spesifikasi minimum yang direkomendasikan:

ArsitekturCPURAMPenyimpanan
x86_64-glibcx86_64520 MB700 MB

โš ๏ธ Catatan: Edisi dengan desktop environment (seperti Xfce) membutuhkan sumber daya yang lebih besar. Kebutuhan sistem juga dapat meningkat tergantung aplikasi yang digunakan.

Dukungan Arsitektur

Saat ini T4n OS tersedia untuk arsitektur x86_64.

Koneksi internet saat instalasi disarankan, tetapi tidak wajib โ€” ISO T4n OS sudah berisi paket dasar sehingga instalasi dapat dilakukan secara offline.

Unduh File ISO

PlatformLink
Google DriveUnduh di Google Drive
SourceForgeUnduh di SourceForge

Memverifikasi File ISO

1. Pilih Varian T4n OS

VarianDeskripsiTarget Pengguna
BaseSistem minimalAdvanced user
XFCEDesktop ringanRecommended
XFCE WaylandAntarmuka modernEksperimental
ServerMode server (SystemD)Coming Soon

2. Unduh File yang Diperlukan

Pastikan semua file berikut sudah terunduh sebelum melanjutkan:

  • *.iso โ€” Image instalasi T4n OS
  • SHA256SUMS โ€” Daftar checksum file
  • SHA256SUMS.sig โ€” Tanda tangan digital
  • t4n-public.key โ€” Public key developer

3. Verifikasi Keamanan

๐Ÿ” Langkah ini penting untuk memastikan file ISO aman dan asli dari developer.

Import Public Key

gpg --import t4n-public.key

Verifikasi Signature

gpg --verify SHA256SUMS.sig

Jika berhasil, akan muncul output berikut:

Good signature from "T4nLabs ..."

Cek Integritas File ISO

sha256sum -c SHA256SUMS

Jika file valid:

T4nOS-x86_64-XXXX.iso: OK

@T4n-Labs ยท @Gh0sT4n

Panduan Beginner

Installer Langsung (Live Installer)

T4n OS menyediakan Live ISO yang berisi utilitas dasar, program installer, dan paket sistem untuk menginstal sistem baru.

Saat ini tersedia untuk arsitektur:

  • x86_64 (glibc)

Jenis Gambar Installer

T4n OS merilis dua jenis gambar installer:

JenisCocok UntukKeterangan
BaseAdvanced userSistem minimal, bangun sesuai kebutuhan
XfcePemulaDesktop lengkap, siap pakai

Gambar Dasar (Base Image)

Gambar Base menyediakan paket minimal untuk membangun sistem T4n OS yang fungsional โ€” cukup untuk mengonfigurasi mesin baru dan memperbarui sistem. Cocok untuk pengguna advanced yang ingin membangun sistem sepenuhnya dari awal.

Gambar Xfce (Desktop Image)

Gambar Xfce menyediakan lingkungan desktop lengkap yang siap pakai, berbasis Xfce Desktop Environment.

Perangkat Lunak yang Disertakan

KategoriAplikasi
Window Managerxfwm4
File ManagerThunar
Web BrowserMozilla Firefox
Terminalxfce4-terminal
Text EditorMousepad
Image ViewerRistretto
LainnyaBulk Rename, Orage Globaltime, Orage Calendar, Task Manager, Parole Media Player, Audio Mixer, MIME Editor, Application Finder

โš ๏ธ Penting Saat Instalasi Xfce

Jika menggunakan gambar Xfce, wajib memilih sumber instalasi Local.

Jika memilih Network, installer hanya akan mengunduh sistem dasar terbaru tanpa menyertakan paket tambahan dari Live ISO.

Dukungan Aksesibilitas

Semua gambar installer mendukung aksesibilitas konsol berikut:

  • espeakup โ€” pembaca layar konsol
  • brltty โ€” driver braille konsol

Jika sumber instalasi Local dipilih, kedua paket ini akan ikut terinstal dan aktif pada sistem baru.

Bootloader

FirmwareBootloaderKeterangan
UEFIGNU GRUBDua nada saat menu muncul
BIOS / LegacySYSLINUXTanpa bunyi

Tombol Pintas Bootloader

TombolFungsi
sBoot dengan screen reader aktif
rBoot + screen reader + load ISO ke RAM
gBoot + screen reader + tanpa grafis
mMasuk ke Memtest86+ (jika tersedia)
fMasuk firmware UEFI
bReboot
pShutdown

Catatan: Pada SYSLINUX, tekan Enter setelah memilih shortcut. Jika beberapa kartu suara terdeteksi, akan muncul menu pemilihan audio โ€” tekan Enter saat bunyi terdengar untuk memilih perangkat tersebut.

Dukungan Aksesibilitas Grafis (Xfce)

Gambar Xfce juga mendukung pembaca layar grafis Orca. Untuk mengaktifkannya:

Win + R  โ†’  orca -r

Jika sumber instalasi Local dipilih, Orca juga akan tersedia pada sistem yang terinstal.

Parameter Kernel

Installer mendukung berbagai parameter kernel untuk mengubah perilaku sistem live. Daftar lengkapnya tersedia di:

๐Ÿ“„ Kernel CLI Parameter


@T4n-Labs ยท @Gh0sT4n

Persiapan Media

Setelah mengunduh file ISO T4n OS, langkah berikutnya adalah membuat media instalasi yang dapat digunakan untuk boot โ€” USB, SD Card, atau DVD.

1. Membuat USB / SD Card Bootable (Linux)

Langkah 1: Identifikasi Perangkat

Sebelum menulis ISO, pastikan kamu tahu device mana yang akan digunakan. Colokkan USB atau SD Card, lalu jalankan:

fdisk -l

Contoh output:

Disk /dev/sda: 7.5 GiB, 8036286464 bytes, 15695872 sectors
Disk model: Your USB Device's Model
FieldKeterangan
/dev/sdaLokasi perangkat
7.5 GiBUkuran storage

Pola umum nama device:

  • USB โ†’ /dev/sdX
  • SD Card โ†’ /dev/mmcblkX

Langkah 2: Unmount Perangkat

Pastikan perangkat tidak sedang digunakan:

umount /dev/sdX

Jika muncul pesan not mounted, artinya aman untuk dilanjutkan.

Langkah 3: Tulis ISO ke USB

Software yang Bisa Digunakan

AplikasiPlatformLink
Balena EtcherUniversaletcher.balena.io
RufusWindows onlyrufus.ie
PopsicleLinux onlyGitHub

Via dd (Terminal)

dd bs=4M if=/path/to/T4nOS-x86_64.iso of=/dev/sdX status=progress
ParameterKeterangan
if=Lokasi file ISO
of=Target device (USB kamu)
bs=4MMempercepat proses penulisan
status=progressMenampilkan progress secara real-time

โš ๏ธ PERINGATAN: Semua data di USB akan terhapus permanen. Pastikan device yang dipilih sudah benar sebelum menjalankan perintah ini.

Output saat proses selesai akan terlihat seperti ini:

377487360 bytes copied, 20 s, 18 MB/s

Langkah 4: Sinkronisasi Data

sync

Jalankan perintah ini untuk memastikan semua data benar-benar tersimpan sebelum USB dicabut.

2. Burning ISO ke CD/DVD

Jika ingin menggunakan CD/DVD, berikut aplikasi yang tersedia:

AplikasiDeskripsiLink
K3bAplikasi burning lengkap (CD/DVD/Blu-ray)GitHub
XfburnAplikasi burning ringan dari XFCEDokumentasi
BraseroAplikasi burning GNOME, desain simpelGNOME Wiki

Cara umum:

  1. Buka aplikasi
  2. Pilih "Burn ISO Image"
  3. Pilih file ISO T4n OS
  4. Klik Burn

โš ๏ธ Catatan: CD/DVD lebih lambat dibanding USB dan kurang responsif saat live boot.

Tips Tambahan

  • Gunakan USB minimal 8 GB
  • Pastikan file ISO tidak corrupt โ€” verifikasi SHA256 sebelum menulis
  • Gunakan port USB langsung, hindari USB hub jika ada masalah
  • Jika gagal boot, periksa pengaturan Boot Priority di BIOS/UEFI

@T4n-Labs ยท @Gh0sT4n

Partisi

Pemartisian adalah proses membagi penyimpanan (HDD/SSD) menjadi beberapa bagian sebelum instalasi sistem operasi.

Pada sistem Linux modern, partisi yang umum digunakan:

PartisiFungsiStatus
/boot atau /boot/efiBooting sistemWajib
/ (Root)Sistem utamaWajib
/homeData penggunaDirekomendasikan
SwapMemori cadanganDirekomendasikan

1. Memahami Tipe Partisi

Saat menggunakan tools seperti cfdisk, kamu akan melihat dua skema partisi:

  • Label: dos โ†’ skema MBR
  • Label: gpt โ†’ skema GPT

Jika disk masih berisi partisi lama, kamu bisa menghapusnya dengan:

wipefs -a /dev/sdX

Atau langsung reset saat membuka cfdisk:

cfdisk -z /dev/sdX

2. Sistem BIOS (Legacy)

Untuk sistem BIOS lama, disarankan menggunakan skema MBR (dos) dengan batasan maksimal 4 partisi utama.

Jika ingin menggunakan GPT di BIOS

โš ๏ธ Kamu wajib membuat partisi khusus berikut agar GRUB dapat berjalan dengan benar:

FieldNilai
NamaBIOS Boot Partition
Ukuranยฑ1 MB
TipeBIOS boot
FilesystemTidak ada (tanpa format)

3. Sistem UEFI (Modern)

Untuk sistem UEFI, wajib menggunakan GPT.

EFI System Partition (ESP)

Partisi ini digunakan oleh firmware UEFI untuk proses booting.

FieldNilai
Mount Point/boot/efi
Formatvfat (FAT32)
Ukuran200 MB โ€“ 1 GB
TipeEFI System

4. Partisi Swap

Swap adalah memori cadangan yang digunakan saat RAM penuh.

RAMSwap (Normal)Swap (Hibernate)
< 2 GB2ร— RAM3ร— RAM
2 โ€“ 8 GB1ร— RAM2ร— RAM
8 โ€“ 64 GBMin 4 GB1.5ร— RAM
> 64 GBMin 4 GBTidak disarankan

Catatan: Swap tidak wajib, tetapi diperlukan jika ingin menggunakan fitur hibernasi.

5. Partisi Root (/)

Partisi utama tempat T4n OS diinstal.

  • Minimal: 20 GB
  • Ideal: 30 GB ke atas
  • Format: ext4

6. Partisi /home (Direkomendasikan)

Digunakan untuk menyimpan file pribadi dan konfigurasi aplikasi pengguna. Memisahkan /home dari root memudahkan reinstall OS tanpa kehilangan data pengguna.

7. Partisi /boot (Opsional)

Biasanya tidak diperlukan di sistem modern. Jika digunakan:

  • Ukuran: ยฑ200 MB
  • Isi: Kernel & bootloader

โš ๏ธ Perhatian: Kernel Linux akan terus bertambah ukurannya setiap update. T4n OS (seperti Void Linux) tidak menghapus kernel lama secara otomatis, jadi pastikan ukuran partisi /boot cukup.

8. Contoh Skema Partisi

UEFI (Direkomendasikan)

PartisiUkuranMount PointFormat
EFI300 MB/boot/efiFAT32
Root30 GB+/ext4
SwapSesuai RAMโ€”swap
HomeSisa disk/homeext4

BIOS (MBR)

PartisiUkuranMount PointFormat
Root30 GB+/ext4
SwapSesuai RAMโ€”swap
HomeSisa disk/homeext4

โš ๏ธ Tips Penting

  • Selalu backup data sebelum melakukan partisi
  • Pastikan memilih disk yang benar (/dev/sdX)
  • Gunakan cfdisk untuk pemula โ€” antarmuka lebih mudah dipahami
  • Gunakan GPT jika sistem mendukung UEFI (lebih modern dan fleksibel)

@T4n-Labs ยท @Gh0sT4n

Panduan Instalasi

Sebelum melanjutkan, pastikan kamu telah:

  • Mengunduh ISO T4n OS
  • Membuat media bootable (USB/DVD)

โš ๏ธ Persiapan Penting

Sebelum mulai, pastikan kamu mengetahui jenis firmware sistem kamu:

  • BIOS (Legacy)
  • UEFI (Modern)

Jenis firmware akan memengaruhi skema partisi yang digunakan. Lihat dokumentasi partisi untuk referensi.

Fitur yang tidak didukung installer: LVM, LUKS (enkripsi disk), ZFS.

Booting

  1. Nyalakan komputer.
  2. Masuk ke boot menu โ€” biasanya F2, F12, ESC, atau DEL.
  3. Pilih perangkat USB / DVD T4n OS.

Tips: Tersedia opsi load ke RAM. Proses awal lebih lambat, tetapi instalasi berjalan lebih cepat setelahnya.

Masuk ke Live System

Login menggunakan kredensial berikut:

FieldValueKeterangan
rootvoidlinuxAkses Root
anonvoidlinuxAkses User biasa

Installer

T4n OS menyediakan dua pilihan installer:

1. CLI Installer

Installer berbasis menu (TUI).

t4n-installer

2. GUI Installer (Alpha)

t4n-installer-gui

Dibangun dengan Python. Langkah konfigurasi sama seperti CLI installer.

Konfigurasi Installer

Keyboard

Pilih layout keyboard yang sesuai. Gunakan us untuk keyboard standar.

Jaringan

T4n OS menggunakan NetworkManager sebagai pengelola jaringan default.

Ethernet (Kabel)

Koneksi biasanya terdeteksi otomatis melalui DHCP.

WiFi

Jalankan step ini(Jika T4n OS Base) :

  1. Shell
nmtui
  1. NTUI Option > Activate a Connection
  2. Pilih Wifi dan Masukkan Password
  3. Pilih Back, lalu Enter
  4. Pilih Quit, lalu Enter

Jika koneksi gagal: Keluar dari installer, lalu konfigurasi jaringan secara manual menggunakan wpa_supplicant dan dhcpcd.

Isi informasi berikut: | Field | Keterangan | |-------------|-----------------------------| | SSID | Nama jaringan WiFi | | Enkripsi| wpa atau wep | | Password| Password jaringan |

Dokumentasi WPA_Supplicant & DHCPCD

Source (Sumber Instalasi)

OpsiKeterangan
LocalInstalasi dari ISO (offline)
NetworkMengunduh paket terbaru dari repo

โš ๏ธ Jika menggunakan ISO XFCE, wajib pilih Local.

Hostname

Masukkan nama komputer. Contoh:

T4nLabs

Locale

Pilih bahasa dan pengaturan regional. Contoh:

  • en_US.UTF-8
  • id_ID.UTF-8

Timezone

Pilih zona waktu. Contoh:

  • Asia/Jakarta

Password Root

Masukkan password untuk akun root.

Karakter tidak akan terlihat saat mengetik โ€” ini normal.

User

Buat akun pengguna baru dengan mengisi:

  • Username (default: void)
  • Nama lengkap
  • Password

User yang dibuat otomatis masuk ke grup wheel sehingga dapat menggunakan sudo.

Partisi

Pilih tool partisi yang tersedia sesuai installer yang digunakan:

ToolCLI InstallerGUI Installer
cfdiskโœ…โœ…
fdiskโœ…โœ…
gpartedโŒโœ…

Langkah:

  1. Pilih disk target (contoh: /dev/sda).
  2. Buat partisi yang diperlukan:
PartisiKeterangan
/Root (wajib)
swapSwap (disarankan)
/boot/efiKhusus UEFI
  1. Pilih Write, lalu Quit (atau Apply untuk GParted).

Skema partisi berdasarkan firmware:

FirmwareSkema Partisi
UEFIGPT + EFI partition
BIOSMBR

Filesystem

Untuk setiap partisi, tentukan filesystem dan mount point:

PartisiFilesystemMount Point
Rootext4/
EFIvfat/boot/efi
Homeext4/home (opsional)

Bootloader

Pilih lokasi instalasi bootloader:

  • Pilih disk (contoh: /dev/sda), atau
  • Pilih none untuk konfigurasi manual.

Bootloader yang digunakan: GRUB

Review

Periksa semua konfigurasi sebelum melanjutkan. Pastikan:

  • Disk yang dipilih sudah benar.
  • Mount point sudah sesuai.
  • Bootloader sudah dikonfigurasi.

Proses Instalasi

Pilih Install untuk memulai. Installer akan secara otomatis:

  1. Memformat partisi
  2. Menginstal sistem dasar
  3. Membuat initramfs
  4. Menginstal GRUB

โณ Tunggu hingga proses selesai.

Selesai & Reboot

Setelah instalasi sukses, jalankan:

loginctl reboot

Lalu cabut media USB/DVD dari perangkat.

Pasca Instalasi

Setelah masuk ke sistem, segera lakukan pembaruan:

sudo xbps-install -Su -y

Lihat Dokumentasi XBPS untuk penggunaan lebih lanjut.


@T4n-Labs ยท @Gh0sT4n

Panduan Instalasi Advanced

Bagian ini berisi panduan untuk kasus penggunaan yang lebih spesifik atau kompleks.

Daftar Isi

TopikTautan
Instalasi Via ChrootVia Chroot
Full Disk EncryptionGuide
Root on ZFSZFS

@T4n-Labs ยท @Gh0sT4n

Instalasi via Chroot (x86_64 / i686 / aarch64)

Catatan: T4n OS belum menyediakan ROOTFS sendiri. Gunakan ROOTFS dari Void Linux sebagai gantinya.

Panduan ini menjelaskan proses instalasi T4n OS secara manual melalui chroot. Diasumsikan kamu sudah familiar dengan Linux, namun belum tentu dengan metode instalasi via chroot.

Panduan ini mencakup pengaturan tipikal โ€” satu partisi pada satu disk SATA/IDE/USB โ€” namun setiap langkah dapat dimodifikasi sesuai kebutuhan (termasuk enkripsi disk penuh).

Metode Instalasi

T4n OS menyediakan dua metode instalasi:

MetodeCara KerjaSyarat Host
XBPSMenggunakan XBPS Package Manager dari sistem hostXBPS harus sudah terinstal di host
ROOTFSMengekstrak tarball ROOTFS ke sistem file baruHost harus bisa chroot, memiliki tar & xz

Metode ROOTFS lebih fleksibel โ€” bisa digunakan dari distro Linux mana pun.

1. Persiapan Sistem File

Partisi Disk

Tool yang tersedia untuk partisi:

cfdisk   # Antarmuka TUI, paling mudah
fdisk    # CLI klasik

Tool tambahan seperti gdisk (dari paket gptfdisk) atau parted juga dapat digunakan jika dibutuhkan.

Format Partisi

Gunakan tool sesuai filesystem yang dipilih:

mkfs.ext4  /dev/sdXN   # ext4  โ€” disarankan untuk /
mkfs.xfs   /dev/sdXN   # XFS
mkfs.btrfs /dev/sdXN   # Btrfs
mkfs.vfat  /dev/sdXN   # FAT32 โ€” hanya untuk partisi EFI

Skema Partisi yang Disarankan

UEFI (GPT)

PartisiTipeUkuranFilesystem
/boot/efiEFI System (EF00)~1 GBFAT32
/Linux Filesystem (8300)Sisa diskext4
swapLinux SwapOpsionalswap
# Contoh format:
mkfs.vfat /dev/sda1
mkfs.ext4 /dev/sda2

BIOS (MBR)

PartisiTipeFilesystem
/Linuxext4
swapLinux Swapswap

Tidak memerlukan partisi /boot terpisah kecuali menggunakan enkripsi atau LVM.

2. Mount Sistem File

# Mount root
mount /dev/sda2 /mnt

# Khusus UEFI: mount partisi EFI
mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

Aktifkan swap jika ada:

mkswap  /dev/sdXN
swapon  /dev/sdXN

3. Instalasi Dasar

Ikuti salah satu metode berikut.

Untuk arsitektur aarch64, instal paket kernel tambahan linux bersama base-system.

Metode XBPS

Set variabel repository dan arsitektur:

REPO=https://repo-default.voidlinux.org/current
ARCH=x86_64   # Pilihan: x86_64 | x86_64-musl | i686 | aarch64 | aarch64-musl

Salin kunci RSA:

mkdir -p /mnt/var/db/xbps/keys
cp /var/db/xbps/keys/* /mnt/var/db/xbps/keys/

Bootstrap sistem dasar:

XBPS_ARCH=$ARCH xbps-install -S -r /mnt -R "$REPO" base-system

Metode ROOTFS

Unduh tarball ROOTFS sesuai arsitektur, lalu ekstrak:

tar xvf void-<...>-ROOTFS.tar.xz -C /mnt

Update dan instal base-system:

xbps-install -r /mnt -Su xbps
xbps-install -r /mnt -u
xbps-install -r /mnt base-system
xbps-remove  -r /mnt -R base-container-full

4. Masuk ke Chroot

xchroot /mnt /bin/bash

5. Konfigurasi Sistem

Hostname

echo "NamaKomputer" > /etc/hostname

Locale

Edit /etc/default/libc-locales, hapus komentar pada locale yang diinginkan. Contoh:

en_US.UTF-8 UTF-8
id_ID.UTF-8 UTF-8

Generate locale (khusus glibc):

xbps-reconfigure -f glibc-locales

Timezone & rc.conf

Telusuri opsi di /etc/rc.conf untuk timezone dan pengaturan sistem lainnya.

Password Root

passwd

Minimal harus ada password root, atau akun user dengan hak sudo.

Buat User Baru (Opsional)

useradd -m -G wheel,audio,video,plugdev namauser
passwd namauser

6. Aktifkan Layanan

Aktifkan layanan yang diperlukan agar tersedia saat sistem pertama kali booting. Contoh:

ln -s /etc/sv/dhcpcd /etc/runit/runsvdir/default/
ln -s /etc/sv/sshd   /etc/runit/runsvdir/default/

7. Instalasi GRUB

BIOS

xbps-install -S grub
grub-install /dev/sda   # Arahkan ke disk, bukan ke partisi

UEFI

xbps-install -S grub-x86_64-efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="T4nOS"

Sesuaikan --target dengan arsitektur:

ArsitekturTarget
x86_64x86_64-efi
i686i386-efi
aarch64arm64-efi

Troubleshooting GRUB (UEFI)

Jika variabel EFI tidak tersedia, mount terlebih dahulu efivarfs:

mount -t efivarfs none /sys/firmware/efi/efivars

Jika masih gagal, tambahkan flag --no-nvram:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="T4nOS" --no-nvram

Instalasi ke Media Removable / Firmware UEFI Non-Standar

Tambahkan flag --removable:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable

Atau salin file GRUB ke lokasi fallback secara manual:

mkdir -p /boot/efi/EFI/boot
cp /boot/efi/EFI/T4nOS/grubx64.efi /boot/efi/EFI/boot/bootx64.efi

Nama file berbeda per arsitektur:

ArsitekturFile GRUBFile Fallback
x86_64grubx64.efibootx64.efi
i686grubia32.efibootia32.efi
aarch64grubaa64.efibootaa64.efi

8. Finalisasi

Pastikan semua paket terkonfigurasi dengan benar โ€” ini juga akan men-generate initramfs dan konfigurasi GRUB:

xbps-reconfigure -fa

Keluar dari chroot dan reboot:

exit
umount -R /mnt
shutdown -r now

Pasca Instalasi

Setelah berhasil booting ke T4n OS, segera lakukan pembaruan sistem:

sudo xbps-install -Su

@T4n-Labs ยท @Gh0sT4n

Full Disk Encryption (FDE)

Panduan ini menjelaskan cara menginstal T4n OS dengan enkripsi disk penuh menggunakan LUKS + LVM.

โš ๏ธ Peringatan: Nama block device (/dev/sda, /dev/sda1, dll.) di sistem kamu mungkin berbeda. Jangan salin perintah secara langsung โ€” sesuaikan terlebih dahulu dengan output di sistem kamu.

Skema Partisi

BIOS (MBR)

PartisiTipeUkuranKeterangan
/dev/sda1LinuxSeluruh diskPartisi tunggal, bootable

UEFI (GPT)

PartisiTipeUkuranKeterangan
/dev/sda1EFI System~128 MBPartisi EFI
/dev/sda2Linux FilesystemSisa diskPartisi terenkripsi

Buat partisi menggunakan cfdisk atau fdisk, lalu tandai partisi utama sebagai bootable (khusus BIOS/MBR).

Konfigurasi Volume Terenkripsi

Catatan LUKS: Panduan ini menggunakan LUKS1 karena GRUB sebelum versi 2.06 hanya mendukung LUKS1. LUKS2 hanya didukung sebagian โ€” hanya KDF PBKDF2 yang diimplementasikan, sedangkan default LUKS2 menggunakan Argon2i yang tidak dapat didekripsi oleh GRUB.

1. Format Partisi dengan LUKS1

# BIOS: gunakan /dev/sda1
# UEFI: gunakan /dev/sda2
cryptsetup luksFormat --type luks1 /dev/sda1

2. Buka Volume LUKS

cryptsetup luksOpen /dev/sda1 voidvm

Ganti voidvm dengan nama yang diinginkan.

3. Buat Volume Group LVM

vgcreate voidvm /dev/mapper/voidvm

4. Buat Logical Volume

lvcreate --name root -L 10G      voidvm
lvcreate --name swap -L 2G       voidvm
lvcreate --name home -l 100%FREE voidvm

Sesuaikan ukuran sesuai kebutuhan.

5. Format Filesystem

mkfs.xfs -L root /dev/voidvm/root
mkfs.xfs -L home /dev/voidvm/home
mkswap /dev/voidvm/swap
swapon /dev/voidvm/swap

Filesystem lain yang didukung GRUB (ext4, btrfs, dll.) juga dapat digunakan.

Instalasi Sistem

Mount Partisi

mount /dev/voidvm/root /mnt
mkdir -p /mnt/home
mount /dev/voidvm/home /mnt/home

Khusus UEFI, format dan mount partisi EFI:

mkfs.vfat /dev/sda1
mkdir -p  /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

Salin Kunci RSA

mkdir -p /mnt/var/db/xbps/keys
cp /var/db/xbps/keys/* /mnt/var/db/xbps/keys/

Instal Sistem Dasar

BIOS:

xbps-install -Sy -R https://repo-default.voidlinux.org/current -r /mnt \
  base-system lvm2 cryptsetup grub

UEFI:

xbps-install -Sy -R https://repo-default.voidlinux.org/current -r /mnt \
  base-system lvm2 cryptsetup grub-x86_64-efi

Konfigurasi

Generate fstab

xgenfstab /mnt > /mnt/etc/fstab

Masuk ke Chroot

xchroot /mnt
chown root:root /
chmod 755 /
passwd root
echo "voidvm" > /etc/hostname

Locale (khusus glibc)

echo "LANG=id_ID.UTF-8" > /etc/locale.conf
echo "id_ID.UTF-8 UTF-8" >> /etc/default/libc-locales
xbps-reconfigure -f glibc-locales

Konfigurasi GRUB

Aktifkan Dukungan Cryptodisk

Tambahkan baris berikut ke /etc/default/grub:

GRUB_ENABLE_CRYPTODISK=y

Tambahkan Parameter Kernel

Cari UUID partisi terenkripsi:

blkid -o value -s UUID /dev/sda1

Edit GRUB_CMDLINE_LINUX_DEFAULT di /etc/default/grub, tambahkan:

rd.lvm.vg=voidvm rd.luks.uuid=<UUID>

Ganti <UUID> dengan nilai dari output blkid di atas. Untuk UEFI, UUID yang digunakan adalah milik /dev/sda2.

Konfigurasi Keyfile (Agar Tidak Input Password Dua Kali)

1. Generate Key Acak

dd bs=1 count=64 if=/dev/urandom of=/boot/volume.key

2. Tambahkan Key ke Volume LUKS

cryptsetup luksAddKey /dev/sda1 /boot/volume.key

3. Amankan Permissions

chmod 000 /boot/volume.key
chmod -R g-rwx,o-rwx /boot

4. Tambahkan ke /etc/crypttab

voidvm   /dev/sda1   /boot/volume.key   luks

Untuk UEFI, ganti /dev/sda1 dengan /dev/sda2.

5. Sertakan Keyfile dalam initramfs

Buat file /etc/dracut.conf.d/10-crypt.conf:

install_items+=" /boot/volume.key /etc/crypttab "

Finalisasi

Instal GRUB

# BIOS
grub-install /dev/sda

# UEFI
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="T4nOS"

Generate initramfs

xbps-reconfigure -fa

Reboot

exit
umount -R /mnt
reboot

Ringkasan Langkah

#LangkahKeterangan
1Partisi diskMBR (1 partisi) atau GPT + EFI (2 partisi)
2Format LUKS1cryptsetup luksFormat --type luks1
3Setup LVMvgcreate โ†’ lvcreate โ†’ mkfs
4Mount & instalasixbps-install base-system + lvm2 + cryptsetup
5Konfigurasi GRUBGRUB_ENABLE_CRYPTODISK=y + UUID kernel cmdline
6Setup keyfileAgar tidak input password dua kali saat boot
7Generate initramfs & rebootxbps-reconfigure -fa

@T4n-Labs ยท @Gh0sT4n

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

Perangkat ARM (Coming Soon)

T4n OS menyediakan paket dan image untuk beberapa perangkat ARM. Instalasi dapat dilakukan dengan beberapa metode:

MetodeKeterangan
Pre-built imageFlash langsung ke SD card โ€” cepat, tapi layout partisi terbatas
TarballEkstrak PLATFORMFS/ROOTFS ke partisi yang sudah disiapkan โ€” lebih fleksibel
ChrootMengikuti panduan instalasi chroot standar
Live imageKhusus perangkat aarch64 UEFI

Dokumentasi spesifik per platform tersedia untuk:

  • Apple Silicon
  • Lenovo ThinkPad X13s
  • Pinebook Pro
  • Raspberry Pi

Karena sebagian besar perintah dijalankan pada storage eksternal, selalu jalankan sync sebelum mencabut perangkat.

Instalasi

Pre-built Image

Image pre-built disiapkan untuk storage 1 GB. Setelah mengunduh dan memverifikasi image:

# Ekstrak image
unxz -k <image>.img.xz

# Flash ke SD card (sesuaikan /dev/mmcblk0 dengan perangkat kamu)
sudo dd if=<image>.img of=/dev/mmcblk0 bs=4M status=progress

Saat pertama kali boot, partisi root akan otomatis diperluas untuk mengisi ruang yang tersedia menggunakan growpart.

Untuk menonaktifkan auto-expand, komentari baris berikut di /etc/default/growpart:

# ENABLE_ROOT_GROWPART=yes

Untuk memperluas partisi secara manual setelah flashing:

# Perluas partisi dengan cfdisk atau fdisk
cfdisk /dev/mmcblk0

# Resize filesystem ke ukuran partisi baru
resize2fs /dev/mmcblk0p2

Layout Partisi Kustom

Untuk kustomisasi layout partisi, gunakan metode Tarball atau Chroot.

Skema Partisi ARM (MS-DOS Partition Table)

PartisiTipeFilesystemMount PointKeterangan
/dev/mmcblk0p10cFAT32/bootPartisi boot
/dev/mmcblk0p2Linuxext4/Partisi root

Jika menggunakan SD card, buat ext4 dengan opsi ^has_journal untuk menonaktifkan journaling dan memperpanjang umur kartu (dengan risiko kehilangan data lebih tinggi):

mkfs.ext4 -O ^has_journal /dev/mmcblk0p2

Mount partisi:

mount /dev/mmcblk0p2 /mnt
mkdir /mnt/boot
mount /dev/mmcblk0p1 /mnt/boot

Tarball Installation

Unduh dan verifikasi tarball PLATFORMFS atau ROOTFS, lalu ekstrak ke filesystem yang sudah di-mount:

tar xvfp <image>.tar.xz -C /mnt

Chroot Installation

Ikuti panduan Instalasi via Chroot dengan arsitektur dan paket base yang sesuai.

Instalasi dari x86_64 (Cross-Architecture)

Jika melakukan instalasi dari komputer x86_64 untuk perangkat ARM:

# Instal emulator QEMU yang sesuai
sudo xbps-install -S binfmt-support qemu-user-aarch64   # untuk aarch64
# atau
sudo xbps-install -S binfmt-support qemu-user-arm       # untuk ARM 32-bit

# Aktifkan layanan binfmt
ln -s /etc/sv/binfmt-support /var/service/

# Jika binfmt-support diinstal setelah QEMU, reconfigure:
sudo xbps-reconfigure -f qemu-user-aarch64

Konfigurasi

Login Awal

Untuk pre-built image dan tarball installation, gunakan:

FieldValue
Usernameroot
Passwordvoidlinux

fstab

Tambahkan partisi /boot ke /etc/fstab agar update kernel berjalan dengan benar:

/dev/mmcblk0p1  /boot  vfat  defaults  0  0

Tanpa entri ini, update kernel dapat menyebabkan modul kernel tidak ditemukan โ€” termasuk modul WiFi.

Waktu Sistem (RTC)

Sebagian besar perangkat ARM tidak memiliki Real Time Clock (RTC) berbaterai, sehingga waktu tidak tersimpan saat dimatikan. Gejala umum: error HTTPS saat browsing atau menggunakan package manager.

Set waktu secara manual:

date -s "2026-01-01 12:00:00"

Solusi permanen โ€” instal NTP client:

sudo xbps-install -S chrony
ln -s /etc/sv/chronyd /var/service/

Solusi tambahan โ€” fake-hwclock:

fake-hwclock menyimpan waktu terakhir secara berkala dan memuatnya saat boot, sehingga perkiraan waktu awal lebih akurat meski tanpa koneksi jaringan:

sudo xbps-install -S fake-hwclock
ln -s /etc/sv/fake-hwclock /var/service/

Troubleshooting: chrony User Hilang

Pada image sebelum 2026-03-16, instalasi chrony mungkin tidak lengkap dan user chrony tidak terbuat. Cek dengan:

getent group chrony

Jika output kosong, perbaiki dengan:

sudo xbps-reconfigure -f chrony

@T4n-Labs ยท @Gh0sT4n

Apple Silicon (Coming Soon)

Dukungan T4n OS untuk Apple Silicon berbasis Asahi Linux. Lihat website dan dokumentasi Asahi Linux untuk informasi lebih lanjut.

Instalasi

1. Siapkan UEFI Environment via Asahi Installer

Jalankan dari macOS (bukan dari live USB):

curl https://alx.sh > alx.sh
sh ./alx.sh

Pilih opsi "UEFI environment only". Saat diminta, biarkan Asahi Installer membuat ruang kosong untuk partisi root T4n OS.

โš ๏ธ Jangan mencoba mengecilkan atau mengubah APFS container secara manual dari live ISO T4n OS. Gunakan fasilitas yang disediakan oleh Asahi Installer.

2. Buat Live USB T4n OS

Unduh ISO T4n OS untuk Apple Silicon lalu buat Live USB.

U-Boot yang terinstal oleh Asahi Installer seharusnya mendeteksi USB secara otomatis. Jika tidak, jalankan perintah berikut di prompt U-Boot:

setenv boot_targets "usb"
setenv bootmeths "efi"
boot

3. Instalasi via Chroot (Metode XBPS)

Ikuti panduan Instalasi via Chroot dengan catatan berikut:

  • Jangan ubah struktur disk selain ruang kosong yang disiapkan Asahi Installer.
  • EFI System Partition yang digunakan adalah partisi yang dibuat oleh Asahi Installer โ€” mount di /mnt/boot/efi.
  • Saat instalasi paket base, instal base-system dan asahi-base:
xbps-install -S base-system asahi-base
  • Saat menjalankan grub-install, tambahkan flag --removable:
grub-install --removable --target=arm64-efi --efi-directory=/boot/efi

Bootloader Alternatif (m1n1)

Jika menggunakan bootloader selain GRUB bersama m1n1, pastikan executable EFI bootloader terinstal di:

EFI/BOOT/BOOTAA64.EFI

m1n1 juga dapat dikonfigurasi untuk booting langsung dari kernel dan initramfs tanpa bootloader. Edit /etc/default/m1n1-kernel-hook dan ubah nilai PAYLOAD:

PAYLOAD=kernel

Audio

Instal paket asahi-audio dan aktifkan layanan yang diperlukan:

xbps-install -S asahi-audio
ln -s /etc/sv/speakersafetyd /var/service/

Lalu konfigurasi PipeWire dan WirePlumber โ€” lihat dokumentasi PipeWire.

Firmware

Perbarui firmware menggunakan asahi-fwupdate dari paket asahi-scripts:

xbps-install -S asahi-scripts
asahi-fwupdate

Disarankan menjalankan asahi-fwupdate setiap kali paket asahi-firmware diperbarui.


@T4n-Labs ยท @Gh0sT4n

Lenovo ThinkPad X13s (Coming Soon)

ThinkPad X13s berbasis Snapdragon didukung pada kernel 6.8 ke atas. Untuk status dukungan fitur terkini, lihat wiki jhovold.

Instalasi

1. Persiapan UEFI

Lakukan dari Windows sebelum memulai instalasi:

  1. Perbarui firmware UEFI ke versi 1.59 atau lebih baru.
  2. Masuk ke pengaturan UEFI firmware, lalu:
    • Nonaktifkan Secure Boot.
    • Aktifkan Linux Boot.

2. Boot Live ISO

Boot menggunakan ISO aarch64 T4n OS. Di menu GRUB, pilih salah satu entri "Void Linux for Thinkpad X13s".

3. Instalasi via Chroot (Metode XBPS)

Ikuti panduan Instalasi via Chroot dengan catatan berikut:

Saat instalasi paket base, instal base-system dan x13s-base:

xbps-install -S base-system x13s-base

Sebelum menjalankan grub-install, tambahkan baris berikut ke /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT arm64.nopauth clk_ignore_unused pd_ignore_unused"
GRUB_DEFAULT_DTB="qcom/sc8280xp-lenovo-thinkpad-x13s.dtb"

Kemudian jalankan grub-install seperti biasa.

Jika menggunakan bootloader lain selain GRUB, pastikan parameter kernel berikut tetap disertakan:

arm64.nopauth clk_ignore_unused pd_ignore_unused

WWAN (LTE)

Untuk mengaktifkan modem WWAN, instal ModemManager lalu buka kunci modem (FCC unlock):

sudo xbps-install -S ModemManager
sudo mkdir -p /etc/ModemManager/fcc-unlock.d
sudo ln -s /usr/share/ModemManager/fcc-unlock.available.d/105b \
    /etc/ModemManager/fcc-unlock.d/105b:e0c3

Aktifkan layanan ModemManager:

ln -s /etc/sv/ModemManager /var/service/

@T4n-Labs ยท @Gh0sT4n

Pinebook Pro (Coming Soon)

Pinebook Pro adalah laptop berbasis Rockchip RK3399. Lihat dokumentasi Pine64 untuk informasi lebih lanjut.

Instalasi

1. Siapkan Firmware U-Boot

Live ISO T4n OS bersifat generik dan tidak menyertakan U-Boot. Kamu perlu menyediakan firmware sendiri yang terinstal di SPI flash internal, eMMC, atau SD card. Pilihan firmware yang tersedia:

FirmwareLink
Tow-Boottow-boot.org
rk2awxnux.eu/rk2aw

2. Boot Live ISO

Boot menggunakan ISO aarch64 T4n OS. Di menu GRUB, pilih salah satu entri "Void Linux for Pinebook Pro".

3. Instalasi via Chroot (Metode XBPS)

Ikuti panduan Instalasi via Chroot dengan catatan berikut:

Saat instalasi paket base, instal base-system dan pinebookpro-base:

xbps-install -S base-system pinebookpro-base

Sebelum menjalankan grub-install, tambahkan baris berikut ke /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT console=ttyS2,115200 video=eDP-1:1920x1080x60"
GRUB_DEFAULT_DTB="rockchip/rk3399-pinebook-pro.dtb"

Kemudian jalankan grub-install seperti biasa.

Jika menggunakan bootloader lain selain GRUB, pastikan parameter kernel berikut tetap disertakan:

console=ttyS2,115200 video=eDP-1:1920x1080x60

@T4n-Labs ยท @Gh0sT4n

Raspberry Pi (Coming Soon)

T4n OS menggunakan kernel dari Raspberry Pi Foundation (rpi-kernel) yang mengaktifkan semua fitur khusus RPi yang tidak tersedia di kernel mainline.

Paket penting:

PaketKeterangan
rpi-baseMeta-paket yang menginstal kernel + firmware RPi
rpi-kernelKernel RPi
rpi-kernel-headersHeader kernel โ€” diperlukan untuk paket DKMS
rpi-firmwareFirmware RPi (termasuk WiFi & Bluetooth)

Parameter kernel tersimpan di /boot/cmdline.txt.

Model yang Didukung

ModelArsitektur
1 A, 1 B, 1 A+, 1 B+, Zero, Zero W, Zero WHarmv6l
2 Barmv7l
3 B, 3 A+, 3 B+, Zero 2W, 4 B, 400, CM4, 5, 500, CM5aarch64

RPi 3 dapat menjalankan image armv7l maupun aarch64 karena CPU-nya mendukung kedua instruction set. Perbedaannya: armv7l = sistem 32-bit, aarch64 = sistem 64-bit.

Kernel Raspberry Pi 5

RPi 5 memiliki paket kernel tersendiri yang dioptimalkan dengan 16KB page size:

sudo xbps-install -S rpi5-kernel

Perintah ini akan menggantikan rpi-kernel dengan rpi5-kernel secara otomatis.

โš ๏ธ Tidak semua perangkat lunak kompatibel dengan kernel yang menggunakan page size lebih besar. Periksa issue tracker untuk masalah yang diketahui.

Konfigurasi Hardware

Konfigurasi hardware RPi dilakukan melalui file /boot/config.txt. Utilitas raspi-config tidak tersedia di T4n OS โ€” semua perubahan harus dilakukan manual pada file ini.

Audio

Hapus komentar pada baris berikut di /boot/config.txt:

dtparam=audio=on

Serial Console

Aktifkan layanan serial untuk login via serial console:

ln -s /etc/sv/agetty-ttyAMA0 /var/service/

Parameter serial juga dikonfigurasi di /boot/cmdline.txt, terutama:

console=ttyAMA0,115200

I2C

Tambahkan ke /boot/config.txt:

device_tree_param=i2c_arm=on

Tambahkan ke /boot/cmdline.txt:

bcm2708.vc_i2c_override=1

Buat file modules-load di /etc/modules-load.d/i2c.conf:

i2c-dev

Instal tools I2C dan verifikasi:

sudo xbps-install -S i2c-tools
i2cdetect -l

Output yang diharapkan:

i2c-1    i2c    bcm2835 I2C adapter    I2C adapter

Hardware RNG (Entropy)

Secara default, perangkat HWRNG tidak digunakan, yang bisa menyebabkan proses seeding /dev/random lambat saat boot โ€” berdampak pada layanan seperti sshd.

sudo xbps-install -S rng-tools
ln -s /etc/sv/rngd /var/service/

Jika rngd menyebabkan CPU overload, paksa penggunaan HWRNG saja dengan membuat file /etc/sv/rngd/conf:

RNGD_OPTS='-x jitter -x pkcs11 -x rtlsdr -n hwrng'

Sesi Grafis

Paket mesa-dri menyediakan driver grafis untuk semua varian RPi, kompatibel dengan modesetting Xorg maupun Wayland.

Hapus komentar pada baris berikut di /boot/config.txt:

dtoverlay=vc4-kms-v3d

Konfigurasi Xorg

Jika diperlukan, buat file konfigurasi Xorg (contoh: /etc/X11/xorg.conf.d/99-rpi.conf):

Section "OutputClass"
    Identifier "vc4"
    MatchDriver "vc4"
    Driver "modesetting"
    Option "PrimaryGPU" "true"
EndSection

@T4n-Labs ยท @Gh0sT4n

Konfigurasi

Bagian ini berisi informasi tentang cara mengkonfigurasi T4n OS.


@T4n-Labs ยท @Gh0sT4n

1

Dokumentasi Paket

Media dokumentasi yang paling umum di T4n OS adalah halaman manual (man pages).

Banyak paket juga menyertakan dokumentasi dalam format lain seperti HTML, yang biasanya dapat ditemukan di direktori /usr/share/doc/<paket>.

Dokumentasi yang lebih lengkap mungkin dipisah ke dalam paket *-doc tersendiri, misalnya julia-doc. Ini umum terjadi pada bahasa pemrograman, database, dan library besar.

Selain dokumentasi dari upstream, beberapa paket juga menyertakan catatan setup awal atau penggunaan khusus T4n OS yang ditulis oleh kontributor distribusi. Catatan tersebut akan berada di:

/usr/share/doc/<paket>/README.voidlinux

@T4n-Labs ยท @Gh0sT4n

Manual Pages

T4n OS menyertakan toolset manpage mandoc secara default melalui paket mdocml.

Gunakan perintah man untuk membuka halaman manual:

man chroot

Seksi Manual

Setiap halaman manual termasuk dalam seksi tertentu:

SeksiKeterangan
1Perintah pengguna (program)
2System calls
3Library calls
4File spesial (perangkat)
5Format file dan file konfigurasi
6Games
7Ikhtisar, konvensi, dan lain-lain
8Perintah manajemen sistem

Beberapa halaman manual memiliki nama yang sama namun berada di seksi berbeda. Tentukan seksinya secara eksplisit jika diperlukan:

man 1 printf

man dapat dikonfigurasi melalui man.conf(5).

Pencarian dengan apropos

Toolset mandoc menyertakan apropos untuk mencari halaman manual berdasarkan kata kunci. apropos menggunakan database yang dibuat dan diperbarui dengan perintah makewhatis:

# Buat/perbarui database
sudo makewhatis

# Cari halaman manual
apropos chroot

Contoh output:

chroot(1)        - run command or interactive shell with special root directory
xbps-uchroot(1)  - XBPS utility to chroot and bind mount with Linux namespaces
xbps-uunshare(1) - XBPS utility to chroot and bind mount with Linux user namespaces
chroot(2)        - change root directory

Paket mdocml menyertakan cron job untuk memperbarui database secara harian di /etc/cron.daily/makewhatis. Pastikan cron daemon sudah terinstal dan aktif agar fitur ini berfungsi.

Paket Manual Tambahan

Manual pengembangan dan POSIX tidak terinstal secara default, namun tersedia melalui:

sudo xbps-install -S man-pages-devel man-pages-posix

Manual Pages dalam Bahasa Lain

Halaman manual yang dilokalisasi tersedia melalui paket manpages-* atau paket yang menyertakannya sendiri. Namun diperlukan sedikit konfigurasi.

Dengan mdocml

Jika menggunakan mdocml dan ingin pengaturan berlaku untuk semua pengguna, tambahkan path yang relevan ke man.conf. Contoh untuk bahasa Jerman:

/usr/share/man/de
/usr/share/man/de.UTF-8

Atau, setiap pengguna dapat mengekspor variabel MANPATH di environment shell masing-masing:

export MANPATH=/usr/share/man/de:/usr/share/man/de.UTF-8

@T4n-Labs ยท @Gh0sT4n

Firmware

T4n OS menyediakan sejumlah paket firmware melalui repositorinya. Beberapa paket hanya tersedia setelah repositori nonfree diaktifkan.

Microcode

Microcode dimuat ke CPU atau GPU saat booting oleh BIOS, namun dapat diperbarui kemudian oleh sistem operasi. Pembaruan microcode memungkinkan perilaku CPU atau GPU dimodifikasi untuk mengatasi bug tertentu โ€” tanpa perlu mengganti hardware.

Intel

Instal paket microcode Intel:

sudo xbps-install -S intel-ucode

Catatan: Paket ini berada di repositori nonfree. Pastikan repositori tersebut sudah diaktifkan sebelum melanjutkan.

Setelah instalasi, regenerasi initramfs secara manual:

sudo xbps-reconfigure -f linux<versi>

Pada pembaruan berikutnya, microcode akan ditambahkan ke initramfs secara otomatis.

AMD

Instal paket firmware AMD:

sudo xbps-install -S linux-firmware-amd

Paket ini mencakup microcode untuk CPU maupun GPU AMD. Microcode akan dimuat secara otomatis โ€” tidak ada konfigurasi tambahan yang diperlukan.

Verifikasi

Untuk memverifikasi bahwa microcode berhasil dimuat, periksa informasi pada /proc/cpuinfo:

grep microcode /proc/cpuinfo

Menghapus Firmware

Secara default, paket linuxX.Y dan base-system menginstal sejumlah paket firmware. Firmware yang tidak terpakai tidak wajib dihapus, namun jika diperlukan, ikuti langkah berikut:

  1. Konfigurasi XBPS untuk mengabaikan paket firmware yang tidak diinginkan.
  2. Hapus paket tersebut dengan perintah:
sudo xbps-remove -R <nama-paket-firmware>

@T4n-Labs ยท @Gh0sT4n

Locale

T4n OS mendukung pengaturan locale melalui dua implementasi C library:

  • glibc โ€” mendukung pengaturan locale sistem maupun bahasa aplikasi.
  • musl โ€” hanya mendukung pengaturan bahasa aplikasi (tidak mendukung locale sistem).

Melihat Locale Aktif

Untuk melihat daftar locale yang saat ini aktif:

locale -a

Mengaktifkan Locale

Edit file /etc/default/libc-locales, lalu hapus tanda komentar (#) pada locale yang diinginkan.

Sebelum:

# en_US.UTF-8 UTF-8
# id_ID.UTF-8 UTF-8

Sesudah:

en_US.UTF-8 UTF-8
id_ID.UTF-8 UTF-8

Kemudian, regenerasi paket glibc-locales:

sudo xbps-reconfigure -f glibc-locales

Mengatur Bahasa Sistem

Tetapkan variabel LANG di /etc/locale.conf:

LANG=id_ID.UTF-8

Locale untuk Aplikasi

Beberapa aplikasi menyimpan terjemahannya di paket terpisah yang perlu diinstal secara manual. Cari paket bahasa yang diinginkan di repositori:

xbps-query -Rs german
xbps-query -Rs portuguese

Instal paket yang sesuai dengan aplikasi yang digunakan.

Contoh โ€” LibreOffice: Jika menginstal paket individual seperti libreoffice-writer, setidaknya satu paket libreoffice-i18n-* harus diinstal agar terjemahan tersedia. Jika menginstal meta-paket libreoffice, paket terjemahan umum sudah disertakan secara otomatis.


@T4n-Labs ยท @Gh0sT4n

User & Grup

Manajemen User

PerintahFungsi
useraddMenambah user baru
userdelMenghapus user
usermodMemodifikasi user
passwdMengubah password

Manajemen Grup

PerintahFungsi
groupaddMenambah grup baru
groupdelMenghapus grup
groupmodMemodifikasi grup
groupsMelihat grup milik user

Default Shell

Untuk mengubah shell default user:

chsh -s <shell> <nama_user>

<shell> harus berupa path shell yang terdaftar di /etc/shells. Untuk melihat daftar shell yang tersedia:

chsh -l

sudo

sudo sudah terinstal secara default. Konfigurasi hanya diperlukan jika ingin menggunakannya.

Edit file sudoers menggunakan visudo sebagai root:

visudo

Untuk memberikan hak superuser, hapus tanda komentar pada baris berikut:

Sebelum:

#%wheel ALL=(ALL) ALL

Sesudah:

%wheel ALL=(ALL) ALL

Kemudian tambahkan user ke grup wheel:

usermod -aG wheel <nama_user>

Grup Default

T4n OS mendefinisikan sejumlah grup secara default:

GrupDeskripsi
rootAkses penuh ke seluruh sistem
binTidak digunakan โ€” ada untuk alasan historis
sysTidak digunakan โ€” ada untuk alasan historis
kmemAkses baca ke /dev/mem dan /dev/port
wheelHak istimewa untuk administrasi sistem
ttyAkses ke perangkat TTY: /dev/tty*, /dev/pts*, /dev/vcs*
tapeAkses ke perangkat tape
daemonDaemon sistem yang perlu menulis file ke disk
floppyAkses ke floppy drive
diskAkses langsung ke /dev/sd* dan /dev/loop*
lpAkses ke printer
dialoutAkses ke port serial
audioAkses ke perangkat audio
videoAkses ke perangkat video
utmpAkses tulis ke /var/run/utmp, /var/log/wtmp, /var/log/btmp
admTidak digunakan โ€” dahulu untuk monitoring sistem
cdromAkses ke perangkat CD
opticalAkses ke perangkat DVD/CD-RW
mailDigunakan oleh beberapa paket mail, contoh: dma
storageAkses ke perangkat penyimpanan removable
scannerAkses ke scanner
networkDigunakan oleh paket jaringan, contoh: NetworkManager
kvmAkses KVM untuk virtual machine, contoh: via QEMU
inputAkses ke perangkat input: /dev/mouse*, /dev/event*
plugdevAkses ke perangkat pluggable
nogroupDaemon sistem yang tidak perlu memiliki file
usbmonAkses ke /dev/usbmon*
usersPengguna biasa
xbuilderUntuk menggunakan xbps-uchroot bersama xbps-src

@T4n-Labs ยท @Gh0sT4n

Layanan dan Daemon โ€” runit

T4n OS menggunakan runit sebagai supervision suite untuk menjalankan layanan sistem dan daemon.

Keunggulan runit:

  • Codebase kecil โ€” lebih mudah diaudit untuk bug dan masalah keamanan.
  • Environment bersih โ€” setiap layanan selalu dijalankan dengan environment variables, resource limits, dan file descriptor yang sama, terlepas dari bagaimana layanan tersebut dimulai atau di-restart.
  • Logging andal โ€” log service tetap berjalan selama layanan terkait masih aktif.

Jika tidak membutuhkan program yang berjalan terus-menerus, pertimbangkan menggunakan cron daemon untuk menjalankannya secara berkala.

Service Directory

Setiap layanan yang dikelola runit memiliki service directory tersendiri. Satu-satunya file yang wajib ada adalah:

  • run โ€” file executable yang menjalankan proses di foreground.

File dan direktori opsional lainnya:

File/DirFungsi
checkDijalankan untuk mengecek apakah layanan sudah tersedia (exit 0 = OK)
finishDijalankan saat layanan dihentikan atau shutdown
confBerisi environment variables yang digunakan oleh run
log/Direktori log โ€” output dari run akan dialirkan ke proses run di dalamnya

Folder supervise akan dibuat secara otomatis saat pertama kali layanan dijalankan.

Konfigurasi Layanan

Sebagian besar layanan dapat dikonfigurasi melalui file conf di service directory-nya โ€” tanpa perlu memodifikasi file layanan itu sendiri.

Periksa file run untuk melihat parameter yang tersedia. Beberapa layanan memiliki field seperti:

OPTS="--value ..."

di dalam file conf-nya.

Mengedit Layanan

Untuk melakukan modifikasi lebih lanjut:

  1. Salin service directory ke nama direktori baru (agar tidak ditimpa saat update xbps-install).
  2. Edit file layanan di direktori baru tersebut.
  3. Hentikan dan nonaktifkan layanan lama.
  4. Aktifkan layanan baru.

Runsvdir

Runsvdir adalah direktori di /etc/runit/runsvdir/ yang berisi symlink ke service directory yang aktif. Pada sistem yang sedang berjalan, runsvdir aktif dapat diakses melalui /var/service.

T4n OS menggunakan dua runsvdir bawaan:

RunsvdirFungsi
singleHanya menjalankan sulogin โ€” untuk mode rescue
defaultRunsvdir default saat sistem berjalan normal

Runsvdir tambahan dapat dibuat di /etc/runit/runsvdir/.

Boot ke Runsvdir Tertentu

Tambahkan nama runsvdir ke kernel command-line. Contoh, untuk boot ke mode single:

single

Penggunaan Dasar

sv up <layanan>       # Jalankan layanan
sv down <layanan>     # Hentikan layanan
sv restart <layanan>  # Restart layanan
sv status <layanan>   # Cek status layanan

<layanan> dapat berupa nama layanan di /var/service/ atau path lengkapnya.

Contoh:

# Cek status layanan tertentu
sv status dhcpcd

# Cek status semua layanan aktif
sv status /var/service/*

Mengaktifkan Layanan

Service directory tersedia di /etc/sv/. Untuk mengaktifkan layanan pada sistem yang sedang berjalan:

ln -s /etc/sv/<layanan> /var/service/

Jika sistem sedang tidak berjalan, link langsung ke runsvdir default:

ln -s /etc/sv/<layanan> /etc/runit/runsvdir/default/

Layanan yang sudah di-link akan otomatis berjalan saat boot dan restart jika berhenti, kecuali dinonaktifkan secara manual.

Mencegah Layanan Otomatis Start

Untuk membiarkan runit mengelola layanan tanpa memulainya saat boot, buat file down:

touch /etc/sv/<layanan>/down

Cara ini juga berguna untuk menonaktifkan layanan default seperti agetty untuk tty 1โ€“6, sehingga update paket tidak akan mengaktifkannya kembali.

Menonaktifkan Layanan

Hapus symlink dari runsvdir yang sedang berjalan:

rm /var/service/<layanan>

Atau dari runsvdir default (jika sistem tidak sedang berjalan):

rm /etc/runit/runsvdir/default/<layanan>

Menguji Layanan

Sebelum mengaktifkan penuh, uji layanan terlebih dahulu dengan menjalankannya sekali:

touch /etc/sv/<layanan>/down
ln -s /etc/sv/<layanan> /var/service/
sv once <layanan>

Jika semuanya berjalan normal, hapus file down untuk mengaktifkan layanan secara permanen:

rm /etc/sv/<layanan>/down

@T4n-Labs ยท @Gh0sT4n

Layanan Per-Pengguna

Layanan per-pengguna berguna untuk menjalankan proses secara otomatis atas nama pengguna tertentu, seperti:

  • Membuka SSH tunnel.
  • Menjalankan virtual machine.
  • Menjalankan daemon secara berkala.

Metode 1: runsvdir

Cara paling dasar adalah membuat layanan sistem yang menjalankan runsvdir sebagai pengguna tertentu.

Keterbatasan: Layanan ini dimulai saat boot, sehingga tidak memiliki akses ke sesi grafis atau session bus D-Bus pengguna.

Membuat Layanan

Buat direktori layanan /etc/sv/runsvdir-<username> dengan script run berikut (pastikan executable):

#!/bin/sh

export USER="<username>"
export HOME="/home/<username>"

groups="$(id -Gn "$USER" | tr ' ' ':')"
svdir="$HOME/service"

exec chpst -u "$USER:$groups" runsvdir "$svdir"

Script ini menggunakan chpst untuk menjalankan runsvdir sebagai pengguna yang ditentukan. Variabel $USER dan $HOME diekspor karena beberapa layanan membutuhkannya.

Jadikan executable lalu aktifkan:

chmod +x /etc/sv/runsvdir-<username>/run
ln -s /etc/sv/runsvdir-<username> /var/service/

Menambahkan Layanan Pengguna

Buat direktori layanan di home folder, lalu tambahkan service di sana:

mkdir -p ~/service
# Tambahkan layanan atau symlink ke direktori ini

Mengontrol Layanan

# Cek status semua layanan pengguna
sv status ~/service/*

# Restart layanan tertentu menggunakan path
sv restart ~/service/gpg-agent

# Atau gunakan SVDIR agar tidak perlu menulis path lengkap
SVDIR=~/service sv restart gpg-agent

Tambahkan export SVDIR=~/service di profil shell (~/.bashrc atau ~/.zshrc) agar tidak perlu menulisnya setiap saat.

Metode 2: turnstile

turnstile mendukung layanan per-pengguna yang dimulai bersama sesi pengguna, menggunakan backend runit atau dinit.

Lokasi Service Directory

Jika menggunakan backend runit, simpan layanan pengguna di:

~/.config/service/

Layanan yang Wajib Jalan Sebelum Login

Untuk memastikan layanan tertentu sudah berjalan sebelum proses login selesai, daftarkan di ~/.config/service/turnstile-ready/conf:

core_services="dbus foo"

File turnstile-ready dibuat otomatis oleh turnstile pada login pertama.

Berbagi Environment Variables

Untuk memberikan akses environment variable ke layanan pengguna, gunakan fitur envdir dari chpst. Di dalam service, gunakan variabel TURNSTILE_ENV_DIR:

exec chpst -e "$TURNSTILE_ENV_DIR" nama-program

Untuk memperbarui variabel di envdir bersama:

turnstile-update-runit-env DISPLAY XAUTHORITY FOO=bar BAZ=

Menjalankan D-Bus Session Bus

Untuk menjalankan D-Bus session bus sebagai layanan yang dikelola turnstile:

mkdir -p ~/.config/service/dbus
ln -s /usr/share/examples/turnstile/dbus.run   ~/.config/service/dbus/run
ln -s /usr/share/examples/turnstile/dbus.check ~/.config/service/dbus/check

Perbandingan Metode

Aspekrunsvdirturnstile
Mulai saatBoot sistemLogin pengguna
Akses sesi grafisโŒ Tidakโœ… Ya
Akses D-Bus session busโŒ Tidakโœ… Ya (bisa dikonfigurasi)
Kompleksitas setupSederhanaLebih lengkap
Lokasi service~/service/~/.config/service/

@T4n-Labs ยท @Gh0sT4n

Logging

T4n OS tidak menginstal syslog daemon secara default. Beberapa implementasi tersedia di repositori.

Socklog (Disarankan)

socklog adalah implementasi syslog dari penulis runit โ€” pilihan yang tepat jika belum tahu harus menggunakan yang mana.

sudo xbps-install -S socklog-void
ln -s /etc/sv/socklog-unix /var/service/
ln -s /etc/sv/nanoklogd    /var/service/

Pastikan tidak ada syslog daemon lain yang sedang berjalan.

Log disimpan di subdirektori /var/log/socklog/. Untuk membacanya dengan mudah:

svlogtail

Akses log dibatasi untuk root dan pengguna yang tergabung di grup socklog. Untuk menambahkan pengguna ke grup tersebut:

sudo usermod -aG socklog <nama_user>

Alternatif Lain

PaketKeterangan
rsyslogImplementasi populer, fitur lengkap
metalogKonfigurasi berbasis regex
sudo xbps-install -S rsyslog   # atau metalog
ln -s /etc/sv/rsyslog /var/service/

@T4n-Labs ยท @Gh0sT4n

rc.conf, rc.local, rc.shutdown, dan core-services

File-file ini digunakan untuk mengonfigurasi berbagai aspek sistem T4n OS. rc.conf biasanya sudah dikonfigurasi secara otomatis oleh installer.

Ringkasan

File/DirektoriStage runitFungsi
/etc/rc.conf1 & 3Menetapkan variabel konfigurasi sistem
/etc/rc.local2Skrip yang dijalankan sebelum login
/etc/rc.shutdown3Skrip yang dijalankan saat shutdown
/etc/runit/core-services/1Skrip startup satu kali, dijalankan sebelum layanan dimulai

rc.conf

Dieksekusi di runit stage 1 dan 3. Berisi variabel konfigurasi sistem.

KEYMAP

Menentukan layout keyboard untuk Linux console. Daftar keymap tersedia di /usr/share/kbd/keymaps/.

KEYMAP=us   # Keyboard standar Amerika
KEYMAP=id   # Keyboard Indonesia (jika tersedia)

HARDWARECLOCK

Menentukan apakah hardware clock diatur ke UTC atau waktu lokal.

HARDWARECLOCK=utc        # Default โ€” disarankan
HARDWARECLOCK=localtime  # Gunakan jika dual-boot dengan Windows

Catatan: Windows menggunakan localtime secara default. Jika dual-boot, pilih salah satu: ubah Windows agar menggunakan UTC, atau tetapkan variabel ini ke localtime.

FONT

Menentukan font yang digunakan di Linux console. Daftar font tersedia di /usr/share/kbd/consolefonts/.

FONT=eurlatgr

rc.local

Dieksekusi di runit stage 2. Berisi perintah atau konfigurasi yang dijalankan sebelum login, setiap kali sistem boot.

Contoh isi /etc/rc.local:

#!/bin/sh

# Aktifkan forwarding IP
echo 1 > /proc/sys/net/ipv4/ip_forward

rc.shutdown

Dieksekusi di runit stage 3 saat sistem shutdown. Berguna untuk menjalankan perintah pembersihan sebelum sistem mati.

Contoh isi /etc/rc.shutdown:

#!/bin/sh

# Sinkronisasi data sebelum shutdown
sync

core-services

Direktori /etc/runit/core-services/ berisi skrip shell yang dijalankan secara berurutan (alfabetis) di runit stage 1, sebelum layanan apa pun dimulai.

Cocok untuk konfigurasi startup satu kali (oneshot), seperti mengatur parameter kernel atau melakukan inisialisasi hardware.

Contoh oneshot script:

# /etc/runit/core-services/00-custom.sh
#!/bin/sh
echo "Konfigurasi awal berjalan..."

@T4n-Labs ยท @Gh0sT4n

Cron

Cron adalah daemon untuk menjalankan program secara otomatis pada interval tertentu. Program dan jadwalnya ditentukan dalam file crontab.

Untuk mengedit crontab:

crontab -e       # Edit crontab milik user saat ini
sudo crontab -e  # Edit crontab sistem (superuser)

Instalasi

Cron daemon tidak terinstal secara default. T4n OS menyediakan beberapa pilihan implementasi:

PaketKeterangan
cronieImplementasi populer, aktif dikembangkan
dcronRingan dan sederhana
fcronFitur lengkap, mendukung sistem offline

Instal salah satu, contoh menggunakan cronie:

sudo xbps-install -S cronie

Aktifkan layanannya:

ln -s /etc/sv/cronie /var/service/

Catatan: Hindari menggunakan layanan generik crond dari sistem alternatif โ€” tidak ada keuntungannya dan hanya mempersulit konfigurasi.

Alternatif: snooze

Sebagai alternatif dari cron tradisional, snooze dapat digunakan bersama runit.

sudo xbps-install -S snooze

Paket snooze menyediakan layanan berikut:

LayananIntervalDirektori Script
snooze-hourlyPer jam/etc/cron.hourly/
snooze-dailyPer hari/etc/cron.daily/
snooze-weeklyPer minggu/etc/cron.weekly/
snooze-monthlyPer bulan/etc/cron.monthly/

Aktifkan layanan yang dibutuhkan, contoh:

ln -s /etc/sv/snooze-daily /var/service/

Letakkan script yang ingin dijadwalkan di direktori yang sesuai, lalu pastikan file tersebut executable:

chmod +x /etc/cron.daily/nama-script

@T4n-Labs ยท @Gh0sT4n

Solid State Drive (SSD)

Setelah instalasi, aktifkan TRIM pada SSD untuk menjaga performa dan umur panjang drive.

Cek Dukungan TRIM

Jalankan perintah berikut untuk melihat apakah perangkat mendukung TRIM:

lsblk --discard

Jika kolom DISC-GRAN dan DISC-MAX bernilai non-zero, berarti perangkat mendukung TRIM.

Jika partisi SSD tidak menampilkan dukungan TRIM, pastikan filesystem yang digunakan mendukungnya: ext4, Btrfs, F2FS (membutuhkan kernel 4.19 ke atas), dll.

Menjalankan TRIM Sekali (Manual)

sudo fstrim /

Otomatisasi TRIM

Ada dua pendekatan โ€” pilih salah satu:

1. Periodic TRIM (via cron)

Buat script di /etc/cron.weekly/fstrim:

#!/bin/sh
fstrim /

Jadikan executable:

chmod u+x /etc/cron.weekly/fstrim

2. Continuous TRIM (via fstab)

Edit /etc/fstab dan tambahkan opsi discard pada partisi SSD. Contoh untuk /dev/sda1 dengan filesystem ext4:

/dev/sda1  /  ext4  defaults,discard  0  1

โš ๏ธ Continuous TRIM tidak disarankan jika SSD tidak menangani NCQ dengan benar. Cek daftar blacklist kernel untuk referensi.

TRIM untuk LVM

Buka /etc/lvm/lvm.conf, hapus komentar pada opsi issue_discards dan set nilainya ke 1:

issue_discards=1

TRIM untuk LUKS

โš ๏ธ Perhatian: Sebelum mengaktifkan discard pada partisi LUKS, pahami dulu implikasi keamanannya.

Membuka Device LUKS dengan Discard

sudo cryptsetup luksOpen --allow-discards /dev/sdaX luks

Partisi Non-Root

Edit /etc/crypttab dan tambahkan opsi discard. Contoh:

externaldrive1  /dev/sdb2  none  luks,discard

Partisi Root

Jika partisi root berada di LUKS, tambahkan rd.luks.allow-discards ke konfigurasi GRUB di /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="rd.luks.allow-discards"

Perbarui GRUB:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Verifikasi Konfigurasi LUKS

Setelah reboot, jalankan:

sudo dmsetup table /dev/mapper/crypt_dev --showkeys

Jika output mengandung string allow_discards, TRIM pada LUKS berhasil diaktifkan.

TRIM untuk ZFS

Pastikan semua device dalam pool mendukung TRIM:

zpool get all | grep trim

TRIM Sekali (Manual)

sudo zpool trim yourpoolname

Periodic TRIM (via cron)

Buat script di /etc/cron.daily/ztrim:

#!/bin/sh
zpool trim yourpoolname

Jadikan executable:

chmod u+x /etc/cron.daily/ztrim

Autotrim

Untuk mengaktifkan autotrim secara permanen pada pool:

sudo zpool set autotrim=on yourpoolname

Autotrim dinonaktifkan (off) secara default.

Ringkasan Metode TRIM

MetodeCocok untukCara Aktifkan
ManualSemuafstrim /
Periodic (cron)SemuaScript di /etc/cron.weekly/
Continuous (fstab)SSD kompatibel NCQOpsi discard di /etc/fstab
LVMLVMissue_discards=1 di lvm.conf
LUKSEnkripsi--allow-discards / crypttab
ZFSZFS poolzpool trim / autotrim=on

@T4n-Labs ยท @Gh0sT4n

Keamanan

Ada beberapa langkah yang dapat dilakukan untuk membuat instalasi T4n OS lebih aman. Bagian ini membahas beberapa di antaranya.

Daftar Isi


@T4n-Labs ยท @Gh0sT4n

AppArmor

AppArmor adalah mekanisme mandatory access control (seperti SELinux) yang membatasi program berdasarkan definisi kebijakan yang telah ditentukan sebelumnya.

T4n OS menyertakan profil default untuk beberapa layanan seperti dhcpcd dan wpa_supplicant. Container runtime seperti LXC dan Podman juga terintegrasi dengan AppArmor untuk keamanan container yang lebih baik.

Instalasi & Aktivasi

1. Instal Paket AppArmor

sudo xbps-install -S apparmor

2. Tambahkan Parameter ke Kernel Command Line

Edit /etc/default/grub dan tambahkan parameter berikut ke GRUB_CMDLINE_LINUX_DEFAULT:

apparmor=1 security=apparmor

Lalu perbarui GRUB:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Reboot agar perubahan diterapkan.

Mode AppArmor

Mode loading profil diatur melalui variabel APPARMOR di /etc/default/apparmor:

ModeKeterangan
disableAppArmor dinonaktifkan
complainPelanggaran dicatat di log, program tetap berjalan (default)
enforcePelanggaran diblokir dan dicatat di log

Contoh untuk mengaktifkan mode enforce:

# /etc/default/apparmor
APPARMOR=enforce

Tools AppArmor

Untuk menggunakan tool pembuatan profil (aa-genprof, aa-logprof), salah satu dari berikut harus aktif:

  • syslog daemon โ€” lihat dokumentasi Logging.
  • auditd โ€” instal dan aktifkan layanan auditd.
sudo xbps-install -S audit
ln -s /etc/sv/auditd /var/service/

@T4n-Labs ยท @Gh0sT4n

Tanggal dan Waktu

Untuk melihat atau mengubah tanggal dan waktu sistem secara langsung, gunakan perintah date:

date

Timezone

Timezone Sistem (Global)

Set timezone default sistem dengan membuat symlink ke file zona waktu:

ln -sf /usr/share/zoneinfo/<timezone> /etc/localtime

Contoh untuk WIB:

ln -sf /usr/share/zoneinfo/Asia/Jakarta /etc/localtime

Catatan: Jika variabel TIMEZONE masih ada di /etc/rc.conf, hapus atau komentari baris tersebut โ€” nilainya akan menimpa pengaturan ln di atas setiap kali reboot.

Timezone Per Pengguna

Untuk mengatur timezone hanya untuk pengguna tertentu, ekspor variabel TZ di file profil shell (contoh: ~/.bashrc atau ~/.zshrc):

export TZ=<timezone>

Mengatur timezone tidak mengubah waktu itu sendiri โ€” hanya menentukan offset dari UTC.

Hardware Clock

Secara default, T4n OS menyimpan waktu hardware clock dalam format UTC.

Jika kamu melakukan dual-boot dengan Windows (yang secara default menggunakan localtime), akan terjadi konflik waktu. Ada dua solusi:

  • Rekomendasi: Ubah Windows agar menggunakan UTC.
  • Alternatif: Ubah T4n OS agar menggunakan localtime dengan menambahkan baris berikut di /etc/rc.conf:
export HARDWARECLOCK=localtime

NTP (Sinkronisasi Waktu Jaringan)

Untuk menjaga akurasi jam sistem, gunakan Network Time Protocol (NTP). T4n OS menyediakan beberapa pilihan daemon NTP:

PaketLayananKeterangan
ntpisc-ntpdImplementasi referensi resmi NTP
openntpdopenntpdImplementasi ringan dan aman, cocok untuk sebagian besar use-case
chronychronydSinkronisasi lebih cepat dan akurat, cocok untuk berbagai kondisi jaringan
ntpd-rsntpd-rsImplementasi modern berbasis Rust, mendukung NTS

Instalasi & Aktifkan Layanan

Instal salah satu paket NTP, contoh menggunakan Chrony:

sudo xbps-install -S chrony

Aktifkan layanannya:

ln -s /etc/sv/chronyd /var/service/

Atau gunakan xbps-alternatives jika tersedia sebagai ntpd service.

Perbandingan Daemon NTP

  • ISC NTP โ€” implementasi klasik, stabil, dan paling banyak didokumentasikan โ†’ ntp.org
  • OpenNTPD โ€” minimalis dan aman, cocok untuk kebutuhan umum โ†’ openntpd.org
  • Chrony โ€” sinkronisasi lebih cepat, cocok untuk laptop atau koneksi tidak stabil โ†’ chrony-project.org
  • ntpd-rs โ€” implementasi modern di Rust, mendukung NTS (Network Time Security) โ†’ docs.ntpd-rs.pendulum-project.org

@T4n-Labs ยท @Gh0sT4n

Kernel

Seri Kernel

T4n OS menyediakan beberapa seri kernel di repositori default dengan penamaan linux<x>.<y>. Untuk melihat semua seri yang tersedia:

xbps-query --regex -Rs '^linux[0-9.]+-[0-9._]+' | sort -Vrk2

Meta-paket linux yang terinstal secara default bergantung pada salah satu paket kernel โ€” biasanya kernel mainline terbaru yang kompatibel dengan semua modul DKMS. Kernel yang lebih baru mungkin tersedia di repositori, namun belum tentu cukup stabil untuk dijadikan default โ€” gunakan dengan risiko sendiri.

Jika ingin menggunakan kernel lebih baru dan membutuhkan modul DKMS:

# Instal paket headers sesuai versi kernel
sudo xbps-install -S linux<x>.<y>-headers

# Reconfigure kernel untuk membangun modul DKMS
sudo xbps-reconfigure linux<x>.<y>

Menghapus Kernel Lama

Saat kernel diperbarui, versi lama tetap disimpan sebagai cadangan rollback. Seiring waktu, kernel lama dapat menumpuk dan:

  • Menghabiskan ruang disk.
  • Memperlambat proses update modul DKMS.
  • Jika /boot adalah partisi terpisah dan penuh, update bisa gagal atau menghasilkan initramfs yang tidak lengkap dan menyebabkan kernel panic.

Gunakan vkpurge untuk membersihkan kernel lama:

sudo vkpurge rm <versi>     # Hapus versi tertentu
sudo vkpurge rm all         # Hapus semua kernel lama

vkpurge sudah terinstal secara default. Perintah ini hanya menghapus kernel tertentu, bukan paket kernel-nya.

Menghapus Seri Kernel Default

Jika sudah menginstal seri kernel lain dan ingin menghapus kernel default:

  1. Instal atau tandai linux-base sebagai manual package:
sudo xbps-install -S linux-base
# atau jika sudah terinstal:
sudo xbps-pkgdb -m manual linux-base
  1. Tambahkan linux dan linux-headers ke ignorepkg di /etc/xbps.d/*.conf:
ignorepkg=linux linux-headers
  1. Hapus paket kernel default:
sudo xbps-remove linux linux-headers

Beralih ke Seri Kernel Lain

Untuk beralih ke linux-lts atau linux-mainline:

# Instal seri kernel yang diinginkan
sudo xbps-install -S linux-lts linux-lts-headers

# Tambahkan ke ignorepkg agar tidak ditimpa
# Edit /etc/xbps.d/*.conf:
# ignorepkg=linux linux-headers

# Hapus kernel default
sudo xbps-remove linux linux-headers

Mengganti Generator initramfs

Secara default, T4n OS menggunakan dracut untuk membuat initramfs. Alternatif seperti mkinitcpio juga tersedia.

Untuk beralih ke mkinitcpio:

# Instal mkinitcpio
sudo xbps-install -S mkinitcpio

# Cek daftar alternatif yang tersedia
xbps-alternatives -l -g initramfs

# Set mkinitcpio sebagai generator aktif
sudo xbps-alternatives -s mkinitcpio

# Regenerasi initramfs secara paksa
sudo xbps-reconfigure -f linux<x>.<y>

Kernel Command Line

Parameter kernel dapat dikonfigurasi saat boot. File /proc/cmdline berisi parameter yang aktif saat ini:

cat /proc/cmdline

Melalui GRUB

Edit /etc/default/grub, ubah variabel GRUB_CMDLINE_LINUX_DEFAULT, lalu perbarui GRUB:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Melalui dracut

dracut menyediakan opsi kernel_cmdline di file konfigurasinya. Setelah mengubah konfigurasi dracut, regenerasi initramfs:

sudo xbps-reconfigure -f linux<x>.<y>

Catatan: Opsi ini hanya efektif jika dracut membuat UEFI executable. Untuk initramfs biasa, parameter ditulis ke /etc/cmdline.d di dalam image dan hanya dibaca oleh dracut sendiri โ€” bukan oleh kernel.

Kernel Hardening

T4n OS mengaktifkan beberapa opsi keamanan kernel secara default. Sejak kernel 5.3, opsi lama (slub_debug=P, page_poison=1) digantikan oleh:

OpsiDefaultDampak PerformaKeterangan
init_on_allocON~1% (minimal)Aktif secara default pada linux 5.4+
init_on_freeOFF~5% (rata-rata)Harus diaktifkan manual

Untuk mengaktifkan init_on_free, tambahkan ke kernel command line:

init_on_free=1

Untuk menonaktifkan init_on_alloc (tidak disarankan):

init_on_alloc=0

Jika masih menggunakan kernel di bawah 5.4 dan opsi lama masih aktif, pertimbangkan untuk menghapusnya karena dampak performanya setara dengan init_on_free=1.

Kernel Modules

Memuat Modul Saat Boot

Buat file .conf di /etc/modules-load.d/. Contoh untuk memuat virtio-net:

# /etc/modules-load.d/virtio.conf
virtio-net

Blacklist Modul

Modul yang Dimuat Setelah initramfs

Buat file .conf di /etc/modprobe.d/. Contoh untuk blacklist radeon:

# /etc/modprobe.d/radeon.conf
blacklist radeon

Modul dalam initramfs

Setelah mengubah konfigurasi, regenerasi initramfs agar perubahan diterapkan saat boot berikutnya.

dracut โ€” buat file di /etc/dracut.conf.d/:

# /etc/dracut.conf.d/radeon.conf
omit_drivers+=" radeon "

mkinitcpio โ€” buat file di /etc/modprobe.d/:

# /etc/modprobe.d/radeon.conf
blacklist radeon

Kernel Hooks

T4n OS menyediakan direktori untuk kernel hooks di:

/etc/kernel.d/pre-install/
/etc/kernel.d/post-install/
/etc/kernel.d/pre-remove/
/etc/kernel.d/post-remove/

Hooks ini digunakan untuk memperbarui boot menu bootloader seperti GRUB.

HookDijalankan olehKapan
pre/post-installxbps-reconfigureSaat kernel diinstal/diperbarui
pre/post-removevkpurgeSaat kernel lama dihapus

Untuk menerapkan perubahan konfigurasi initramfs secara manual:

sudo xbps-reconfigure --force linux<x>.<y>

DKMS (Dynamic Kernel Module Support)

Beberapa modul kernel di luar source tree Linux dibangun saat instalasi menggunakan DKMS. Untuk melihat modul yang tersedia:

xbps-query -Rs dkms

Log build DKMS tersimpan di:

/var/lib/dkms/

@T4n-Labs ยท @Gh0sT4n

Manajemen Daya

acpid

acpid menangani event ACPI seperti tombol power, tutup lid, dan lainnya. Jika T4n OS diinstal dari live image menggunakan sumber lokal, layanan ini sudah aktif secara default.

Event ACPI ditangani oleh script /etc/acpi/handler.sh, yang menggunakan zzz untuk event suspend-to-RAM.

Untuk mengaktifkan secara manual:

ln -s /etc/sv/acpid /var/service/

elogind

elogind juga memproses event ACPI โ€” termasuk lid switch, tombol power, suspend, dan hibernate.

โš ๏ธ Konflik: elogind dan acpid tidak boleh aktif bersamaan untuk menangani event ACPI yang sama.

Ada dua cara menghindari konflik:

Opsi 1 โ€” Nonaktifkan acpid saat menggunakan elogind:

rm /var/service/acpid

Opsi 2 โ€” Biarkan acpid tetap aktif, tapi set elogind agar mengabaikan event ACPI. Edit /etc/elogind/logind.conf dan set semua opsi yang diawali Handle menjadi ignore:

HandlePowerKey=ignore
HandleSuspendKey=ignore
HandleHibernateKey=ignore
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore

Poweroff & Reboot Tanpa Root

Agar perintah loginctl poweroff dan loginctl reboot dapat dijalankan tanpa hak root, instal polkit:

sudo xbps-install -S polkit

Hemat Daya โ€” TLP (Laptop)

Untuk memperpanjang masa pakai baterai laptop, gunakan TLP:

sudo xbps-install -S tlp
ln -s /etc/sv/tlp /var/service/

TLP bekerja secara otomatis di latar belakang setelah layanan diaktifkan. Lihat dokumentasi TLP untuk konfigurasi lanjutan.

Ringkasan

ToolFungsiCatatan
acpidMenangani event ACPI via scriptDefault aktif pada instalasi lokal
elogindMenangani event ACPI + sesi loginTidak boleh aktif bersamaan acpid
tlpOptimasi hemat daya baterai laptopKhusus laptop

@T4n-Labs ยท @Gh0sT4n

Jaringan

T4n OS menggunakan NetworkManager sebagai pengelola jaringan default. Konfigurasi jaringan juga dapat dilakukan dengan berbagai cara lain sesuai kebutuhan.

Nama Interface

Versi udev terbaru tidak lagi menggunakan skema penamaan tradisional (eth0, wlan0, dll.) โ€” digantikan dengan nama seperti enp3s0, wlp2s0, dan sejenisnya.

Untuk kembali ke penamaan tradisional, tambahkan parameter berikut ke kernel command line di /etc/default/grub:

net.ifnames=0

Lalu perbarui GRUB:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Konfigurasi IP Statis

Tambahkan perintah ip berikut ke /etc/rc.local untuk mengatur IP statis saat boot:

ip link set dev eth0 up
ip addr add 192.168.1.2/24 brd + dev eth0
ip route add default via 192.168.1.1

Sesuaikan nama interface, IP address, dan gateway sesuai jaringan kamu.

Bridge Interface

Untuk mengonfigurasi bridge interface saat boot, tambahkan ke /etc/rc.local:

ip link add name br0 type bridge
ip link set eth0 master br0
ip link set eth0 up

dhcpcd

Semua Interface

Untuk menjalankan dhcpcd di semua interface:

ln -s /etc/sv/dhcpcd /var/service/

Interface Tertentu

Untuk menjalankan dhcpcd hanya pada interface tertentu, cek nama interface terlebih dahulu:

ip link show

Salin service template dan sesuaikan dengan nama interface:

cp -R /etc/sv/dhcpcd-eth0 /etc/sv/dhcpcd-enp3s0
ln -nsf /run/runit/supervise.dhcpcd-enp3s0 /etc/sv/dhcpcd-enp3s0/supervise
sed -i 's/eth0/enp3s0/' /etc/sv/dhcpcd-enp3s0/run
ln -s /etc/sv/dhcpcd-enp3s0 /var/service/

Ganti enp3s0 dengan nama interface yang sesuai di sistem kamu.

WiFi

Sebelum terhubung ke jaringan wireless, cek apakah interface WiFi terblokir:

rfkill list

Jika terblokir secara software (soft-blocked), buka blokirnya:

rfkill unblock wifi

T4n OS menyediakan beberapa pilihan untuk koneksi WiFi:

ToolKeterangan
NetworkManagerDefault T4n OS โ€” GUI & CLI, cocok untuk desktop
wpa_supplicantRingan, konfigurasi manual via file
iwdModern, cepat, lebih mudah dari wpa_supplicant
ConnManRingan, cocok untuk sistem embedded

@T4n-Labs ยท @Gh0sT4n

Firewall

IWD (iNet Wireless Daemon)

IWD adalah daemon WiFi modern untuk Linux, dirancang sebagai pengganti wpa_supplicant.

Instalasi

sudo xbps-install -S iwd
ln -s /etc/sv/dbus /var/service/
ln -s /etc/sv/iwd  /var/service/

Penggunaan (iwctl)

iwctl adalah client command-line untuk mengelola koneksi WiFi.

iwctl          # Masuk ke sesi interaktif
iwctl help     # Tampilkan daftar perintah

Secara default, hanya root dan anggota grup wheel yang dapat menjalankan iwctl.

Contoh Penggunaan Cepat

# Lihat daftar perangkat WiFi
iwctl device list

# Scan jaringan
iwctl station wlan0 scan

# Lihat hasil scan
iwctl station wlan0 get-networks

# Hubungkan ke jaringan
iwctl station wlan0 connect <SSID>

Konfigurasi

Konfigurasi Daemon

File konfigurasi utama: /etc/iwd/main.conf

Jika belum ada, buat file tersebut:

sudo mkdir -p /etc/iwd
sudo nano /etc/iwd/main.conf

Konfigurasi Jaringan

IWD menyimpan informasi jaringan di /var/lib/iwd/. Format nama file:

<SSID>.open    # Jaringan terbuka
<SSID>.psk     # WPA2/PSK
<SSID>.8021x   # WPA Enterprise

Contoh konfigurasi jaringan WPA2/PSK โ€” buat file /var/lib/iwd/<ssid>.psk:

[Security]
Passphrase=password_wifi_kamu

Troubleshooting

Konflik dengan udevd (Penamaan Interface)

IWD secara default membuat dan menghapus interface wireless (contoh: wlan0), yang bisa bentrok dengan udevd saat mencoba mengganti namanya.

Gejala โ€” muncul pesan error seperti:

udevd: Error changing net interface name wlan0 to wlp59s0: Device or resource busy

Solusi 1 (disarankan) โ€” Cegah IWD memanipulasi interface. Tambahkan ke /etc/iwd/main.conf:

[General]
UseDefaultInterface=true

Solusi 2 โ€” Nonaktifkan penamaan persistent dari udevd (berlaku untuk semua perangkat jaringan):

# Opsi A: tambahkan ke kernel cmdline di /etc/default/grub
net.ifnames=0

# Opsi B: masking rule udevd
sudo ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

@T4n-Labs ยท @Gh0sT4n

ConnMan

ConnMan adalah daemon manajemen jaringan yang ringan dan hemat resource โ€” cocok untuk sistem embedded atau setup minimal.

Instalasi

sudo xbps-install -S connman

Mengaktifkan ConnMan

Sebelum mengaktifkan ConnMan, nonaktifkan daemon jaringan lain yang sedang berjalan untuk menghindari konflik:

# Nonaktifkan layanan yang mungkin aktif
rm -f /var/service/dhcpcd
rm -f /var/service/wpa_supplicant
rm -f /var/service/wicd

Kemudian aktifkan ConnMan:

ln -s /etc/sv/connmand /var/service/

Penggunaan (connmanctl)

connmanctl adalah client command-line untuk mengelola koneksi jaringan. Jalankan tanpa argumen untuk masuk ke sesi interaktif:

connmanctl

Contoh Koneksi ke WiFi

> enable wifi
> agent on
> scan wifi
> services
> connect wifi_<uniqueid>
> exit

Ganti wifi_<uniqueid> dengan ID jaringan yang muncul di output perintah services.

Front-End GUI

Selain CLI, ConnMan tersedia dengan berbagai antarmuka grafis:

PaketJenis UI
connman-uiSystem tray
connman-gtkGTK
cmstQt
connman-ncursesTerminal (ncurses)
sudo xbps-install -S cmst   # Contoh: instal UI berbasis Qt

Mencegah ConnMan Menimpa DNS

Secara default, ConnMan dapat menimpa konfigurasi DNS sistem. Untuk mencegahnya, buat file /etc/sv/connmand/conf:

OPTS="--nodnsproxy"

@T4n-Labs ยท @Gh0sT4n

NetworkManager

NetworkManager adalah daemon manajemen jaringan default T4n OS โ€” mendukung Ethernet, WiFi, dan mobile broadband.

Instalasi

sudo xbps-install -S NetworkManager

Mengaktifkan NetworkManager

1. Nonaktifkan Daemon Jaringan Lain

Pastikan tidak ada daemon jaringan lain yang aktif untuk menghindari konflik:

rm -f /var/service/dhcpcd
rm -f /var/service/wpa_supplicant
rm -f /var/service/wicd

2. Aktifkan D-Bus

NetworkManager membutuhkan dbus untuk berjalan:

ln -s /etc/sv/dbus /var/service/

3. Aktifkan NetworkManager

ln -s /etc/sv/NetworkManager /var/service/

Konfigurasi

Tambahkan pengguna ke grup network agar dapat mengelola koneksi:

sudo usermod -aG network <nama_user>

Tools Bawaan

ToolJenisPerintah
nmcliCommand-linenmcli
nmtuiTUI (terminal)nmtui

Contoh Penggunaan nmcli

# Lihat status koneksi
nmcli

# Lihat daftar WiFi
nmcli device wifi list

# Hubungkan ke WiFi
nmcli device wifi connect <SSID> password <password>

# Lihat semua koneksi tersimpan
nmcli connection show

Front-End GUI

PaketLingkungan
network-manager-appletSystem tray (GTK)
nm-traySystem tray (Qt)
plasma-nmKDE Plasma
Built-inGNOME

Eduroam (Jaringan Kampus)

Eduroam adalah layanan internet aman untuk civitas akademika yang bisa diakses di berbagai universitas di seluruh dunia.

Instalasi

  1. Instal dependensi:
sudo xbps-install -S python3-dbus
  1. Unduh installer eduroam sesuai institusi dari cat.eduroam.org.

  2. Jalankan installer:

chmod +x eduroam_installer.py
python3 eduroam_installer.py

Installer akan memandu proses konfigurasi secara otomatis.


@T4n-Labs ยท @Gh0sT4n

wpa_supplicant

wpa_supplicant sudah terinstal di sistem dasar T4n OS. Paket ini menyediakan tool untuk mengonfigurasi interface wireless dan menangani protokol keamanan WiFi.

ToolFungsi
wpa_supplicantDaemon utama โ€” mengelola interface wireless
wpa_passphraseMembuat pre-shared key untuk file konfigurasi
wpa_cliCLI untuk mengelola daemon wpa_supplicant

Contoh konfigurasi lengkap tersedia di:

/usr/share/examples/wpa_supplicant/wpa_supplicant.conf

Konfigurasi Jaringan

WPA2/WPA-PSK (Paling Umum)

Generate pre-shared key lalu simpan ke file konfigurasi:

wpa_passphrase <SSID> <password> >> /etc/wpa_supplicant/wpa_supplicant.conf

WPA3-SAE

Tambahkan blok berikut ke wpa_supplicant.conf:

network={
    ssid="NamaWiFi"
    key_mgmt=SAE
    sae_password="PasswordWiFi"
    ieee80211w=2
}

WPA-EAP (Jaringan Institusi / Eduroam)

WPA-EAP tidak menggunakan PSK. Untuk membuat hash password:

echo -n <password> | iconv -t utf16le | openssl md4

WEP (Lama, Tidak Disarankan)

network={
    ssid="NamaWiFi"
    key_mgmt=NONE
    wep_key0="WEP_KEY_KAMU"
    wep_tx_keyidx=0
    auth_alg=SHARED
}

โš ๏ธ WEP sudah dianggap tidak aman. Gunakan WPA2 atau WPA3 jika memungkinkan.

Konfigurasi Layanan

File konfigurasi layanan: /etc/sv/wpa_supplicant/conf

VariabelDefaultKeterangan
OPTSโ€”Opsi tambahan (override semua opsi lain)
CONF_FILE/etc/wpa_supplicant/wpa_supplicant.confPath ke file konfigurasi
WPA_INTERFACESemua interfaceInterface yang digunakan (bisa wildcard)
DRIVERโ€”Driver yang digunakan (wpa_supplicant -h untuk daftar)

Jika file conf tidak ditemukan, layanan akan mencari secara otomatis di /etc/wpa_supplicant/:

  • wpa_supplicant-<interface>.conf โ€” terikat ke interface tertentu.
  • wpa_supplicant.conf โ€” digunakan untuk semua interface lainnya.

Mengaktifkan Layanan

ln -s /etc/sv/wpa_supplicant /var/service/

Menggunakan wpa_cli

Saat menggunakan wpa_cli, selalu tentukan interface dengan opsi -i:

wpa_cli -i wlp2s0

Tanpa opsi -i, perintah seperti scan dan scan_results mungkin tidak menghasilkan output yang diharapkan.

Contoh Perintah Interaktif

> scan
> scan_results
> add_network
> set_network 0 ssid "NamaWiFi"
> set_network 0 psk "PasswordWiFi"
> enable_network 0
> save_config
> quit

@T4n-Labs ยท @Gh0sT4n

dhcpcd

dhcpcd adalah DHCP client daemon yang bertugas meminta dan mengelola IP address secara otomatis dari router/server DHCP di jaringan. Ringan dan cocok untuk setup sederhana tanpa membutuhkan fitur manajemen jaringan yang kompleks.

Catatan: T4n OS menggunakan NetworkManager sebagai default. Gunakan dhcpcd hanya jika kamu tidak menggunakan NetworkManager, IWD, ConnMan, atau daemon jaringan lainnya โ€” menjalankan lebih dari satu daemon jaringan secara bersamaan akan menyebabkan konflik.

Instalasi

sudo xbps-install -S dhcpcd

Mengaktifkan dhcpcd

Semua Interface

Untuk menjalankan dhcpcd di semua interface sekaligus:

ln -s /etc/sv/dhcpcd /var/service/

Interface Tertentu

Untuk menjalankan dhcpcd hanya pada interface tertentu, cek nama interface terlebih dahulu:

ip link show

Salin service template dan sesuaikan dengan nama interface:

cp -R /etc/sv/dhcpcd-eth0 /etc/sv/dhcpcd-enp3s0
ln -nsf /run/runit/supervise.dhcpcd-enp3s0 /etc/sv/dhcpcd-enp3s0/supervise
sed -i 's/eth0/enp3s0/' /etc/sv/dhcpcd-enp3s0/run
ln -s /etc/sv/dhcpcd-enp3s0 /var/service/

Ganti enp3s0 dengan nama interface yang sesuai di sistem kamu.

Konfigurasi

File konfigurasi utama: /etc/dhcpcd.conf

IP Statis

Untuk mengatur IP statis pada interface tertentu, tambahkan ke /etc/dhcpcd.conf:

interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8

IP Statis untuk Beberapa Interface

interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8

interface wlan0
static ip_address=192.168.1.101/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8

Fallback ke IP Statis

Jika DHCP gagal, dhcpcd dapat jatuh kembali ke IP statis:

profile static_eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8

interface eth0
fallback static_eth0

Menonaktifkan IPv6

Tambahkan baris berikut ke /etc/dhcpcd.conf untuk menonaktifkan IPv6 pada interface tertentu:

interface eth0
noipv6

Atau nonaktifkan untuk semua interface:

noipv6

Mengelola dhcpcd

Cek Status

sv status dhcpcd

Restart

sv restart dhcpcd

Memperbarui Lease DHCP Secara Manual

sudo dhcpcd -n eth0   # Renew lease
sudo dhcpcd -k eth0   # Lepas lease (release)

Melihat Info Lease Aktif

cat /var/lib/dhcpcd/dhcpcd-eth0.lease

Troubleshooting

dhcpcd Tidak Mendapat IP

Cek apakah interface sudah aktif:

ip link show eth0

Jika status DOWN, aktifkan dulu:

sudo ip link set eth0 up

Konflik dengan Daemon Lain

Pastikan tidak ada daemon jaringan lain yang aktif:

sv status NetworkManager
sv status wpa_supplicant
sv status connmand

Nonaktifkan yang tidak diperlukan:

rm -f /var/service/NetworkManager
rm -f /var/service/wpa_supplicant

Log dhcpcd

svlogtail dhcpcd   # Jika menggunakan socklog
# atau
journalctl -u dhcpcd

@T4n-Labs ยท @Gh0sT4n

Network Filesystem

NFS

Instalasi

sudo xbps-install -S nfs-utils

Untuk mount otomatis saat boot, instal juga sv-netmount:

sudo xbps-install -S sv-netmount

Mounting NFS Share (Client)

Mount Manual

sudo mount -t <tipe_mount> <host>:/path/sumber /path/tujuan
ParameterNilai
<tipe_mount>nfs4 jika server mendukung, nfs jika tidak
<host>Hostname atau IP address server

Contoh โ€” mount /volume dari server 192.168.1.99 ke /mnt/volume:

sudo mount -t nfs 192.168.1.99:/volume /mnt/volume

Mount Otomatis saat Boot (fstab)

Tambahkan entri berikut ke /etc/fstab:

192.168.1.99:/volume  /mnt/volume  nfs  rw,hard  0  0

Aktifkan Layanan (NFSv3 dan Lebih Lama)

Client dan server yang menggunakan NFSv3 atau protokol lama memerlukan layanan berikut:

ln -s /etc/sv/rpcbind /var/service/
ln -s /etc/sv/statd   /var/service/

NFSv4 eksklusif tidak memerlukan layanan rpcbind dan statd.

Setup Server NFS (NFSv4, tanpa Kerberos)

1. Konfigurasi Exports

Edit /etc/exports dan tambahkan direktori yang ingin dibagikan:

/storage/foo    *.local(rw,no_subtree_check,no_root_squash)

Baris di atas membagikan /storage/foo ke semua host di domain lokal dengan akses baca/tulis.

OpsiKeterangan
rwAkses baca dan tulis
no_subtree_checkMenonaktifkan pengecekan subtree (meningkatkan performa)
no_root_squashRoot client diperlakukan sebagai root di server

2. Aktifkan Layanan

ln -s /etc/sv/rpcbind    /var/service/
ln -s /etc/sv/statd      /var/service/
ln -s /etc/sv/nfs-server /var/service/

3. Verifikasi Share

sudo showmount -e localhost

Konfigurasi Server Lanjutan

Hanya Menggunakan NFSv4

Edit /etc/nfs.conf dan tambahkan bagian berikut untuk menonaktifkan protokol lama:

[nfsd]
vers3=n
vers4=y
vers4.1=y
vers4.2=y

Verifikasi versi yang aktif:

cat /proc/fs/nfsd/versions

@T4n-Labs ยท @Gh0sT4n

Manajemen Sesi dan Seat

Manajemen sesi tidak wajib untuk semua setup, namun berguna untuk:

  • Membuat direktori runtime sementara secara aman.
  • Memberikan akses ke perangkat hardware.
  • Mendukung multi-seat.
  • Mengontrol shutdown sistem.

D-Bus

D-Bus adalah mekanisme IPC (inter-process communication) yang digunakan oleh perangkat lunak di Linux. D-Bus menyediakan dua jenis bus:

JenisFungsiCara Aktifkan
System busKomunikasi antar proses sistemAktifkan layanan dbus
Session busKomunikasi spesifik per sesi penggunaJalankan program dengan dbus-run-session

Mengaktifkan System Bus

ln -s /etc/sv/dbus /var/service/

Mungkin perlu reboot agar berfungsi dengan benar.

Session Bus

Desktop environment yang diluncurkan melalui display manager biasanya sudah menginisiasi session bus sendiri. Untuk memeriksanya:

echo $DBUS_SESSION_BUS_ADDRESS

Jika variabel ini terdefinisi, session bus sudah aktif.

Ekspor Variabel Display ke D-Bus

Saat menggunakan session bus, mungkin perlu mengekspor variabel display:

# Untuk X / XWayland
dbus-update-activation-environment DISPLAY

# Untuk Wayland
dbus-update-activation-environment WAYLAND_DISPLAY

elogind

elogind mengelola login pengguna dan daya sistem โ€” versi standalone dari systemd-logind. Berguna untuk:

  • Sebagian besar desktop environment dan Wayland compositor.
  • Xorg tanpa root (rootless Xorg).

Baca bagian Manajemen Daya sebelum menginstal elogind, terutama soal konflik dengan acpid.

Instalasi

sudo xbps-install -S elogind

Pastikan system D-Bus sudah aktif, lalu login ulang.

Jika mengalami masalah, aktifkan layanan elogind secara eksplisit (menunggu aktivasi D-Bus dapat menyebabkan error):

ln -s /etc/sv/elogind /var/service/

turnstile

turnstile adalah session manager alternatif yang bisa digunakan dengan atau tanpa elogind.

Dengan elogind

Nonaktifkan manajemen XDG_RUNTIME_DIR di /etc/turnstile/turnstiled.conf:

manage_rundir=no

elogind dan turnstile saat ini bisa berjalan berdampingan, namun hal ini bisa berubah di versi mendatang.

Tanpa elogind

Pertimbangkan untuk menginstal dan mengaktifkan:

  • seatd โ€” untuk manajemen seat.
  • acpid โ€” untuk manajemen daya.

Mengaktifkan turnstile

ln -s /etc/sv/turnstiled /var/service/

Lalu login ulang.

turnstile juga dapat mengelola per-user services termasuk menjalankan session bus D-Bus, sehingga tidak perlu lagi membungkus sesi grafis dengan dbus-run-session.

seatd

seatd adalah daemon manajemen seat yang minimal โ€” alternatif ringan dari elogind, terutama untuk wlroots compositor (Sway, Hyprland, dll.).

sudo xbps-install -S seatd
ln -s /etc/sv/seatd /var/service/

Untuk mengizinkan user non-root mengakses sesi seatd:

sudo usermod -aG _seatd <nama_user>

Berbeda dengan elogind, seatd hanya menangani manajemen seat โ€” tidak lebih.

XDG_RUNTIME_DIR

XDG_RUNTIME_DIR adalah variabel environment yang menentukan direktori runtime milik pengguna sesuai spesifikasi XDG Base Directory.

Otomatis

Instal elogind atau turnstile โ€” keduanya akan mengatur XDG_RUNTIME_DIR secara otomatis.

Manual

Buat direktori dan set permission yang tepat:

mkdir -p /run/user/$(id -u)
chmod 700 /run/user/$(id -u)

Ekspor variabel di profil shell (~/.bashrc atau ~/.zshrc):

export XDG_RUNTIME_DIR=/run/user/$(id -u)

Ringkasan Pilihan

ToolFungsi UtamaCocok untuk
elogindSesi, daya, XDG_RUNTIME_DIRDE lengkap, Wayland, rootless Xorg
turnstileSesi, per-user servicesAlternatif elogind, bisa dikombinasikan
seatdManajemen seat sajawlroots compositor (Sway, Hyprland)

@T4n-Labs ยท @Gh0sT4n

Graphical Session (Sesi Grafis)

Sesi grafis adalah lingkungan desktop interaktif yang memungkinkan pengguna berinteraksi dengan sistem operasi melalui antarmuka visual. Dokumen ini mencakup konfigurasi driver grafis, pemilihan display server, hingga pemasangan desktop environment di T4n OS.

Driver Grafis

Konfigurasi driver untuk kartu grafis yang digunakan.

Session (Display Server)

Pilih display server yang akan digunakan sebagai fondasi sesi grafis.

  • X11 (Xorg) โ€” Display server klasik, kompatibilitas luas.
  • Wayland โ€” Display server modern, keamanan lebih baik.
  • XDG Desktop Portal โ€” Komponen layanan sesi grafis.

GUI Core

  • XFCE โ€” Desktop environment ringan berbasis X11.
  • XFCE Wayland โ€” XFCE dengan dukungan Wayland.

GUI Extra

Kustomisasi tampilan sistem.

  • Fonts โ€” Instalasi dan konfigurasi font.
  • Icons โ€” Paket ikon.
  • Themes โ€” Tema GTK dan Qt.

@T4n-Labs ยท @Gh0sT4n

Graphics Driver

Graphics driver di Linux adalah perangkat lunak yang menjembatani sistem operasi dengan kartu grafis (GPU), memungkinkan konversi data digital menjadi gambar di layar.

Driver Grafis

Konfigurasi driver untuk kartu grafis yang digunakan.


@T4n-Labs ยท @Gh0sT4n

Driver GPU AMD / ATI

Firmware

Dukungan GPU AMD membutuhkan paket linux-firmware-amd.

  • Jika menggunakan paket linux atau linux-lts โ†’ firmware sudah terinstal otomatis sebagai dependensi.
  • Jika menggunakan kernel versi spesifik (contoh: linux5.4) โ†’ instal secara manual:
sudo xbps-install -S linux-firmware-amd

OpenGL

sudo xbps-install -S mesa-dri

Sudah termasuk dalam meta-paket xorg. Hanya perlu diinstal manual jika menggunakan xorg-minimal atau Wayland compositor.

Vulkan

sudo xbps-install -S vulkan-loader

Pilih salah satu atau keduanya sebagai driver Vulkan AMD:

PaketKeterangan
mesa-vulkan-radeonDriver Vulkan AMD dari Mesa
amdvlkDriver Vulkan AMD dari GPUOpen
sudo xbps-install -S mesa-vulkan-radeon   # Pilihan umum
# atau
sudo xbps-install -S amdvlk

Driver Xorg

Meta-paket xorg otomatis menarik xf86-video-amdgpu dan xf86-video-ati. Jika menggunakan xorg-minimal, pilih driver sesuai hardware:

DriverCocok untuk
xf86-video-amdgpuGPU AMD arsitektur "Graphics Core Next 1.2" (sejak ~2012)
xf86-video-atiGPU AMD/ATI lama (sebelum 2012)
sudo xbps-install -S xf86-video-amdgpu   # GPU modern
# atau
sudo xbps-install -S xf86-video-ati      # GPU lama

Akselerasi Video

VA-API

sudo xbps-install -S mesa-vaapi

Set environment variable agar driver AMD digunakan:

export LIBVA_DRIVER_NAME=radeonsi

Tambahkan ke ~/.bashrc atau ~/.zshrc agar permanen.

VDPAU

sudo xbps-install -S libvdpau-va-gl

Set environment variable:

export VDPAU_DRIVER=va_gl

@T4n-Labs ยท @Gh0sT4n

Driver GPU Intel

Firmware

Dukungan GPU Intel membutuhkan paket linux-firmware-intel.

  • Jika menggunakan paket linux atau linux-lts โ†’ firmware sudah terinstal otomatis sebagai dependensi.
  • Jika menggunakan kernel versi spesifik (contoh: linux5.4) โ†’ instal secara manual:
sudo xbps-install -S linux-firmware-intel

OpenGL

sudo xbps-install -S mesa-dri

Sudah termasuk dalam meta-paket xorg. Hanya perlu diinstal manual jika menggunakan xorg-minimal atau Wayland compositor.

Vulkan

sudo xbps-install -S vulkan-loader mesa-vulkan-intel

Akselerasi Video

VA-API

Instal meta-paket intel-video-accel untuk mendapatkan semua driver yang diperlukan:

sudo xbps-install -S intel-video-accel

Secara default sistem menggunakan intel-media-driver. Untuk mengganti driver secara manual, gunakan variabel lingkungan LIBVA_DRIVER_NAME:

DriverGenerasi GPUVariabel Lingkungan
libva-intel-driverHingga Coffee LakeLIBVA_DRIVER_NAME=i965
intel-media-driverBroadwell dan lebih baruLIBVA_DRIVER_NAME=iHD

VDPAU

sudo xbps-install -S libvdpau-va-gl

Set environment variable:

export VDPAU_DRIVER=va_gl

Troubleshooting

Masalah IOMMU (Khusus Broadwell)

Kernel T4n OS dikonfigurasi dengan CONFIG_INTEL_IOMMU_DEFAULT_ON=y. Pada GPU generasi Broadwell, hal ini sering menyebabkan masalah driver grafis.

Tambahkan parameter berikut ke kernel command line untuk menonaktifkan IOMMU pada GPU internal:

intel_iommu=igfx_off

Jika GPU model lain mengalami masalah serupa dan teratasi dengan opsi ini, harap laporkan sebagai bug.

Gangguan Driver DDX

Pada chipset Intel yang lebih baru, driver DDX lama terkadang menyebabkan instabilitas atau akselerasi grafis tidak berjalan. Coba hapus semua paket xf86-video-*.

Beberapa chipset lama justru membutuhkan driver ini. Jika tampilan bermasalah setelah penghapusan, instal kembali paket xf86-video-intel.


@T4n-Labs ยท @Gh0sT4n

Driver GPU NVIDIA

Di T4n OS tersedia dua pilihan driver: Nouveau (open-source) untuk stabilitas dan kompatibilitas Wayland, atau NVIDIA (proprietary) untuk performa maksimal.

Nouveau (Driver Open-Source)

Driver ini dikembangkan oleh komunitas melalui reverse engineering. Direkomendasikan untuk kartu grafis lama atau jika ingin menjalankan Wayland compositor.

OpenGL

sudo xbps-install -S mesa-dri

Sudah termasuk dalam meta-paket xorg. Hanya perlu diinstal manual jika menggunakan xorg-minimal atau Wayland compositor.

Vulkan

Didukung mulai arsitektur Kepler (GTX 6xx) ke atas:

sudo xbps-install -S vulkan-loader mesa-vulkan-nouveau

Driver Xorg

Secara default menggunakan xf86-video-nouveau. Pada perangkat ARM berbasis Tegra, gunakan driver modesetting.

Akselerasi Video

VA-API:

sudo xbps-install -S mesa-vaapi
export LIBVA_DRIVER_NAME=nouveau

VDPAU:

sudo xbps-install -S libvdpau-va-gl
export VDPAU_DRIVER=va_gl

Catatan Reclocking (Performa)

Nouveau memiliki keterbatasan dalam mengatur kecepatan clock:

DukunganArsitektur
ManualMaxwell Gen 1, Kepler, beberapa Tesla
OtomatisTuring (GTX 16xx) dan lebih baru
Tidak didukungMaxwell Gen 2 (GTX 9xx) hingga Pascal (GTX 10xx) โ€” tidak ada signed firmware

NVIDIA (Driver Proprietary)

Direkomendasikan untuk performa tinggi (gaming/editing). Tersedia di repositori nonfree dan terintegrasi ke kernel melalui DKMS.

Identifikasi Driver yang Tepat

Jalankan perintah berikut untuk mengetahui model GPU:

lspci -k -d ::03xx

Pilih paket driver berdasarkan keluarga GPU:

Keluarga GPUTipe DriverPaket
Turing (NV160) & terbaruOpen-source / Proprietarynvidia
Maxwell (NV110) s/d Volta (NV140)Proprietarynvidia580
Kepler (NVE0)Proprietary (Legacy)nvidia470
Fermi (NVC0)Proprietary (Legacy)nvidia390
Tesla (NV50) & lebih lamaTidak didukungGunakan Nouveau

Dukungan Aplikasi 32-bit (glibc)

Diperlukan untuk menjalankan game lama atau aplikasi seperti Steam.

  • Nouveau: instal mesa-dri-32bit.
  • NVIDIA: instal nvidia<versi>-libs-32bit (contoh: nvidia470-libs-32bit, atau nvidia-libs-32bit untuk versi terbaru).

Berpindah dari NVIDIA ke Nouveau

Menghapus Driver NVIDIA

sudo xbps-install -S xf86-video-nouveau
sudo xbps-remove nvidia   # Ganti sesuai versi yang terinstal (580, 470, dst.)

Jika menghapus driver lama seperti nvidia340, pastikan untuk menginstal kembali paket libglvnd.

Menyimpan Kedua Driver (Alternatif)

Jika driver NVIDIA ingin tetap terinstal namun Nouveau yang digunakan:

  1. Buka file blacklist (/etc/modprobe.d/nouveau_blacklist.conf atau /usr/lib/modprobe.d/nvidia.conf).
  2. Beri tanda komentar (#) pada baris blacklist nouveau.
  3. Buat file /etc/X11/xorg.conf.d/20-nouveau.conf untuk memaksa Xorg menggunakan Nouveau:
Section "Device"
    Identifier "Nvidia card"
    Driver "nouveau"
EndSection

Restart sistem agar perubahan berlaku.


@T4n-Labs ยท @Gh0sT4n

NVIDIA Optimus

NVIDIA Optimus adalah teknologi grafis ganda pada laptop yang terdiri dari GPU terintegrasi (Intel) dan GPU diskrit (NVIDIA). Pilih metode yang sesuai dengan perangkat keras yang digunakan.

Identifikasi Driver yang Tepat

Dukungan Optimus tidak selalu menjamin versi driver terbaru akan bekerja. Cara terbaik untuk menentukannya:

  1. Instal paket nvidia terbaru lalu reboot.
  2. Cek log kernel. Jika GPU tidak didukung oleh driver tersebut, akan muncul pesan seperti:
    NVRM: The NVIDIA GPU xxxx:xx:xx.x ... is not supported by the xxx.xx NVIDIA Linux driver release.
    
  3. Jika pesan tersebut muncul, hapus driver nvidia dan instal driver legacy nvidia390.

Metode yang Didukung

Metode-metode berikut bersifat eksklusif โ€” pilih salah satu, tidak bisa dijalankan bersamaan:

MetodeDriverKelebihanKekurangan
PRIME Render Offloadnvidia, nvidia470Fleksibel, bisa dipilih per aplikasiManajemen daya kurang optimal pada seri pre-Turing
RandR 1.4nvidia, nvidia470, nvidia390Bisa mematikan GPU NVIDIA sepenuhnyaKurang fleksibel, harus ditentukan di awal sesi X
Bumblebeenvidia, nvidia470, nvidia390Manajemen daya baikTidak resmi, performa cenderung rendah
Nouveau PRIMEnouveauOpen-sourcePerforma rendah karena hasil reverse-engineering

Konfigurasi

PRIME Render Offload (Disarankan)

Metode ini memungkinkan menjalankan aplikasi tertentu menggunakan GPU NVIDIA melalui variabel lingkungan. Skrip prime-run sudah disertakan dalam paket nvidia:

prime-run <nama_aplikasi>

Contoh: prime-run steam

Bumblebee

  1. Aktifkan layanan bumblebeed.
  2. Tambahkan user ke grup bumblebee:
sudo usermod -aG bumblebee $USER
  1. Log out dan log in kembali.
  2. Jalankan aplikasi dengan:
optirun <nama_aplikasi>

Nouveau PRIME

  1. Pastikan driver NVIDIA sudah dihapus atau dinonaktifkan.
  2. Jalankan aplikasi dengan variabel DRI_PRIME=1:
DRI_PRIME=1 <nama_aplikasi>

Verifikasi GPU yang Aktif

Cek renderer aktif (membutuhkan paket glxinfo):

glxinfo | grep "OpenGL renderer"
# atau jika menggunakan prime-run
prime-run glxinfo | grep "OpenGL renderer"

Cek proses yang menggunakan GPU diskrit (khusus driver NVIDIA):

nvidia-smi

@T4n-Labs ยท @Gh0sT4n

Session (Display Server)

Pilih display server yang akan digunakan sebagai fondasi sesi grafis.

  • X11 (Xorg) โ€” Display server klasik, kompatibilitas luas.
  • Wayland โ€” Display server modern, keamanan lebih baik.
  • XDG Desktop Portal โ€” Komponen layanan sesi grafis.

@T4n-Labs ยท @Gh0sT4n

Xorg

Bagian ini membahas instalasi manual dan konfigurasi Xorg Display Server. Untuk sistem yang langsung siap pakai dengan desktop lengkap, gunakan image XFCE T4n OS.

Instalasi

T4n OS menyediakan dua jalur instalasi untuk Xorg:

  • xorg โ€” Paket lengkap: server Xorg, semua driver video gratis, driver input, font, dan aplikasi dasar. Pilihan paling aman untuk sebagian besar pengguna.
  • xorg-minimal โ€” Hanya server dasar. Komponen lain harus diinstal manual, seperti font (xorg-fonts), terminal emulator (xterm), dan window manager (i3, openbox).
sudo xbps-install -S xorg

Driver Video

Open-Source

T4n OS mendukung dua kategori driver open-source:

  • DDX (xf86-video-*) โ€” Terinstal otomatis bersama paket xorg. Contoh: xf86-video-intel, xf86-video-amdgpu.
  • Modesetting โ€” Memerlukan mesa-dri, tidak butuh paket driver spesifik vendor. Xorg akan memprioritaskan DDX jika tersedia; untuk memaksa modesetting, gunakan konfigurasi manual (lihat bagian di bawah).

Proprietary

Tersedia melalui repositori nonfree, khususnya untuk kartu grafis NVIDIA.

Driver Input

Driver input menangani perangkat seperti keyboard, mouse, hingga tombol power, tersedia melalui paket xf86-input-*. Jika perangkat input tidak merespons pada instalasi xorg-minimal, instal driver spesifik seperti xf86-input-evdev atau xf86-input-libinput.

Konfigurasi

Secara umum Xorg mendeteksi perangkat secara otomatis. Konfigurasi manual dapat dilakukan di /etc/X11/xorg.conf.d/.

Konfigurasi Keyboard

Buat file /etc/X11/xorg.conf.d/30-keyboard.conf:

Section "InputClass"
    Identifier "keyboard-all"
    Driver "evdev"
    MatchIsKeyboard "on"
EndSection

Memaksa Driver Modesetting

Buat file /etc/X11/xorg.conf.d/10-modesetting.conf:

Section "Device"
    Identifier "GPU0"
    Driver "modesetting"
EndSection

Verifikasi setelah restart Xorg:

grep -E -m1 '\(II\) modeset\([0-9]+\):' /var/log/Xorg.0.log

Memulai Sesi X

startx

Paket xinit menyediakan skrip startx untuk menjalankan sesi X langsung dari TTY. Konfigurasi melalui file ~/.xinitrc:

# Aplikasi di latar belakang
xscreensaver &

# Window manager โ€” harus baris terakhir dengan exec
exec i3

Jalankan dengan perintah startx.

Display Manager

Display manager menyediakan antarmuka grafis untuk login. Pilihan yang tersedia di T4n OS:

PaketCocok untuk
gdmGNOME
sddmKDE Plasma
lightdmXFCE, window manager lain

Uji fungsionalitas Xorg dengan startx terlebih dahulu sebelum mengaktifkan display manager secara permanen, untuk menghindari layar hitam saat boot.


@T4n-Labs ยท @Gh0sT4n

Wayland

Wayland adalah protokol display server modern yang menggantikan Xorg. Berbeda dengan Xorg, Wayland menggabungkan fungsi display server, window manager, dan compositor dalam satu aplikasi tunggal.

Lingkungan Desktop

Beberapa desktop environment sudah mendukung sesi Wayland secara bawaan:

  • GNOME โ€” Menggunakan sesi Wayland secara default. Aplikasi GTK+ otomatis menggunakan backend Wayland.
  • KDE Plasma โ€” Mendukung Wayland; aplikasi Qt mungkin memerlukan konfigurasi tambahan jika dijalankan di luar KDE.
  • Enlightenment โ€” Memiliki dukungan sesi Wayland mandiri.

Standalone Compositor

T4n OS menyediakan berbagai pilihan Wayland compositor untuk setup minimalis:

CompositorDeskripsi
swayTiling compositor, kompatibel dengan konfigurasi i3
riverTiling compositor dinamis
wayfireCompositor 3D dengan efek visual
labwcStacking compositor terinspirasi Openbox
westonCompositor referensi resmi proyek Wayland
niriTiling compositor dengan mekanisme scrolling
qtileTersedia melalui paket qtile-wayland

Beberapa compositor tidak menyertakan font secara default. Jika aplikasi tidak tampil atau error, instal paket font seperti fonts-roboto atau ttf-dejavu.

Driver Grafis & Seat Management

Driver Video

  • Mesa / Open-source โ€” Sebagian besar compositor membutuhkan driver yang mengimplementasikan antarmuka GBM. Pastikan paket mesa-dri sudah terinstal.
  • NVIDIA โ€” GNOME dan KDE Plasma mendukung driver proprietary NVIDIA melalui backend EGLStreams. Compositor lain mungkin memerlukan konfigurasi khusus atau driver versi terbaru yang mendukung GBM.

Seat Management

Wayland memerlukan kontrol atas perangkat input dan tampilan. Aktifkan salah satu layanan berikut:

  • elogind
  • seatd

Konfigurasi Aplikasi Native Wayland

Agar aplikasi berjalan secara native (bukan melalui emulasi X11), atur variabel lingkungan sesuai toolkit:

Toolkit / AplikasiPaket yang DiperlukanVariabel Lingkungan
Qt5qt5-waylandQT_QPA_PLATFORM=wayland
Qt6qt6-waylandQT_QPA_PLATFORM=wayland
SDLโ€”SDL_VIDEODRIVER=wayland
EFLโ€”ELM_DISPLAY=wl
GTK+โ€”Otomatis (default)

Web Browser

  • Firefox & Chromium โ€” Mendukung Wayland secara default pada versi terbaru.
  • Browser berbasis Qt (qutebrowser) โ€” Berjalan native selama toolkit Qt sudah dikonfigurasi dengan benar.

Menjalankan Aplikasi X11 (XWayland)

Aplikasi yang belum mendukung Wayland secara native tetap bisa dijalankan melalui XWayland โ€” server X yang berjalan sebagai jembatan di dalam sesi Wayland.

Paket: xorg-server-xwayland (biasanya terinstal otomatis sebagai dependensi compositor).

Variabel Lingkungan

Wayland membutuhkan direktori runtime agar soket komunikasinya berfungsi. Variabel berikut biasanya diatur otomatis oleh session manager:

  • XDG_RUNTIME_DIR โ€” Menentukan lokasi direktori soket Wayland.
  • XDG_SESSION_TYPE โ€” Set ke wayland untuk memberitahu aplikasi bahwa sesi yang berjalan adalah Wayland.

Verifikasi:

echo $XDG_SESSION_TYPE

@T4n-Labs ยท @Gh0sT4n

XDG Desktop Portal

XDG Desktop Portal adalah antarmuka standar yang digunakan oleh aplikasi (terutama Flatpak, Snap, dan aplikasi sandboxed lainnya) untuk berinteraksi dengan sistem host secara aman โ€” termasuk dialog buka/simpan file, clipboard, screencasting, membuka URL, dan lain-lain.

Instalasi

Sistem harus menjalankan D-Bus user session bus sebelum menggunakan XDG Desktop Portal.

Instal paket utama:

sudo xbps-install -S xdg-desktop-portal

Lalu instal setidaknya satu backend yang sesuai dengan desktop environment atau compositor yang digunakan:

BackendKeterangan
xdg-desktop-portal-gtkPilihan default โ€” UI berbasis GTK+, kompatibel dengan hampir semua DE
xdg-desktop-portal-gnomeAntarmuka umum + fitur spesifik GNOME
xdg-desktop-portal-kdeAntarmuka umum + fitur spesifik KDE (UI berbasis Qt/KF5)
xdg-desktop-portal-wlrWajib untuk Wayland wlroots (Sway, Hyprland) โ€” screenshot & screenshare
xdg-desktop-portal-lxqtHanya file picker (berbasis libfm-qt)
io.elementary.filesHanya file picker

Jika ragu, instal xdg-desktop-portal-gtk โ€” kompatibel dengan hampir semua lingkungan desktop.

Konfigurasi

Konfigurasi bawaan di /usr/share/xdg-desktop-portal/portals.conf sudah mencukupi untuk sebagian besar kebutuhan.

Override Konfigurasi

Untuk menyesuaikan portal per DE atau per antarmuka, buat file override di salah satu lokasi berikut:

  • Level sistem: /etc/xdg-desktop-portal/portals.conf
  • Level pengguna: ~/.config/xdg-desktop-portal/portals.conf atau $XDG_CONFIG_HOME/xdg-desktop-portal/$XDG_CURRENT_DESKTOP-portals.conf

File konfigurasi ini memungkinkan penentuan backend per layanan โ€” misalnya backend KDE untuk file chooser, tapi backend GTK untuk notifikasi. Lihat dokumentasi lengkap:

man 5 portals.conf

Verifikasi

Pastikan portal berjalan setelah instalasi dengan memeriksa proses D-Bus atau mencoba membuka file dialog dari aplikasi Flatpak. Jika menggunakan lingkungan minimal seperti window manager, pastikan dbus-run-session sudah aktif saat memulai sesi desktop.


@T4n-Labs ยท @Gh0sT4n

GUI Core

  • XFCE โ€” Desktop environment ringan berbasis X11.
  • XFCE Wayland โ€” XFCE dengan dukungan Wayland.

@T4n-Labs ยท @Gh0sT4n

XFCE

T4n OS XFCE menggabungkan efisiensi T4n OS Base dengan lingkungan desktop XFCE4 โ€” dirancang untuk keseimbangan antara performa tinggi dan kemudahan penggunaan grafis.

Komponen Utama

KomponenPaket
Window Managerxfwm4
File Managerthunar
Panelxfce4-panel
Terminalxfce4-terminal
Display Managerlightdm

Manajemen Sesi Grafis

T4n OS menggunakan LightDM untuk mengelola login. Pastikan layanan dbus dan lightdm aktif:

sudo ln -s /etc/sv/dbus    /var/service/
sudo ln -s /etc/sv/lightdm /var/service/

File konfigurasi utama: /etc/lightdm/lightdm.conf

Kustomisasi Desktop

XFCE dapat dikonfigurasi melalui Settings Manager (xfce4-settings-manager):

  • Appearance โ€” Tema GTK dan ikon.
  • Window Manager โ€” Dekorasi jendela dan perilaku fokus.
  • Panel โ€” Tambah, hapus, atau atur posisi panel.
  • Workspaces โ€” Jumlah desktop virtual.

Manajemen Aplikasi

Selain xbps via terminal, beberapa aplikasi bawaan yang tersedia:

  • Web browser: Firefox (atau sesuai image build).
  • Editor teks: Mousepad.
  • Archiver: File Roller atau Engrampa.

Untuk manajemen paket secara grafis, gunakan octoxbps.

Konfigurasi Perangkat Keras

Display & Monitor

Gunakan aplikasi Display untuk mengatur resolusi dan tata letak multi-monitor. Kecerahan layar pada laptop dikelola oleh xfce4-power-manager.

Audio

T4n OS XFCE menggunakan PipeWire atau PulseAudio. Gunakan plugin xfce4-pulseaudio-plugin di tray untuk kontrol cepat, atau jalankan pavucontrol untuk pengaturan lebih lanjut.

Power Management

Pengaturan baterai, mode tidur, dan aksi tutup layar tersedia di Power Manager.

Integrasi Thunar

  • Custom Actions โ€” Klik kanan di dalam folder untuk membuka terminal di lokasi tersebut.
  • Volume Management โ€” Automount USB drive (memerlukan layanan gvfs).
  • Thumbnail โ€” Pratinjau gambar dan video (memerlukan tumbler).

Troubleshooting

Layar Hitam Setelah Login

  1. Masuk ke TTY dengan Ctrl+Alt+F2.
  2. Cek apakah partisi penuh: df -h.
  3. Pastikan driver GPU sudah terinstal dengan benar sesuai panduan driver T4n OS.

Ikon Tray Tidak Muncul

Pastikan paket xfce4-statusnotifier-plugin terinstal dan sudah ditambahkan ke panel.

Masalah Permission di Thunar

Jika tidak bisa mengakses partisi lain atau USB, pastikan user berada di grup storage:

sudo usermod -aG storage $USER

Perintah Penting

PerintahFungsi
xfce4-panel -rRestart panel jika error atau hang
xfwm4 --replace &Restart atau ganti window manager
xfce4-session-logoutBuka dialog logout via terminal

@T4n-Labs ยท @Gh0sT4n

XFCE Wayland

T4n OS XFCE Wayland adalah edisi eksperimental yang menawarkan pengalaman desktop XFCE ringan di atas protokol Wayland โ€” dengan performa visual lebih mulus, keamanan lebih baik, dan dukungan tearing-free secara bawaan.

Arsitektur Sesi

KomponenKeterangan
Compositorlabwc (berbasis wlroots, meniru Openbox/Xfwm4) atau xfce4-wayland-session
ProtokolWayland dengan kompatibilitas XWayland untuk aplikasi lama
Seat Managementseatd atau elogind

Persyaratan Driver

Wayland membutuhkan driver dengan dukungan GBM (Generic Buffer Management):

  • Intel โ€” mesa-dri.
  • AMD โ€” mesa-dri dan xf86-video-amdgpu (kernel-mode).
  • NVIDIA โ€” Driver versi 470+ (disarankan 525+) dengan nvidia-drm.modeset=1 di kernel cmdline.

Manajemen Sesi & Autostart

Memulai Sesi

T4n OS menggunakan Greetd atau SDDM yang dikonfigurasi untuk Wayland. Untuk menjalankan sesi secara manual dari TTY:

start-xfce-wayland

Variabel Lingkungan

Agar toolkit aplikasi berjalan secara native di Wayland, tambahkan ke /etc/environment atau ~/.bash_profile:

export CLUTTER_BACKEND=wayland
export GDK_BACKEND=wayland,x11
export QT_QPA_PLATFORM=wayland
export MOZ_ENABLE_WAYLAND=1

Komponen Desktop

Beberapa aplikasi standar XFCE diganti dengan alternatif native Wayland untuk stabilitas:

  • Panel โ€” xfce4-panel (versi GTK3+) dengan plugin wayland-proxy.
  • Wallpaper & Desktop โ€” wpaperd atau swaybg.
  • App Launcher โ€” xfce4-appfinder atau wofi.
  • Screenshot โ€” grim + slurp (menggantikan xfce4-screenshooter).
  • Notifikasi โ€” mako atau xfce4-notifyd (versi terbaru).

Konfigurasi Input & Layar

Input (Mouse & Touchpad)

Pengaturan input dikelola langsung oleh compositor, bukan xf86-input-libinput. Konfigurasi tersedia di ~/.config/labwc/autostart atau melalui tool wlopm.

Display (Output)

Gunakan wlr-randr atau wdisplays untuk mengatur resolusi dan orientasi monitor:

wlr-randr

XWayland

Untuk aplikasi yang belum mendukung Wayland secara native, T4n OS mengaktifkan XWayland secara otomatis.

Verifikasi: jalankan xeyes โ€” jika mata bergerak saat kursor berada di atas jendela aplikasi, aplikasi tersebut berjalan di bawah XWayland.

Troubleshooting

Layar Berkedip (Flickering)

Sering terjadi pada GPU NVIDIA. Tambahkan parameter berikut ke kernel cmdline:

nvidia_drm.modeset=1 nvidia_drm.fbdev=1

Dekorasi Jendela Ganda pada Aplikasi GTK

Paksa dekorasi sisi klien dengan variabel lingkungan:

export GTK_CSD=1

Screencasting Tidak Berfungsi

Pastikan layanan berikut aktif:

  1. xdg-desktop-portal
  2. xdg-desktop-portal-wlr (atau sesuai compositor)
  3. pipewire dan wireplumber

Perintah Penting

PerintahKegunaan
wayland-infoLihat informasi protokol Wayland aktif
libinput debug-eventsLacak input perangkat secara real-time
grim output.pngAmbil screenshot seluruh layar

@T4n-Labs ยท @Gh0sT4n

GUI Extra

Kustomisasi tampilan sistem.

  • Fonts โ€” Instalasi dan konfigurasi font.
  • Icons โ€” Paket ikon.
  • Themes โ€” Tema GTK dan Qt.

@T4n-Labs ยท @Gh0sT4n

Fonts

Instalasi via XBPS

T4n OS menyediakan berbagai koleksi font melalui XBPS:

PaketKeterangan
dejavu-fonts-ttfFont standar, pilihan dasar yang stabil
xorg-fontsFont dasar untuk sistem Xorg
noto-fonts-ttfDukungan multibahasa dan berbagai skrip
noto-fonts-cjkBahasa Mandarin, Jepang, dan Korea
noto-fonts-emojiDukungan emoji berwarna
nerd-fontsFont dengan ikon khusus, cocok untuk terminal/bar status
sudo xbps-install -S dejavu-fonts-ttf noto-fonts-emoji

Instalasi Manual

Salin file font (.ttf, .otf) ke salah satu direktori berikut:

  • Sistem: /usr/share/fonts/ โ€” berlaku untuk semua pengguna.
  • Per-pengguna: ~/.local/share/fonts/ โ€” hanya untuk pengguna saat ini.

Perbarui cache font setelah menyalin:

fc-cache -fv

Kustomisasi Tampilan Font

T4n OS menggunakan fontconfig untuk mengatur cara font ditampilkan (aliasing, hinting, dll.). Konfigurasi tersedia di /usr/share/fontconfig/conf.avail/ dan diaktifkan dengan membuat symlink ke /etc/fonts/conf.d/.

Menonaktifkan Bitmap Fonts

Bitmap fonts terkadang terlihat pecah pada layar modern. Untuk menonaktifkannya (kecuali emoji):

sudo ln -s /usr/share/fontconfig/conf.avail/70-no-bitmaps-except-emoji.conf /etc/fonts/conf.d/
sudo xbps-reconfigure -f fontconfig

Verifikasi Konfigurasi

Tampilkan daftar konfigurasi font yang aktif:

fc-conflist

Konfigurasi yang ditandai + berarti sedang aktif.


@T4n-Labs ยท @Gh0sT4n

Icons

Ikon Bawaan (GTK)

Secara default, aplikasi berbasis GTK menggunakan tema ikon Adwaita, yang terinstal otomatis sebagai dependensi saat menginstal gtk+3.

Tema Ikon Kustom

Instalasi

Instal tema ikon pilihan via XBPS:

sudo xbps-install -S papirus-icon-theme

Konfigurasi

Tentukan nama tema di file konfigurasi GTK:

  • Per-pengguna: ~/.config/gtk-3.0/settings.ini
  • Sistem: /etc/gtk-3.0/settings.ini

Tambahkan atau ubah baris berikut di bagian [Settings]:

[Settings]
gtk-icon-theme-name = nama-tema-ikon

Ganti nama-tema-ikon dengan nama folder tema yang terinstal di /usr/share/icons/.

Menghapus Tema Adwaita

adwaita-icon-theme adalah dependensi wajib GTK. Untuk menghapusnya:

  1. Tambahkan adwaita-icon-theme ke daftar ignorepkg di konfigurasi XBPS.
  2. Hapus paket secara manual:
sudo xbps-remove -F adwaita-icon-theme

Lokasi File Ikon

ScopeLokasi
Sistem/usr/share/icons/
Per-pengguna~/.local/share/icons/

@T4n-Labs ยท @Gh0sT4n

Themes

Lokasi Penyimpanan Tema

ScopeLokasi
Sistem/usr/share/themes/
Per-pengguna~/.local/share/themes/ atau ~/.themes/

Tema GTK (XFCE, GNOME, dll.)

Instalasi via XBPS

sudo xbps-install -S arc-theme adwaita-icon-theme greybird-themes

Konfigurasi Manual

Untuk setup headless atau tanpa DE, edit ~/.config/gtk-3.0/settings.ini:

[Settings]
gtk-theme-name = Arc-Dark
gtk-icon-theme-name = Papirus-Dark
gtk-font-name = DejaVu Sans 11
gtk-cursor-theme-name = Adwaita

Kustomisasi via XFCE

  • Settings > Appearance โ€” Tema widget dan ikon.
  • Settings > Window Manager โ€” Tema dekorasi jendela.

Tema Qt (KDE, LXQt)

Agar aplikasi Qt tampil selaras dengan lingkungan GTK:

  1. Instal qt5ct atau qt6ct:
sudo xbps-install -S qt5ct qt6ct
  1. Tambahkan variabel lingkungan ke ~/.bash_profile atau /etc/environment:
export QT_QPA_PLATFORMTHEME=qt5ct
  1. Buka aplikasi Qt5 Settings untuk memilih tema.

Tema Kursor

Kursor disimpan di /usr/share/icons/ atau ~/.icons/. Untuk mengubah kursor secara manual, buat atau edit ~/.icons/default/index.theme:

[Icon Theme]
Inherits=Nama-Tema-Kursor

Tema Terminal

  • XFCE Terminal โ€” Edit > Preferences > Colors.
  • Alacritty / Kitty โ€” Edit file konfigurasi di ~/.config/.

Dark Mode

Paksa skema warna gelap secara global dengan variabel lingkungan di ~/.profile:

export GTK_THEME=Arc-Dark

Tema dari Komunitas

Tema buatan komunitas dapat diunduh dari:

Cara pasang:

  1. Ekstrak file .tar.gz.
  2. Pindahkan folder hasil ekstrak ke ~/.local/share/themes/.
  3. Pilih tema melalui pengaturan sistem.

@T4n-Labs ยท @Gh0sT4n

CLI โ€” Command Line


@T4n-Labs ยท @Gh0sT4n

Server

Dokumentasi ini mencakup penggunaan T4n OS dan Void Linux sebagai sistem operasi server โ€” mulai dari manajemen layanan, konfigurasi jaringan, hingga keamanan sistem.

Konsep Dasar

T4n OS menggunakan runit sebagai init system dan supervision suite. Berbeda dengan systemd, runit bersifat minimalis dan deterministik โ€” setiap layanan dijalankan sebagai proses independen dengan environment yang bersih.

Untuk kebutuhan server, pendekatan ini memberikan beberapa keuntungan:

  • Layanan yang gagal di-restart secara otomatis oleh supervisor.
  • Tidak ada dependency hell antar layanan โ€” setiap service berdiri sendiri.
  • Log per-layanan dikelola oleh svlogd, terpisah dari log sistem.
  • Startup time lebih cepat karena tidak ada unit orchestration yang kompleks.

Manajemen Layanan Server

Layanan server diaktifkan dengan membuat symlink ke /var/service/:

# Aktifkan layanan
ln -s /etc/sv/<layanan> /var/service/

# Cek status
sv status <layanan>

# Restart layanan
sv restart <layanan>

# Cek Status Semua Layanan Aktif
sv status /var/service/*

Contoh layanan umum untuk server:

LayananPaketService Name
Web servernginxnginx
Databasepostgresql16postgresql
SSH daemonopensshsshd
DNS resolverunboundunbound
Mail serverpostfixpostfix
Firewallnftablesnftables

Logging

T4n OS tidak menginstal syslog daemon secara default. Untuk server, disarankan menggunakan socklog:

sudo xbps-install -S socklog-void
ln -s /etc/sv/socklog-unix /var/service/
ln -s /etc/sv/nanoklogd    /var/service/

Log tersimpan di /var/log/socklog/ dan dapat dibaca dengan svlogtail.

Firewall

Untuk mengamankan server, aktifkan firewall dengan nftables atau iptables. Lihat dokumentasi Firewall untuk panduan lengkap.

Keamanan Dasar

Beberapa langkah keamanan yang disarankan untuk setup server:

  • Nonaktifkan login root via SSH โ€” edit /etc/ssh/sshd_config dan set PermitRootLogin no.
  • Gunakan key-based authentication, bukan password.
  • Aktifkan firewall dengan nftables atau iptables.
  • Pasang AppArmor untuk mandatory access control pada layanan kritis.
  • Pantau log secara berkala via socklog atau rsyslog.

Dokumentasi Lengkap

PlatformStatusLink
T4n OS๐Ÿšง Coming SoonT4n OS Server Documentation

@T4n-Labs ยท @Gh0sT4n

Server

Multimedia

Pengaturan Audio

T4n OS mendukung beberapa pilihan sistem audio. Pilih salah satu sesuai kebutuhan:

SistemKeterangan
PipeWirePilihan modern โ€” pengganti langsung PulseAudio, mendukung audio dan video
PulseAudioDibutuhkan oleh beberapa aplikasi proprietary
ALSALapisan audio dasar kernel Linux, tanpa daemon tambahan

Jika elogind tidak aktif, pastikan user tergabung di grup audio agar dapat mengakses perangkat audio.


@T4n-Labs ยท @Gh0sT4n

ALSA

ALSA (Advanced Linux Sound Architecture) menyediakan fungsionalitas audio dasar pada tingkat kernel.

Instalasi

sudo xbps-install -S alsa-utils

Tambahkan user ke grup audio untuk akses ke perangkat keras:

sudo usermod -aG audio $USER

Aktifkan layanan alsa untuk menyimpan dan memulihkan status volume saat boot:

sudo ln -s /etc/sv/alsa /var/service/

Kompatibilitas PulseAudio via apulse

Beberapa aplikasi mewajibkan PulseAudio. Gunakan apulse sebagai lapisan kompatibilitas yang menerjemahkan instruksi PulseAudio langsung ke ALSA:

sudo xbps-install -S apulse

Jalankan aplikasi dengan awalan apulse:

apulse firefox

Konfigurasi Kartu Suara Default

Identifikasi Kartu Suara

cat /proc/asound/modules

Contoh output:

0 snd_hda_intel
1 snd_hda_intel
2 snd_usb_audio

Metode A โ€” Konfigurasi ALSA

Edit /etc/asound.conf (sistem) atau ~/.asoundrc (per-pengguna). Contoh untuk menjadikan kartu nomor 2 sebagai default:

defaults.ctl.card 2;
defaults.pcm.card 2;

Metode B โ€” Modul Kernel

Atur urutan indeks kartu suara di /etc/modprobe.d/alsa.conf. Contoh agar audio USB selalu menjadi indeks pertama:

options snd_usb_audio index=0

Multi-Sumber (Dmix)

Plugin dmix memungkinkan ALSA memutar suara dari beberapa aplikasi secara bersamaan. Secara default aktif otomatis jika kartu suara tidak mendukung hardware mixing.

Untuk mengaktifkannya secara eksplisit, tambahkan ke /etc/asound.conf:

pcm.dsp {
    type plug
    slave.pcm "dmix"
}

Tips

  • alsamixer โ€” mixer volume berbasis terminal, tekan F6 untuk memilih kartu suara lain.
  • sudo alsactl store โ€” simpan pengaturan volume saat ini secara manual.

@T4n-Labs ยท @Gh0sT4n

PipeWire

PipeWire adalah server modern untuk menangani aliran audio dan video. PipeWire dapat terhubung dengan aplikasi yang dirancang untuk ALSA, PulseAudio, dan JACK โ€” serta mendukung Flatpak dan screensharing di Wayland melalui xdg-desktop-portal.

Persiapan

Sebelum mengaktifkan PipeWire, pastikan hal berikut terpenuhi:

  • D-Bus user session harus aktif. Jika DE atau window manager belum menyediakannya, jalankan sesi dengan dbus-run-session.
  • XDG_RUNTIME_DIR harus terdefinisi agar PipeWire berfungsi dengan benar.
  • Jika tidak menggunakan elogind, tambahkan user ke grup audio dan video:
sudo usermod -aG audio,video $USER

Instalasi

sudo xbps-install -S pipewire

Paket ini juga menginstal WirePlumber sebagai manajer sesi bawaan.

Konfigurasi WirePlumber

PipeWire tidak berfungsi tanpa manajer sesi. Aktifkan WirePlumber secara otomatis:

Global (sistem):

sudo mkdir -p /etc/pipewire/pipewire.conf.d
sudo ln -s /usr/share/examples/wireplumber/10-wireplumber.conf /etc/pipewire/pipewire.conf.d/

Per-pengguna:

mkdir -p ~/.config/pipewire/pipewire.conf.d
ln -s /usr/share/examples/wireplumber/10-wireplumber.conf ~/.config/pipewire/pipewire.conf.d/

Antarmuka PulseAudio

Banyak aplikasi membutuhkan antarmuka PulseAudio. Hapus paket pulseaudio jika masih terinstal, lalu aktifkan emulator PulseAudio di PipeWire:

Global (sistem):

sudo ln -s /usr/share/examples/pipewire/20-pipewire-pulse.conf /etc/pipewire/pipewire.conf.d/

Per-pengguna:

ln -s /usr/share/examples/pipewire/20-pipewire-pulse.conf ~/.config/pipewire/pipewire.conf.d/

Pengujian

Jalankan PipeWire secara manual untuk memastikan tidak ada error:

pipewire

Cek status WirePlumber:

wpctl status

Jika antarmuka PulseAudio aktif, verifikasi dengan:

pactl info
# Harus muncul: Server Name: PulseAudio (on PipeWire 0.x.x)

Autostart

Setelah dipastikan bekerja, aktifkan PipeWire saat login dengan salah satu cara berikut:

  • Desktop Environment โ€” Tambahkan pipewire ke daftar Startup Applications.
  • XDG Autostart โ€” Buat symlink ke folder autostart:
ln -s /usr/share/applications/pipewire.desktop ~/.config/autostart/
  • Window Manager โ€” Tambahkan pipewire & ke ~/.xinitrc atau script startup WM.

Fitur Opsional

FiturPaket
Bluetooth Audiolibspa-bluetooth
Integrasi ALSAalsa-pipewire
Integrasi JACKlibjack-pipewire
Antarmuka Grafisqpwgraph, helvum, atau pavucontrol

Troubleshooting

Error Umum

Pesan ErrorSolusi
Failed to connect to system busAktifkan D-Bus: sudo ln -s /etc/sv/dbus /var/service/
XDG_RUNTIME_DIR not setAtur variabel ini via elogind atau manual di .bash_profile
Hanya muncul "Dummy Output"WirePlumber belum berjalan atau user belum masuk grup audio

Integrasi ALSA Gagal

Jika aplikasi ALSA tidak mengeluarkan suara melalui PipeWire:

sudo mkdir -p /etc/alsa/conf.d
sudo ln -s /usr/share/alsa/alsa.conf.d/50-pipewire.conf         /etc/alsa/conf.d
sudo ln -s /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d

@T4n-Labs ยท @Gh0sT4n

PulseAudio

PulseAudio adalah server suara yang berfungsi sebagai perantara antara aplikasi dan perangkat keras audio. Meskipun PipeWire direkomendasikan untuk sistem modern, PulseAudio tetap menjadi pilihan yang stabil untuk kebutuhan audio tradisional.

Persiapan

Agar PulseAudio dapat mengakses perangkat keras audio, pilih salah satu:

  • Grup Audio (manual) โ€” Tambahkan user ke grup audio:
sudo usermod -aG audio $USER
  • Session Manager (otomatis) โ€” Gunakan elogind yang mengatur izin akses secara otomatis saat login.

D-Bus

Tergantung aplikasi yang digunakan, PulseAudio mungkin memerlukan D-Bus sistem atau sesi:

  • D-Bus sistem โ€” Pastikan layanan dbus sudah aktif.
  • D-Bus sesi โ€” Jika DE tidak menyediakannya, jalankan sesi dengan dbus-run-session.

Kompatibilitas ALSA

Untuk aplikasi lama yang hanya mendukung ALSA secara langsung, instal:

sudo xbps-install -S alsa-plugins-pulseaudio

Paket ini memungkinkan aplikasi ALSA mengalirkan audio melalui PulseAudio.

Manajemen Layanan

Menjalankan PulseAudio

Secara default PulseAudio berjalan otomatis saat dibutuhkan. Untuk menjalankan secara manual:

pulseaudio --daemonize=no --exit-idle-time=-1

Menonaktifkan Auto-Activation

Untuk mencegah PulseAudio aktif otomatis (misalnya saat menggunakan PipeWire atau ALSA murni), edit /etc/pulse/client.conf atau ~/.config/pulse/client.conf:

autospawn = no

Utilitas

PaketJenisKeterangan
pavucontrolGUI (GTK)Kelola volume dan perangkat audio
pulsemixerTUI (Ncurses)Mixer ringan berbasis terminal

@T4n-Labs ยท @Gh0sT4n

Bluetooth

Persiapan

Sebelum menggunakan Bluetooth, pastikan controller tidak terblokir:

rfkill

Contoh output:

ID TYPE      DEVICE    SOFT      HARD
0  wlan      phy0      unblocked unblocked
1  bluetooth hci0      blocked   unblocked

Jika status SOFT menunjukkan blocked, buka blokir secara software:

sudo rfkill unblock bluetooth

Jika HARD menunjukkan blocked, kemungkinan ada saklar fisik di laptop atau opsi di BIOS yang perlu diaktifkan terlebih dahulu.

Instalasi

sudo xbps-install -S bluez
ln -s /etc/sv/dbus /var/service/
ln -s /etc/sv/bluetoothd /var/service/

Tambahkan pengguna ke grup bluetooth:

sudo usermod -aG bluetooth <nama_user>

Lalu reboot agar perubahan grup diterapkan.

Merestart layanan dbus dapat mematikan proses yang sedang menggunakannya โ€” reboot lebih aman.

Dukungan Audio Bluetooth

Untuk menggunakan perangkat audio Bluetooth (speaker, headset, dll.):

Audio SystemPaket Tambahan
ALSAbluez-alsa
PulseAudioTidak diperlukan
PipeWirelibspa-bluetooth
# Contoh untuk PipeWire
sudo xbps-install -S libspa-bluetooth

Penggunaan

Kelola koneksi dan controller Bluetooth menggunakan bluetoothctl:

bluetoothctl

Contoh Pairing Perangkat

> power on
> agent on
> default-agent
> scan on
> pair XX:XX:XX:XX:XX:XX
> connect XX:XX:XX:XX:XX:XX
> trust XX:XX:XX:XX:XX:XX
> scan off
> exit

Ganti XX:XX:XX:XX:XX:XX dengan MAC address perangkat yang muncul saat scan on.

Konfigurasi

File konfigurasi utama: /etc/bluetooth/main.conf

Beberapa opsi yang umum diubah:

[Policy]
# Otomatis menyambung kembali ke perangkat yang dipercaya saat boot
AutoEnable=true

[General]
# Ubah nama controller Bluetooth
Name=T4nOS

@T4n-Labs ยท @Gh0sT4n

TeX Live

T4n OS menyediakan dua cara untuk menginstal TeX Live:

MetodePaketKeterangan
Via XBPStexlive, texlive-*Dikelola oleh xbps, tidak kompatibel dengan paket dari CTAN
Via tlmgr (CTAN)texlive-binDikelola langsung dari CTAN mirror, lebih fleksibel

โš ๏ธ Penting: Paket TeX yang diinstal via xbps dan via tlmgr tidak bisa saling berinteraksi. Pilih salah satu metode dan gunakan secara konsisten.

Contoh: pdflatex dari paket texlive-pdflatex (xbps) tidak bisa digunakan untuk mengkompilasi dokumen yang menggunakan paket yang diinstal via tlmgr. Solusinya adalah menjalankan tlmgr install pdflatex untuk mendapatkan versi yang kompatibel.

Instalasi

Metode tlmgr (Disarankan)

sudo xbps-install -S texlive-bin

Instal gnupg untuk verifikasi paket TeX:

sudo xbps-install -S gnupg

Metode XBPS

sudo xbps-install -S texlive

Konfigurasi Awal (tlmgr)

Setelah instalasi, perbarui variabel PATH:

source /etc/profile

Verifikasi bahwa direktori TeX Live sudah masuk ke PATH:

echo $PATH
# Pastikan ada path seperti: /opt/texlive/<tahun>/bin/x86_64-linux

Atur ukuran kertas default jika diperlukan:

sudo tlmgr paper a4      # Ukuran A4
sudo tlmgr paper letter  # Ukuran Letter (US)

Manajemen Paket (tlmgr)

Instal Semua Paket

sudo tlmgr install scheme-full

Instal Koleksi Paket

Lihat daftar koleksi yang tersedia:

tlmgr info collections

Lihat isi file dalam koleksi tertentu:

tlmgr info --list collection-<nama>

Instal koleksi:

sudo tlmgr install collection-<nama>

Instal Paket Tunggal

Cari paket terlebih dahulu:

tlmgr search --global <nama-paket>

Instal paket:

sudo tlmgr install <nama-paket>

Cari Paket Berdasarkan File

Berguna untuk mencari paket yang menyediakan font atau file tertentu:

tlmgr search --file <nama-file> --global

Hapus Paket

sudo tlmgr remove <nama-paket>

Update Semua Paket

sudo tlmgr update --all

Referensi

Dokumentasi lengkap tlmgr tersedia di tug.org/texlive/doc/tlmgr.html.


@T4n-Labs ยท @Gh0sT4n

Aplikasi Eksternal

Bahasa Pemrograman

T4n OS menyediakan sejumlah paket Python dan Lua di repositori. Sebisa mungkin, gunakan paket dari repositori T4n OS terlebih dahulu sebelum menggunakan package manager bahasa (pip, gem, dll.).

Jika menginstal library via package manager bahasa atau mengkompilasi dari source, kemungkinan perlu menginstal paket -devel yang sesuai. Hal ini terutama berlaku untuk pengguna musl libc, karena binary pre-built biasanya ditargetkan untuk glibc.

BahasaPackage ManagerPaket Devel
Python3pip, anaconda, virtualenvpython3-devel
Python2pip, anaconda, virtualenvpython2-devel
Rubygemruby-devel
Lualuarockslua-devel

Java

T4n OS menyediakan versi LTS dari OpenJDK. Versi yang tersedia: 8, 11, 17, dan 21.

PaketKeterangan
openjdkXJava Development Kit (JDK)
openjdkX-jreJava Runtime Environment
openjdkX-docDokumentasi developer
openjdkX-srcSource code Java
openjdkX-jmodsJava modules
openjdkX-static-libsStatic libraries

Ganti X dengan versi yang diinginkan, contoh openjdk21.

Beberapa Versi Java Bersamaan

T4n OS menggunakan xbps-alternatives untuk mengelola beberapa versi Java secara paralel. Symlink dikelola di:

  • /usr/lib/jvm/default-jdk
  • /usr/lib/jvm/default-jre

Untuk mengganti versi Java aktif:

sudo xbps-alternatives -s openjdk21

Setelah menginstal Java untuk pertama kali, perbarui variabel lingkungan:

source /etc/profile.d/jdk.sh

Atau login ulang ke sesi terminal.

Paket Terbatas (Restricted Packages)

Beberapa paket tidak dapat didistribusikan oleh T4n OS karena alasan lisensi, ukuran, atau kondisi lainnya (contoh: Discord). Paket-paket ini memiliki template build, namun harus dibangun secara lokal.

Arsitektur Non-x86_64

Beberapa paket tidak mendukung cross-compilation (contoh: pandoc) dan harus dibangun secara lokal di komputer dengan arsitektur dan libc yang sama dengan sistem target. Lihat README repositori void-packages untuk panduan build paket.

Flatpak

Flatpak adalah metode lain untuk menginstal aplikasi berpemilik eksternal pada Linux. Untuk informasi tentang penggunaan Flatpak dengan T4n OS (Based on Void Linux), lihat situs resminya. Dokumentasi Flatpak .

Troubleshooting Flatpak

Audio tidak berfungsi: Pastikan PulseAudio sudah berjalan sebelum meluncurkan aplikasi Flatpak. Auto-aktivasi PulseAudio mungkin tidak bekerja dengan benar. Pastikan PulseAudio berjalan sebelum meluncurkan program.

Aplikasi tidak bisa mengakses file sistem: Instal paket berikut sesuai kebutuhan:

sudo xbps-install -S xdg-user-dirs xdg-user-dirs-gtk xdg-utils

Lalu konfigurasi XDG Desktop Portals.

Beberapa Flatpak juga membutuhkan D-Bus dan/atau PulseAudio untuk berjalan.

Catatan: Sandboxing Flatpak tidak menjamin perlindungan dari fitur yang melanggar privasi atau keamanan dalam perangkat lunak proprietary.

AppImage

AppImage adalah format paket yang menyertakan aplikasi beserta semua dependensinya dalam satu file. Tidak perlu instalasi โ€” cukup jadikan executable dan jalankan:

chmod +x namaaplikasi.AppImage
./namaaplikasi.AppImage

Untuk keamanan tambahan, AppImage dapat dijalankan dalam sandbox menggunakan firejail:

sudo xbps-install -S firejail
firejail ./namaaplikasi.AppImage

Daftar aplikasi yang tersedia dalam format AppImage dapat ditemukan di AppImageHub.

Catatan: AppImage belum berfungsi pada instalasi musl.

Paket Octave

Beberapa paket Octave membutuhkan dependensi eksternal. Contoh untuk membangun paket control:

sudo xbps-install -S openblas-devel libgomp-devel libgfortran-devel gcc-fortran gcc

MATLAB

Untuk menggunakan fitur berikut di MATLAB:

  • Help browser
  • Live scripts
  • Add-on installer
  • Simulink

Instal paket libselinux:

sudo xbps-install -S libselinux

Steam

Steam dapat diinstal dengan dua cara:

MetodeCatatan
NativeMembutuhkan repositori nonfree diaktifkan
FlatpakTidak membutuhkan nonfree

Menyimpan Library Game di Drive Lain (Flatpak)

Gunakan flatpak override untuk memberikan akses ke drive lain:

flatpak override --user --filesystem=/path/ke/drive com.valvesoftware.Steam

@T4n-Labs ยท @Gh0sT4n

Mencetak (Printing)

T4n OS menggunakan CUPS (Common Unix Printing System) sebagai sistem pencetakan.

Instalasi CUPS

sudo xbps-install -S cups
ln -s /etc/sv/cupsd /var/service/

Tunggu hingga layanan cupsd aktif sebelum melanjutkan.

Driver Printer

Driverless Printing (Jaringan Modern)

Sebagian besar printer jaringan modern mendukung standar IPP Everywhere โ€” tidak memerlukan driver tambahan. Lihat daftar printer yang bersertifikat di pwg.org/printers.

cups-filters tetap diperlukan meskipun menggunakan driverless printing.

sudo xbps-install -S cups-filters

Driver per Merek

MerekPaketCatatan
Umumcups-filtersDriver dasar CUPS
GutenprintgutenprintMendukung banyak merek printer
HPhplipKhusus printer Hewlett-Packard
Brotherfoomatic-db, foomatic-db-nonfree, brother-brlasernonfree untuk laser
Epsonepson-inkjet-printer-escprKhusus printer inkjet Epson
Canoncnijfilter2PIXMA/MAXIFY โ€” butuh repo nonfree

Instalasi Driver HP

sudo xbps-install -S hplip
sudo hp-setup -i

Ikuti panduan interaktif โ€” pilihan default biasanya sudah mencukupi.

Instalasi Driver Brother

sudo xbps-install -S foomatic-db foomatic-db-nonfree brother-brlaser

Instalasi Driver Epson

sudo xbps-install -S epson-inkjet-printer-escpr

Instalasi Driver Canon PIXMA/MAXIFY

Aktifkan repositori nonfree terlebih dahulu, lalu:

sudo xbps-install -S cnijfilter2

Menambahkan Printer

Otomatis (ZeroConf / IPP Everywhere)

Printer dengan dukungan IPP Everywhere dapat ditemukan dan dikonfigurasi secara otomatis:

sudo xbps-install -S avahi nss-mdns
ln -s /etc/sv/avahi-daemon /var/service/

Via Web Interface

  1. Buka browser dan akses: http://localhost:631
  2. Buka tab Administration โ†’ Printers โ†’ Add Printer
  3. Login menggunakan akun yang tergabung di grup lpadmin:
sudo usermod -aG lpadmin <nama_user>

Via GUI (system-config-printer)

sudo xbps-install -S system-config-printer
sudo system-config-printer

Untuk mengizinkan pengguna biasa menjalankannya tanpa root, instal cups-pk-helper:

sudo xbps-install -S cups-pk-helper

Desktop environment kamu mungkin sudah memiliki dialog printer bawaan โ€” cek dokumentasi DE masing-masing.

Via Command Line

lpadmin -p <nama_printer> -E -v <device_uri> -m <driver>

Troubleshooting

Printer USB Tidak Terdeteksi

Temukan URI device secara manual:

sudo /usr/lib/cups/backend/usb

Gunakan URI yang muncul saat menambahkan printer secara manual melalui web interface atau lpadmin.


@T4n-Labs ยท @Gh0sT4n

Container & Virtual Machine

Bagian ini menjelaskan cara mengatur perangkat lunak container dan virtual machine yang tersedia di T4n OS.

Daftar Isi


@T4n-Labs ยท @Gh0sT4n

Chroot & Container

Chroot dan container dapat digunakan untuk berbagai tujuan, antara lain:

  • Menjalankan perangkat lunak berbasis glibc di sistem musl (atau sebaliknya).
  • Menjalankan aplikasi dalam lingkungan yang lebih terkontrol atau terisolasi.
  • Membuat rootfs untuk proses instalasi sistem baru (bootstrapping).

Pembuatan Chroot

Menggunakan xvoidstrap (Disarankan)

Cara termudah menggunakan xvoidstrap dari paket xtools:

  1. Buat direktori tujuan:
sudo mkdir <direktori_chroot>
  1. Instal sistem dasar:
sudo XBPS_ARCH=<arsitektur> xvoidstrap <direktori_chroot> base-container <paket_lainnya>

<paket_lainnya> bersifat opsional jika ingin menginstal paket tambahan sejak awal.

Manual via xbps-install

  1. Siapkan kunci repositori:
sudo mkdir -p "<direktori_chroot>/var/db/xbps/keys"
sudo cp -a /var/db/xbps/keys/* "<direktori_chroot>/var/db/xbps/keys"
  1. Instal paket base-container:
sudo XBPS_ARCH=<arsitektur> xbps-install -S -r <direktori_chroot> -R <url_repository> base-container

Penggunaan Chroot

Menggunakan xchroot

Gunakan xchroot (dari xtools) untuk masuk ke chroot secara otomatis tanpa mounting manual:

sudo xchroot <direktori_chroot>

Manual

  1. Salin konfigurasi jaringan (opsional):
sudo cp /etc/resolv.conf <direktori_chroot>/etc/
  1. Mount direktori sistem:
sudo mount -t proc  none <direktori_chroot>/proc
sudo mount -t sysfs none <direktori_chroot>/sys
sudo mount --rbind  /dev <direktori_chroot>/dev
sudo mount --rbind  /run <direktori_chroot>/run
  1. Masuk ke chroot:
sudo chroot <direktori_chroot> /bin/bash

Selalu lakukan umount setelah selesai. Menghapus direktori chroot tanpa unmount terlebih dahulu dapat merusak sistem host.

Alternatif Lain

Bubblewrap (Sandboxing)

bwrap dari paket bubblewrap memungkinkan isolasi yang lebih kuat dan tidak membutuhkan akses root:

bwrap --bind <direktori_chroot> / \
      --dev /dev --proc /proc \
      --bind /sys /sys --bind /run /run \
      --ro-bind /etc/resolv.conf /etc/resolv.conf \
      sh

Flatpak

Solusi praktis untuk menjalankan aplikasi grafis atau proprietary lintas pustaka (glibc/musl) secara aman dan terisolasi.

Docker / Podman

T4n OS menyediakan image OCI resmi yang dapat digunakan dengan docker atau podman โ€” solusi yang lebih matang tanpa perlu membuat direktori chroot secara manual.


@T4n-Labs ยท @Gh0sT4n

libvirt

libvirt adalah API dan daemon untuk mengelola platform virtualisasi. Mendukung berbagai teknologi seperti KVM, QEMU, LXC, Bhyve, Xen, VMware, hingga Hyper-V.

Instalasi

sudo xbps-install -S libvirt dbus

Jika menggunakan QEMU/KVM, pastikan paket qemu juga terinstal.

Aktifkan layanan yang diperlukan:

sudo ln -s /etc/sv/dbus       /var/service/
sudo ln -s /etc/sv/libvirtd   /var/service/
sudo ln -s /etc/sv/virtlockd  /var/service/
sudo ln -s /etc/sv/virtlogd   /var/service/

Akses Non-Root

Secara default, perintah manajemen virtualisasi memerlukan akses root. Untuk menjalankan sebagai pengguna biasa:

  1. Pastikan paket polkit dan dbus terinstal serta layanan dbus aktif.
  2. Tambahkan user ke grup libvirt:
sudo usermod -aG libvirt $USER

Log out dan log in kembali agar perubahan grup diterapkan.

Antarmuka Manajemen

CLI โ€” virsh

Paket libvirt menyertakan virsh, shell interaktif untuk membuat, mengonfigurasi, dan menjalankan VM serta mengelola jaringan dan penyimpanan:

virsh list --all

Untuk mengonfigurasi daemon libvirtd secara langsung, gunakan virt-admin.

GUI โ€” virt-manager

sudo xbps-install -S virt-manager virt-manager-tools

virt-manager menyediakan antarmuka grafis untuk memantau statistik VM dan mengakses konsol sistem tamu.

Referensi

  • Libvirt Wiki โ€” Dokumentasi teknis dan informasi umum.
  • man virsh โ€” Manual CLI virsh.
  • man libvirtd โ€” Manual daemon libvirt.

@T4n-Labs ยท @Gh0sT4n

LXC (Linux Containers)

Proyek Linux Containers mencakup empat subproyek utama:

SubproyekKeterangan
LXCInti dari Linux Containers
LXCFSFilesystem virtual untuk container
IncusFork komunitas dari LXD, dikelola oleh kreator asli LXD
distrobuilderTool untuk membangun image container

Catatan: CGManager sudah deprecated (digantikan oleh CGroup namespace di kernel modern). LXD kini menjadi proyek Canonical โ€” Incus hadir sebagai alternatif berbasis komunitas.

Container Unprivileged

Container unprivileged meningkatkan keamanan dengan memetakan UID/GID di dalam container ke range yang tidak digunakan oleh host.

Delegasi UID/GID Subordinat

Edit /etc/subuid dan /etc/subgid untuk mendelegasikan range:

root:1000000:65536
user:2000000:65536

Format setiap baris: <user>:<id_awal>:<jumlah_id>

FieldKeterangan
userPengguna yang mendapat delegasi range
1000000ID terkecil dalam range
65536Jumlah ID berurutan dalam range

Jumlah ID sebaiknya kelipatan 65536. Pastikan range antar pengguna tidak saling tumpang tindih.

Mengonfigurasi LXC

sudo xbps-install -S lxc

Container privileged (sebagai root) tidak memerlukan konfigurasi tambahan โ€” langsung gunakan perintah lxc-*.

File Konfigurasi Mapping ID

Sebelum membuat container, tentukan mapping UID/GID di file lxc.conf:

Tipe UserLokasi File
root/etc/lxc/default.conf
User biasa~/.config/lxc/default.conf

Tambahkan mapping berikut:

lxc.idmap = u 0 1000000 65536
lxc.idmap = g 0 1000000 65536
FieldKeterangan
uUID mapping
gGID mapping
0Awal range UID/GID di dalam container
1000000Awal range UID/GID di host
65536Jumlah ID yang dipetakan

Konfigurasi Jaringan (User Non-Root)

Edit /etc/lxc/lxc-usernet sebagai root untuk mengizinkan user membuat perangkat jaringan virtual:

user veth lxcbr0 10

Baris ini mengizinkan user membuat hingga 10 perangkat veth yang terhubung ke bridge lxcbr0.

Membuat Container

lxc-create -n mycontainer -t download -- \
    --dist voidlinux --release current --arch amd64

Untuk image musl, tambahkan --variant musl. Lihat LXC Image Server untuk daftar container yang tersedia.

Lokasi Penyimpanan Container

TipeLokasi Default
Container sistem/var/lib/lxc
Container user~/.local/share/lxc

Nilai ini dapat diubah via lxc.lxcpath di lxc.system.conf.

Tips keamanan: Secara default, semua container berbagi mapping UID/GID yang sama. Untuk mengisolasi container satu sama lain, ubah lxc.idmap ke range unik sebelum membuat setiap container.

Incus (Alternatif yang Disarankan)

Incus menyediakan antarmuka yang lebih modern untuk mengelola container dan virtual machine, tanpa konfigurasi manual seperti di atas.

Instalasi

Set CGROUP_MODE di /etc/rc.conf:

CGROUP_MODE=unified

Instal dan aktifkan Incus:

sudo xbps-install -S incus
ln -s /etc/sv/incus /var/service/

Akses Pengguna

# Akses penuh
sudo usermod -aG _incus-admin <nama_user>

# Akses terbatas
sudo usermod -aG _incus <nama_user>
ln -s /etc/sv/incus-user /var/service/

โš ๏ธ incus-user akan menginisialisasi profil default Incus saat pertama kali dijalankan. Jika ingin mengontrol inisialisasi sendiri, jalankan incus admin init sebelum mengaktifkan incus-user.

incus-user juga dapat menggantikan konfigurasi jaringan profil default jika dianggap tidak valid โ€” ini terjadi saat boot, bukan saat user memanggil Incus.

Dependensi Tambahan

sudo xbps-install -S qemu edk2-ovmf   # Untuk menjalankan virtual machine
sudo xbps-install -S skopeo            # Untuk menjalankan OCI container

Migrasi dari LXD / LXC

sudo xbps-install -S incus-tools

# Migrasi dari LXD
lxd-to-incus

# Migrasi dari LXC
lxc-to-incus

LXD

LXD adalah alternatif antarmuka LXC yang kini dikelola oleh Canonical.

sudo xbps-install -S lxd
ln -s /etc/sv/lxd /var/service/
sudo usermod -aG lxd <nama_user>

Gunakan perintah lxc untuk mengelola instance LXD.


@T4n-Labs ยท @Gh0sT4n

KVM (Kernel-based Virtual Machine)

KVM adalah solusi virtualisasi berbasis kernel Linux yang memungkinkan menjalankan virtual machine (VM) dengan performa mendekati native. KVM bekerja dengan mengubah Linux menjadi hypervisor tipe-1.

Persyaratan

Pastikan prosesor mendukung virtualisasi hardware:

# Intel
grep -c vmx /proc/cpuinfo

# AMD
grep -c svm /proc/cpuinfo

Jika output bernilai lebih dari 0, prosesor mendukung virtualisasi. Pastikan fitur ini juga sudah diaktifkan di BIOS/UEFI.

Cek apakah modul KVM sudah dimuat:

lsmod | grep kvm

Instalasi

Paket Utama

sudo xbps-install -S qemu

QEMU adalah emulator dan virtualizer yang bekerja bersama KVM untuk menjalankan VM dengan akselerasi hardware.

Paket Tambahan (Opsional)

PaketFungsi
libvirtAPI dan daemon untuk mengelola VM
virt-managerGUI untuk mengelola VM via libvirt
virt-viewerTampilan konsol VM (VNC/SPICE)
edk2-ovmfFirmware UEFI untuk VM
spice-vdagentIntegrasi clipboard dan resolusi layar untuk SPICE
sudo xbps-install -S libvirt virt-manager virt-viewer edk2-ovmf

Konfigurasi

Tambahkan Pengguna ke Grup yang Diperlukan

sudo usermod -aG kvm <nama_user>
sudo usermod -aG libvirt <nama_user>   # Jika menggunakan libvirt

Login ulang agar perubahan grup diterapkan.

Aktifkan Layanan libvirt

ln -s /etc/sv/libvirtd /var/service/
ln -s /etc/sv/virtlogd /var/service/

Konfigurasi Jaringan (NAT)

libvirt secara default membuat jaringan NAT (virbr0) untuk VM. Aktifkan dan set agar otomatis start:

sudo virsh net-start default
sudo virsh net-autostart default

Konfigurasi Jaringan (Bridge)

Untuk VM yang bisa diakses di jaringan lokal seperti host, buat bridge interface. Tambahkan ke /etc/rc.local:

ip link add name br0 type bridge
ip link set eth0 master br0
ip link set eth0 up
ip link set br0 up

Membuat dan Menjalankan VM

Via QEMU Langsung (CLI)

Buat disk image untuk VM:

qemu-img create -f qcow2 vm-disk.qcow2 20G

Jalankan VM dengan akselerasi KVM:

qemu-system-x86_64 \
    -enable-kvm \
    -m 2G \
    -smp 2 \
    -drive file=vm-disk.qcow2,format=qcow2 \
    -cdrom /path/ke/installer.iso \
    -boot d \
    -net nic \
    -net user

Penjelasan opsi umum:

OpsiKeterangan
-enable-kvmAktifkan akselerasi KVM
-m 2GAlokasi RAM untuk VM
-smp 2Jumlah CPU virtual
-driveDisk image VM
-cdromFile ISO installer
-boot dBoot dari CD-ROM

Via virt-manager (GUI)

Jalankan virt-manager dan ikuti wizard untuk membuat VM baru. virt-manager menyediakan antarmuka grafis untuk seluruh siklus hidup VM.

Via virsh (CLI libvirt)

# Lihat daftar VM
virsh list --all

# Jalankan VM
virsh start <nama_vm>

# Hentikan VM
virsh shutdown <nama_vm>

# Matikan paksa
virsh destroy <nama_vm>

# Hapus VM
virsh undefine <nama_vm> --remove-all-storage

VM dengan UEFI

Untuk VM yang membutuhkan firmware UEFI (contoh: Windows 11, distro modern):

Salin file VARS terlebih dahulu agar bisa ditulis per-VM:

cp /usr/share/edk2-ovmf/x64/OVMF_VARS.fd ./OVMF_VARS.fd

Jalankan VM:

qemu-system-x86_64 \
    -enable-kvm \
    -m 4G \
    -smp 4 \
    -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.fd \
    -drive if=pflash,format=raw,file=OVMF_VARS.fd \
    -drive file=vm-disk.qcow2,format=qcow2

Berbagi File antara Host dan VM

Metode 9P (VirtFS)

Tambahkan opsi berikut ke perintah QEMU:

-fsdev local,security_model=passthrough,id=fsdev0,path=/path/di/host \
-device virtio-9p-pci,id=fs0,fsdev=fsdev0,mount_tag=hostshare

Mount di dalam VM:

mount -t 9p -o trans=virtio hostshare /mnt/shared

Troubleshooting

KVM Permission Denied

ls -l /dev/kvm
# Output: crw-rw---- 1 root kvm ...

# Pastikan user sudah di grup kvm
groups <nama_user>

VM Lambat / Tidak Ada Akselerasi

Verifikasi KVM aktif di dalam VM:

cat /proc/cpuinfo | grep hypervisor

Pastikan perintah QEMU menggunakan -enable-kvm dan CPU virtual dengan model yang tepat:

-cpu host   # Gunakan CPU host secara langsung (performa terbaik)

libvirtd Gagal Start

Periksa log:

cat /var/log/libvirt/libvirtd.log

Pastikan modul kernel sudah dimuat:

sudo modprobe kvm
sudo modprobe kvm_intel   # Intel
# atau
sudo modprobe kvm_amd     # AMD

@T4n-Labs ยท @Gh0sT4n

QEMU

QEMU (Quick Emulator) adalah emulator dan virtualizer open-source yang mampu menjalankan sistem operasi dan program untuk berbagai arsitektur. QEMU dapat berjalan dalam dua mode:

ModeKeterangan
Full systemEmulasi sistem penuh termasuk CPU, memori, dan perangkat keras
User modeMenjalankan binary arsitektur lain langsung di atas kernel host

Dikombinasikan dengan KVM, QEMU dapat menjalankan VM dengan performa mendekati native. Lihat dokumentasi KVM untuk penggunaan bersama KVM.

Instalasi

sudo xbps-install -S qemu

Paket qemu menyertakan emulator untuk semua arsitektur yang didukung:

BinaryArsitektur
qemu-system-x86_64x86 64-bit
qemu-system-i386x86 32-bit
qemu-system-aarch64ARM 64-bit (aarch64)
qemu-system-armARM 32-bit
qemu-system-riscv64RISC-V 64-bit
qemu-system-ppc64PowerPC 64-bit
qemu-system-mipsMIPS

Manajemen Disk Image

Membuat Disk Image

# Format qcow2 (disarankan โ€” mendukung snapshot dan kompresi)
qemu-img create -f qcow2 disk.qcow2 20G

# Format raw (performa lebih tinggi, ukuran tetap)
qemu-img create -f raw disk.raw 20G

Melihat Info Disk Image

qemu-img info disk.qcow2

Mengubah Ukuran Disk Image

qemu-img resize disk.qcow2 +10G   # Tambah 10GB
qemu-img resize disk.qcow2 30G    # Set ke ukuran tertentu

Konversi Format Disk

# raw โ†’ qcow2
qemu-img convert -f raw -O qcow2 disk.raw disk.qcow2

# vmdk โ†’ qcow2 (dari VMware)
qemu-img convert -f vmdk -O qcow2 disk.vmdk disk.qcow2

Membuat Snapshot

# Buat snapshot
qemu-img snapshot -c nama_snapshot disk.qcow2

# Lihat daftar snapshot
qemu-img snapshot -l disk.qcow2

# Restore snapshot
qemu-img snapshot -a nama_snapshot disk.qcow2

# Hapus snapshot
qemu-img snapshot -d nama_snapshot disk.qcow2

Menjalankan VM

Perintah Dasar

qemu-system-x86_64 \
    -enable-kvm \
    -m 2G \
    -smp 2 \
    -drive file=disk.qcow2,format=qcow2 \
    -cdrom installer.iso \
    -boot d

Opsi Umum

OpsiKeterangan
-enable-kvmAktifkan akselerasi KVM
-m <size>RAM yang dialokasikan (contoh: 2G, 512M)
-smp <n>Jumlah CPU virtual
-cpu hostGunakan CPU host langsung (performa terbaik)
-drive file=<path>Disk image VM
-cdrom <path>File ISO
-boot <target>Urutan boot: c = disk, d = CD, n = network
-name <nama>Nama VM (tampil di title bar)
-snapshotJalankan tanpa menyimpan perubahan ke disk
-nographicMode tanpa tampilan grafis (serial console)
-daemonizeJalankan QEMU di background

Konfigurasi Display

SDL (Default)

-display sdl

GTK

-display gtk

VNC

-display vnc=:0   # Akses via VNC di port 5900
-display vnc=:1   # Port 5901

Koneksi dari host lain:

vncviewer localhost:5900

SPICE (Disarankan untuk Desktop VM)

-spice port=5930,disable-ticketing=on \
-device virtio-serial \
-chardev spicevmc,id=vdagent,debug=0,name=vdagent \
-device virtserialport,chardev=vdagent,name=com.redhat.spice.0

Koneksi:

remote-viewer spice://localhost:5930

Headless

-nographic
-serial mon:stdio

Konfigurasi Jaringan

User Networking (NAT) โ€” Default

Paling mudah, tidak perlu konfigurasi tambahan. VM bisa akses internet tapi tidak bisa diakses dari luar:

-net nic -net user

Port forwarding dari host ke VM:

-net nic -net user,hostfwd=tcp::2222-:22    # SSH ke VM via port 2222
-net nic -net user,hostfwd=tcp::8080-:80    # HTTP ke VM via port 8080

TAP Networking (Bridge)

VM dapat diakses di jaringan lokal seperti perangkat fisik. Buat bridge terlebih dahulu (lihat dokumentasi KVM):

-netdev tap,id=net0,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=net0

Virtio (Performa Terbaik)

-device virtio-net-pci,netdev=net0 \
-netdev user,id=net0

Akselerasi dan Performa

CPU

-cpu host                    # Gunakan CPU host secara langsung
-cpu host,+vmx               # Tambahkan fitur nested virtualization
-smp 4,sockets=1,cores=4     # 4 core dalam 1 socket

Memori

-m 4G                        # RAM statis 4GB
-m 2G,slots=2,maxmem=8G      # RAM awal 2GB, bisa di-hotplug hingga 8GB

Disk (VirtIO โ€” Performa Terbaik)

-drive file=disk.qcow2,format=qcow2,if=virtio

Disk (Cache)

-drive file=disk.qcow2,format=qcow2,cache=writeback    # Performa baik
-drive file=disk.qcow2,format=qcow2,cache=none         # Aman untuk data kritis

Emulasi Arsitektur Lain

Jalankan Binary ARM di x86_64 (User Mode)

sudo xbps-install -S qemu-user-aarch64 qemu-user-arm
qemu-aarch64 /path/ke/binary-arm64
qemu-arm /path/ke/binary-arm32

VM ARM64 di x86_64 (Full System)

qemu-system-aarch64 \
    -machine virt \
    -cpu cortex-a57 \
    -m 2G \
    -drive file=disk.qcow2,format=qcow2 \
    -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2-ovmf/aarch64/QEMU_EFI.fd

UEFI untuk VM

# Salin VARS per VM
cp /usr/share/edk2-ovmf/x64/OVMF_VARS.fd ./OVMF_VARS.fd

# Jalankan dengan UEFI
qemu-system-x86_64 \
    -enable-kvm \
    -m 4G \
    -drive if=pflash,format=raw,readonly=on,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.fd \
    -drive if=pflash,format=raw,file=./OVMF_VARS.fd \
    -drive file=disk.qcow2,format=qcow2

Monitor QEMU

Saat VM berjalan, akses QEMU monitor dengan Ctrl+Alt+2, kembali ke VM dengan Ctrl+Alt+1.

Perintah umum di monitor:

info status          # Status VM
info block           # Info disk
savevm <nama>        # Simpan state VM (live snapshot)
loadvm <nama>        # Load state VM
system_powerdown     # Kirim sinyal shutdown ke VM
quit                 # Matikan QEMU

Monitor juga bisa diakses via socket:

-monitor unix:/tmp/qemu-monitor.sock,server,nowait

# Koneksi ke monitor
socat - unix-connect:/tmp/qemu-monitor.sock

Contoh Lengkap

VM Desktop Linux

qemu-system-x86_64 \
    -enable-kvm \
    -name "T4n-VM" \
    -m 4G \
    -smp 4 \
    -cpu host \
    -drive file=disk.qcow2,format=qcow2,if=virtio,cache=writeback \
    -cdrom installer.iso \
    -boot order=dc \
    -display gtk \
    -device virtio-net-pci,netdev=net0 \
    -netdev user,id=net0,hostfwd=tcp::2222-:22 \
    -device virtio-balloon \
    -usb -device usb-tablet

VM Server Headless

qemu-system-x86_64 \
    -enable-kvm \
    -name "server-vm" \
    -m 2G \
    -smp 2 \
    -cpu host \
    -drive file=server.qcow2,format=qcow2,if=virtio \
    -nographic \
    -serial mon:stdio \
    -device virtio-net-pci,netdev=net0 \
    -netdev user,id=net0,hostfwd=tcp::2222-:22 \
    -daemonize

Troubleshooting

Layar Hitam saat Boot

Tambahkan -vga virtio atau -vga std dan pastikan driver guest sudah terinstal.

Keyboard/Mouse Tidak Responsif

Gunakan tablet USB untuk menghindari masalah mouse capture:

-usb -device usb-tablet

Performa Lambat

  • Pastikan -enable-kvm digunakan.
  • Gunakan -cpu host bukan -cpu qemu64.
  • Gunakan driver virtio untuk disk dan jaringan.
  • Pastikan user tergabung di grup kvm.

Jaringan VM Tidak Bisa Akses Internet

Cek apakah IP forwarding aktif di host:

cat /proc/sys/net/ipv4/ip_forward
# Harus bernilai 1

# Aktifkan jika belum
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

@T4n-Labs ยท @Gh0sT4n

VMware

VMware adalah platform virtualisasi proprietary yang memungkinkan menjalankan virtual machine di atas sistem host. T4n OS dapat digunakan sebagai host (menjalankan VMware) maupun sebagai guest (diinstal di dalam VMware).

T4n OS sebagai Host

VMware Workstation Player

VMware Workstation Player adalah versi gratis untuk penggunaan personal.

Instalasi

Unduh installer dari vmware.com, lalu:

chmod +x VMware-Player-*.bundle
sudo ./VMware-Player-*.bundle

Dependensi

sudo xbps-install -S linux-headers gcc make

VMware membutuhkan modul kernel yang dikompilasi saat instalasi. Pastikan versi header sesuai dengan kernel yang berjalan:

uname -r              # Cek versi kernel aktif
xbps-query -Rs linux  # Cek paket kernel tersedia

Kompilasi Modul Kernel

Jika modul kernel gagal dikompilasi setelah update kernel:

sudo vmware-modconfig --console --install-all

Aktifkan Layanan VMware

# via runit
sudo /etc/init.d/vmware start

VMware Workstation Pro

Versi berbayar dengan fitur lebih lengkap (snapshot lanjutan, clone, dsb.). Proses instalasi sama seperti Player.

T4n OS sebagai Guest

Instalasi T4n OS di VMware

  1. Buat VM baru di VMware.
  2. Pilih "Other Linux 5.x or later kernel 64-bit" sebagai OS type.
  3. Alokasikan resource:
ResourceMinimumRekomendasi
RAM1 GB2 GB+
Storage10 GB20 GB+
CPU1 core2 core+
  1. Mount ISO T4n OS dan instal seperti biasa.

open-vm-tools

open-vm-tools menyediakan integrasi antara host dan guest:

  • Sinkronisasi clipboard.
  • Drag and drop file.
  • Resolusi layar otomatis.
  • Sinkronisasi waktu host-guest.
  • Performa grafis lebih baik.

Instalasi

sudo xbps-install -S open-vm-tools

Untuk guest dengan sesi grafis (X11/Wayland):

sudo xbps-install -S open-vm-tools-desktop

Aktifkan Layanan

ln -s /etc/sv/vmtoolsd /var/service/

Verifikasi:

vmware-toolbox-cmd --version

Konfigurasi Resolusi Layar

Jika resolusi layar tidak otomatis menyesuaikan, buat file /etc/X11/xorg.conf.d/10-vmware.conf:

Section "Device"
    Identifier "VMware SVGA"
    Driver     "vmware"
EndSection

Atau gunakan driver modesetting:

Section "Device"
    Identifier "GPU"
    Driver     "modesetting"
EndSection

Shared Folders

Aktifkan shared folders di pengaturan VM VMware, lalu mount di guest:

# Lihat daftar shared folder
vmware-hgfsclient

# Mount shared folder
sudo mkdir -p /mnt/hgfs
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other,uid=1000

Untuk mount otomatis saat boot, tambahkan ke /etc/fstab:

.host:/    /mnt/hgfs    fuse.vmhgfs-fuse    allow_other,uid=1000    0    0

Shared Clipboard & Drag-Drop

Pastikan layanan vmtoolsd aktif di dalam guest:

sv status vmtoolsd
sv restart vmtoolsd   # Jika perlu

Jika clipboard masih tidak berfungsi:

sudo xbps-install -S open-vm-tools-desktop gtkmm

Troubleshooting

Modul Kernel Gagal Dikompilasi

Pastikan header kernel sesuai dengan versi yang berjalan:

uname -r
# Contoh output: 6.6.30_1

sudo xbps-install -S linux6.6-headers
sudo vmware-modconfig --console --install-all

Layar Hitam setelah Boot

Tambahkan parameter nomodeset ke kernel command line di /etc/default/grub, atau instal driver VMware untuk Xorg:

sudo xbps-install -S xf86-video-vmware

open-vm-tools Tidak Terdeteksi

Verifikasi modul kernel sudah dimuat:

lsmod | grep vmw
modprobe vmw_balloon
modprobe vmxnet3

Waktu Guest Tidak Sinkron

vmware-toolbox-cmd timesync enable

Perbandingan Solusi Virtualisasi

AspekVMwareKVM/QEMUVirtualBox
LisensiProprietaryOpen-sourceOpen-source
PerformaSangat baikSangat baikBaik
Kemudahan setupMudahSedangMudah
Integrasi LinuxBaikNativeBaik
Snapshotโœ…โœ…โœ…
Nested virt.โœ… (Pro)โœ…Terbatas
BiayaGratis (Player)GratisGratis

@T4n-Labs ยท @Gh0sT4n

VirtualBox

VirtualBox adalah aplikasi virtualisasi open-source dari Oracle yang memungkinkan menjalankan berbagai sistem operasi sebagai virtual machine (VM). T4n OS dapat digunakan sebagai host (menjalankan VirtualBox) maupun sebagai guest (diinstal di dalam VirtualBox).

T4n OS sebagai Host

Instalasi

VirtualBox tersedia di repositori nonfree T4n OS:

sudo xbps-install -S void-repo-nonfree
sudo xbps-install -Su
sudo xbps-install -S virtualbox-ose

Untuk dukungan modul kernel:

sudo xbps-install -S virtualbox-ose-dkms

Konfigurasi Awal

Tambahkan pengguna ke grup vboxusers:

sudo usermod -aG vboxusers $USER

Login ulang agar perubahan grup diterapkan.

Muat Modul Kernel

sudo modprobe vboxdrv
sudo modprobe vboxnetflt
sudo modprobe vboxnetadp

Untuk memuat otomatis saat boot, buat /etc/modules-load.d/virtualbox.conf:

vboxdrv
vboxnetflt
vboxnetadp

Jalankan VirtualBox

virtualbox

T4n OS sebagai Guest

Membuat VM untuk T4n OS

  1. Buka VirtualBox โ†’ klik New.
  2. Isi konfigurasi:
SettingNilai yang Disarankan
NameT4n OS (atau sesuai keinginan)
TypeLinux
VersionOther Linux (64-bit)
RAMMinimal 1 GB, disarankan 2 GB+
StorageMinimal 10 GB, disarankan 20 GB+
CPUMinimal 1 core, disarankan 2 core+
Video Memory128 MB
  1. Mount ISO T4n OS di Settings โ†’ Storage โ†’ Controller: IDE โ†’ Empty.
  2. Jalankan VM dan instal T4n OS seperti biasa.

VirtualBox Guest Additions

Guest Additions menyediakan integrasi antara host dan guest:

  • Resolusi layar otomatis.
  • Sinkronisasi clipboard.
  • Drag and drop file.
  • Shared folders.
  • Pointer mouse terintegrasi.
  • Sinkronisasi waktu host-guest.

Instalasi

sudo xbps-install -S virtualbox-ose-guest-utils virtualbox-ose-guest-dkms

Untuk sesi grafis (X11/Wayland):

sudo xbps-install -S virtualbox-ose-guest-utils-x11

Muat modul kernel guest:

sudo modprobe vboxguest
sudo modprobe vboxsf
sudo modprobe vboxvideo

Untuk memuat otomatis saat boot, buat /etc/modules-load.d/vbox-guest.conf:

vboxguest
vboxsf
vboxvideo

Tambahkan pengguna ke grup vboxsf untuk akses shared folders:

sudo usermod -aG vboxsf <nama_user>

Konfigurasi

Resolusi Layar Otomatis

Pastikan virtualbox-ose-guest-utils-x11 sudah terinstal. Jika resolusi tidak menyesuaikan otomatis, buat /etc/X11/xorg.conf.d/10-vbox.conf:

Section "Device"
    Identifier "VirtualBox GPU"
    Driver     "modesetting"
EndSection

Shared Folders

  1. Di VirtualBox host, buka Settings โ†’ Shared Folders โ†’ Add.
  2. Tentukan path folder di host dan nama share (contoh: hostfolder).
  3. Centang Auto-mount jika ingin otomatis mount.

Mount manual di dalam guest:

sudo mkdir -p /mnt/shared
sudo mount -t vboxsf hostfolder /mnt/shared

Mount otomatis via /etc/fstab:

hostfolder    /mnt/shared    vboxsf    defaults,uid=1000,gid=1000    0    0

Ganti uid dan gid dengan ID pengguna (id -u dan id -g).

Shared Clipboard

Di VirtualBox host: Settings โ†’ General โ†’ Advanced โ†’ Shared Clipboard โ†’ pilih Bidirectional.

Drag and Drop

Di VirtualBox host: Settings โ†’ General โ†’ Advanced โ†’ Drag'n'Drop โ†’ pilih Bidirectional.

Jaringan

ModeKeterangan
NATVM bisa akses internet, tidak bisa diakses dari luar (default)
BridgedVM seperti perangkat fisik di jaringan lokal
Host-onlyVM hanya bisa berkomunikasi dengan host, tidak ke internet
InternalVM hanya bisa berkomunikasi dengan VM lain dalam jaringan internal
NAT NetworkSeperti NAT tapi beberapa VM bisa saling berkomunikasi

Ganti mode di: Settings โ†’ Network โ†’ Adapter 1 โ†’ Attached to

Snapshot

Machine โ†’ Take Snapshot       # Buat snapshot
Machine โ†’ Restore Snapshot    # Restore ke snapshot
Machine โ†’ Delete Snapshot     # Hapus snapshot

Via command line:

VBoxManage snapshot "NamaVM" take    "NamaSnapshot"   # Buat
VBoxManage snapshot "NamaVM" list                     # Daftar
VBoxManage snapshot "NamaVM" restore "NamaSnapshot"   # Restore
VBoxManage snapshot "NamaVM" delete  "NamaSnapshot"   # Hapus

VBoxManage (CLI)

VBoxManage list vms                                      # Daftar VM
VBoxManage list runningvms                               # VM yang berjalan
VBoxManage startvm "NamaVM" --type headless              # Jalankan headless
VBoxManage controlvm "NamaVM" poweroff                   # Matikan paksa
VBoxManage controlvm "NamaVM" acpipowerbutton            # Shutdown graceful
VBoxManage showvminfo "NamaVM"                           # Info VM
VBoxManage modifyvm "NamaVM" --memory 4096               # Ubah RAM
VBoxManage modifyvm "NamaVM" --cpus 4                    # Ubah jumlah CPU
VBoxManage createhd --filename disk.vdi --size 20480 --format VDI  # Buat disk

Troubleshooting

Modul Kernel Tidak Termuat

lsmod | grep vbox
sudo dkms autoinstall
# atau
sudo xbps-reconfigure -f virtualbox-ose-dkms

Kernel Module Version Mismatch

Setelah update kernel, modul perlu dikompilasi ulang:

sudo xbps-install -S linux-headers
sudo dkms autoinstall

VM Tidak Bisa Booting (EFI)

Aktifkan EFI di Settings โ†’ System โ†’ Motherboard โ†’ Enable EFI.

Performa Lambat

  • Aktifkan VT-x/AMD-V di Settings โ†’ System โ†’ Acceleration.
  • Aktifkan Nested Paging.
  • Tambahkan Video Memory hingga 128 MB.
  • Instal Guest Additions untuk driver yang lebih optimal.

USB Tidak Terdeteksi di Guest

Instal VirtualBox Extension Pack dari virtualbox.org untuk dukungan USB 2.0/3.0. Pastikan user tergabung di grup vboxusers di host.

Shared Folder Tidak Bisa Diakses

lsmod | grep vboxsf
sudo modprobe vboxsf
groups <nama_user>
sudo usermod -aG vboxsf <nama_user>

@T4n-Labs ยท @Gh0sT4n

Container Android

Container Android pada Linux adalah metode efisien untuk menjalankan sistem operasi Android secara utuh atau aplikasi Android langsung di dalam sistem GNU/Linux dengan berbagi kernel yang sama.

Daftar Isi


@T4n-Labs ยท @Gh0sT4n

Waydroid โ€” X11

Waydroid adalah solusi container-based untuk menjalankan Android (LineageOS) secara native di Linux dengan performa tinggi, tanpa emulasi hardware. Waydroid menggunakan container LXC yang memberikan akses langsung ke hardware host.

Weston adalah referensi Wayland compositor yang dapat berjalan sebagai aplikasi di dalam sesi X11 โ€” bertindak sebagai jembatan agar Waydroid (yang membutuhkan Wayland) dapat berjalan di lingkungan X11.

Arsitektur

X11 Session (Desktop Host)
    โ””โ”€โ”€ Weston (Wayland Compositor sebagai jendela)
        โ””โ”€โ”€ Waydroid Container (LineageOS Android)
            โ””โ”€โ”€ Aplikasi Android

Prasyarat

  • CPU dengan dukungan virtualisasi (Intel VT-x / AMD-V).
  • RAM minimal 4 GB (8 GB disarankan).
  • Ruang disk minimal 4 GB untuk image Android.
  • Kernel Linux dengan modul binder (kernel Void modern sudah mendukung).

Pastikan sesi berjalan di X11:

echo $XDG_SESSION_TYPE
# Output harus: x11

Instalasi

sudo xbps-install -S weston waydroid

Jika paket waydroid tidak tersedia di repositori default, aktifkan repositori nonfree terlebih dahulu.

Verifikasi instalasi:

waydroid --version
lsmod | grep binder

Jika modul binder tidak muncul, muat secara manual:

sudo modprobe ashmem_linux
sudo modprobe binder_linux

Konfigurasi Awal

Inisialisasi Image Android

Tanpa Google Apps:

sudo waydroid init

Dengan Google Play Services:

sudo waydroid init -s GAPPS

Proses ini mengunduh image Android (~2 GB) ke /var/lib/waydroid/images/.

Konfigurasi Service (runit)

Buat file /etc/sv/waydroid-container/run:

#!/bin/sh
exec waydroid-container-start 2>&1

Aktifkan service:

sudo mkdir -p /etc/sv/waydroid-container
sudo ln -s /etc/sv/waydroid-container /var/service/
sudo waydroid container start

Menjalankan Waydroid di X11

Manual

# Jalankan Weston di background
weston &

# Tunggu Weston siap, lalu jalankan Waydroid dari terminal Weston
waydroid show-full-ui

Script Otomatis

Buat ~/waydroid-x11.sh:

#!/bin/bash

echo "Starting Weston..."
weston &
sleep 3

if pgrep -x "weston" > /dev/null; then
    echo "Weston started."
    waydroid session start &
    sleep 2
    echo "Starting Waydroid UI..."
    waydroid show-full-ui
else
    echo "Failed to start Weston."
    exit 1
fi
chmod +x ~/waydroid-x11.sh
~/waydroid-x11.sh

Alternatif: Cage (Lebih Ringan)

sudo xbps-install -S cage
cage -- waydroid show-full-ui

Cage tidak memiliki dekorasi jendela tambahan dan lebih ringan dari Weston.

Integrasi Desktop

Desktop Entry

Buat ~/.local/share/applications/waydroid-x11.desktop:

[Desktop Entry]
Name=Waydroid (X11)
Comment=Run Android apps on Linux
Exec=/home/username/waydroid-x11.sh
Icon=waydroid
Terminal=false
Type=Application
Categories=System;Emulator;

Manajemen Aplikasi Android

waydroid app install /path/to/app.apk   # Install APK
waydroid app list                        # Daftar aplikasi
waydroid app launch com.example.app     # Jalankan aplikasi
waydroid app remove com.example.app     # Hapus aplikasi

Troubleshooting

WAYLAND_DISPLAY is not set

Weston belum berjalan. Pastikan Weston dijalankan sebelum waydroid show-full-ui.

Waydroid Container STOPPED

sudo waydroid container start
sudo sv status waydroid-container

Modul binder Tidak Ditemukan

zgrep BINDER /proc/config.gz

Jika tidak ada, perlu kernel dengan CONFIG_ANDROID_BINDER_IPC=y.

Waydroid Tidak Tampil di Weston

waydroid session stop
waydroid session start
waydroid show-full-ui

Tidak Ada Internet di Waydroid

sudo iptables -A FORWARD -i waydroid0 -j ACCEPT
sudo iptables -A FORWARD -o waydroid0 -j ACCEPT

Menghentikan Waydroid

sudo pkill waydroid-container
pkill weston

Optimalisasi

  • Gunakan Cage sebagai compositor โ€” lebih ringan dari Weston.
  • Nonaktifkan animasi Android: Settings โ†’ Developer Options โ†’ set semua animation scale ke 0.
  • Edit /etc/waydroid/waydroid.cfg untuk mengatur alokasi resource:
[resources]
memory_mb = 4096
cpu_shares = 1024
  • GPU NVIDIA proprietary tidak kompatibel dengan baik di Wayland โ€” gunakan driver nouveau atau akselerasi software.

Uninstall

sudo xbps-remove waydroid weston
sudo rm -rf /var/lib/waydroid
sudo rm /var/service/waydroid-container
sudo rm -rf /etc/sv/waydroid-container

Referensi


@T4n-Labs ยท @Gh0sT4n

Waydroid โ€” Wayland

Waydroid adalah solusi container berbasis LXC untuk menjalankan Android (LineageOS) secara native di Linux dengan integrasi penuh ke desktop. Waydroid hanya dapat berjalan di atas sesi Wayland.

Arsitektur

Wayland Compositor (GNOME/KDE/Sway/Wayfire)
    โ””โ”€โ”€ Waydroid Container (LineageOS Android)
        โ””โ”€โ”€ Aplikasi Android (terintegrasi sebagai aplikasi native)

Prasyarat

  • CPU dengan dukungan virtualisasi (Intel VT-x / AMD-V).
  • RAM minimal 4 GB (8 GB disarankan).
  • Ruang disk minimal 4 GB untuk image Android.
  • Kernel Linux dengan modul binder (kernel Void modern sudah mendukung).

Pastikan sesi berjalan di Wayland:

echo $XDG_SESSION_TYPE
# Output harus: wayland

Jika output x11, logout dan pilih sesi Wayland dari display manager.

Driver Grafis

# AMD
sudo xbps-install -S mesa-dri mesa-vaapi mesa-vdpau mesa-vulkan-radeon

# Intel
sudo xbps-install -S mesa-dri intel-video-accel

# NVIDIA (proprietary)
sudo xbps-install -S nvidia nvidia-libs-32bit

NVIDIA dengan driver proprietary paling kompatibel di GNOME atau KDE Plasma Wayland.


Instalasi

sudo xbps-install -S waydroid

Verifikasi:

waydroid --version
lsmod | grep binder

Jika modul binder tidak muncul, muat secara manual:

sudo modprobe ashmem_linux
sudo modprobe binder_linux

Agar modul termuat otomatis saat boot, buat /etc/modules-load.d/binder.conf:

binder_linux
ashmem_linux

Konfigurasi Awal

Inisialisasi Image Android

Tanpa Google Apps:

sudo waydroid init

Dengan Google Play Services:

sudo waydroid init -s GAPPS

Proses ini mengunduh image Android (~2 GB) ke /var/lib/waydroid/images/.

Parameter Kernel PSI

Untuk performa optimal, tambahkan psi=1 ke GRUB_CMDLINE_LINUX_DEFAULT di /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash psi=1"

Perbarui GRUB:

sudo update-grub

Konfigurasi Container (runit)

Jalankan container service:

sudo waydroid container start

Untuk autostart saat boot, buat /etc/sv/waydroid-container/run:

#!/bin/sh
exec waydroid-container-start 2>&1

Aktifkan service:

sudo mkdir -p /etc/sv/waydroid-container
sudo ln -s /etc/sv/waydroid-container /var/service/

Menjalankan Waydroid

waydroid session start &
waydroid show-full-ui

Mode grid semua aplikasi:

waydroid app-grid

Jika WAYLAND_DISPLAY tidak ter-set:

export WAYLAND_DISPLAY=wayland-0
export XDG_RUNTIME_DIR=/run/user/$(id -u)

Integrasi Desktop Environment

GNOME & KDE Plasma

Terintegrasi secara native โ€” aplikasi Android muncul di menu aplikasi, notifikasi terintegrasi, copy-paste berfungsi via clipboard portal.

Sway / Wayfire

sudo xbps-install -S xdg-desktop-portal xdg-desktop-portal-wlr wl-clipboard

Autostart di Sway (~/.config/sway/config):

exec waydroid session start
exec waydroid show-full-ui

Desktop Entry

Buat ~/.local/share/applications/waydroid.desktop:

[Desktop Entry]
Name=Waydroid
Comment=Run Android apps on Linux
Exec=waydroid show-full-ui
Icon=waydroid
Terminal=false
Type=Application
Categories=System;Emulator;

Manajemen Aplikasi Android

waydroid app install /path/to/app.apk    # Install APK
waydroid app list                         # Daftar aplikasi
waydroid app launch com.example.app      # Jalankan aplikasi
waydroid app remove com.example.app      # Hapus aplikasi
waydroid app clear com.example.app       # Hapus data aplikasi

Shell Android

sudo waydroid shell
sudo waydroid shell "getprop ro.build.version.release"

Troubleshooting

WAYLAND_DISPLAY is not set

Pastikan login ke sesi Wayland, bukan X11.

Container STOPPED

sudo waydroid container start
sudo sv status waydroid-container

Layar Hitam / Tidak Ada Output

Cek compositor berjalan:

pgrep -l sway    # Sway
pgrep -l mutter  # GNOME
pgrep -l kwin    # KDE

Restart session:

waydroid session stop
waydroid session start &
waydroid show-full-ui

Aplikasi Force Close

sudo waydroid log

Tidak Ada Internet

sudo iptables -A FORWARD -i waydroid0 -j ACCEPT
sudo iptables -A FORWARD -o waydroid0 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4

Menghentikan Waydroid

waydroid session stop
sudo pkill waydroid-container

NVIDIA GPU

Compositor yang mendukung NVIDIA proprietary (EGLStreams): GNOME Wayland, KDE Plasma Wayland, Weston. Compositor berbasis GBM (Sway, Wayfire) tidak kompatibel โ€” gunakan driver nouveau sebagai alternatif.


Optimalisasi

  • Edit /etc/waydroid/waydroid.cfg untuk mengatur alokasi resource:
[resources]
memory_mb = 4096
cpu_shares = 1024
  • Nonaktifkan animasi Android: Settings โ†’ Developer Options โ†’ set semua animation scale ke 0.
  • Gunakan SSD untuk penyimpanan image agar performa lebih baik.

Perbandingan Wayland vs X11

AspekWayland (Native)X11 (dengan Weston)
PerformaNative, tanpa overheadAda overhead compositor tambahan
InstalasiSederhanaPerlu Weston + konfigurasi
Integrasi desktopPenuh (menu, notifikasi)Terisolasi di jendela Weston
GPU AccelerationLangsungMelalui Weston
Multi-windowโœ…โŒ
Copy-pasteโœ… (via portal)Terbatas

Uninstall

sudo xbps-remove waydroid
sudo rm -rf /var/lib/waydroid /etc/waydroid
sudo rm /var/service/waydroid-container
sudo rm -rf /etc/sv/waydroid-container
sudo rm /etc/modules-load.d/binder.conf

Referensi


@T4n-Labs ยท @Gh0sT4n

EOF

GnuPG & OpenPGP

T4n OS menyediakan dua versi GnuPG:

PaketVersi
gnupgStable
gnupg1Legacy

Smartcard (Yubikey, dll.)

Untuk menggunakan smartcard dengan GnuPG, tersedia dua backend komunikasi:

BackendKeterangan
Internal CCID (scdaemon)Default โ€” langsung via scdaemon
PC/SC (pcscd)Diperlukan untuk beberapa kasus khusus

Backend Internal CCID (Default)

scdaemon menggunakan driver CCID internal secara default. Agar berfungsi, dua syarat harus terpenuhi:

  1. Smartcard kamu terdaftar dalam udev rules scdaemon.
  2. Kamu menggunakan elogind atau tergabung di grup plugdev:
sudo usermod -aG plugdev <nama_user>

Verifikasi kartu terbaca dengan benar:

gpg --card-status

Backend pcscd

Jika perlu menggunakan pcscd (misalnya untuk dipakai bersama aplikasi lain), nonaktifkan CCID internal:

echo disable-ccid >> ~/.gnupg/scdaemon.conf

Pastikan layanan pcscd sudah berjalan:

sudo xbps-install -S pcsc-lite
ln -s /etc/sv/pcscd /var/service/

Lalu verifikasi:

gpg --card-status

OpenPGP Card Tools

Sebagai alternatif dari GnuPG, T4n OS juga menyediakan openpgp-card-tools โ€” utilitas berbasis Rust yang tidak bergantung pada GnuPG.

sudo xbps-install -S openpgp-card-tools

openpgp-card-tools wajib menggunakan pcscd untuk berinteraksi dengan smartcard.

Jika ingin menggunakan openpgp-card-tools bersamaan dengan GnuPG, konfigurasi scdaemon agar menggunakan backend pcscd terlebih dahulu seperti pada bagian di atas.


@T4n-Labs ยท @Gh0sT4n

Package Manager

Package manager adalah perangkat lunak yang mengelola instalasi, pembaruan, dan penghapusan program di sistem Linux secara otomatis โ€” termasuk menangani dependensi antar paket.

Apa itu Paket?

Sebuah paket adalah arsip yang berisi file program, library, konfigurasi, dan metadata seperti nama, versi, dan dependensi yang dibutuhkan. Di Linux, paket biasanya berformat .deb, .rpm, atau .xbps tergantung distribusi yang digunakan.

Cara Kerja

Ketika menginstal sebuah program, package manager akan:

  1. Mengunduh paket dari repositori (server resmi distribusi).
  2. Memeriksa dependensi โ€” paket lain yang dibutuhkan agar program bisa berjalan.
  3. Menginstal semua paket yang diperlukan dalam urutan yang benar.
  4. Mencatat semua perubahan ke database paket lokal.

Saat menghapus program, package manager juga dapat membersihkan dependensi yang tidak lagi dibutuhkan oleh paket lain.

Repositori

Repositori adalah server yang menyimpan koleksi paket yang sudah dikompilasi dan diverifikasi oleh tim distribusi. Package manager mengunduh paket langsung dari sini. Sebagian besar distribusi memiliki repositori resmi, dan beberapa juga menyediakan repositori komunitas atau repositori tambahan untuk software tertentu.

Package Manager di Berbagai Distribusi

DistribusiPackage ManagerFormat Paket
T4n OS / Void Linuxxbps.xbps
Debian / Ubuntu / Mintapt.deb
Fedora / RHELdnf.rpm
Arch Linux / Manjaropacman.pkg.tar
openSUSEzypper.rpm
GentooportageSource
Alpine Linuxapk.apk
NixOSnix.drv

Mengapa Tidak Instal Manual Saja?

Menginstal program secara manual (mengunduh dan mengekstrak binary sendiri) memang mungkin dilakukan, namun package manager memberikan beberapa keuntungan penting:

  • Dependensi otomatis โ€” tidak perlu mencari dan menginstal library satu per satu.
  • Update terpusat โ€” satu perintah untuk memperbarui semua program sekaligus.
  • Integritas file โ€” paket diverifikasi dengan tanda tangan kriptografis.
  • Uninstall bersih โ€” semua file program dihapus tanpa sisa.
  • Konsistensi sistem โ€” menghindari konflik antar versi library.

XBPS di T4n OS

T4n OS menggunakan XBPS (X Binary Package System) โ€” package manager yang dirancang dari awal oleh tim Void Linux. XBPS dikenal karena kecepatan dan keandalannya, serta kemampuan mendeteksi konflik library sebelum transaksi dilakukan.

Lihat dokumentasi XBPS untuk panduan lengkap penggunaannya.


@T4n-Labs ยท @Gh0sT4n

XBPS โ€” Advanced Usage

Halaman ini membahas penggunaan lanjutan XBPS yang berguna untuk skenario khusus seperti downgrade, mencegah update paket tertentu, mengelola konflik dependensi, dan membuat paket virtual.

Downgrade Paket

XBPS mendukung downgrade paket ke versi tertentu. File paket lama yang pernah diinstal biasanya masih tersimpan di cache /var/cache/xbps/.

Via xdowngrade (Disarankan)

Cara termudah menggunakan xdowngrade dari paket xtools:

sudo xbps-install -S xtools   # Instal xtools jika belum ada
sudo xdowngrade /var/cache/xbps/paket-1.0_1.xbps

Via XBPS Manual

Jika file paket lama tersedia di cache atau diperoleh dari sumber lain, daftarkan dulu ke repositori lokal:

sudo xbps-rindex -a /var/cache/xbps/paket-1.0_1.xbps

Lalu instal dengan flag -f untuk memaksa instalasi ulang:

sudo xbps-install -R /var/cache/xbps/ -f paket-1.0_1

Flag -f wajib digunakan untuk downgrade atau reinstall paket yang sudah terinstal.

Hold Paket (Cegah Update)

Untuk mencegah paket tertentu diperbarui saat menjalankan system update:

sudo xbps-pkgdb -m hold <paket>

Lepas hold agar paket bisa diperbarui kembali:

sudo xbps-pkgdb -m unhold <paket>

Cek status hold semua paket:

xbps-query -l | grep " h "

Hold berguna misalnya saat menggunakan kernel atau driver yang sudah dikustomisasi dan tidak ingin ditimpa oleh versi baru dari repositori.

Repolock Paket

Jika paket dibangun dari xbps-src dengan template atau opsi kustom, gunakan repolock agar paket tersebut hanya diperbarui dari repositori yang sama โ€” tidak bisa ditimpa oleh repositori resmi:

sudo xbps-pkgdb -m repolock <paket>

Lepas repolock:

sudo xbps-pkgdb -m repounlock <paket>

Berbeda dengan hold, repolock masih mengizinkan update dari repositori asal paket tersebut diinstal.

Ignore Paket

Terkadang paket yang ingin dihapus tidak bisa dihapus begitu saja karena menjadi dependensi paket lain. Contoh umum: mengganti sudo dengan doas, namun sudo adalah dependensi dari base-system.

Solusinya adalah dengan men-ignore paket tersebut. Buat atau edit file konfigurasi di /etc/xbps.d/:

sudo mkdir -p /etc/xbps.d
echo "ignorepkg=sudo" | sudo tee /etc/xbps.d/ignore.conf

Setelah itu paket dapat dihapus:

sudo xbps-remove sudo

Untuk mengabaikan beberapa paket sekaligus:

ignorepkg=sudo vim nano

Paket yang di-ignore tidak akan diinstal ulang secara otomatis saat update, meskipun ada paket lain yang membutuhkannya sebagai dependensi.

Virtual Package

Virtual package adalah alias yang mengarahkan permintaan instalasi ke paket nyata. Berguna untuk menjaga agar sistem selalu menggunakan versi kernel atau paket tertentu tanpa perlu mengubah konfigurasi di banyak tempat.

Buat atau edit file konfigurasi di /etc/xbps.d/:

echo "virtualpkg=linux:linux6.6" | sudo tee /etc/xbps.d/virtual.conf

Dengan konfigurasi di atas, setiap kali ada paket yang membutuhkan linux, XBPS akan menggunakan linux6.6 sebagai penggantinya.

Format konfigurasi:

virtualpkg=<nama_virtual>:<nama_paket_nyata>

Contoh penggunaan lain โ€” arahkan cron ke cronie:

virtualpkg=cron:cronie

Ringkasan Fitur Lanjutan

FiturPerintahKeterangan
Downgradexdowngrade <file.xbps>Downgrade via file cache lokal
Holdxbps-pkgdb -m hold <paket>Cegah paket diperbarui saat update sistem
Unholdxbps-pkgdb -m unhold <paket>Lepas hold
Repolockxbps-pkgdb -m repolock <paket>Paksa update hanya dari repositori asal
Repounlockxbps-pkgdb -m repounlock <paket>Lepas repolock
Ignoreignorepkg=<paket> di xbps.dIzinkan hapus paket meski ada dependensi
Virtual pkgvirtualpkg=<alias>:<paket> di xbps.dBuat alias paket yang diarahkan ke paket nyata

Referensi


@T4n-Labs ยท @Gh0sT4n

XBPS โ€” Package Manager

XBPS (X Binary Package System) adalah package manager cepat yang dirancang dan diimplementasikan dari awal oleh tim Void Linux. T4n OS menggunakan XBPS sebagai satu-satunya package manager resmi.

Repositori resmi: github.com/void-linux/xbps

Daftar Tool

ToolKeteranganDocsLink
xbps-alternativesKelola sistem alternatif antar paket yang menyediakan fungsionalitas yang samaDocs โ†’Link
xbps-checkversPeriksa paket yang sudah usang dengan membandingkan versi lokal terhadap void-packagesDocs โ†’Link
xbps-createBuat paket biner .xbps dari file-file dalam suatu direktoriDocs โ†’Link
xbps-dgraphHasilkan grafik dependensi paket dalam format DOT (untuk Graphviz)Docs โ†’Link
xbps-digestHitung message digest (hash) dari sebuah file menggunakan algoritma kriptografiDocs โ†’Link
xbps-fbulkLakukan bulk build paket secara paralel dari repositori void-packagesDocs โ†’Link
xbps-fetchUnduh file dari URL โ€” terintegrasi dengan ekosistem XBPS via libfetchDocs โ†’Link
xbps-installInstal, perbarui, dan kelola paket di sistemDocs โ†’Link
xbps-pkgdbPeriksa dan perbaiki database paket, serta modifikasi atribut paketDocs โ†’Link
xbps-queryCari dan tampilkan informasi paket โ€” lokal maupun dari repositori remoteDocs โ†’Link
xbps-reconfigureJalankan ulang skrip konfigurasi paket yang sudah terinstalDocs โ†’Link
xbps-removeHapus paket yang terinstal dari sistemDocs โ†’Link
xbps-rindexKelola repositori paket biner lokalDocs โ†’Link
xbps-uchrootChroot dan bind mount menggunakan Linux namespacesDocs โ†’Link
xbps-uhelperFungsi pembantu untuk mengolah string dan informasi paket XBPSDocs โ†’Link
xbps-uunshareChroot dan bind mount menggunakan Linux user namespaces โ€” tanpa akses rootDocs โ†’Link

@T4n-Labs ยท @Gh0sT4n

xbps-alternatives

xbps-alternatives adalah utilitas XBPS untuk mengelola sistem alternatives โ€” mekanisme yang memungkinkan beberapa paket menyediakan fungsionalitas yang sama melalui file yang seharusnya saling konflik, dengan cara membuat symlink dari path umum ke versi spesifik yang dipilih pengguna.

Cara Kerja

Alternatives dikelompokkan dalam group. Setiap group berisi sejumlah symlink yang diterapkan saat group tersebut diaktifkan.

  • Saat paket diinstal โ†’ alternative group-nya didaftarkan ke database paket (pkgdb).
  • Saat paket dihapus โ†’ alternative group-nya dihapus dari pkgdb. Jika masih ada provider lain, provider sebelumnya otomatis menjadi default.

Contoh: nano dan vim keduanya bisa menyediakan /usr/bin/editor. Dengan alternatives, pengguna bisa memilih salah satu tanpa harus menghapus yang lain.

Perintah

Melihat Daftar Alternatives

# Semua alternative group yang terinstal
xbps-alternatives -l

# Alternatives dari paket tertentu
xbps-alternatives -l <paket>

# Group tertentu saja
xbps-alternatives -l -g <group>

# Alternatives yang tersedia di repositori (belum tentu terinstal)
xbps-alternatives -R -l

Mengatur Alternatives

# Set semua group dari suatu paket
xbps-alternatives -s <paket>

# Set hanya group tertentu dari suatu paket
xbps-alternatives -s <paket> -g <group>

Contoh Penggunaan

Ganti Default Editor

# Lihat alternatives untuk group editor
xbps-alternatives -l -g editor

# Ganti ke vim
xbps-alternatives -s vim -g editor

Ganti Versi Java

# Lihat alternatives untuk group java
xbps-alternatives -l -g java

# Gunakan OpenJDK 17
xbps-alternatives -s openjdk17 -g java

Contoh Output

$ xbps-alternatives -l

java:
  current: /usr/lib/jvm/java-11-openjdk/bin/java -> /usr/bin/java
  available:
    java-11-openjdk: /usr/lib/jvm/java-11-openjdk/bin/java (current)
    java-17-openjdk: /usr/lib/jvm/java-17-openjdk/bin/java

editor:
  current: /usr/bin/vim -> /usr/bin/editor
  available:
    nano: /usr/bin/nano
    vim: /usr/bin/vim (current)

Provider yang sedang aktif ditandai dengan (current).

Perbandingan dengan Distro Lain

DistroToolContoh Perintah
T4n OS / Voidxbps-alternativesxbps-alternatives -s <paket> -g <group>
Debian / Ubuntuupdate-alternativesupdate-alternatives --config <group>
Arch LinuxTidak ada bawaanโ€”

File Terkait

PathKeterangan
/var/db/xbps/pkgdb-0.38.plistDatabase paket tempat alternatives dicatat
/etc/xbps.d/Konfigurasi XBPS kustom
/usr/share/xbps.d/Konfigurasi XBPS default sistem

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-checkvers

xbps-checkvers adalah utilitas XBPS untuk memeriksa paket yang sudah usang (outdated) dengan membandingkan versi paket di repositori atau sistem terhadap versi source package yang tersedia di pohon void-packages.

Secara default menggunakan tree di ~/void-packages dan membandingkan versi dari repositori (bukan yang terinstal), kecuali flag -I digunakan.

Prasyarat

xbps-checkvers membutuhkan repositori void-packages. Clone jika belum ada:

git clone https://github.com/void-linux/void-packages.git ~/void-packages

Opsi

FlagKeterangan
-s, --show-allTampilkan semua paket dari void-packages beserta versi repo dan source-nya
-I, --installedBandingkan paket yang terinstal (bukan di repositori) terhadap source tree
-D, --distdir <dir>Tentukan lokasi void-packages tree (default: ~/void-packages)
-f, --format <fmt>Format output kustom (lihat bagian Format di bawah)
-e, --removedTampilkan paket yang ada di repositori tapi sudah dihapus dari void-packages
-m, --manualHanya proses paket yang disebutkan secara eksplisit via FILES argument
-R, --repository=uriTambahkan repositori ke daftar (bisa diulang beberapa kali)
-r, --rootdir <dir>Tentukan root directory target
-i, --ignore-conf-reposAbaikan repositori dari file konfigurasi, hanya gunakan yang di -R
--stagingGunakan staged packages dari repositori remote

Format Output

Format default: %n %r %s %t %R

KodeKeterangan
%nNama paket
%rVersi dari repositori atau pkgdb (? jika tidak ditemukan)
%sVersi source package (? jika tidak ditemukan)
%tNama template yang diminta (bisa subpaket)
%RURL repositori (? jika tidak ditemukan)
%%Karakter % literal
\nNewline
\tTab

Contoh Penggunaan

Tampilkan semua paket dari ~/void-packages beserta versi repo dan source-nya:

xbps-checkvers -s

Cek paket yang terinstal apakah ada versi lebih baru di source tree:

xbps-checkvers -I

Gunakan void-packages di lokasi lain:

xbps-checkvers -D ~/src/void-packages -I

Cek paket tertentu saja:

xbps-checkvers -I -m foo

Format output kustom:

xbps-checkvers -f "%n -> repo: %r, source: %s\n"

Target Pengguna

xbps-checkvers paling berguna untuk:

  • Maintainer paket โ€” memeriksa paket mana yang perlu di-update di repositori.
  • Contributor void-packages โ€” memastikan template build sudah mengikuti versi upstream.
  • Pengguna yang build dari source โ€” membandingkan versi terinstal dengan source terbaru.

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-create

xbps-create adalah utilitas XBPS untuk membuat paket biner .xbps dari file-file yang disimpan dalam suatu direktori. File harus memiliki permission yang benar dan lokasi yang sesuai di dalam direktori tersebut.

Ini adalah alat untuk pembuat paket โ€” pengguna akhir umumnya tidak perlu menggunakannya secara langsung karena xbps-src menangani proses ini secara otomatis.

Penggunaan

xbps-create [OPSI] <destdir>

destdir adalah direktori yang berisi file-file dengan struktur seperti di sistem tujuan (contoh: usr/bin/, etc/, usr/share/).

Opsi

Metadata Paket

FlagKeterangan
-n, --pkgver <string>Nama dan versi paket, format: nama-versi_revision (wajib)
-A, --architecture <str>Arsitektur target (wajib). Gunakan noarch jika tidak arch-spesifik
-s, --desc <string>Deskripsi singkat, satu baris kurang dari 80 karakter
-S, --long-desc <string>Deskripsi panjang
-H, --homepage <string>URL homepage proyek
-l, --license <string>Lisensi paket
-m, --maintainer <string>Nama dan/atau email maintainer
-t, --tags <list>Daftar tag/kategori, dipisah spasi. Contoh: 'development nonfree'
-c, --changelog <string>String changelog paket
-B, --built-with <string>String builder, format bebas

Dependensi dan Konflik

FlagKeterangan
-D, --dependencies <list>Daftar dependensi, dipisah spasi. Contoh: 'foo>=1.0 blah-1.0_1'
-C, --conflicts <list>Daftar paket yang konflik. Contoh: 'foo>=1.0 blah<1.0'
-R, --replaces <list>Daftar paket yang digantikan. Contoh: 'foo>=1.0 blah>=2.0'
-r, --reverts <list>Daftar versi yang di-revert. Contoh: '2.0_1 2.1_1'
-P, --provides <list>Daftar virtual package yang disediakan. Contoh: 'virtualpkg-9999'

File

FlagKeterangan
-F, --config-files <list>Daftar file konfigurasi yang disediakan paket, dipisah spasi
-M, --mutable-files <list>Daftar file mutable yang disediakan paket, dipisah spasi
-p, --preserveJika diset, file paket akan dipertahankan setelah update

Shared Library

FlagKeterangan
--shlib-provides <list>Shared library yang disediakan. Contoh: 'libfoo.so.2 libbar.so.1'
--shlib-requires <list>Shared library yang dibutuhkan. Contoh: 'libz.so.1 libfoo.so.2'

Alternatives

FlagKeterangan
--alternatives <list>Daftar alternatives yang disediakan paket, dipisah spasi. Format: group:symlink:target

Contoh: 'editor:/usr/bin/editor:/usr/bin/vim'

Jika symlink adalah path relatif, symlink akan dibuat relatif terhadap target.

Build & Kompresi

FlagKeterangan
--compression <format>Format kompresi: none, gzip, bzip2, xz, lz4, zstd (default: zstd)
--build-options <string>String opsi build yang digunakan dalam paket
--sourcepkg <string>pkgver dari source package yang digunakan untuk build
-G, --source-revisions <str>Git revision dari source package (diset otomatis oleh xbps-src)

Contoh Penggunaan

# Siapkan struktur direktori destdir
mkdir -p myapp-1.0_1/usr/bin
mkdir -p myapp-1.0_1/usr/share/myapp
cp myprogram myapp-1.0_1/usr/bin/
cp data/* myapp-1.0_1/usr/share/myapp/

# Buat paket .xbps
xbps-create \
    -n myapp-1.0_1 \
    -A x86_64 \
    -s "My awesome application" \
    -S "A longer description of what myapp does." \
    -H "https://example.com/myapp" \
    -l "MIT" \
    -m "Your Name <you@example.com>" \
    -D 'libfoo>=1.0' \
    myapp-1.0_1

Output: myapp-1.0_1.x86_64.xbps

Langkah Selanjutnya

Setelah paket biner dibuat:

# Tambahkan ke repositori lokal
xbps-rindex -a myapp-1.0_1.x86_64.xbps

# Instal dari repositori lokal
sudo xbps-install --repository=/path/ke/repo myapp

# Periksa isi paket
xbps-query -f myapp

Catatan

  • File dalam destdir harus memiliki permission yang benar karena akan digunakan langsung saat instalasi.
  • xbps-create hanya menerima regular file, symlink, dan direktori. Socket dan FIFO tidak didukung.
  • Format kompresi default adalah zstd.

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-dgraph

xbps-dgraph adalah utilitas XBPS untuk menghasilkan grafik dependensi paket dalam format DOT, yang dapat divisualisasikan menggunakan Graphviz.

Output dicetak ke stdout dan harus diproses dengan tool seperti dot untuk menghasilkan gambar.

Penggunaan

xbps-dgraph [OPSI] <MODE> <PKG>

PKG adalah package expression โ€” bisa berupa nama paket (firefox), nama dan versi eksak (firefox-120.0_1), atau dengan operator versi (firefox>=120.0).

Mode (wajib pilih salah satu)

FlagKeterangan
-f, --fulldeptreeHasilkan grafik pohon dependensi lengkap dari paket target
-m, --metadataHasilkan grafik metadata dari paket target
-g, --gen-configBuat file konfigurasi grafik di direktori saat ini (tidak butuh argumen PKG)

Opsi

FlagKeterangan
-R, --repositoryCari paket di repositori, bukan di root directory yang terinstal
-r, --rootdir <dir>Tentukan root directory target
-c, --graph-config <file>Tentukan file konfigurasi grafik
-M, --memory-syncAmbil data repositori remote langsung ke memori, abaikan cache di disk
-d, --debugTampilkan informasi debug ke stderr

Contoh Penggunaan

Hasilkan grafik dependensi lengkap Firefox dan simpan sebagai PNG:

xbps-dgraph -f firefox | dot -Tpng -o firefox-deps.png

Hasilkan file DOT terlebih dahulu, lalu konversi:

xbps-dgraph -f vim > vim-deps.dot
dot -Tpng vim-deps.dot -o vim-deps.png

Cari di repositori (untuk paket yang belum terinstal):

xbps-dgraph -R -f firefox

Hasilkan grafik metadata:

xbps-dgraph -m base-system

Buat file konfigurasi grafik (tidak butuh PKG):

xbps-dgraph -g

Instalasi Graphviz

Graphviz diperlukan untuk mengonversi output DOT menjadi gambar:

sudo xbps-install -S graphviz

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-digest

xbps-digest adalah utilitas XBPS untuk menghasilkan message digest (hash) dari sebuah file menggunakan algoritma kriptografi. Saat ini hanya mendukung SHA-256.

Penggunaan

xbps-digest [OPSI] [FILE] [FILE+N]

Jika tidak ada file yang ditentukan, xbps-digest membaca dari stdin.

Opsi

FlagKeterangan
-m, --mode <mode>Algoritma hash yang digunakan. Saat ini hanya mendukung sha256 (default)
-h, --helpTampilkan pesan bantuan
-V, --versionTampilkan informasi versi

Contoh Penggunaan

Hitung hash dari satu file:

xbps-digest dokumen.pdf

Hitung hash dari beberapa file sekaligus:

xbps-digest file1.txt file2.txt file3.txt

Tentukan algoritma secara eksplisit:

xbps-digest -m sha256 image.iso

Baca dari stdin:

echo "Hello World" | xbps-digest

Catatan

  • Tidak memerlukan akses root.
  • Bisa digunakan untuk file apapun, tidak hanya paket .xbps.
  • xbps-digest menggantikan fungsi xbps-uhelper digest pada versi XBPS lama.

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-fbulk

xbps-fbulk adalah utilitas XBPS untuk melakukan bulk build paket secara cepat dari repositori void-packages. Tool ini membangun seluruh pohon dependensi secara otomatis dan paralel.

Ini bukan tool untuk penggunaan sehari-hari โ€” ditujukan untuk maintainer paket dan contributor void-packages.

Cara Kerja

xbps-fbulk membaca direktori srcpkgs di repositori void-packages, lalu membangun pohon dependensi secara dinamis menggunakan xbps-src show-build-deps:

  1. Dependensi terminal dibangun dan dipaketkan terlebih dahulu.
  2. Setelah build selesai, dependensi berikutnya yang terpenuhi ditambahkan ke urutan build.
  3. Seluruh pohon dependensi akhirnya terbangun sepenuhnya.

Setiap paket hanya dicoba dibangun satu kali, tidak peduli berapa banyak paket lain yang bergantung padanya.

Penggunaan

xbps-fbulk [OPSI] /path/to/void-packages [paket1 paket2 ...]

Jika argumen paket tidak ditentukan, semua paket di direktori srcpkgs akan diproses.

Opsi

FlagKeterangan
-j, --jobs <X>Jumlah build paralel (default: 1)
-l, --logdir <dir>Direktori log (default: fbulk-log.<pid>)
-s, --systemHanya proses paket yang diinstal secara manual di sistem (lihat xbps-pkgdb)
-v, --verboseTampilkan pesan verbose
-d, --debugTampilkan informasi debug ke stderr

File Log

Hasil build disimpan di direktori log:

FileIsi
logdir/runPaket yang sedang dibangun
logdir/goodPaket yang berhasil dibangun
logdir/badPaket yang gagal dibangun
logdir/skippedPaket yang dilewati (arsitektur tidak didukung, broken, atau restricted)
logdir/depsPaket yang tidak dibangun karena dependensi gagal atau hilang

Prasyarat

Sebelum menggunakan xbps-fbulk:

  1. Repositori void-packages harus sudah di-clone dan masterdir sudah terisi penuh untuk operasi chroot.
  2. Set konfigurasi di etc/conf dalam repositori void-packages:
XBPS_CHROOT_CMD=uchroot
  1. User harus memiliki hak untuk menjalankan xbps-uchroot.
  2. Kernel harus mendukung overlay filesystem (diperkenalkan di kernel 4.0).

Contoh Penggunaan

Build semua paket di repositori:

xbps-fbulk /path/to/void-packages

Build paket tertentu saja:

xbps-fbulk /home/user/void-packages firefox chromium

Build dengan 4 proses paralel:

xbps-fbulk -j 4 /path/to/void-packages

System mode โ€” hanya proses paket yang diinstal secara manual:

xbps-fbulk -s /path/to/void-packages

Referensi

xbps-fbulk awalnya ditulis oleh Matthew Dillon untuk DragonFlyBSD, kemudian diadaptasi ke XBPS oleh Juan Romero Pardines dengan tambahan fitur baru.


@T4n-Labs ยท @Gh0sT4n

xbps-fetch

xbps-fetch adalah utilitas XBPS untuk mengunduh file dari URL. Mendukung protokol http, https, ftp, dan socks5.

Penggunaan

xbps-fetch [OPSI] <URL> [URL+N ...]

Bisa mengunduh beberapa URL sekaligus dalam satu perintah.

Opsi

FlagKeterangan
-o <output>Simpan file dengan nama tertentu (rename)
-sTampilkan SHA-256 dari file yang diunduh
-vTampilkan pesan verbose
-dTampilkan pesan debug ke stderr

Contoh Penggunaan

Unduh file ke direktori saat ini:

xbps-fetch https://example.com/file.tar.gz

Unduh dan simpan dengan nama tertentu:

xbps-fetch -o myfile.tar.gz https://example.com/file.tar.gz

Unduh dengan verbose dan tampilkan SHA-256:

xbps-fetch -v -s https://example.com/file.tar.gz

Unduh beberapa URL sekaligus:

xbps-fetch https://example.com/file1.tar.gz https://example.com/file2.tar.gz

Environment Variables

Proxy

VariabelKeterangan
HTTP_PROXYProxy URL untuk koneksi HTTP
FTP_PROXYProxy URL untuk koneksi FTP
SOCKS_PROXYProxy URL untuk koneksi SOCKS
NO_PROXYDaftar domain yang tidak menggunakan proxy (dipisah koma atau spasi). * menonaktifkan semua proxy
HTTP_PROXY_AUTHKredensial autentikasi ke proxy, format: user:pass

Autentikasi

VariabelKeterangan
HTTP_AUTHKredensial autentikasi ke HTTP server, format: user:pass
FTP_LOGINUsername untuk autentikasi FTP
FTP_PASSWORDPassword untuk autentikasi FTP

HTTP

VariabelKeterangan
HTTP_USER_AGENTOverride User-Agent header
HTTP_REFEREROverride Referer header
FTP_PASSIVE_MODEAktifkan passive mode FTP (apa saja selain no)

SSL/TLS

VariabelKeterangan
SSL_CA_CERT_FILEOverride file CA certificates (default: /etc/ssl/certs/ca-certificates.crt)
SSL_CA_CERT_PATHOverride path CA certificates (default: /etc/ssl/certs)
SSL_CLIENT_CERT_FILEFile sertifikat client untuk verifikasi SSL/TLS
SSL_CLIENT_KEY_FILEFile key client untuk verifikasi SSL/TLS
SSL_NO_VERIFY_PEERNonaktifkan verifikasi SSL/TLS peer
SSL_NO_VERIFY_HOSTNAMENonaktifkan verifikasi hostname SSL/TLS

Jaringan

VariabelKeterangan
FORCE_IPV4Hanya gunakan IPv4
FORCE_IPV6Hanya gunakan IPv6
CONNECTION_TIMEOUTTimeout koneksi dalam milidetik (default: 5 menit). Set -1 untuk tunggu tanpa batas

Contoh Konfigurasi Proxy

export HTTP_PROXY=http://proxy.example.com:3128
export HTTP_PROXY_AUTH=user:pass
xbps-fetch https://example.com/file.tar.gz

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-install

xbps-install adalah utilitas utama XBPS untuk menginstal, reinstall, downgrade, dan memperbarui paket. Dependency resolution ditangani secara otomatis.

Penggunaan

xbps-install [OPSI] [PKG ...]

Opsi

Operasi Utama

FlagKeterangan
-S, --syncSinkronisasi indeks repositori remote
-u, --updateUpgrade seluruh sistem โ€” semua paket (kecuali yang on hold) diperbarui ke versi terbaru
-f, --forcePaksa instalasi ulang atau downgrade. Jika dua kali (-f -f), config files juga ditimpa
-n, --dry-runTampilkan aksi yang akan dilakukan tanpa mengubah sistem
-y, --yesAsumsikan yes untuk sebagian besar pertanyaan. Prompt tetap muncul jika perlu trust signing key baru
-D, --download-onlyHanya unduh paket ke cache, tidak menginstal
-U, --unpack-onlyUnpack paket tanpa menjalankan fase konfigurasi โ€” perlu xbps-reconfigure setelahnya

Repositori

FlagKeterangan
-R, --repository <url>Tambahkan repositori ke urutan teratas daftar pencarian (bisa diulang beberapa kali)
-i, --ignore-conf-reposAbaikan repositori dari file konfigurasi, hanya gunakan yang di -R
-M, --memory-syncAmbil data repositori remote ke memori, abaikan cache index di disk

Lainnya

FlagKeterangan
-A, --automaticTandai paket sebagai automatic โ€” akan dianggap orphan jika tidak ada dependannya
-I, --ignore-file-conflictsAbaikan konflik file yang terdeteksi dalam transaksi
-r, --rootdir <dir>Tentukan root directory target
-C, --config <dir>Tentukan path direktori konfigurasi XBPS
-c, --cachedir <dir>Tentukan path direktori cache paket
--reproducibleAktifkan reproducible mode โ€” install-date dan repository tidak disimpan ke pkgdb
--stagingAktifkan penggunaan staged packages dari repositori remote
-v, --verboseTampilkan pesan verbose
-d, --debugTampilkan informasi debug ke stderr

Package Expression

XBPS mendukung tiga cara penulisan nama paket:

FormatContohKeterangan
Nama sajafirefoxVersi terbaru yang tersedia
Nama + versi eksakfirefox-120.0_1Versi spesifik
Nama + operator versifirefox>=120.0Operator: <, >, <=, >=

Repositori pertama yang cocok dengan package expression yang digunakan.

Contoh Penggunaan

Sinkronisasi dan instal paket:

sudo xbps-install -S firefox

Instal beberapa paket sekaligus:

sudo xbps-install -S vim curl wget git

Upgrade seluruh sistem:

sudo xbps-install -Su

Jika update mencakup paket xbps itu sendiri, jalankan perintah di atas dua kali โ€” XBPS harus memperbarui dirinya dalam transaksi terpisah.

Update satu paket spesifik:

sudo xbps-install -Su firefox

Flag -S tetap diperlukan agar XBPS mengecek versi terbaru dari remote, bukan hanya dari cache lokal.

Dry run โ€” lihat apa yang akan dilakukan tanpa mengubah sistem:

xbps-install -Mn firefox

Flag -M digunakan agar dry run menggunakan index terbaru dari remote, bukan cache lokal.

Paksa reinstall:

sudo xbps-install -f firefox

Download semua update tanpa menginstal (berguna untuk persiapan upgrade offline):

sudo xbps-install -SDu

Download paket tertentu tanpa menginstal:

sudo xbps-install -SD firefox

Package Modes

Paket yang terinstal dapat memiliki mode operasi tertentu:

ModeKeterangan
holdTidak diupdate kecuali dipaksa dengan -f. Cek dengan xbps-query -H
manualTidak dianggap orphan oleh xbps-remove -o. Cek dengan xbps-query -m
repolockHanya menerima update dari repositori asal instalasi. Cek dengan xbps-query --list-repolock-pkgs

Environment Variables

VariabelKeterangan
XBPS_ARCHOverride arsitektur dari uname. Berguna untuk instalasi dengan arsitektur palsu
XBPS_TARGET_ARCHSet arsitektur target โ€” fase konfigurasi dilewati (untuk cross-install)
XBPS_SYSLOGOverride opsi syslog=true\|false dari xbps.d
HTTP_PROXYProxy untuk koneksi HTTP
HTTPS_PROXYProxy untuk koneksi HTTPS
NO_PROXYDomain yang tidak menggunakan proxy
SSL_NO_VERIFY_PEERNonaktifkan verifikasi SSL/TLS peer
CONNECTION_TIMEOUTTimeout koneksi dalam milidetik (default: 5 menit). -1 untuk tanpa batas

Lihat man xbps-install untuk daftar lengkap environment variables.

File Terkait

PathKeterangan
/etc/xbps.d/Direktori konfigurasi kustom
/usr/share/xbps.d/Direktori konfigurasi default sistem
/var/db/xbps/pkgdb-0.38.plistDatabase paket terinstal
/var/db/xbps/keys/Direktori trusted signing keys
/var/cache/xbps/Cache paket biner yang diunduh

Perbandingan dengan Package Manager Lain

OperasiAPT (Debian)DNF (Fedora)Pacman (Arch)XBPS (T4n OS)
Update repoapt updatednf check-updatepacman -Syxbps-install -S
Instal paketapt install nanodnf install nanopacman -S nanoxbps-install -S nano
Upgrade sistemapt upgradednf upgradepacman -Suxbps-install -Su
Hapus paketapt remove nanodnf remove nanopacman -R nanoxbps-remove nano
Cari paketapt search nanodnf search nanopacman -Ss nanoxbps-query -Rs nano

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-pkgdb

xbps-pkgdb adalah utilitas XBPS untuk memeriksa, memperbaiki, dan memodifikasi database paket (pkgdb) di Void Linux.

Fungsi Utama

xbps-pkgdb memiliki dua peran: maintenance (memeriksa dan memperbaiki database paket) serta manajemen status (mengubah mode paket).

1. Mode Maintenance & Pemeriksaan Database

PemeriksaanFungsi
METADATA CHECKMemeriksa apakah file metadata paket telah dimodifikasi dengan membandingkan hash asli saat instalasi dengan yang sekarang.
FILES CHECKMemeriksa semua file milik paket โ€” apakah ada yang hilang atau dimodifikasi. File biasa dicek via waktu modifikasi dan hash SHA256; symlink dicek targetnya.
DEPENDENCIES CHECKMemeriksa apakah semua dependensi yang dibutuhkan suatu paket terpenuhi.
ALTERNATIVES CHECKMemeriksa apakah semua symbolic link untuk grup xbps-alternatives sudah benar.
OBSOLETE METADATA CHECKMembersihkan data usang dari versi XBPS sebelumnya.
FORMAT CONVERSIONMengupdate format pkgdb ke versi terbaru (flag -u).

2. Mode Manajemen Status Paket

Gunakan flag -m untuk mengubah status paket:

ModeFungsi
autoTandai paket sebagai automatic (terinstall sebagai dependensi). Akan dianggap orphan dan bisa dihapus oleh xbps-remove -o.
manualTandai paket sebagai manual (diinstall eksplisit). Tidak akan dihapus sebagai orphan.
holdCegah paket dari update saat upgrade sistem. Berguna untuk mempertahankan versi tertentu.
unholdHapus status hold.
repolockKunci paket agar hanya menerima update dari repositori asal instalasi. Berguna untuk paket yang di-build sendiri.
repounlockHapus status repolock.

Opsi

FlagKeterangan
-a, --allProses semua paket terlepas dari statusnya
-m, --mode <mode>Ubah mode paket (auto, manual, hold, unhold, repolock, repounlock)
-u, --updateUpdate format database pkgdb ke versi terbaru
--checks <checks>Jalankan hanya pemeriksaan tertentu, dipisah koma
-C, --config <dir>Tentukan direktori konfigurasi XBPS
-r, --rootdir <dir>Tentukan direktori root target
-v, --verboseTampilkan informasi lebih detail
-d, --debugTampilkan informasi debug ke stderr

Contoh Penggunaan

Maintenance

Periksa semua paket:

xbps-pkgdb -a

Periksa paket tertentu saja:

xbps-pkgdb firefox

Jalankan pemeriksaan spesifik saja:

xbps-pkgdb --checks files,dependencies -a

Update format database:

sudo xbps-pkgdb -u

Manajemen Status Paket

Hold paket โ€” mencegah update saat xbps-install -Su:

sudo xbps-pkgdb -m hold firefox

Unhold paket:

sudo xbps-pkgdb -m unhold firefox

Repolock paket โ€” kunci ke repositori asal instalasi:

sudo xbps-pkgdb -m repolock firefox

Tandai paket sebagai manual (tidak akan dianggap orphan):

sudo xbps-pkgdb -m manual xfce4

Cek Status via xbps-query

Lihat daftar paket yang di-hold:

xbps-query -H

Lihat daftar paket manual:

xbps-query -m

Lihat daftar paket repolock:

xbps-query --list-repolock-pkgs

File Terkait

PathKeterangan
/var/db/xbps/pkgdb-0.38.plistDatabase utama paket โ€” mencatat semua paket terinstall
/var/db/xbps/.<pkgname>-files.plistMetadata file per paket
/var/cache/xbps/Cache paket biner

Catatan Penting

  • Perubahan mode paket langsung mempengaruhi perilaku xbps-install dan xbps-remove.
  • Flag -m manual dan -m auto adalah satu-satunya cara resmi mengubah status orphan suatu paket.
  • Beberapa operasi memerlukan akses root (sudo).
  • Untuk repolock yang efektif pada paket custom, pastikan repositori lokal tidak disinkronisasi ke repositori upstream.

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-query

xbps-query adalah utilitas read-only dalam XBPS untuk mencari dan menampilkan informasi paket, baik yang sudah terinstall di sistem maupun yang tersedia di repositori remote.

Fungsi Utama

FungsiPenjelasan
Mencari paketCari paket berdasarkan nama atau deskripsi di repositori
Melihat informasi paketTampilkan detail versi, lisensi, maintainer, dependensi
Daftar paket terinstallTampilkan semua paket yang ada di sistem
Mencari pemilik fileTentukan paket mana yang memiliki suatu file
Memeriksa status paketLihat apakah paket di-hold, manual, orphan, atau repolock

Mode Operasi

Secara default, xbps-query mencari di paket yang terinstall. Tambahkan -R untuk mencari di repositori remote.

FlagFungsi
-l, --list-pkgsTampilkan semua paket terinstall beserta statusnya
-L, --list-reposTampilkan daftar repositori aktif dan jumlah paket di dalamnya
-s, --search <keyword>Cari paket berdasarkan keyword (lokal). Gunakan -Rs untuk remote
-S, --show <paket>Tampilkan informasi detail paket terinstall
-f, --files <paket>Tampilkan semua file yang diinstall oleh paket
-x, --deps <paket>Tampilkan dependensi yang dibutuhkan paket
-X, --revdeps <paket>Tampilkan paket lain yang membutuhkan paket ini (reverse deps)
-o, --ownedby <path>Cari paket yang memiliki file di path tertentu
-O, --list-orphansTampilkan paket yang terinstall sebagai dependensi tapi tidak dibutuhkan lagi
-m, --list-manual-pkgsTampilkan paket yang diinstall secara manual
-H, --list-hold-pkgsTampilkan paket yang dikunci agar tidak diupdate
--list-repolock-pkgsTampilkan paket yang terkunci ke repositori tertentu
-p, --property <prop,...>Tampilkan hanya properti tertentu dari informasi paket
--regexGunakan regular expression pada pencarian
-R, --repositoryOperasikan pada repositori remote, bukan database lokal

-R vs Tanpa -R

Tanpa -R (default)Dengan -R
Membaca dari database lokalFetch dari repositori remote
Tidak perlu koneksi internetPerlu koneksi internet (atau index ter-sync)
Hanya paket yang sudah terinstallSemua paket yang tersedia di repo

Contoh perbedaan:

xbps-query -S firefox     # info Firefox yang terinstall di sistem
xbps-query -RS firefox    # info Firefox dari repositori remote

Contoh Penggunaan

Cari paket di repositori:

xbps-query -Rs firefox

Output: [*] = sudah terinstall, [-] = belum terinstall.

Cari semua kernel tersedia menggunakan regex:

xbps-query --regex -Rs '^linux[0-9.]+-[0-9._]+'

Tampilkan informasi detail paket terinstall:

xbps-query -S vim

Tampilkan informasi paket dari repositori (belum terinstall):

xbps-query -RS firefox

Tampilkan file-file yang dimiliki paket:

xbps-query -f firefox

Cari paket yang memiliki file tertentu:

xbps-query -o /usr/bin/vim

Tampilkan hanya properti tertentu:

xbps-query -S firefox -p pkgver,short_desc,license

Tampilkan semua paket terinstall:

xbps-query -l

Status pada output -l:

StatusKeterangan
iiTerinstall (installed ok)
uuUnpacked, belum dikonfigurasi
hrHalf-removed

Tampilkan package orphans:

xbps-query -O

Paket-paket ini dapat dihapus dengan xbps-remove -o.

Tampilkan daftar repositori aktif:

xbps-query -L

Package Expression

xbps-query mendukung package expression untuk pencarian yang lebih fleksibel:

FormatContohKeterangan
Nama sajafirefoxVersi terbaru yang tersedia
Nama + versi eksakfirefox-120.0_1Versi spesifik
Nama + operator versifirefox>=120.0Operator: <, >, <=, >=

Perbandingan dengan Package Manager Lain

FungsiXBPS (Void)APT (Debian)Pacman (Arch)
Cari paketxbps-query -Rsapt searchpacman -Ss
Info dari repoxbps-query -RSapt showpacman -Si
Info terinstallxbps-query -Sapt showpacman -Qi
File milik paketxbps-query -fdpkg -Lpacman -Ql
Pemilik filexbps-query -odpkg -Spacman -Qo
Dependensixbps-query -xapt dependspacman -Qi
Orphansxbps-query -Odeborphanpacman -Qdt

Catatan Penting

  • xbps-query tidak memerlukan root โ€” hanya membaca database, tidak mengubah sistem.
  • Sebelum menggunakan mode -R, pastikan indeks repo sudah ter-sync via xbps-install -S.
  • Pencarian nama paket bersifat case-sensitive.

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-reconfigure

xbps-reconfigure adalah utilitas XBPS untuk menjalankan ulang skrip konfigurasi paket yang sudah terinstall. Digunakan ketika paket mengalami masalah konfigurasi atau perlu menerapkan ulang perubahan.

Cara Kerja

Ketika paket diinstall, XBPS menjalankan skrip INSTALL yang berisi langkah konfigurasi pasca-instalasi. xbps-reconfigure menjalankan ulang bagian post dari skrip tersebut.

Proses konfigurasi terdiri dari dua langkah:

LangkahDeskripsi
1Eksekusi aksi post pada skrip INSTALL paket. Isi skrip bisa dilihat dengan xbps-query --property=install-script <paket>
2Update status paket menjadi XBPS_PKG_STATE_INSTALLED jika langkah pertama berhasil

Secara default, hanya paket yang belum dikonfigurasi yang diproses. Gunakan -f untuk memaksa konfigurasi ulang.

Opsi

FlagKeterangan
-a, --allKonfigurasi semua paket terinstall
-f, --forcePaksa konfigurasi ulang meskipun paket sudah dikonfigurasi sebelumnya
-x, --depsKonfigurasi paket beserta dependensi langsungnya
--fulldeptreeKonfigurasi seluruh pohon dependensi โ€” harus digunakan bersama -x
-i, --ignore <pkg>Abaikan paket tertentu saat konfigurasi massal (-a). Bisa diulang untuk beberapa paket
-r, --rootdir <dir>Tentukan direktori root alternatif (untuk chroot atau container)
-v, --verboseTampilkan output lebih detail
-d, --debugTampilkan informasi debug ke stderr

Kapan Digunakan

SkenarioContoh
Paket dengan konfigurasi bermasalahInstalasi terputus di tengah jalan
Bangun ulang initramfsSetelah install atau update kernel
Bangun ulang modul DKMSSetelah install kernel baru atau linux-headers
Terapkan ulang perubahan fontSetelah menambah atau mengubah konfigurasi font
Recovery sistemKonfigurasi ulang semua paket sekaligus

Contoh Penggunaan

Paksa konfigurasi ulang satu paket:

sudo xbps-reconfigure -f fontconfig

Konfigurasi semua paket (berguna saat recovery):

sudo xbps-reconfigure -a

Bangun ulang initramfs untuk kernel tertentu:

sudo xbps-reconfigure -f linux6.6

Cek versi kernel yang terinstall dengan xbps-query -l | grep linux.

Konfigurasi paket beserta seluruh pohon dependensinya:

sudo xbps-reconfigure -x --fulldeptree dbus

Konfigurasi semua paket kecuali yang dikecualikan:

sudo xbps-reconfigure -a -i firefox -i vim

Lihat isi skrip INSTALL suatu paket:

xbps-query --property=install-script xbps

Contoh: Ganti Initramfs Generator

Beralih dari dracut ke mkinitcpio:

sudo xbps-install -S mkinitcpio
sudo xbps-alternatives -s mkinitcpio -g initramfs
sudo xbps-reconfigure -f linux6.6

Perbedaan dengan xbps-install

Aspekxbps-installxbps-reconfigure
Fungsi utamaInstall/update paketJalankan ulang skrip konfigurasi paket
Mengubah file paketYa (download, ekstrak)Tidak (hanya eksekusi skrip)
KonfigurasiHanya saat instalasi pertamaBisa dijalankan kapan saja
Bangun initramfsTidak otomatisYa (untuk paket kernel)
Perlu downloadYaTidak

Catatan Penting

  • Sebagian besar operasi memerlukan sudo karena menyentuh file sistem.
  • Tanpa -f, paket yang sudah berstatus INSTALLED tidak akan diproses ulang.
  • Beberapa skrip INSTALL bisa menimpa perubahan konfigurasi manual โ€” perhatikan ini sebelum menjalankan -f pada paket yang konfigurasinya sudah dikustomisasi.
  • Membangun initramfs memakan waktu dan memerlukan ruang di /boot.

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-remove

xbps-remove adalah utilitas XBPS untuk menghapus paket yang sudah terinstall dari sistem. Dependency check dilakukan otomatis โ€” jika ada paket lain yang membutuhkan paket yang akan dihapus, operasi ditolak kecuali dipaksa dengan -f.

Opsi

Operasi Utama

FlagKeterangan
-R, --recursiveHapus paket beserta dependensinya yang tidak dibutuhkan paket lain
-f, --forcePaksa penghapusan meskipun ada paket lain yang bergantung โ€” berbahaya, bisa merusak sistem
-n, --dry-runTampilkan aksi yang akan dilakukan tanpa mengubah sistem
-y, --yesAsumsikan yes untuk semua pertanyaan interaktif
-v, --verboseTampilkan informasi lebih detail
-d, --debugTampilkan informasi debug ke stderr

Pembersihan

FlagKeterangan
-O, --remove-orphansHapus package orphans โ€” paket yang terinstall sebagai dependensi tapi tidak dibutuhkan lagi
-o, --remove-obsoletesHapus paket yang sudah tidak tersedia di repositori manapun
-C, --remove-cacheBersihkan cache paket biner di /var/cache/xbps/

Lainnya

FlagKeterangan
-r, --rootdir <dir>Tentukan direktori root target (untuk chroot/container)
-C, --config <dir>Tentukan path direktori konfigurasi XBPS

Contoh Penggunaan

Hapus paket (tanpa menyentuh dependensinya):

sudo xbps-remove firefox

Hapus paket beserta dependensi yang tidak lagi dibutuhkan:

sudo xbps-remove -R firefox

Hapus beberapa paket sekaligus:

sudo xbps-remove firefox vim curl

Dry run โ€” lihat apa yang akan dihapus tanpa eksekusi:

xbps-remove -Rn firefox

Hapus package orphans:

sudo xbps-remove -O

Cek orphans terlebih dahulu sebelum dihapus: xbps-query -O

Bersihkan cache paket:

sudo xbps-remove -C

Hapus paket yang sudah tidak ada di repositori:

sudo xbps-remove -o

Paksa hapus (tidak direkomendasikan):

sudo xbps-remove -f firefox

Perilaku Penting

File Konfigurasi Tidak Ikut Terhapus

Secara default, file konfigurasi paket di /etc tidak dihapus saat xbps-remove dijalankan. Ini disengaja agar konfigurasi tetap ada jika paket diinstall ulang.

Tidak ada flag --configpreserve=false yang valid di xbps-remove. Untuk menghapus file konfigurasi, lakukan manual setelah paket dihapus.

-R vs Tanpa -R

Tanpa -RDengan -R
Hanya hapus paket yang disebutkanHapus paket + dependensi yang tidak dibutuhkan lagi
Dependensi tetap terinstallDependensi yang tidak dibutuhkan ikut dibersihkan

Cek Reverse Dependency Sebelum Hapus

Sebelum menghapus paket, cek dulu paket apa yang bergantung padanya:

xbps-query -X firefox

Workflow Pembersihan Rutin

# 1. Update sistem
sudo xbps-install -Su

# 2. Cek orphans
xbps-query -O

# 3. Hapus orphans
sudo xbps-remove -O

# 4. Bersihkan cache (opsional)
sudo xbps-remove -C

Perbandingan dengan Package Manager Lain

FungsiXBPS (T4n OS)APT (Debian)Pacman (Arch)DNF (Fedora)
Hapus paketxbps-remove nanoapt remove nanopacman -R nanodnf remove nano
Hapus + dependensixbps-remove -R nanoapt autoremove nanopacman -Rs nanodnf autoremove
Hapus orphansxbps-remove -Oapt autoremovepacman -Rns $(pacman -Qdtq)dnf autoremove
Hapus cachexbps-remove -Capt cleanpacman -Scdnf clean all

Catatan Penting

  • Semua operasi penghapusan memerlukan sudo.
  • Jangan gunakan -f kecuali benar-benar paham dampaknya โ€” bisa merusak sistem.
  • Orphans yang muncul di xbps-query -O aman dihapus karena tidak dibutuhkan paket lain.

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-rindex

xbps-rindex adalah utilitas XBPS untuk mengelola repositori paket biner lokal. Alat ini mengubah direktori biasa menjadi repositori yang dapat dikenali xbps-install dengan membuat dan memelihara file repodata.

Fungsi Utama

FungsiPenjelasan
Tambah paket ke repositoriDaftarkan file .xbps ke dalam indeks repositori lokal
Bersihkan indeksHapus entri usang dari repodata tanpa menghapus file .xbps-nya
Hapus paket usangHapus file .xbps yang tidak terdaftar di indeks
Tandatangani repositoriTambahkan metadata tanda tangan RSA untuk distribusi remote
Tandatangani paketTandatangani file .xbps secara individual

Mode Operasi

FlagFungsi
-a, --addTambahkan paket ke indeks. Paket hanya ditambahkan jika versinya lebih baru; gunakan -f untuk paksa menimpa
-c, --cleanBersihkan entri usang dari repodata (tidak menghapus file .xbps)
-r, --remove-obsoletesHapus file .xbps yang sudah tidak terdaftar di indeks
--signInisialisasi repositori dengan metadata tanda tangan RSA
--sign-pkgTandatangani file .xbps secara individual

Opsi

FlagKeterangan
-f, --forcePaksa timpa entri yang sudah ada saat menambahkan paket
-C, --hashcheckSaat -c, verifikasi hash file (bukan hanya keberadaan file)
--compression <type>Format kompresi repodata (default: zstd)
--privkey <key.pem>Path kunci RSA privat untuk signing
--signedby <string>Identitas penanda tangan repositori

Contoh Penggunaan

Buat Repositori Lokal Sederhana

mkdir ~/myrepo
cp /path/to/myapp-1.0_1.x86_64.xbps ~/myrepo/
xbps-rindex -a ~/myrepo/*.xbps

Install dari repositori lokal:

sudo xbps-install --repository=~/myrepo myapp

Downgrade Paket via Cache

# Daftarkan paket versi lama dari cache ke indeks
sudo xbps-rindex -a /var/cache/xbps/pkg-1.0_1.x86_64.xbps

# Downgrade dengan force karena versi lebih rendah
sudo xbps-install -R /var/cache/xbps/ -f pkg-1.0_1

Buat Repositori Bertanda Tangan

Generate kunci RSA:

# Dengan ssh-keygen
ssh-keygen -t rsa -b 4096 -m PEM -f private.pem

# Atau dengan openssl
openssl genrsa -out private.pem 4096

Inisialisasi tanda tangan repositori:

xbps-rindex --privkey private.pem --sign --signedby "Nama <email@example.com>" /path/to/repo

Tandatangani paket di dalamnya:

xbps-rindex --privkey private.pem --sign-pkg /path/to/repo/*.xbps

Paket yang ditambahkan di masa depan harus ditandatangani ulang secara manual โ€” tidak otomatis.

Bersihkan Repositori

# Bersihkan entri usang dari indeks
xbps-rindex -c ~/myrepo

# Hapus file .xbps yang tidak terdaftar di indeks
xbps-rindex -r ~/myrepo

Struktur Direktori Repositori

Setelah xbps-rindex -a dijalankan, direktori repositori akan berisi:

FileDeskripsi
repodataFile indeks utama berisi metadata semua paket (format plist biner)
repodata.oldBackup repodata sebelumnya
*.xbpsFile paket biner
*.xbps.sig2File tanda tangan per paket (jika repositori ditandatangani)

Format file tanda tangan yang digunakan adalah .sig2, bukan .sig. Format .sig sudah deprecated di XBPS versi modern.

Signed vs Unsigned

AspekUnsignedSigned
KeamananTidak ada verifikasi keaslianTerverifikasi secara kriptografis
PenggunaanRepositori lokal, testing, developmentRepositori remote atau produksi
PersyaratanTidak perlu kunciKunci RSA dalam format PEM
Perilaku XBPSPrompt konfirmasi trust key saat pertamaDiverifikasi otomatis setelah key di-trust

Void Linux mengharuskan repositori remote untuk ditandatangani. Repositori lokal tidak wajib ditandatangani.

Hubungan dengan Tools XBPS Lain

CommandPeran
xbps-srcBuild paket dari source menggunakan void-packages
xbps-createBuat file .xbps dari direktori file
xbps-rindexDaftarkan .xbps ke repositori (buat repodata)
xbps-install -R <repo>Install paket dari repositori tertentu
xbps-query -LTampilkan daftar repositori aktif

Catatan Penting

  • xbps-rindex tidak memerlukan root untuk repositori di direktori user. Root diperlukan jika repositori berada di direktori sistem.
  • Setiap kali menambahkan paket ke repositori signed, jalankan ulang --sign-pkg untuk menandatangani paket baru.
  • xbps-rindex -a melakukan pengecekan konsistensi shared library saat paket ditambahkan.
  • Distribusikan file private.pem.pub ke pengguna agar mereka dapat memverifikasi tanda tangan repositori.

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-uchroot

xbps-uchroot adalah utilitas XBPS untuk melakukan chroot dan bind mount menggunakan Linux namespaces. Terutama digunakan oleh xbps-src sebagai backend environment build yang terisolasi.

Fungsi Utama

FungsiPenjelasan
Chroot ke direktori targetBerpindah ke lingkungan root yang terisolasi
Bind mount pseudo-filesystemAuto-mount /dev, /dev/shm, /proc, dan /sys ke dalam chroot
Bind mount direktori kustomPasang direktori dari host ke dalam chroot (opsional)
Isolasi via namespacesPisahkan IPC, PID, dan mount points dari proses pemanggil

Penggunaan

xbps-uchroot [OPSI] CHROOTDIR [CMD] [ARGS]

Opsi

FlagKeterangan
-b src:destBind mount src ke CHROOTDIR/dest (read-write)
-B src:destBind mount src ke CHROOTDIR/dest (read-only)
-OBuat overlay layer sementara โ€” perubahan tidak disimpan ke CHROOTDIR (butuh overlayfs)
-tMount temporary dir di tmpfs (RAM) โ€” hanya berguna bersama -O
-o optsArgumen tambahan untuk mount tmpfs โ€” hanya bersama -O dan -t

Contoh Penggunaan

Chroot sederhana dengan auto-mount /proc, /sys, /dev:

xbps-uchroot /mnt/void /bin/bash

Bind mount direktori host ke dalam chroot:

xbps-uchroot -b /home/user:/home/user /mnt/void /bin/bash

Overlay sementara โ€” perubahan tidak disimpan ke CHROOTDIR:

xbps-uchroot -O /mnt/void /bin/bash

Aktifkan xbps-uchroot sebagai backend xbps-src:

cd void-packages
echo XBPS_CHROOT_CMD=uchroot >> etc/conf

Keamanan dan Izin

PersyaratanPenjelasan
setuid/setgidBinary harus memiliki bit setuid untuk berfungsi
Group khususHanya anggota grup xbuilder yang dapat menjalankannya
Izin filechmod 4750, kepemilikan root:xbuilder

Di T4n OS, konfigurasi ini sudah diatur secara default. Cek dengan:

ls -la /usr/bin/xbps-uchroot
# Output: -rwsr-x--- ... root xbuilder ...

Bit yang digunakan adalah setuid (mode s pada posisi owner), bukan setgid. Ini yang memberikan eskalasi privilege sementara saat dieksekusi.

Prasyarat Kernel

Opsi KernelFungsi
CONFIG_NAMESPACESDukungan namespace secara umum
CONFIG_IPC_NSIsolasi IPC (Inter-Process Communication)
CONFIG_PID_NSIsolasi process ID
CONFIG_UTS_NSIsolasi hostname/domainname
CONFIG_OVERLAY_FSDiperlukan untuk opsi -O (overlay)

Kernel Void Linux default sudah mengaktifkan semua opsi ini.

Perbandingan Backend Chroot di xbps-src

UtilityMekanismeDefaultCatatan
xbps-uunshareUser namespacesYaTidak perlu setuid, lebih aman untuk user biasa
xbps-uchrootNamespaces + setuidTidakPerlu grup xbuilder, performa lebih baik
prootUser-space ptraceTidakTidak perlu hak khusus, tapi lebih lambat

Troubleshooting

Error: clone (Operation not permitted)

Pastikan user berada di grup xbuilder:

groups $USER

Jika tidak ada, tambahkan:

sudo usermod -aG xbuilder $USER

Logout dan login kembali agar perubahan grup berlaku.

Catatan Penting

  • Untuk penggunaan sehari-hari, xbps-uchroot tidak perlu dijalankan langsung โ€” xbps-src yang memanggilnya.
  • xbps-uunshare adalah pilihan default yang lebih aman jika tidak ingin setup grup xbuilder.
  • Opsi -O membutuhkan kernel dengan CONFIG_OVERLAY_FS aktif.

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-uhelper

xbps-uhelper adalah utilitas helper XBPS untuk mengolah string paket, versi, dan pola dependensi. Lebih ditujukan untuk scripting dan pengembangan paket daripada penggunaan sehari-hari.

Penggunaan

xbps-uhelper [OPSI] ACTION [ARGUMEN ...]

Actions

Ekstraksi dari pkgver

ActionArgumenOutput
getpkgname<pkgver...>Nama paket dari string pkgver
getpkgversion<pkgver...>Versi dari string pkgver
getpkgrevision<pkgver...>Revisi dari string pkgver
getname<pkgver\|dep...>Nama paket โ€” bisa dari pkgver atau pola dep
getversion<pkgver\|dep...>Versi โ€” bisa dari pkgver atau constraint dep

Ekstraksi dari Pola Dependensi

ActionArgumenOutput
getpkgdepname<dep...>Nama paket dari pola dependensi
getpkgdepversion<dep...>Constraint versi dari pola dependensi

Perbandingan dan Pencocokan

ActionArgumenOutput
cmpver<instver> <reqver>Bandingkan dua string versi โ€” lihat exit codes di bawah
pkgmatch<pkgver> <pkgpattern>Cek apakah pkgver cocok dengan pola

Informasi Paket Terinstall

ActionArgumenOutput
version<pkgname...>Versi paket yang terinstall
real-version<pkgname...>Versi "real" (relevan untuk virtual/metapackage)

Informasi Sistem

ActionArgumenOutput
arch-Arsitektur native XBPS
getsystemdir-Direktori konfigurasi sistem (/usr/share/xbps.d)
binpkgarch<binpkg...>Arsitektur dari file paket biner
binpkgver<binpkg...>pkgver dari file paket biner

Opsi

FlagKeterangan
-C, --config <dir>Tentukan direktori konfigurasi XBPS
-r, --rootdir <dir>Tentukan direktori root target
-v, --verboseTampilkan hasil perbandingan ke stdout (untuk cmpver dan pkgmatch)
-d, --debugTampilkan informasi debug ke stderr
-V, --versionTampilkan versi XBPS

Contoh Penggunaan

Parsing pkgver

xbps-uhelper getpkgname firefox-120.0_1
# firefox

xbps-uhelper getpkgversion firefox-120.0_1
# 120.0

xbps-uhelper getpkgrevision firefox-120.0_1
# 1

getname dan getversion lebih fleksibel โ€” bisa menangani pkgver maupun pola dependensi:

xbps-uhelper getname firefox-120.0_1
# firefox

xbps-uhelper getname 'gtk+>=3.0'
# gtk+

Parsing Pola Dependensi

xbps-uhelper getpkgdepname 'gtk+>=3.0'
# gtk+

xbps-uhelper getpkgdepversion 'gtk+>=3.0'
# >=3.0

Membandingkan Versi

xbps-uhelper cmpver 'foo-1.0_1' 'foo-2.0_1'
echo $?   # 1 โ†’ instver < reqver

xbps-uhelper cmpver 'foo-2.0_1' 'foo-1.0_1'
echo $?   # 255 โ†’ instver > reqver

xbps-uhelper -v cmpver 'foo-1.0_1' 'foo-2.0_1'
# 1.0 < 2.0

Exit codes cmpver:

Exit CodeArti
0instver == reqver
1instver < reqver
255instver > reqver

Mencocokkan Paket dengan Pola

xbps-uhelper pkgmatch firefox-120.0_1 'firefox>=100.0'
echo $?   # 1 โ†’ match

xbps-uhelper pkgmatch firefox-1.0_1 'firefox>=100.0'
echo $?   # 0 โ†’ tidak match

xbps-uhelper -v pkgmatch firefox-1.0_1 'firefox>=100.0'
# firefox-1.0_1 does not match firefox>=100.0

Exit codes pkgmatch:

Exit CodeArti
1Match
0Tidak match
255Error

Informasi Sistem dan Paket

xbps-uhelper arch
# x86_64

xbps-uhelper getsystemdir
# /usr/share/xbps.d

xbps-uhelper version firefox xbps
# 120.0_1
# 0.68_1

Kompatibilitas: digest dan fetch

Action digest dan fetch masih tersedia di xbps-uhelper untuk kompatibilitas mundur dengan skrip lama, meski tidak dicantumkan di --help. Disarankan menggunakan utilitas mandiri yang lebih baru:

Action LamaGanti Dengan
xbps-uhelper digest <file>xbps-digest
xbps-uhelper fetch <url>xbps-fetch

Catatan Penting

  • Semua operasi bersifat case-sensitive.
  • Exit codes cmpver dan pkgmatch berbeda dari konvensi Unix standar โ€” 1 bukan berarti error, tapi memiliki arti semantik sendiri. Perhatikan ini saat scripting.
  • Gunakan flag -v untuk mendapatkan output teks dari cmpver dan pkgmatch, bukan hanya exit code.

Referensi


@T4n-Labs ยท @Gh0sT4n

xbps-uunshare

xbps-uunshare adalah utilitas XBPS untuk melakukan chroot dan bind mount menggunakan Linux user namespaces. Keunggulan utamanya: tidak memerlukan hak akses root. Ini adalah backend default yang digunakan xbps-src untuk environment build yang terisolasi.

Fungsi Utama

FungsiPenjelasan
Chroot ke direktori targetBerpindah ke lingkungan root yang terisolasi
Mount pseudo-filesystemAuto-mount /dev, /proc, dan /sys ke dalam chroot
Bind mount direktori kustomPasang direktori dari host ke dalam chroot via -b
Isolasi via user namespacesPisahkan IPC, PID, dan mount points tanpa hak istimewa

Penggunaan

xbps-uunshare [OPSI] CHROOTDIR [CMD] [ARGS]

Opsi

FlagKeterangan
-b src:destBind mount src dari host ke CHROOTDIR/dest. Keduanya harus path absolut dan sudah ada
--Hentikan interpretasi argumen berikutnya sebagai opsi โ€” berguna jika CMD punya opsinya sendiri

Contoh Penggunaan

Chroot sederhana dengan auto-mount /proc, /sys, /dev:

xbps-uunshare /mnt/void /bin/bash

Bind mount direktori host ke dalam chroot:

xbps-uunshare -b /home/user:/home/user /mnt/void /bin/bash

Jalankan command tertentu di dalam chroot:

xbps-uunshare /mnt/void /usr/bin/ls -la

Ganti backend chroot di xbps-src ke xbps-uchroot:

cd void-packages
echo XBPS_CHROOT_CMD=uchroot >> etc/conf

Prasyarat Kernel

Opsi KernelFungsi
CONFIG_NAMESPACESDukungan namespace secara umum
CONFIG_IPC_NSIsolasi IPC (Inter-Process Communication)
CONFIG_UTS_NSIsolasi hostname/domainname
CONFIG_USER_NSUser namespaces โ€” kunci agar tidak perlu root

Kernel Void Linux default sudah mengaktifkan semua opsi ini. Jika tidak tersedia, xbps-uunshare gagal dengan error EINVAL.

Perbandingan dengan xbps-uchroot

Aspekxbps-uunsharexbps-uchroot
Hak aksesTidak perlu rootPerlu grup xbuilder dan bit setuid
Kernel requirementCONFIG_USER_NSCONFIG_PID_NS, CONFIG_IPC_NS
Default di xbps-srcYaTidak
Overlay (-O)Tidak didukungDidukung (butuh CONFIG_OVERLAY_FS)

Troubleshooting

Error: Invalid argument (EINVAL)

Kernel mungkin tidak mendukung user namespaces, atau fiturnya dinonaktifkan:

cat /proc/sys/kernel/unprivileged_userns_clone

Jika hasilnya 0, aktifkan dengan:

echo 1 | sudo tee /proc/sys/kernel/unprivileged_userns_clone

Atau beralih ke xbps-uchroot sebagai alternatif.

Catatan Penting

  • xbps-uunshare tidak mendukung flag -O (overlay) โ€” untuk itu gunakan xbps-uchroot.
  • Untuk penggunaan sehari-hari, xbps-uunshare tidak perlu dijalankan langsung โ€” xbps-src yang memanggilnya.
  • /dev/shm tidak di-mount otomatis oleh xbps-uunshare, berbeda dengan xbps-uchroot.

Referensi


@T4n-Labs ยท @Gh0sT4n

Repository

Repositori adalah inti dari sistem paket XBPS. Repositori dapat bersifat lokal (di mesin sendiri) atau remote (di server internet).

Sebuah repositori berisi:

KomponenPenjelasan
File paket (.xbps)File paket yang sudah dikompilasi dan siap diinstall
Tanda tangan (.sig2)File signature untuk memverifikasi keaslian paket
File repodataFile $ARCH-repodata (contoh: x86_64-repodata) berisi metadata semua paket di repo

Repositori lokal tidak wajib memiliki tanda tangan. Repositori remote wajib ditandatangani.

Struktur Repositori Void Linux

Path repositori relatif terhadap base mirror URL:

Arsitektur & LibcPath
x86_64 / i686 glibc/current
musl/current/musl
aarch64 glibc/current/aarch64

Cek mirror yang aktif:

xbps-query -L

Subrepositori Resmi

Selain repositori utama yang aktif secara default, Void menyediakan beberapa repositori tambahan yang tidak aktif secara default:

SubrepositoriIsiPaket Aktivasi
nonfreePaket dengan lisensi non-freevoid-repo-nonfree
multilibLibrary 32-bit untuk sistem x86_64 glibcvoid-repo-multilib
multilib/nonfreePaket 32-bit dengan lisensi non-freevoid-repo-multilib-nonfree
debugSimbol debugging untuk paketvoid-repo-debug

Semua paket aktivasi di atas hanya menginstall file konfigurasi ke /usr/share/xbps.d, bukan paket aplikasi.

Ringkasan perintah aktivasi:

sudo xbps-install -S void-repo-nonfree
sudo xbps-install -S void-repo-multilib
sudo xbps-install -S void-repo-multilib-nonfree
sudo xbps-install -S void-repo-debug

Selalu jalankan dengan -S agar indeks disinkronkan setelah repositori baru ditambahkan.

nonfree

Berisi paket dengan lisensi tidak bebas. Alasan umum suatu paket masuk ke nonfree:

AlasanContoh
Lisensi proprietary meski source tersediaBeberapa tool komersial
Dirilis hanya sebagai biner tanpa sourceDriver NVIDIA, beberapa firmware
Mengandung teknologi berpatenBeberapa codec multimedia
sudo xbps-install -S void-repo-nonfree
xbps-query -Rs nvidia

multilib

Menyediakan paket 32-bit untuk sistem 64-bit sebagai lapisan kompatibilitas.

Prasyarat:

  • Arsitektur: hanya x86_64
  • C library: hanya glibc โ€” tidak tersedia untuk musl
sudo xbps-install -S void-repo-multilib

# Contoh install library 32-bit (misalnya untuk Steam)
sudo xbps-install -S libGL-32bit

Paket 32-bit umumnya memiliki suffix -32bit pada namanya.

multilib/nonfree

Gabungan multilib dan nonfree โ€” berisi paket 32-bit dengan lisensi tidak bebas. Contoh: nvidia-32bit.

sudo xbps-install -S void-repo-multilib-nonfree

debug

Paket Void dikirim tanpa simbol debugging untuk menghemat ruang. Aktifkan repositori ini jika perlu debugging atau analisis core dump.

sudo xbps-install -S void-repo-debug

# Install simbol debug untuk paket tertentu
sudo xbps-install -S bash-dbg

xdbg (dari xtools)

xdbg membantu mendapatkan daftar paket debug beserta dependensinya:

sudo xbps-install -S xtools

# Lihat debug packages yang dibutuhkan
xdbg bash
# bash-dbg
# glibc-dbg

# Install sekaligus
sudo xbps-install -S $(xdbg bash)

Paket -dbg biasanya berukuran beberapa kali lipat dari paket aslinya. Hapus setelah selesai: sudo xbps-remove -R bash-dbg.

Konfigurasi Repositori

LokasiKeterangan
/usr/share/xbps.d/Konfigurasi default (dari paket void-repo-*)
/etc/xbps.d/Konfigurasi lokal โ€” override konfigurasi default

File di /etc/xbps.d/ dibaca lebih awal dan memiliki prioritas lebih tinggi.

Nonaktifkan repositori tanpa menghapus paket โ€” buat file di /etc/xbps.d/, misalnya 10-ignore-nonfree.conf:

ignorerepo=https://repo-default.voidlinux.org/current/nonfree

Cara yang lebih kasar adalah menghapus file .conf dari /usr/share/xbps.d/, tapi ini akan dikembalikan saat paket void-repo-* diupdate.

Catatan Penting

  • Repositori multilib tidak tersedia untuk sistem musl โ€” hanya glibc.
  • Urutan prioritas repositori mengikuti urutan yang ditampilkan xbps-query -L. Untuk override, buat file di /etc/xbps.d/.
  • Format file signature yang benar adalah .sig2, bukan .sig โ€” format .sig sudah deprecated di XBPS versi modern.

@T4n-Labs ยท @Gh0sT4n

Repository Custom

T4n OS mendukung repositori kustom, baik lokal maupun remote.

Proyek Void Linux tidak mendukung repositori pihak ketiga manapun. Hanya tambahkan repositori kustom jika Anda benar-benar memahami risikonya dan percaya penuh dengan sumbernya.

Menambahkan Repositori

Buat file .conf di /etc/xbps.d/ dengan isi:

repository=<URL>

Format URL yang didukung:

TipeFormatContoh
Direktori lokal/absolute/path atau file:///absolute/pathrepository=/home/user/myrepo
HTTP/HTTPShttp:// atau https://repository=https://mirror.example.com/repo
FTPftp://repository=ftp://ftp.example.com/repo

Contoh:

# Remote
echo 'repository=https://my.domain.com/repo' | sudo tee /etc/xbps.d/10-myrepo.conf

# Lokal
echo 'repository=/home/user/myrepo' | sudo tee /etc/xbps.d/10-myrepo.conf

Setelah menambah repositori, sinkronkan indeks:

sudo xbps-install -S

Prioritas Repositori

Repositori dibaca berdasarkan urutan abjad nama file. Gunakan prefix angka untuk mengatur prioritas:

FilePrioritas
00-local.confTertinggi
10-custom.confSedang
20-void-repo.confRendah

File yang terdaftar lebih awal dicari terlebih dahulu. Jika paket ditemukan, repositori berikutnya dilewati untuk paket tersebut.

Beberapa repositori dalam satu file dibaca dari atas ke bawah:

# /etc/xbps.d/99-custom-repos.conf
repository=/home/user/local-repo
repository=https://internal.example.com/repo

Repositori Remote: Wajib Ditandatangani

Repositori remote wajib memiliki signature โ€” xbps-install akan menolak paket dari repositori remote yang tidak ditandatangani.

Langkah Membuat Signed Repository

Generate kunci RSA:

# Dengan ssh-keygen
ssh-keygen -t rsa -b 4096 -m PEM -f private.pem

# Atau dengan openssl
openssl genrsa -out private.pem 4096

Siapkan dan tandatangani repositori:

mkdir -p ~/myrepo
cp /path/to/*.xbps ~/myrepo/

# Inisialisasi signature repositori
xbps-rindex --privkey private.pem --sign --signedby "Nama <email@example.com>" ~/myrepo

# Tandatangani setiap paket
xbps-rindex --privkey private.pem --sign-pkg ~/myrepo/*.xbps

private.pem adalah kunci privat โ€” jangan disebarkan. private.pem.pub adalah kunci publik yang perlu didistribusikan ke pengguna.

Paket yang ditambahkan di masa depan harus ditandatangani ulang secara manual.

Manajemen Repositori

Lihat repositori yang aktif:

xbps-query -L

Nonaktifkan sementara tanpa menghapus:

sudo mv /etc/xbps.d/10-myrepo.conf /etc/xbps.d/10-myrepo.conf.disabled

Hapus permanen:

sudo rm /etc/xbps.d/10-myrepo.conf
sudo xbps-install -S

Setelah menghapus repositori, cek dan bersihkan paket yang menjadi orphan:

xbps-query -O
sudo xbps-remove -O

Risiko Keamanan

RisikoPenjelasan
MalwareRepositori tidak resmi bisa menyisipkan kode berbahaya
Konflik dependensiPaket dari sumber berbeda mungkin tidak kompatibel satu sama lain
Ketidakstabilan sistemPaket yang tidak teruji bisa merusak sistem
Tidak ada dukunganJika sistem rusak karena repositori kustom, komunitas Void tidak membantu

Praktik yang disarankan:

  • Hanya gunakan repositori dari sumber yang benar-benar dipercaya.
  • Verifikasi signature pada repositori remote.
  • Uji di container atau VM sebelum digunakan di sistem utama.
  • Backup sistem sebelum menambahkan repositori kustom.

@T4n-Labs ยท @Gh0sT4n

Signing Repository

Jenis RepositoriWajib Ditandatangani
Remote (server internet)Ya โ€” xbps-install menolak paket dari repo remote tanpa signature
Lokal (di mesin sendiri)Tidak wajib

Generate Kunci RSA

xbps-rindex membutuhkan kunci RSA dalam format PEM.

Dengan ssh-keygen:

ssh-keygen -t rsa -b 4096 -m PEM -f private.pem

Atau dengan openssl:

openssl genrsa -out private.pem 4096

Opsi -des3 pada openssl mengenkripsi kunci dengan password. Setiap kali menggunakan kunci tersebut, password akan diminta โ€” hindari jika ini digunakan dalam skrip otomatis.

Output:

  • private.pem โ€” kunci privat. Jangan disebarkan, jangan di-commit ke repositori publik.
  • private.pem.pub โ€” kunci publik, didistribusikan ke pengguna.

Alur Kerja Lengkap

# 1. Buat direktori repositori
mkdir -p ~/signed-repo

# 2. Generate kunci RSA
ssh-keygen -t rsa -b 4096 -m PEM -f ~/signed-repo/private.pem

# 3. Copy paket ke repositori
cp /path/to/*.xbps ~/signed-repo/

# 4. Buat indeks repositori
xbps-rindex -a ~/signed-repo/*.xbps

# 5. Inisialisasi tanda tangan repositori (sekali saja)
xbps-rindex --privkey ~/signed-repo/private.pem \
            --sign \
            --signedby "T4n OS Repository <admin@t4n.org>" \
            ~/signed-repo

# 6. Tandatangani semua paket
xbps-rindex --privkey ~/signed-repo/private.pem --sign-pkg ~/signed-repo/*.xbps

Urutan langkah 4 dan 5โ€“6 penting โ€” xbps-rindex -a harus dijalankan sebelum --sign agar repodata sudah ada saat ditandatangani.

Menandatangani Paket Baru

Paket yang ditambahkan setelah inisialisasi tidak ditandatangani secara otomatis. Setiap kali ada paket baru:

# Tambahkan paket ke indeks
xbps-rindex -a ~/signed-repo/paket-baru-1.0_1.x86_64.xbps

# Tandatangani
xbps-rindex --privkey ~/signed-repo/private.pem \
            --sign-pkg ~/signed-repo/paket-baru-1.0_1.x86_64.xbps

Atau tandatangani semua paket sekaligus (paket yang sudah ditandatangani akan dilewati):

xbps-rindex --privkey ~/signed-repo/private.pem --sign-pkg ~/signed-repo/*.xbps

Sisi Pengguna

Tambahkan repositori:

echo 'repository=https://serveranda.com/signed-repo' | sudo tee /etc/xbps.d/10-myrepo.conf
sudo xbps-install -S

XBPS akan memverifikasi tanda tangan secara otomatis. Jika repositori tidak ditandatangani, instalasi ditolak dengan error:

ERROR: repository `https://...' is not signed, refusing to continue!

Pengguna tidak perlu menginstall kunci publik secara manual โ€” metadata signature sudah disematkan di repodata dan XBPS akan prompt trust fingerprint saat pertama kali sinkronisasi.

Ringkasan Perintah

TugasPerintah
Generate kuncissh-keygen -t rsa -b 4096 -m PEM -f private.pem
Buat indeks repositorixbps-rindex -a /path/to/repo/*.xbps
Inisialisasi signature repoxbps-rindex --privkey private.pem --sign --signedby "Nama" /path/to/repo
Tandatangani paketxbps-rindex --privkey private.pem --sign-pkg /path/to/repo/*.xbps
Tandatangani paket baruxbps-rindex --privkey private.pem --sign-pkg /path/to/repo/paket-baru.xbps

Troubleshooting

repository is not signed, refusing to continue Repositori remote belum memiliki tanda tangan. Jalankan --sign dan --sign-pkg.

invalid signature Repodata atau file paket dimodifikasi setelah penandatanganan. Tandatangani ulang dengan --sign dan --sign-pkg.

Password kunci hilang (jika pakai -des3) Tidak bisa dipulihkan. Generate kunci baru dan tandatangani ulang repositori.


@T4n-Labs ยท @Gh0sT4n

Restricted Package

Void-Packages - xbps-src

T4n OS menyediakan beberapa paket yang dikelola secara resmi namun tidak didistribusikan dalam bentuk biner. Paket ini ditandai sebagai restricted dan wajib dibangun sendiri dari template [void-packages].

Alasan umum suatu paket menjadi restricted:

AlasanPenjelasan
Ukuran besarTerlalu besar untuk didistribusikan melalui repositori utama
Lisensi restriktifMelarang redistribusi biner atau source oleh pihak ketiga
Kebijakan upstreamPembuat software tidak mengizinkan distribusi ulang
Kebijakan VoidVoid berhak membatasi distribusi paket apapun

Membangun Paket Restricted

Clone void-packages jika belum:

git clone https://github.com/void-linux/void-packages.git
cd void-packages

Aktifkan build restricted:

echo 'XBPS_ALLOW_RESTRICTED=yes' >> etc/conf

Build dan install:

./xbps-src pkg <nama-paket>
sudo xbps-install --repository=path/to/hostdir/binpkgs <nama-paket>

VUR โ€” Void User Repository

VUR adalah repositori template paket berbasis komunitas untuk Void Linux, dikelola oleh T4n Labs. Fungsinya mirip AUR di Arch Linux โ€” menyediakan template xbps-src untuk paket yang tidak ada di repositori resmi.

VUR tidak didukung secara resmi oleh Void Linux. Selalu review template sebelum build.

Sumber DayaURL
Repositori VURhttps://github.com/T4n-Labs/vur
Website VURhttps://t4n-labs.github.io/vur-web

Struktur direktori VUR:

vur/
โ”œโ”€โ”€ core/       # Paket inti (stabil)
โ”œโ”€โ”€ extra/      # Paket tambahan (eksperimental)
โ”œโ”€โ”€ multilib/   # Paket 32-bit untuk sistem 64-bit
โ”œโ”€โ”€ vtools/     # Tools pendukung
โ””โ”€โ”€ packages.json

Let-X โ€” VUR Helper

Let-X (letx) adalah CLI tool untuk mencari, mengelola, dan mengunduh template dari VUR. Analoginya seperti yay atau paru di Arch Linux.

Sumber DayaURL
Repositori Let-Xhttps://github.com/T4n-Labs/Let-X
Dokumentasi (User)https://github.com/T4n-Labs/Let-X/blob/main/vdocs/ID/user.md
Dokumentasi (Dev)https://github.com/T4n-Labs/Let-X/blob/main/vdocs/ID/dev.md

Fitur

PerintahFungsi
letx searchCari paket di VUR berdasarkan nama atau deskripsi
letx infoTampilkan detail paket dan status lokal
letx listLihat daftar paket per kategori
letx getUnduh template paket ke lokal
letx updatePerbarui cache index VUR
letx -x <xbps-src>Menggunakan Fungsi xbps-src pada Let-X

Perbandingan Metode

MetodeKelebihanKekuranganCocok untuk
Build manual via xbps-srcKontrol penuh, stabilPerlu setup void-packages, lebih ribetDeveloper, maintainer
VUR + Let-XMudah, lebih banyak pilihan paketTidak resmi, perlu review templatePower user, daily driver

Keamanan

  • Selalu review file template dan patches/ sebelum build paket dari VUR.
  • Cek field maintainer di template โ€” pastikan dari sumber yang dikenal.
  • Uji paket baru di container atau VM sebelum install ke sistem utama.
  • VUR tidak melalui proses review seketat repositori resmi Void.

@T4n-Labs ยท @Gh0sT4n

Mirrors

Mirrors adalah server cerminan yang menyimpan salinan repositori paket Void Linux, tersebar di berbagai wilayah untuk kecepatan unduh yang lebih baik dan redundansi.

List dan informasi lainnya lihat di xmirror.voidlinux.org.

Mirror Default

Saat instalasi, T4n OS menggunakan mirror default:

repo-default.voidlinux.org

Server ini secara otomatis memetakan ke salah satu Tier 1 mirror (mirror yang dikelola langsung oleh proyek Void). Untuk performa optimal, pilih mirror yang secara geografis lebih dekat.

Tor Mirrors

T4n OS menyediakan mirror yang dapat diakses via jaringan Tor โ€” berguna untuk privasi tambahan atau di jaringan yang memblokir akses langsung ke repositori.


@T4n-Labs ยท @Gh0sT4n

Changing Mirror

File konfigurasi repositori resmi Void diinstall oleh package manager di /usr/share/xbps.d/. File dengan nama yang sama di /etc/xbps.d/ akan menjadi override โ€” isi dari /etc/xbps.d/ yang digunakan.

Ada dua cara mengganti mirror: via xmirror (otomatis) atau manual.

Metode 1: xmirror (Direkomendasikan)

sudo xbps-install -S xmirror
sudo xmirror

xmirror menangani semua langkah secara otomatis: memperbarui URL di semua file konfigurasi repositori dan menyinkronkan ulang indeks.

Metode 2: Manual

1. Copy file konfigurasi ke /etc/xbps.d/

sudo mkdir -p /etc/xbps.d
sudo cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/

2. Ganti URL mirror

Dengan sed:

sudo sed -i 's|https://repo-default.voidlinux.org|https://mirror.pilihan.anda|g' \
  /etc/xbps.d/*-repository-*.conf

Atau edit manual:

sudo nano /etc/xbps.d/00-repository-main.conf
# Ubah: repository=https://repo-default.voidlinux.org/current
# Menjadi: repository=https://mirror.pilihan.anda/current

3. Sinkronkan indeks

sudo xbps-install -S

4. Verifikasi

xbps-query -L

Output menampilkan URL repositori aktif beserta jumlah paket di masing-masing.

Contoh Lengkap (Manual)

sudo mkdir -p /etc/xbps.d
sudo cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
sudo sed -i 's|https://repo-default.voidlinux.org|https://mirror.labkom.id/voidlinux|g' \
  /etc/xbps.d/*-repository-*.conf
sudo xbps-install -S
xbps-query -L

Mirror untuk Wilayah Indonesia / Asia Tenggara

MirrorLokasiURL
labkom.idIndonesiahttps://mirror.labkom.id/voidlinux
repo-fastlyCDN Globalhttps://repo-fastly.voidlinux.org
koddos.netAsia (HK/SG)https://void.koddos.net

Daftar lengkap dan terbaru: xmirror.voidlinux.org

Kembali ke Mirror Default

sudo rm /etc/xbps.d/*-repository-*.conf
sudo xbps-install -S

Catatan Penting

  • Jangan edit langsung file di /usr/share/xbps.d/ โ€” akan dikembalikan saat paket void-repo-* diupdate.
  • Jika repositori tambahan (nonfree, multilib, debug) diaktifkan setelah mengganti mirror, jalankan ulang perintah sed di atas agar URL-nya juga ikut diperbarui.
  • Selalu jalankan sudo xbps-install -S setelah mengganti mirror.

@T4n-Labs ยท @Gh0sT4n

Tor Mirrors

T4n OS menyediakan mirror yang dapat diakses via jaringan Tor โ€” berguna untuk privasi tambahan atau di jaringan yang memblokir akses langsung ke repositori.

Mirror .onion Resmi

MirrorLokasiURL
LysatorEU: Swediahttp://lysator7eknrfl47rlyxvgeamrv7ucefgrrlhk7rouv3sna25asetwid.onion/pub/voidlinux/
DotsrcEU: Denmarkhttp://dotsrccccbidkzg7oc7oj4ugxrlfbt64qebyunxbrgqhxiwj3nl6vcad.onion/

Gunakan http:// (bukan https://) untuk mirror .onion โ€” Tor sudah menyediakan enkripsi end-to-end, HTTPS tidak diperlukan.

Setup Tor

Install dan aktifkan Tor sebagai service:

sudo xbps-install -S tor
sudo ln -s /etc/sv/tor /var/service/
sudo sv status tor

Atau jalankan sebagai user biasa (untuk testing):

tor

Secara default, Tor membuka proxy SOCKS5 di localhost:9050.

Koneksi XBPS via Tor

XBPS membaca variabel SOCKS_PROXY untuk routing koneksi melalui proxy.

Satu sesi:

export SOCKS_PROXY="socks5://127.0.0.1:9050"
sudo -E xbps-install -Su

Flag -E pada sudo diperlukan agar variabel environment SOCKS_PROXY ikut diteruskan.

Alternatif tanpa export:

sudo env SOCKS_PROXY="socks5://127.0.0.1:9050" xbps-install -Su

Menggunakan Mirror .onion

Untuk menggunakan hidden service mirror, override konfigurasi repositori ke /etc/xbps.d/:

sudo mkdir -p /etc/xbps.d
sudo cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
sudo sed -i 's|https://repo-default.voidlinux.org|http://<URL>.onion/pub/voidlinux|g' \
  /etc/xbps.d/*-repository-*.conf

Sinkronkan via Tor:

export SOCKS_PROXY="socks5://127.0.0.1:9050"
sudo -E xbps-install -S

Cegah DNS Leak

Jika SOCKS_PROXY tidak di-set saat menggunakan mirror .onion, query DNS untuk nama .onion bocor ke DNS server yang dikonfigurasi โ€” ini membahayakan anonimitas.

Agar SOCKS_PROXY otomatis tersedia di semua sesi:

echo 'export SOCKS_PROXY="socks5://127.0.0.1:9050"' | sudo tee /etc/profile.d/socksproxy.sh
sudo chmod +x /etc/profile.d/socksproxy.sh

Logout dan login kembali agar berlaku.

Alur Kerja Lengkap

# 1. Install dan aktifkan Tor
sudo xbps-install -S tor
sudo ln -s /etc/sv/tor /var/service/

# 2. Override repositori ke mirror .onion
sudo mkdir -p /etc/xbps.d
sudo cp /usr/share/xbps.d/*-repository-*.conf /etc/xbps.d/
sudo sed -i 's|https://repo-default.voidlinux.org|http://<URL>>.onion/pub/voidlinux|g' \
  /etc/xbps.d/*-repository-*.conf

# 3. Set SOCKS_PROXY permanen (opsional, cegah DNS leak)
echo 'export SOCKS_PROXY="socks5://127.0.0.1:9050"' | sudo tee /etc/profile.d/socksproxy.sh
sudo chmod +x /etc/profile.d/socksproxy.sh

# 4. Sinkronkan dan upgrade
export SOCKS_PROXY="socks5://127.0.0.1:9050"
sudo -E xbps-install -S
sudo -E xbps-install -Su

Catatan Penting

  • Kecepatan unduh lebih lambat dibanding mirror biasa karena routing melalui beberapa hop Tor.
  • Tor mirror hanya untuk privasi/anonimitas โ€” jika hanya butuh kecepatan, pilih mirror geografis biasa.
  • Pastikan SOCKS_PROXY selalu di-set saat menggunakan mirror .onion.

Referensi

  • man xbps-install (bagian environment variables: SOCKS_PROXY)

@T4n-Labs ยท @Gh0sT4n

xbps-src

xbps-src adalah sistem build paket untuk Void Linux, bagian dari repositori void-packages. Digunakan untuk membangun paket .xbps dari source menggunakan template yang disebut template.

Prasyarat

git clone https://github.com/void-linux/void-packages.git
cd void-packages
./xbps-src binary-bootstrap

binary-bootstrap menyiapkan environment build (masterdir) menggunakan paket biner dari repositori resmi Void. Ini hanya perlu dijalankan sekali.

Penggunaan Dasar

./xbps-src <subcommand> [OPSI] [PKG ...]

Subcommand yang paling sering digunakan:

SubcommandFungsi
binary-bootstrapSetup masterdir dari biner (sekali saja)
bootstrap-updateUpdate masterdir ke versi terbaru
pkg <nama>Build paket
clean <nama>Bersihkan build directory paket
cleanallBersihkan seluruh masterdir
install <nama>Build dan install paket ke masterdir
remove <nama>Hapus paket dari masterdir
listTampilkan paket yang terinstall di masterdir
show <nama>Tampilkan informasi template paket
show-deps <nama>Tampilkan dependensi build paket
show-build-deps <nama>Tampilkan dependensi build saja
lint <nama>Validasi template paket
fetch <nama>Unduh source paket tanpa build
extract <nama>Unduh dan ekstrak source tanpa build
chrootMasuk ke environment build (masterdir) via shell

Contoh Penggunaan

Build paket:

./xbps-src pkg neovim

Install hasil build:

sudo xbps-install --repository=path/to/hostdir/binpkgs neovim

Build paket restricted:

echo 'XBPS_ALLOW_RESTRICTED=yes' >> etc/conf
./xbps-src pkg <nama-paket-restricted>

Build untuk arsitektur lain (cross-compile):

./xbps-src -a aarch64 pkg neovim

Masuk ke environment build untuk debugging:

./xbps-src chroot

Struktur Direktori

void-packages/
โ”œโ”€โ”€ xbps-src
โ”œโ”€โ”€ srcpkgs/          # Template semua paket
โ”‚   โ””โ”€โ”€ <pkgname>/
โ”‚       โ””โ”€โ”€ template  # Definisi build paket
โ”œโ”€โ”€ hostdir/
โ”‚   โ”œโ”€โ”€ binpkgs/      # Hasil build (.xbps)
โ”‚   โ””โ”€โ”€ sources/      # Cache source yang diunduh
โ”œโ”€โ”€ masterdir-arch/   # Environment build (chroot)
โ”œโ”€โ”€ common/           # Utilitas xbps-src
โ””โ”€โ”€ etc/
    โ””โ”€โ”€ conf          # Konfigurasi lokal xbps-src

Konfigurasi (etc/conf)

Opsi umum yang dapat ditambahkan ke etc/conf:

# Gunakan xbps-uchroot sebagai backend (default: xbps-uunshare)
XBPS_CHROOT_CMD=uchroot

# Izinkan build paket restricted
XBPS_ALLOW_RESTRICTED=yes

# Jumlah job paralel saat build
XBPS_MAKEJOBS=4

# Arsitektur target untuk cross-compile
XBPS_CROSS_BUILD=aarch64

Backend Chroot

xbps-src mendukung beberapa backend untuk environment build:

BackendDefaultKeterangan
xbps-uunshareYaTidak perlu root, menggunakan user namespaces
xbps-uchrootTidakPerlu grup xbuilder, performa lebih baik
prootTidakTidak perlu hak khusus, lebih lambat

Dokumentasi Lengkap

Dokumentasi resmi dan lengkap xbps-src โ€” termasuk cara menulis template, variabel build, hooks, dan cross-compilation โ€” tersedia di:


@T4n-Labs ยท @Gh0sT4n

Let-X

letx adalah CLI tool untuk Void Linux yang memudahkan pencarian, pengelolaan, dan pengunduhan template paket dari VUR (Void User Repository) โ€” konsep serupa AUR Helper di Arch Linux.

InfoDetail
Binaryletx
Versi0.1.2
BahasaPython 3.11+
Repohttps://github.com/T4n-Labs/Let-X

Instalasi

Via script otomatis:

git clone https://github.com/T4n-Labs/Let-X
cd Let-X
sudo ./install.sh

Via xbps-src (jika sudah setup void-packages):

cp -r xbps-template/letx ~/void-packages/srcpkgs/letx
cd ~/void-packages
./xbps-src pkg letx
sudo xbps-install --repository=path/to/hostdir/binpkgs letx

Penggunaan

letx <subcommand> [OPSI] [ARGUMEN]
SubcommandFungsi
searchCari paket di VUR berdasarkan nama atau deskripsi
infoTampilkan detail paket dan status lokal
listTampilkan daftar paket per kategori
getUnduh template paket ke lokal
updatePerbarui cache index VUR

Contoh Penggunaan

Update cache index VUR:

letx update

Cari paket:

letx search godot

Lihat detail paket:

letx info godot

Unduh template paket:

letx get godot

Setelah template diunduh, build dan install :

letx -x pkg <name_package>
sudo xbps-install --repository=path/to/hostdir/binpkgs <name_package>

Catatan Penting

  • Let-X hanya mengunduh dan mengelola template โ€” proses build tetap dilakukan oleh xbps-src.
  • VUR tidak diaudit seketat repositori resmi Void. Selalu review file template dan patches/ sebelum build.
  • Membutuhkan void-packages yang sudah di-bootstrap untuk build paket.

Dokumentasi Lengkap

DokumenURL
Homehttps://github.com/T4n-Labs/Let-X/blob/main/vdocs/docs.md
Panduan User IDhttps://github.com/T4n-Labs/Let-X/blob/main/vdocs/ID/user.md
Panduan Dev IDhttps://github.com/T4n-Labs/Let-X/blob/main/vdocs/ID/dev.md
Panduan User ENhttps://github.com/T4n-Labs/Let-X/blob/main/vdocs/EN/user.md
Panduan Dev ENhttps://github.com/T4n-Labs/Let-X/blob/main/vdocs/EN/dev.md

@T4n-Labs ยท @Gh0sT4n

VUR โ€” Void User Repository

Dokumentasi resmi VUR (Void User Repository) untuk T4n OS.

Daftar Isi


@T4n-Labs ยท @Gh0sT4n

Pengenalan VUR

VUR (Void User Repository) adalah repositori komunitas untuk sistem berbasis Void Linux dan turunannya, termasuk T4n OS. VUR memungkinkan pengguna membagikan dan mengelola template paket berbasis xbps-src.

Secara konsep, VUR mirip dengan AUR (Arch User Repository) di Arch Linux.

Tujuan

VUR dibuat untuk:

  • Menyediakan paket yang belum ada di repositori resmi Void
  • Mendorong kontribusi komunitas
  • Mempermudah distribusi template
  • Memperluas ekosistem T4n OS dan Void Linux

Cara Kerja

Berbeda dengan repositori biner biasa, VUR berisi template build โ€” bukan paket .xbps siap install. Pengguna mengunduh template, lalu membangunnya secara lokal menggunakan xbps-src.

Isi repositori VUR:

  • Template paket (template)
  • Build script tambahan jika diperlukan
  • Metadata paket

VUR vs Repositori Resmi Void

AspekRepositori ResmiVUR
PengelolaTim Void LinuxKomunitas
FormatPaket biner siap installTemplate build (source-based)
StatusStabil dan terverifikasiBisa eksperimental
KontribusiTerbatas pada maintainer resmiTerbuka untuk kontribusi umum

Peran VUR untuk T4n OS

VUR memberikan fleksibilitas lebih bagi T4n OS โ€” mengurangi ketergantungan penuh pada repositori resmi, membuka ruang inovasi, dan membentuk ekosistem komunitas tersendiri.


@T4n-Labs ยท @Gh0sT4n

Sejarah VUR

Latar Belakang

Void Linux dikenal ringan, bersih, dan cepat. Namun seperti banyak distro minimalis lainnya, tidak semua software tersedia di repositori resmi. Ini memunculkan pertanyaan yang wajar: bagaimana pengguna bisa mendapatkan paket tambahan tanpa harus menunggu masuk ke repositori resmi? Bagaimana komunitas bisa berkontribusi?

Dari kebutuhan itu, lahirlah ide VUR.

Inspirasi dari AUR

Arch Linux memiliki AUR (Arch User Repository) โ€” repositori komunitas yang memungkinkan pengguna berbagi PKGBUILD dan membangun paket secara lokal. Konsepnya sederhana: komunitas yang membuat, membangun, dan berbagi.

T4n OS mengadaptasi filosofi itu ke ekosistem Void Linux, dengan xbps-src sebagai fondasi build system-nya. Hasilnya adalah VUR โ€” Void User Repository.

Peran VUR dalam T4n OS

Secara teknis, VUR berisi template paket, build script, dan metadata. Namun dampaknya lebih luas dari itu โ€” VUR memberi T4n OS identitas dan ekosistem sendiri, tidak lagi sepenuhnya bergantung pada repositori resmi Void Linux.

Status Saat Ini

VUR masih dalam pengembangan aktif. Kontribusi komunitas terbuka dan sambutan.


@T4n-Labs ยท @Gh0sT4n

Struktur VUR

Direktori

vur/
โ”œโ”€โ”€ core/                     # Paket inti , umum digunakan
โ”‚   โ””โ”€โ”€ <nama-paket>/
โ”œโ”€โ”€ extra/                    # Paket tambahan
โ”‚   โ””โ”€โ”€ <nama-paket>/
โ”œโ”€โ”€ multilib/                 # Paket 32-bit untuk sistem x86_64
โ”‚   โ””โ”€โ”€ <nama-paket>/
โ”œโ”€โ”€ vtools/                   # Tools internal VUR
โ”‚   โ”œโ”€โ”€ generate.sh           # Generate metadata index
โ”‚   โ””โ”€โ”€ scan.sh               # Scan paket di direktori
โ”œโ”€โ”€ vdokumentasi/             # Dokumentasi VUR
โ”‚   โ”œโ”€โ”€ index.md
โ”‚   โ”œโ”€โ”€ template/
โ”‚   โ”‚   โ””โ”€โ”€ a.md              # Panduan penulisan template
โ”‚   โ”œโ”€โ”€ build-style/          # Dokumentasi build style
โ”‚   โ””โ”€โ”€ 3NGLISH/              # Dokumentasi bahasa Inggris
โ”‚       โ”œโ”€โ”€ index.md
โ”‚       โ”œโ”€โ”€ template/
โ”‚       โ””โ”€โ”€ build-style/
โ”œโ”€โ”€ ISSUES/
โ”‚   โ””โ”€โ”€ ISSUES1.md
โ”œโ”€โ”€ .github/
โ”‚   โ””โ”€โ”€ workflows/
โ”‚       โ””โ”€โ”€ index.yml

โ”œโ”€โ”€ index.json                # Indeks semua paket
โ”œโ”€โ”€ packages.json             # Metadata lengkap paket
โ”œโ”€โ”€ categories.json           # Daftar kategori paket
โ”œโ”€โ”€ search.json               # Data untuk pencarian
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ README-EN.md
โ””โ”€โ”€ LICENSE

Kategori Paket

KategoriIsi
corePaket inti โ€” stabil dan umum digunakan
extraPaket tambahan โ€” bisa bersifat eksperimental
multilibPaket 32-bit untuk sistem x86_64 glibc

File Index

FileFungsi
index.jsonIndeks semua paket yang tersedia di VUR
packages.jsonMetadata lengkap setiap paket
categories.jsonDaftar kategori yang tersedia
search.jsonData yang digunakan Let-X untuk pencarian

vtools

ScriptFungsi
generate.shGenerate ulang file metadata index
scan.shScan paket di seluruh direktori kategori

@T4n-Labs ยท @Gh0sT4n

Tutorial VUR

Dokumen ini menjelaskan cara mencari dan menjelajahi paket yang tersedia di VUR menggunakan antarmuka web.

Mengakses VUR

VUR dapat diakses melalui dua cara:

CaraURL / Link
Websitehttps://t4n-labs.github.io/vur-web
Repositorihttps://github.com/T4n-Labs/vur

Untuk pengguna umum, akses via website adalah cara yang paling mudah.

Tampilan Halaman Utama

Saat membuka VUR Web, halaman utama menampilkan:

  • Statistik โ€” total paket yang tersedia dan paket terbaru yang ditambahkan
  • Latest Package โ€” daftar paket yang baru saja ditambahkan ke VUR
  • Package Index โ€” indeks lengkap seluruh paket dengan fitur search dan filter kategori

Navigasi tersedia di bagian atas halaman:

MenuFungsi
HomeKembali ke halaman utama dan statistik
PackageLangsung ke bagian Package Index
GitHubBuka repositori VUR di GitHub

Mencari Paket

Di bagian Package Index, tersedia kolom pencarian. Ketik nama paket atau kata kunci yang ingin dicari โ€” hasil akan difilter secara langsung tanpa perlu reload halaman.

Contoh:

  • Ketik godot untuk mencari game engine Godot
  • Ketik lib32 untuk melihat paket-paket multilib

Via Filter Kategori

Di atas tabel Package Index, tersedia tombol filter kategori:

FilterIsi
AllTampilkan semua paket dari semua kategori
CorePaket inti โ€” stabil dan umum digunakan
ExtraPaket tambahan โ€” bisa bersifat eksperimental
MultilibPaket 32-bit untuk sistem x86_64 glibc

Filter kategori dan search dapat dikombinasikan โ€” misalnya filter ke Extra lalu ketik nama paket untuk mempersempit hasil.

Informasi Paket

Setiap paket di tabel menampilkan:

KolomKeterangan
NameNama paket
VersionVersi paket yang tersedia di VUR
CategoryKategori (core, extra, multilib)
DescriptionDeskripsi singkat paket

Setelah Menemukan Paket

VUR Web hanya berfungsi sebagai indeks dan browser โ€” instalasi paket tidak dilakukan lewat website. Setelah menemukan paket yang diinginkan, catat nama paketnya, lalu lanjutkan ke salah satu metode berikut:

  • Via Let-X โ€” letx get <nama-paket> lalu build dengan xbps-src
  • Via clone manual โ€” clone repositori VUR, copy template ke void-packages/srcpkgs/, lalu build

Lihat dokumentasi Let-X atau xbps-src untuk langkah selanjutnya.

Catatan

  • Data paket di VUR Web diambil langsung dari repositori T4n-Labs/vur di GitHub.
  • Jika paket tidak muncul di pencarian, kemungkinan belum tersedia di VUR. Periksa langsung di https://github.com/T4n-Labs/vur atau ajukan request di halaman Issues repositori tersebut.

Referensi


@T4n-Labs ยท @Gh0sT4n

Keamanan & Etika

Status VUR

VUR adalah repositori komunitas yang tidak diaudit secara resmi oleh tim Void Linux. Siapa pun dapat mengajukan template paket ke VUR, sehingga tanggung jawab verifikasi ada di tangan pengguna itu sendiri.

Team Void Linux tidak bertanggung jawab atas paket yang berasal dari VUR.

Risiko yang Perlu Dipahami

RisikoPenjelasan
Template tidak terauditPaket VUR tidak melalui proses review seketat repositori resmi Void
Kode berbahayaTemplate atau patch bisa saja menyisipkan kode yang tidak diinginkan
Konflik dependensiPaket dari VUR mungkin tidak kompatibel dengan paket dari repositori resmi
Paket usangTemplate mungkin tidak diperbarui seiring update upstream
Tidak ada dukungan resmiJika sistem rusak akibat paket VUR, komunitas Void tidak wajib membantu

Sebelum Build: Review Template

Langkah paling penting sebelum membangun paket dari VUR adalah membaca isi templatenya.

cat ~/.config/letx/<kategori>/<nama-paket>/template

Atau jika menggunakan clone manual:

cat vur/<kategori>/<nama-paket>/template

Yang perlu diperhatikan saat review:

  • pkgname, version, revision โ€” pastikan sesuai dengan paket yang dimaksud
  • distfiles โ€” URL source yang diunduh, pastikan dari domain resmi upstream
  • checksum โ€” hash SHA256 untuk verifikasi integritas source
  • maintainer โ€” identitas pengelola template; lebih baik dari sumber yang dikenal
  • do_build(), do_install() โ€” perhatikan perintah yang dijalankan selama proses build
  • Direktori patches/ โ€” jika ada, baca setiap patch yang diterapkan ke source

Praktik yang Disarankan

  • Prioritaskan paket dari repositori resmi Void. Gunakan VUR hanya jika paket benar-benar tidak tersedia di sana.
  • Cek field maintainer di template. Template dari maintainer yang dikenal atau aktif di komunitas lebih dapat dipercaya.
  • Uji paket baru di container atau VM sebelum install ke sistem utama.
  • Jangan abaikan checksum โ€” pastikan nilai checksum di template sesuai dengan file yang diunduh.
  • Jangan build template yang distfiles-nya mengarah ke URL tidak dikenal atau bukan domain resmi upstream.

Etika Kontribusi

Bagi yang ingin mengajukan template ke VUR, berikut yang diharapkan dari kontributor:

  • Jangan menduplikasi paket yang sudah ada di repositori resmi Void kecuali ada alasan kuat (misalnya versi berbeda atau patch khusus).
  • Jaga template tetap terupdate โ€” jika tidak lagi mampu memaintain, informasikan ke komunitas.
  • Cantumkan maintainer yang valid โ€” gunakan nama dan email yang dapat dihubungi.
  • Sertakan checksum yang benar โ€” jangan submit template dengan checksum kosong atau placeholder.
  • Jangan menyisipkan kode berbahaya โ€” pelanggaran ini akan mengakibatkan removal permanen dari VUR.
  • Hormati lisensi upstream โ€” pastikan template hanya mendistribusikan source atau biner yang lisensinya mengizinkan.

Melaporkan Masalah

Jika menemukan template yang mencurigakan, bermasalah, atau melanggar etika:

  1. Buka halaman Issues di repositori VUR: https://github.com/T4n-Labs/vur/issues
  2. Deskripsikan masalah dengan jelas โ€” sertakan nama paket, versi, dan bagian template yang bermasalah.

Referensi


@T4n-Labs ยท @Gh0sT4n

Maintainer VUR โ€” Void User Repository

Dokumentasi resmi VUR (Void User Repository) untuk Maintainer.

Daftar Isi


@T4n-Labs ยท @Gh0sT4n

Cara Berkontribusi

Dokumen ini ditujukan untuk siapa pun yang ingin menambahkan atau memelihara paket di VUR sebagai maintainer.

Prasyarat

Sebelum berkontribusi, pastikan hal berikut sudah siap:

  • git terinstall
  • xbps-src sudah bisa digunakan (void-packages sudah di-bootstrap)
  • Akun GitHub aktif
  • Paham dasar penulisan template xbps-src

Referensi penulisan template: void-packages Manual

Alur Kontribusi

Fork repo VUR โ†’ Buat template โ†’ Test build lokal โ†’ Push โ†’ Pull Request โ†’ Review โ†’ Merge

Langkah 1: Fork dan Clone

Fork repositori VUR di GitHub, lalu clone fork-nya:

git clone https://github.com/<username-kamu>/vur.git
cd vur

Langkah 2: Tentukan Kategori

Tempatkan template di kategori yang sesuai:

KategoriKriteria
corePaket stabil, umum digunakan, dependensi minimal
extraPaket tambahan, bisa eksperimental, niche, atau dependensi besar
multilibPaket 32-bit untuk sistem x86_64 glibc

Jika ragu, gunakan extra.

Langkah 3: Buat Template

Buat direktori paket di kategori yang sesuai:

mkdir -p extra/<nama-paket>

Buat file template di dalamnya:

touch extra/<nama-paket>/template

Struktur Minimal Template

# Mandatory fields
pkgname=nama-paket
version=1.0.0
revision=1
short_desc="Deskripsi singkat paket"
maintainer="Nama Kamu <email@example.com>"
license="MIT"
homepage="https://example.com"
distfiles="https://example.com/nama-paket-${version}.tar.gz"
checksum="sha256sum-dari-file-source"

do_build() {
    # perintah build
}

do_install() {
    # perintah install ke $DESTDIR
}

Untuk template yang lebih kompleks (build styles, subpackages, patches), lihat void-packages Manual.

Jika Ada Patch

Buat direktori patches/ di dalam direktori paket:

mkdir -p extra/<nama-paket>/patches/

Tempatkan file .patch di dalamnya. xbps-src akan menerapkannya secara otomatis sebelum build.

Langkah 4: Test Build Lokal

Sebelum submit, pastikan paket berhasil dibangun secara lokal:

# Dari direktori void-packages
cp -r /path/to/vur/extra/<nama-paket> srcpkgs/<nama-paket>
./xbps-src pkg <nama-paket>

Verifikasi hasil build bisa diinstall:

sudo xbps-install --repository=hostdir/binpkgs <nama-paket>

Jangan submit template yang belum berhasil build secara lokal.

Langkah 5: Update Index (via vtools)

Setelah template siap, jalankan script vtools untuk memperbarui file index VUR:

cd vur
bash vtools/scan.sh
bash vtools/generate.sh

Ini akan memperbarui index.json, packages.json, categories.json, dan search.json.


Langkah 6: Commit dan Push

git add extra/<nama-paket>/ index.json packages.json categories.json search.json
git commit -m "extra/<nama-paket>: add version <versi>"
git push origin main

Konvensi pesan commit:

AksiFormat commit
Tambah paket baru<kategori>/<nama>: add version <versi>
Update versi<kategori>/<nama>: update to <versi>
Perbaiki template<kategori>/<nama>: fix <deskripsi singkat>
Hapus paket<kategori>/<nama>: remove (alasan)

Langkah 7: Buat Pull Request

Buka Pull Request dari fork kamu ke repositori utama VUR di GitHub:

https://github.com/T4n-Labs/vur/pulls

Sertakan informasi berikut di deskripsi PR:

  • Nama paket dan versi
  • Kategori yang dipilih dan alasannya
  • Link homepage atau repositori upstream
  • Konfirmasi bahwa build lokal berhasil

Memperbarui Paket (Update Versi)

Saat ada rilis baru dari upstream:

  1. Update version di template
  2. Update revision kembali ke 1
  3. Update distfiles jika URL berubah
  4. Update checksum sesuai file source baru
  5. Test build ulang secara lokal
  6. Jalankan vtools/scan.sh dan vtools/generate.sh
  7. Commit dan buat PR
# Cara mendapatkan checksum baru
sha256sum nama-paket-<versi>.tar.gz

Menghapus Paket

Jika paket sudah tidak relevan, upstream sudah masuk ke repositori resmi Void, atau tidak lagi bisa dimaintain:

  1. Hapus direktori paket dari kategori
  2. Jalankan vtools/scan.sh dan vtools/generate.sh
  3. Commit dengan pesan <kategori>/<nama>: remove (<alasan>)
  4. Buat PR dengan penjelasan alasan penghapusan

Standar Template VUR

HalStandar
pkgnameHuruf kecil, pisah kata dengan tanda -
maintainerFormat Nama <email> yang valid dan aktif
licenseSesuai lisensi upstream โ€” jangan asal tulis MIT
checksumWajib diisi, tidak boleh kosong atau placeholder
distfilesURL langsung ke source resmi upstream
short_descMaksimal 72 karakter, tidak diawali huruf kapital
Direktori paketNama direktori sama persis dengan pkgname

Catatan Penting

  • Jangan submit paket yang sudah tersedia di repositori resmi Void kecuali ada alasan khusus (versi berbeda, patch spesifik, dll.).
  • Jangan submit template dengan checksum kosong atau placeholder.
  • Template yang terbukti berbahaya akan di-remove dan kontributor bisa diblokir dari repositori.
  • Maintainer bertanggung jawab memperbarui templatenya seiring update upstream.

Referensi


@T4n-Labs ยท @Gh0sT4n

Panduan Template

Dokumen ini menjelaskan cara menulis file template untuk paket di VUR. Template VUR mengikuti format yang sama dengan xbps-src dari void-packages.

Struktur Direktori Paket

<kategori>/
โ””โ”€โ”€ <nama-paket>/
    โ”œโ”€โ”€ template          # Wajib โ€” definisi build paket
    โ”œโ”€โ”€ patches/          # Opsional โ€” patch yang diterapkan ke source
    โ”‚   โ””โ”€โ”€ fix-foo.patch
    โ””โ”€โ”€ files/            # Opsional โ€” file tambahan yang dikopi saat install
        โ””โ”€โ”€ foo.conf

Struktur Template

# =============================================================================
# Metadata Paket
# =============================================================================
pkgname=nama-paket
version=1.0.0
revision=1
short_desc="Deskripsi singkat paket maksimal 72 karakter"
maintainer="Nama Kamu <email@example.com>"
license="MIT"
homepage="https://upstream.example.com"

# =============================================================================
# Source
# =============================================================================
distfiles="https://upstream.example.com/nama-paket-${version}.tar.gz"
checksum="sha256sum-64-karakter-dari-file-source"

# =============================================================================
# Dependensi (opsional)
# =============================================================================
hostmakedepends="cmake pkg-config"
makedepends="libfoo-devel libbar-devel"
depends="libfoo libbar"

# =============================================================================
# Build Style (opsional โ€” jika tidak pakai do_build/do_install manual)
# =============================================================================
build_style=cmake

# =============================================================================
# Fungsi Build (jika tidak menggunakan build_style)
# =============================================================================
do_build() {
    make ${makejobs}
}

do_install() {
    make DESTDIR="${DESTDIR}" install
}

Field Wajib

FieldKeterangan
pkgnameNama paket โ€” huruf kecil, pisah kata dengan -, sama dengan nama direktori
versionVersi upstream tanpa suffix
revisionRevisi template, mulai dari 1, reset ke 1 setiap update version
short_descDeskripsi singkat, maksimal 72 karakter, tidak diawali huruf kapital
maintainerFormat Nama <email> yang valid
licenseLisensi SPDX upstream (contoh: MIT, GPL-2.0-only, Apache-2.0)
homepageURL halaman resmi upstream
distfilesURL direct download source โ€” gunakan ${version} bukan hardcode versi
checksumSHA256 hash dari file distfiles โ€” wajib diisi, tidak boleh kosong

Field Dependensi

FieldKeterangan
hostmakedependsTool yang dibutuhkan di host saat build (contoh: cmake, meson, go)
makedependsLibrary header yang dibutuhkan saat kompilasi (contoh: libfoo-devel)
dependsPaket runtime yang dibutuhkan saat paket dijalankan
checkdependsDependensi tambahan yang hanya diperlukan saat menjalankan test

Build Style

build_style adalah shortcut yang menggantikan fungsi do_build() dan do_install() dengan perilaku default yang sudah terdefinisi. Jika digunakan, kedua fungsi tersebut tidak perlu ditulis secara manual kecuali perlu di-override.

Build StyleDigunakan untuk
cmakeProyek yang menggunakan CMake
mesonProyek yang menggunakan Meson + Ninja
gnu-configureProyek dengan ./configure (autotools)
gnu-makefileProyek dengan Makefile GNU standar
goProyek Go
cargoProyek Rust (Cargo)
python3-moduleModul Python 3 dengan setup.py
python3-pep517Modul Python 3 dengan pyproject.toml
perl-moduleModul Perl (ExtUtils::MakeMaker)
perl-ModuleBuildModul Perl (Module::Build)
qmakeProyek Qt (qmake)
gemRuby gem
gemspecRuby gem via gemspec
cabalProyek Haskell (Cabal)
haskell-stackProyek Haskell (Stack)
r-cranPaket R dari CRAN
raku-distDistribusi Raku
fetchHanya unduh file tanpa build (untuk biner prebuilt)

Dokumentasi per build style tersedia di: vdokumentasi/build-style/

Variabel Penting dalam do_build / do_install

VariabelNilaiKeterangan
$DESTDIRPath install sementara di dalam masterdirSemua file harus diinstall ke sini
$makejobs-jN sesuai setting XBPS_MAKEJOBSGunakan ini di make untuk build paralel
$wrksrcDirektori source yang sudah diekstrakWorking directory saat build berlangsung
$CFLAGSFlag compiler C dari environmentJangan hardcode, gunakan variabel ini
$CXXFLAGSFlag compiler C++ dari environment
$LDFLAGSFlag linker dari environment
$pkgnameNama paket dari field pkgnameBisa digunakan di dalam fungsi
$versionVersi dari field version

Fungsi Hook Opsional

Selain do_build() dan do_install(), ada fungsi hook yang bisa digunakan:

FungsiDipanggil kapan
pre_configure()Sebelum fase configure
post_configure()Setelah fase configure
pre_build()Sebelum fase build
post_build()Setelah fase build
pre_install()Sebelum fase install
post_install()Setelah fase install โ€” umum digunakan untuk chmod, symlink, dll.
do_check()Menjalankan test suite

Mendapatkan Checksum

# Download file source dulu
curl -LO "https://upstream.example.com/paket-1.0.0.tar.gz"

# Hitung SHA256
sha256sum paket-1.0.0.tar.gz

Salin output hash 64 karakter ke field checksum.

Contoh Template Lengkap

Template sederhana untuk program C dengan CMake:

pkgname=myapp
version=2.1.0
revision=1
short_desc="A simple application written in C"
maintainer="Upi <gh0st4n@example.com>"
license="MIT"
homepage="https://github.com/example/myapp"
distfiles="https://github.com/example/myapp/archive/v${version}.tar.gz"
checksum="abc123...64karakter...def456"

hostmakedepends="cmake pkg-config"
makedepends="libfoo-devel"
depends="libfoo"

build_style=cmake

post_install() {
    # Contoh: install file konfigurasi default
    vinstall ${FILESDIR}/myapp.conf 644 etc/myapp
}

Checklist Sebelum Submit

  • pkgname sama dengan nama direktori
  • distfiles menggunakan ${version}, bukan hardcode
  • checksum sudah diisi dengan hash yang benar
  • maintainer menggunakan format Nama <email>
  • short_desc tidak lebih dari 72 karakter
  • license sesuai lisensi upstream yang sebenarnya
  • Build lokal berhasil tanpa error
  • revision dimulai dari 1

Referensi


@T4n-Labs ยท @Gh0sT4n