๐ 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!
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
| Aspek | Detail |
|---|---|
| Package Manager | xbps (binary) |
| Model Rilis | Rolling Release |
| Filosofi Sistem | Minimal & Clean |
| Helper Repo | VUR-Helper โ Void User Repository |
Keunggulan
- Ringan dan cepat
- Tanpa bloatware
- Struktur sistem bersih
- Modular dan terkontrol
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:
- Kontrol Penuh โ Penggunaan
runitsebagai init system yang simpel dan cepat - Performa Maksimal โ Tanpa beban bloatware yang memperlambat mesin
- Kesederhanaan Arsitektur โ Sejalan dengan prinsip "Keep Things Simple"
- 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.
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:
| Arsitektur | CPU | RAM | Penyimpanan |
|---|---|---|---|
| x86_64-glibc | x86_64 | 520 MB | 700 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
| Platform | Link |
|---|---|
| Google Drive | Unduh di Google Drive |
| SourceForge | Unduh di SourceForge |
Memverifikasi File ISO
1. Pilih Varian T4n OS
| Varian | Deskripsi | Target Pengguna |
|---|---|---|
| Base | Sistem minimal | Advanced user |
| XFCE | Desktop ringan | Recommended |
| XFCE Wayland | Antarmuka modern | Eksperimental |
| Server | Mode server (SystemD) | Coming Soon |
2. Unduh File yang Diperlukan
Pastikan semua file berikut sudah terunduh sebelum melanjutkan:
*.isoโ Image instalasi T4n OSSHA256SUMSโ Daftar checksum fileSHA256SUMS.sigโ Tanda tangan digitalt4n-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
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:
| Jenis | Cocok Untuk | Keterangan |
|---|---|---|
| Base | Advanced user | Sistem minimal, bangun sesuai kebutuhan |
| Xfce | Pemula | Desktop 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
| Kategori | Aplikasi |
|---|---|
| Window Manager | xfwm4 |
| File Manager | Thunar |
| Web Browser | Mozilla Firefox |
| Terminal | xfce4-terminal |
| Text Editor | Mousepad |
| Image Viewer | Ristretto |
| Lainnya | Bulk 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 konsolbrlttyโ driver braille konsol
Jika sumber instalasi Local dipilih, kedua paket ini akan ikut terinstal dan aktif pada sistem baru.
Bootloader
| Firmware | Bootloader | Keterangan |
|---|---|---|
| UEFI | GNU GRUB | Dua nada saat menu muncul |
| BIOS / Legacy | SYSLINUX | Tanpa bunyi |
Tombol Pintas Bootloader
| Tombol | Fungsi |
|---|---|
s | Boot dengan screen reader aktif |
r | Boot + screen reader + load ISO ke RAM |
g | Boot + screen reader + tanpa grafis |
m | Masuk ke Memtest86+ (jika tersedia) |
f | Masuk firmware UEFI |
b | Reboot |
p | Shutdown |
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:
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
| Field | Keterangan |
|---|---|
/dev/sda | Lokasi perangkat |
7.5 GiB | Ukuran 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
| Aplikasi | Platform | Link |
|---|---|---|
| Balena Etcher | Universal | etcher.balena.io |
| Rufus | Windows only | rufus.ie |
| Popsicle | Linux only | GitHub |
Via dd (Terminal)
dd bs=4M if=/path/to/T4nOS-x86_64.iso of=/dev/sdX status=progress
| Parameter | Keterangan |
|---|---|
if= | Lokasi file ISO |
of= | Target device (USB kamu) |
bs=4M | Mempercepat proses penulisan |
status=progress | Menampilkan 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:
| Aplikasi | Deskripsi | Link |
|---|---|---|
| K3b | Aplikasi burning lengkap (CD/DVD/Blu-ray) | GitHub |
| Xfburn | Aplikasi burning ringan dari XFCE | Dokumentasi |
| Brasero | Aplikasi burning GNOME, desain simpel | GNOME Wiki |
Cara umum:
- Buka aplikasi
- Pilih "Burn ISO Image"
- Pilih file ISO T4n OS
- 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
Partisi
Pemartisian adalah proses membagi penyimpanan (HDD/SSD) menjadi beberapa bagian sebelum instalasi sistem operasi.
Pada sistem Linux modern, partisi yang umum digunakan:
| Partisi | Fungsi | Status |
|---|---|---|
/boot atau /boot/efi | Booting sistem | Wajib |
/ (Root) | Sistem utama | Wajib |
/home | Data pengguna | Direkomendasikan |
| Swap | Memori cadangan | Direkomendasikan |
1. Memahami Tipe Partisi
Saat menggunakan tools seperti cfdisk, kamu akan melihat dua skema partisi:
Label: dosโ skema MBRLabel: 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:
| Field | Nilai |
|---|---|
| Nama | BIOS Boot Partition |
| Ukuran | ยฑ1 MB |
| Tipe | BIOS boot |
| Filesystem | Tidak 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.
| Field | Nilai |
|---|---|
| Mount Point | /boot/efi |
| Format | vfat (FAT32) |
| Ukuran | 200 MB โ 1 GB |
| Tipe | EFI System |
4. Partisi Swap
Swap adalah memori cadangan yang digunakan saat RAM penuh.
| RAM | Swap (Normal) | Swap (Hibernate) |
|---|---|---|
| < 2 GB | 2ร RAM | 3ร RAM |
| 2 โ 8 GB | 1ร RAM | 2ร RAM |
| 8 โ 64 GB | Min 4 GB | 1.5ร RAM |
| > 64 GB | Min 4 GB | Tidak 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
/bootcukup.
8. Contoh Skema Partisi
UEFI (Direkomendasikan)
| Partisi | Ukuran | Mount Point | Format |
|---|---|---|---|
| EFI | 300 MB | /boot/efi | FAT32 |
| Root | 30 GB+ | / | ext4 |
| Swap | Sesuai RAM | โ | swap |
| Home | Sisa disk | /home | ext4 |
BIOS (MBR)
| Partisi | Ukuran | Mount Point | Format |
|---|---|---|---|
| Root | 30 GB+ | / | ext4 |
| Swap | Sesuai RAM | โ | swap |
| Home | Sisa disk | /home | ext4 |
โ ๏ธ Tips Penting
- Selalu backup data sebelum melakukan partisi
- Pastikan memilih disk yang benar (
/dev/sdX) - Gunakan
cfdiskuntuk pemula โ antarmuka lebih mudah dipahami - Gunakan GPT jika sistem mendukung UEFI (lebih modern dan fleksibel)
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
- Nyalakan komputer.
- Masuk ke boot menu โ biasanya
F2,F12,ESC, atauDEL. - 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:
| Field | Value | Keterangan |
|---|---|---|
root | voidlinux | Akses Root |
anon | voidlinux | Akses 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) :
- Shell
nmtui
- NTUI Option > Activate a Connection
- Pilih Wifi dan Masukkan Password
- Pilih
Back, laluEnter - Pilih
Quit, laluEnter
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)
| Opsi | Keterangan |
|---|---|
Local | Instalasi dari ISO (offline) |
Network | Mengunduh 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-8id_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
wheelsehingga dapat menggunakansudo.
Partisi
Pilih tool partisi yang tersedia sesuai installer yang digunakan:
| Tool | CLI Installer | GUI Installer |
|---|---|---|
cfdisk | โ | โ |
fdisk | โ | โ |
gparted | โ | โ |
Langkah:
- Pilih disk target (contoh:
/dev/sda). - Buat partisi yang diperlukan:
| Partisi | Keterangan |
|---|---|
/ | Root (wajib) |
swap | Swap (disarankan) |
/boot/efi | Khusus UEFI |
- Pilih Write, lalu Quit (atau Apply untuk GParted).
Skema partisi berdasarkan firmware:
| Firmware | Skema Partisi |
|---|---|
| UEFI | GPT + EFI partition |
| BIOS | MBR |
Filesystem
Untuk setiap partisi, tentukan filesystem dan mount point:
| Partisi | Filesystem | Mount Point |
|---|---|---|
| Root | ext4 | / |
| EFI | vfat | /boot/efi |
| Home | ext4 | /home (opsional) |
Bootloader
Pilih lokasi instalasi bootloader:
- Pilih disk (contoh:
/dev/sda), atau - Pilih
noneuntuk 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:
- Memformat partisi
- Menginstal sistem dasar
- Membuat
initramfs - 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.
Panduan Instalasi Advanced
Bagian ini berisi panduan untuk kasus penggunaan yang lebih spesifik atau kompleks.
Daftar Isi
| Topik | Tautan |
|---|---|
| Instalasi Via Chroot | Via Chroot |
| Full Disk Encryption | Guide |
| Root on ZFS | ZFS |
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:
| Metode | Cara Kerja | Syarat Host |
|---|---|---|
| XBPS | Menggunakan XBPS Package Manager dari sistem host | XBPS harus sudah terinstal di host |
| ROOTFS | Mengekstrak tarball ROOTFS ke sistem file baru | Host 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 paketgptfdisk) ataupartedjuga 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)
| Partisi | Tipe | Ukuran | Filesystem |
|---|---|---|---|
/boot/efi | EFI System (EF00) | ~1 GB | FAT32 |
/ | Linux Filesystem (8300) | Sisa disk | ext4 |
swap | Linux Swap | Opsional | swap |
# Contoh format:
mkfs.vfat /dev/sda1
mkfs.ext4 /dev/sda2
BIOS (MBR)
| Partisi | Tipe | Filesystem |
|---|---|---|
/ | Linux | ext4 |
swap | Linux Swap | swap |
Tidak memerlukan partisi
/bootterpisah 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
linuxbersamabase-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
--targetdengan arsitektur:
Arsitektur Target x86_64 x86_64-efii686 i386-efiaarch64 arm64-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:
Arsitektur File GRUB File Fallback x86_64 grubx64.efibootx64.efii686 grubia32.efibootia32.efiaarch64 grubaa64.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
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)
| Partisi | Tipe | Ukuran | Keterangan |
|---|---|---|---|
/dev/sda1 | Linux | Seluruh disk | Partisi tunggal, bootable |
UEFI (GPT)
| Partisi | Tipe | Ukuran | Keterangan |
|---|---|---|---|
/dev/sda1 | EFI System | ~128 MB | Partisi EFI |
/dev/sda2 | Linux Filesystem | Sisa disk | Partisi 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
voidvmdengan 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 outputblkiddi 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/sda1dengan/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
| # | Langkah | Keterangan |
|---|---|---|
| 1 | Partisi disk | MBR (1 partisi) atau GPT + EFI (2 partisi) |
| 2 | Format LUKS1 | cryptsetup luksFormat --type luks1 |
| 3 | Setup LVM | vgcreate โ lvcreate โ mkfs |
| 4 | Mount & instalasi | xbps-install base-system + lvm2 + cryptsetup |
| 5 | Konfigurasi GRUB | GRUB_ENABLE_CRYPTODISK=y + UUID kernel cmdline |
| 6 | Setup keyfile | Agar tidak input password dua kali saat boot |
| 7 | Generate initramfs & reboot | xbps-reconfigure -fa |
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:
| Firmware | Panduan |
|---|---|
| UEFI | UEFI guide |
| BIOS/Legacy | syslinux 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:
| Pilihan | Keterangan |
|---|---|
| Build manual | Gunakan 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:
| Partisi | Tipe | Keterangan |
|---|---|---|
| EFI System | EFI (khusus UEFI) | Format dengan mkfs.vfat |
| GRUB BIOS boot | BIOS boot (khusus BIOS+GPT) | Tidak diformat |
/boot | ext4 atau xfs | Wajib jika tidak pakai ZFSBootMenu |
| Swap | Linux swap | Opsional โ lihat catatan di bawah |
| ZFS pool | Type code: BF00 | Sisa 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 denganls /dev/disk/by-id/).
โ ๏ธ Selalu gunakan
/dev/disk/by-id/atau/dev/disk/by-partuuid/โ hindari/dev/sda3karena 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=noautopada 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
| # | Langkah | Keterangan |
|---|---|---|
| 1 | Pilih bootloader | ZFSBootMenu (disarankan) atau GRUB + /boot terpisah |
| 2 | Boot live image ZFS | hrmpf atau build manual dengan -p zfs |
| 3 | Partisi disk | EFI + /boot + ZFS (type BF00) |
| 4 | Buat ZFS pool | zpool create dengan opsi yang sesuai |
| 5 | Buat ZFS filesystem | ROOT/void + home |
| 6 | Mount & simpan cache pool | zfs mount -a + zpool set cachefile |
| 7 | Instalasi chroot | Ikuti panduan instalasi chroot standar |
| 8 | Konfigurasi dracut + ZFS | zol.conf + xbps-install zfs |
| 9 | Finalisasi & reboot | Generate initramfs, install bootloader |
Perangkat ARM (Coming Soon)
T4n OS menyediakan paket dan image untuk beberapa perangkat ARM. Instalasi dapat dilakukan dengan beberapa metode:
| Metode | Keterangan |
|---|---|
| Pre-built image | Flash langsung ke SD card โ cepat, tapi layout partisi terbatas |
| Tarball | Ekstrak PLATFORMFS/ROOTFS ke partisi yang sudah disiapkan โ lebih fleksibel |
| Chroot | Mengikuti panduan instalasi chroot standar |
| Live image | Khusus 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
syncsebelum 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)
| Partisi | Tipe | Filesystem | Mount Point | Keterangan |
|---|---|---|---|---|
/dev/mmcblk0p1 | 0c | FAT32 | /boot | Partisi boot |
/dev/mmcblk0p2 | Linux | ext4 | / | Partisi root |
Jika menggunakan SD card, buat ext4 dengan opsi
^has_journaluntuk 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:
| Field | Value |
|---|---|
| Username | root |
| Password | voidlinux |
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
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-systemdanasahi-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-fwupdatesetiap kali paketasahi-firmwarediperbarui.
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:
- Perbarui firmware UEFI ke versi 1.59 atau lebih baru.
- 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/
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:
| Firmware | Link |
|---|---|
| Tow-Boot | tow-boot.org |
| rk2aw | xnux.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
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:
| Paket | Keterangan |
|---|---|
rpi-base | Meta-paket yang menginstal kernel + firmware RPi |
rpi-kernel | Kernel RPi |
rpi-kernel-headers | Header kernel โ diperlukan untuk paket DKMS |
rpi-firmware | Firmware RPi (termasuk WiFi & Bluetooth) |
Parameter kernel tersimpan di /boot/cmdline.txt.
Model yang Didukung
| Model | Arsitektur |
|---|---|
| 1 A, 1 B, 1 A+, 1 B+, Zero, Zero W, Zero WH | armv6l |
| 2 B | armv7l |
| 3 B, 3 A+, 3 B+, Zero 2W, 4 B, 400, CM4, 5, 500, CM5 | aarch64 |
RPi 3 dapat menjalankan image
armv7lmaupunaarch64karena 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
Konfigurasi
Bagian ini berisi informasi tentang cara mengkonfigurasi T4n OS.
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
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:
| Seksi | Keterangan |
|---|---|
| 1 | Perintah pengguna (program) |
| 2 | System calls |
| 3 | Library calls |
| 4 | File spesial (perangkat) |
| 5 | Format file dan file konfigurasi |
| 6 | Games |
| 7 | Ikhtisar, konvensi, dan lain-lain |
| 8 | Perintah 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
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:
- Konfigurasi XBPS untuk mengabaikan paket firmware yang tidak diinginkan.
- Hapus paket tersebut dengan perintah:
sudo xbps-remove -R <nama-paket-firmware>
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 paketlibreoffice-i18n-*harus diinstal agar terjemahan tersedia. Jika menginstal meta-paketlibreoffice, paket terjemahan umum sudah disertakan secara otomatis.
User & Grup
Manajemen User
| Perintah | Fungsi |
|---|---|
useradd | Menambah user baru |
userdel | Menghapus user |
usermod | Memodifikasi user |
passwd | Mengubah password |
Manajemen Grup
| Perintah | Fungsi |
|---|---|
groupadd | Menambah grup baru |
groupdel | Menghapus grup |
groupmod | Memodifikasi grup |
groups | Melihat 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:
| Grup | Deskripsi |
|---|---|
root | Akses penuh ke seluruh sistem |
bin | Tidak digunakan โ ada untuk alasan historis |
sys | Tidak digunakan โ ada untuk alasan historis |
kmem | Akses baca ke /dev/mem dan /dev/port |
wheel | Hak istimewa untuk administrasi sistem |
tty | Akses ke perangkat TTY: /dev/tty*, /dev/pts*, /dev/vcs* |
tape | Akses ke perangkat tape |
daemon | Daemon sistem yang perlu menulis file ke disk |
floppy | Akses ke floppy drive |
disk | Akses langsung ke /dev/sd* dan /dev/loop* |
lp | Akses ke printer |
dialout | Akses ke port serial |
audio | Akses ke perangkat audio |
video | Akses ke perangkat video |
utmp | Akses tulis ke /var/run/utmp, /var/log/wtmp, /var/log/btmp |
adm | Tidak digunakan โ dahulu untuk monitoring sistem |
cdrom | Akses ke perangkat CD |
optical | Akses ke perangkat DVD/CD-RW |
mail | Digunakan oleh beberapa paket mail, contoh: dma |
storage | Akses ke perangkat penyimpanan removable |
scanner | Akses ke scanner |
network | Digunakan oleh paket jaringan, contoh: NetworkManager |
kvm | Akses KVM untuk virtual machine, contoh: via QEMU |
input | Akses ke perangkat input: /dev/mouse*, /dev/event* |
plugdev | Akses ke perangkat pluggable |
nogroup | Daemon sistem yang tidak perlu memiliki file |
usbmon | Akses ke /dev/usbmon* |
users | Pengguna biasa |
xbuilder | Untuk menggunakan xbps-uchroot bersama xbps-src |
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/Dir | Fungsi |
|---|---|
check | Dijalankan untuk mengecek apakah layanan sudah tersedia (exit 0 = OK) |
finish | Dijalankan saat layanan dihentikan atau shutdown |
conf | Berisi environment variables yang digunakan oleh run |
log/ | Direktori log โ output dari run akan dialirkan ke proses run di dalamnya |
Folder
superviseakan 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:
- Salin service directory ke nama direktori baru (agar tidak ditimpa saat update
xbps-install). - Edit file layanan di direktori baru tersebut.
- Hentikan dan nonaktifkan layanan lama.
- 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:
| Runsvdir | Fungsi |
|---|---|
single | Hanya menjalankan sulogin โ untuk mode rescue |
default | Runsvdir 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
agettyuntuk 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
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=~/servicedi profil shell (~/.bashrcatau~/.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-readydibuat 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
| Aspek | runsvdir | turnstile |
|---|---|---|
| Mulai saat | Boot sistem | Login pengguna |
| Akses sesi grafis | โ Tidak | โ Ya |
| Akses D-Bus session bus | โ Tidak | โ Ya (bisa dikonfigurasi) |
| Kompleksitas setup | Sederhana | Lebih lengkap |
| Lokasi service | ~/service/ | ~/.config/service/ |
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
| Paket | Keterangan |
|---|---|
rsyslog | Implementasi populer, fitur lengkap |
metalog | Konfigurasi berbasis regex |
sudo xbps-install -S rsyslog # atau metalog
ln -s /etc/sv/rsyslog /var/service/
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/Direktori | Stage runit | Fungsi |
|---|---|---|
/etc/rc.conf | 1 & 3 | Menetapkan variabel konfigurasi sistem |
/etc/rc.local | 2 | Skrip yang dijalankan sebelum login |
/etc/rc.shutdown | 3 | Skrip yang dijalankan saat shutdown |
/etc/runit/core-services/ | 1 | Skrip 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
localtimesecara default. Jika dual-boot, pilih salah satu: ubah Windows agar menggunakan UTC, atau tetapkan variabel ini kelocaltime.
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..."
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:
| Paket | Keterangan |
|---|---|
cronie | Implementasi populer, aktif dikembangkan |
dcron | Ringan dan sederhana |
fcron | Fitur 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
cronddari 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:
| Layanan | Interval | Direktori Script |
|---|---|---|
snooze-hourly | Per jam | /etc/cron.hourly/ |
snooze-daily | Per hari | /etc/cron.daily/ |
snooze-weekly | Per minggu | /etc/cron.weekly/ |
snooze-monthly | Per 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
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
| Metode | Cocok untuk | Cara Aktifkan |
|---|---|---|
| Manual | Semua | fstrim / |
| Periodic (cron) | Semua | Script di /etc/cron.weekly/ |
| Continuous (fstab) | SSD kompatibel NCQ | Opsi discard di /etc/fstab |
| LVM | LVM | issue_discards=1 di lvm.conf |
| LUKS | Enkripsi | --allow-discards / crypttab |
| ZFS | ZFS pool | zpool trim / autotrim=on |
Keamanan
Ada beberapa langkah yang dapat dilakukan untuk membuat instalasi T4n OS lebih aman. Bagian ini membahas beberapa di antaranya.
Daftar Isi
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:
| Mode | Keterangan |
|---|---|
disable | AppArmor dinonaktifkan |
complain | Pelanggaran dicatat di log, program tetap berjalan (default) |
enforce | Pelanggaran 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/
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
TIMEZONEmasih ada di/etc/rc.conf, hapus atau komentari baris tersebut โ nilainya akan menimpa pengaturanlndi 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
localtimedengan 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:
| Paket | Layanan | Keterangan |
|---|---|---|
ntp | isc-ntpd | Implementasi referensi resmi NTP |
openntpd | openntpd | Implementasi ringan dan aman, cocok untuk sebagian besar use-case |
chrony | chronyd | Sinkronisasi lebih cepat dan akurat, cocok untuk berbagai kondisi jaringan |
ntpd-rs | ntpd-rs | Implementasi 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
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
/bootadalah 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
vkpurgesudah 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:
- Instal atau tandai
linux-basesebagai manual package:
sudo xbps-install -S linux-base
# atau jika sudah terinstal:
sudo xbps-pkgdb -m manual linux-base
- Tambahkan
linuxdanlinux-headerskeignorepkgdi/etc/xbps.d/*.conf:
ignorepkg=linux linux-headers
- 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.ddi 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:
| Opsi | Default | Dampak Performa | Keterangan |
|---|---|---|---|
init_on_alloc | ON | ~1% (minimal) | Aktif secara default pada linux 5.4+ |
init_on_free | OFF | ~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.
| Hook | Dijalankan oleh | Kapan |
|---|---|---|
pre/post-install | xbps-reconfigure | Saat kernel diinstal/diperbarui |
pre/post-remove | vkpurge | Saat 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/
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:
eloginddanacpidtidak 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
| Tool | Fungsi | Catatan |
|---|---|---|
acpid | Menangani event ACPI via script | Default aktif pada instalasi lokal |
elogind | Menangani event ACPI + sesi login | Tidak boleh aktif bersamaan acpid |
tlp | Optimasi hemat daya baterai laptop | Khusus laptop |
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:
| Tool | Keterangan |
|---|---|
NetworkManager | Default T4n OS โ GUI & CLI, cocok untuk desktop |
wpa_supplicant | Ringan, konfigurasi manual via file |
iwd | Modern, cepat, lebih mudah dari wpa_supplicant |
ConnMan | Ringan, cocok untuk sistem embedded |
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
rootdan anggota grupwheelyang dapat menjalankaniwctl.
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
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 perintahservices.
Front-End GUI
Selain CLI, ConnMan tersedia dengan berbagai antarmuka grafis:
| Paket | Jenis UI |
|---|---|
connman-ui | System tray |
connman-gtk | GTK |
cmst | Qt |
connman-ncurses | Terminal (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"
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
| Tool | Jenis | Perintah |
|---|---|---|
nmcli | Command-line | nmcli |
nmtui | TUI (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
| Paket | Lingkungan |
|---|---|
| network-manager-applet | System tray (GTK) |
| nm-tray | System tray (Qt) |
| plasma-nm | KDE Plasma |
| Built-in | GNOME |
Eduroam (Jaringan Kampus)
Eduroam adalah layanan internet aman untuk civitas akademika yang bisa diakses di berbagai universitas di seluruh dunia.
Instalasi
- Instal dependensi:
sudo xbps-install -S python3-dbus
-
Unduh installer eduroam sesuai institusi dari cat.eduroam.org.
-
Jalankan installer:
chmod +x eduroam_installer.py
python3 eduroam_installer.py
Installer akan memandu proses konfigurasi secara otomatis.
wpa_supplicant
wpa_supplicant sudah terinstal di sistem dasar T4n OS. Paket ini menyediakan tool untuk mengonfigurasi interface wireless dan menangani protokol keamanan WiFi.
| Tool | Fungsi |
|---|---|
wpa_supplicant | Daemon utama โ mengelola interface wireless |
wpa_passphrase | Membuat pre-shared key untuk file konfigurasi |
wpa_cli | CLI 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
| Variabel | Default | Keterangan |
|---|---|---|
OPTS | โ | Opsi tambahan (override semua opsi lain) |
CONF_FILE | /etc/wpa_supplicant/wpa_supplicant.conf | Path ke file konfigurasi |
WPA_INTERFACE | Semua interface | Interface 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 sepertiscandanscan_resultsmungkin 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
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
dhcpcdhanya 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
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
| Parameter | Nilai |
|---|---|
<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
rpcbinddanstatd.
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.
| Opsi | Keterangan |
|---|---|
rw | Akses baca dan tulis |
no_subtree_check | Menonaktifkan pengecekan subtree (meningkatkan performa) |
no_root_squash | Root 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
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:
| Jenis | Fungsi | Cara Aktifkan |
|---|---|---|
| System bus | Komunikasi antar proses sistem | Aktifkan layanan dbus |
| Session bus | Komunikasi spesifik per sesi pengguna | Jalankan 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,
seatdhanya 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
| Tool | Fungsi Utama | Cocok untuk |
|---|---|---|
elogind | Sesi, daya, XDG_RUNTIME_DIR | DE lengkap, Wayland, rootless Xorg |
turnstile | Sesi, per-user services | Alternatif elogind, bisa dikombinasikan |
seatd | Manajemen seat saja | wlroots compositor (Sway, Hyprland) |
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.
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.
Driver GPU AMD / ATI
Firmware
Dukungan GPU AMD membutuhkan paket linux-firmware-amd.
- Jika menggunakan paket
linuxataulinux-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 menggunakanxorg-minimalatau Wayland compositor.
Vulkan
sudo xbps-install -S vulkan-loader
Pilih salah satu atau keduanya sebagai driver Vulkan AMD:
| Paket | Keterangan |
|---|---|
mesa-vulkan-radeon | Driver Vulkan AMD dari Mesa |
amdvlk | Driver 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:
| Driver | Cocok untuk |
|---|---|
xf86-video-amdgpu | GPU AMD arsitektur "Graphics Core Next 1.2" (sejak ~2012) |
xf86-video-ati | GPU 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
Driver GPU Intel
Firmware
Dukungan GPU Intel membutuhkan paket linux-firmware-intel.
- Jika menggunakan paket
linuxataulinux-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 menggunakanxorg-minimalatau 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:
| Driver | Generasi GPU | Variabel Lingkungan |
|---|---|---|
libva-intel-driver | Hingga Coffee Lake | LIBVA_DRIVER_NAME=i965 |
intel-media-driver | Broadwell dan lebih baru | LIBVA_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.
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 menggunakanxorg-minimalatau 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:
| Dukungan | Arsitektur |
|---|---|
| Manual | Maxwell Gen 1, Kepler, beberapa Tesla |
| Otomatis | Turing (GTX 16xx) dan lebih baru |
| Tidak didukung | Maxwell 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 GPU | Tipe Driver | Paket |
|---|---|---|
| Turing (NV160) & terbaru | Open-source / Proprietary | nvidia |
| Maxwell (NV110) s/d Volta (NV140) | Proprietary | nvidia580 |
| Kepler (NVE0) | Proprietary (Legacy) | nvidia470 |
| Fermi (NVC0) | Proprietary (Legacy) | nvidia390 |
| Tesla (NV50) & lebih lama | Tidak didukung | Gunakan 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, ataunvidia-libs-32bituntuk 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 paketlibglvnd.
Menyimpan Kedua Driver (Alternatif)
Jika driver NVIDIA ingin tetap terinstal namun Nouveau yang digunakan:
- Buka file blacklist (
/etc/modprobe.d/nouveau_blacklist.confatau/usr/lib/modprobe.d/nvidia.conf). - Beri tanda komentar (
#) pada barisblacklist nouveau. - Buat file
/etc/X11/xorg.conf.d/20-nouveau.confuntuk memaksa Xorg menggunakan Nouveau:
Section "Device"
Identifier "Nvidia card"
Driver "nouveau"
EndSection
Restart sistem agar perubahan berlaku.
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:
- Instal paket
nvidiaterbaru lalu reboot. - 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. - Jika pesan tersebut muncul, hapus driver
nvidiadan instal driver legacynvidia390.
Metode yang Didukung
Metode-metode berikut bersifat eksklusif โ pilih salah satu, tidak bisa dijalankan bersamaan:
| Metode | Driver | Kelebihan | Kekurangan |
|---|---|---|---|
| PRIME Render Offload | nvidia, nvidia470 | Fleksibel, bisa dipilih per aplikasi | Manajemen daya kurang optimal pada seri pre-Turing |
| RandR 1.4 | nvidia, nvidia470, nvidia390 | Bisa mematikan GPU NVIDIA sepenuhnya | Kurang fleksibel, harus ditentukan di awal sesi X |
| Bumblebee | nvidia, nvidia470, nvidia390 | Manajemen daya baik | Tidak resmi, performa cenderung rendah |
| Nouveau PRIME | nouveau | Open-source | Performa 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
- Aktifkan layanan
bumblebeed. - Tambahkan user ke grup
bumblebee:
sudo usermod -aG bumblebee $USER
- Log out dan log in kembali.
- Jalankan aplikasi dengan:
optirun <nama_aplikasi>
Nouveau PRIME
- Pastikan driver NVIDIA sudah dihapus atau dinonaktifkan.
- 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
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.
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 paketxorg. 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:
| Paket | Cocok untuk |
|---|---|
gdm | GNOME |
sddm | KDE Plasma |
lightdm | XFCE, window manager lain |
Uji fungsionalitas Xorg dengan
startxterlebih dahulu sebelum mengaktifkan display manager secara permanen, untuk menghindari layar hitam saat boot.
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:
| Compositor | Deskripsi |
|---|---|
sway | Tiling compositor, kompatibel dengan konfigurasi i3 |
river | Tiling compositor dinamis |
wayfire | Compositor 3D dengan efek visual |
labwc | Stacking compositor terinspirasi Openbox |
weston | Compositor referensi resmi proyek Wayland |
niri | Tiling compositor dengan mekanisme scrolling |
qtile | Tersedia melalui paket qtile-wayland |
Beberapa compositor tidak menyertakan font secara default. Jika aplikasi tidak tampil atau error, instal paket font seperti
fonts-robotoatauttf-dejavu.
Driver Grafis & Seat Management
Driver Video
- Mesa / Open-source โ Sebagian besar compositor membutuhkan driver yang mengimplementasikan antarmuka GBM. Pastikan paket
mesa-drisudah 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:
elogindseatd
Konfigurasi Aplikasi Native Wayland
Agar aplikasi berjalan secara native (bukan melalui emulasi X11), atur variabel lingkungan sesuai toolkit:
| Toolkit / Aplikasi | Paket yang Diperlukan | Variabel Lingkungan |
|---|---|---|
| Qt5 | qt5-wayland | QT_QPA_PLATFORM=wayland |
| Qt6 | qt6-wayland | QT_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 kewaylanduntuk memberitahu aplikasi bahwa sesi yang berjalan adalah Wayland.
Verifikasi:
echo $XDG_SESSION_TYPE
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:
| Backend | Keterangan |
|---|---|
xdg-desktop-portal-gtk | Pilihan default โ UI berbasis GTK+, kompatibel dengan hampir semua DE |
xdg-desktop-portal-gnome | Antarmuka umum + fitur spesifik GNOME |
xdg-desktop-portal-kde | Antarmuka umum + fitur spesifik KDE (UI berbasis Qt/KF5) |
xdg-desktop-portal-wlr | Wajib untuk Wayland wlroots (Sway, Hyprland) โ screenshot & screenshare |
xdg-desktop-portal-lxqt | Hanya file picker (berbasis libfm-qt) |
io.elementary.files | Hanya 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.confatau$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.
GUI Core
- XFCE โ Desktop environment ringan berbasis X11.
- XFCE Wayland โ XFCE dengan dukungan Wayland.
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
| Komponen | Paket |
|---|---|
| Window Manager | xfwm4 |
| File Manager | thunar |
| Panel | xfce4-panel |
| Terminal | xfce4-terminal |
| Display Manager | lightdm |
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
- Masuk ke TTY dengan
Ctrl+Alt+F2. - Cek apakah partisi penuh:
df -h. - 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
| Perintah | Fungsi |
|---|---|
xfce4-panel -r | Restart panel jika error atau hang |
xfwm4 --replace & | Restart atau ganti window manager |
xfce4-session-logout | Buka dialog logout via terminal |
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
| Komponen | Keterangan |
|---|---|
| Compositor | labwc (berbasis wlroots, meniru Openbox/Xfwm4) atau xfce4-wayland-session |
| Protokol | Wayland dengan kompatibilitas XWayland untuk aplikasi lama |
| Seat Management | seatd atau elogind |
Persyaratan Driver
Wayland membutuhkan driver dengan dukungan GBM (Generic Buffer Management):
- Intel โ
mesa-dri. - AMD โ
mesa-dridanxf86-video-amdgpu(kernel-mode). - NVIDIA โ Driver versi 470+ (disarankan 525+) dengan
nvidia-drm.modeset=1di 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 pluginwayland-proxy. - Wallpaper & Desktop โ
wpaperdatauswaybg. - App Launcher โ
xfce4-appfinderatauwofi. - Screenshot โ
grim+slurp(menggantikanxfce4-screenshooter). - Notifikasi โ
makoatauxfce4-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:
xdg-desktop-portalxdg-desktop-portal-wlr(atau sesuai compositor)pipewiredanwireplumber
Perintah Penting
| Perintah | Kegunaan |
|---|---|
wayland-info | Lihat informasi protokol Wayland aktif |
libinput debug-events | Lacak input perangkat secara real-time |
grim output.png | Ambil screenshot seluruh layar |
GUI Extra
Kustomisasi tampilan sistem.
Fonts
Instalasi via XBPS
T4n OS menyediakan berbagai koleksi font melalui XBPS:
| Paket | Keterangan |
|---|---|
dejavu-fonts-ttf | Font standar, pilihan dasar yang stabil |
xorg-fonts | Font dasar untuk sistem Xorg |
noto-fonts-ttf | Dukungan multibahasa dan berbagai skrip |
noto-fonts-cjk | Bahasa Mandarin, Jepang, dan Korea |
noto-fonts-emoji | Dukungan emoji berwarna |
nerd-fonts | Font 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.
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:
- Tambahkan
adwaita-icon-themeke daftarignorepkgdi konfigurasi XBPS. - Hapus paket secara manual:
sudo xbps-remove -F adwaita-icon-theme
Lokasi File Ikon
| Scope | Lokasi |
|---|---|
| Sistem | /usr/share/icons/ |
| Per-pengguna | ~/.local/share/icons/ |
Themes
Lokasi Penyimpanan Tema
| Scope | Lokasi |
|---|---|
| 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:
- Instal
qt5ctatauqt6ct:
sudo xbps-install -S qt5ct qt6ct
- Tambahkan variabel lingkungan ke
~/.bash_profileatau/etc/environment:
export QT_QPA_PLATFORMTHEME=qt5ct
- 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:
- gnome-look.org โ GTK
- store.kde.org โ Qt / KDE
- xfce-look.org โ XFCE
Cara pasang:
- Ekstrak file
.tar.gz. - Pindahkan folder hasil ekstrak ke
~/.local/share/themes/. - Pilih tema melalui pengaturan sistem.
CLI โ Command Line
- Server (Coming Soon)
- Penjelasan Singkat
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:
| Layanan | Paket | Service Name |
|---|---|---|
| Web server | nginx | nginx |
| Database | postgresql16 | postgresql |
| SSH daemon | openssh | sshd |
| DNS resolver | unbound | unbound |
| Mail server | postfix | postfix |
| Firewall | nftables | nftables |
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_configdan setPermitRootLogin no. - Gunakan key-based authentication, bukan password.
- Aktifkan firewall dengan
nftablesatauiptables. - Pasang
AppArmoruntuk mandatory access control pada layanan kritis. - Pantau log secara berkala via
socklogataursyslog.
Dokumentasi Lengkap
| Platform | Status | Link |
|---|---|---|
| T4n OS | ๐ง Coming Soon | T4n OS Server Documentation |
Server
Multimedia
Pengaturan Audio
T4n OS mendukung beberapa pilihan sistem audio. Pilih salah satu sesuai kebutuhan:
| Sistem | Keterangan |
|---|---|
| PipeWire | Pilihan modern โ pengganti langsung PulseAudio, mendukung audio dan video |
| PulseAudio | Dibutuhkan oleh beberapa aplikasi proprietary |
| ALSA | Lapisan audio dasar kernel Linux, tanpa daemon tambahan |
Jika
elogindtidak aktif, pastikan user tergabung di grupaudioagar dapat mengakses perangkat audio.
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, tekanF6untuk memilih kartu suara lain.sudo alsactl storeโ simpan pengaturan volume saat ini secara manual.
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_DIRharus terdefinisi agar PipeWire berfungsi dengan benar.- Jika tidak menggunakan
elogind, tambahkan user ke grupaudiodanvideo:
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
pipewireke daftar Startup Applications. - XDG Autostart โ Buat symlink ke folder autostart:
ln -s /usr/share/applications/pipewire.desktop ~/.config/autostart/
- Window Manager โ Tambahkan
pipewire &ke~/.xinitrcatau script startup WM.
Fitur Opsional
| Fitur | Paket |
|---|---|
| Bluetooth Audio | libspa-bluetooth |
| Integrasi ALSA | alsa-pipewire |
| Integrasi JACK | libjack-pipewire |
| Antarmuka Grafis | qpwgraph, helvum, atau pavucontrol |
Troubleshooting
Error Umum
| Pesan Error | Solusi |
|---|---|
Failed to connect to system bus | Aktifkan D-Bus: sudo ln -s /etc/sv/dbus /var/service/ |
XDG_RUNTIME_DIR not set | Atur 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
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
elogindyang 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
dbussudah 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
| Paket | Jenis | Keterangan |
|---|---|---|
pavucontrol | GUI (GTK) | Kelola volume dan perangkat audio |
pulsemixer | TUI (Ncurses) | Mixer ringan berbasis terminal |
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
HARDmenunjukkanblocked, 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
dbusdapat mematikan proses yang sedang menggunakannya โ reboot lebih aman.
Dukungan Audio Bluetooth
Untuk menggunakan perangkat audio Bluetooth (speaker, headset, dll.):
| Audio System | Paket Tambahan |
|---|---|
| ALSA | bluez-alsa |
| PulseAudio | Tidak diperlukan |
| PipeWire | libspa-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
TeX Live
T4n OS menyediakan dua cara untuk menginstal TeX Live:
| Metode | Paket | Keterangan |
|---|---|---|
| Via XBPS | texlive, texlive-* | Dikelola oleh xbps, tidak kompatibel dengan paket dari CTAN |
| Via tlmgr (CTAN) | texlive-bin | Dikelola langsung dari CTAN mirror, lebih fleksibel |
โ ๏ธ Penting: Paket TeX yang diinstal via
xbpsdan viatlmgrtidak bisa saling berinteraksi. Pilih salah satu metode dan gunakan secara konsisten.Contoh:
pdflatexdari pakettexlive-pdflatex(xbps) tidak bisa digunakan untuk mengkompilasi dokumen yang menggunakan paket yang diinstal viatlmgr. Solusinya adalah menjalankantlmgr install pdflatexuntuk 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.
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.
| Bahasa | Package Manager | Paket Devel |
|---|---|---|
| Python3 | pip, anaconda, virtualenv | python3-devel |
| Python2 | pip, anaconda, virtualenv | python2-devel |
| Ruby | gem | ruby-devel |
| Lua | luarocks | lua-devel |
Java
T4n OS menyediakan versi LTS dari OpenJDK. Versi yang tersedia: 8, 11, 17, dan 21.
| Paket | Keterangan |
|---|---|
openjdkX | Java Development Kit (JDK) |
openjdkX-jre | Java Runtime Environment |
openjdkX-doc | Dokumentasi developer |
openjdkX-src | Source code Java |
openjdkX-jmods | Java modules |
openjdkX-static-libs | Static 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:
| Metode | Catatan |
|---|---|
| Native | Membutuhkan repositori nonfree diaktifkan |
| Flatpak | Tidak 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
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-filterstetap diperlukan meskipun menggunakan driverless printing.
sudo xbps-install -S cups-filters
Driver per Merek
| Merek | Paket | Catatan |
|---|---|---|
| Umum | cups-filters | Driver dasar CUPS |
| Gutenprint | gutenprint | Mendukung banyak merek printer |
| HP | hplip | Khusus printer Hewlett-Packard |
| Brother | foomatic-db, foomatic-db-nonfree, brother-brlaser | nonfree untuk laser |
| Epson | epson-inkjet-printer-escpr | Khusus printer inkjet Epson |
| Canon | cnijfilter2 | PIXMA/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
- Buka browser dan akses: http://localhost:631
- Buka tab Administration โ Printers โ Add Printer
- 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.
Container & Virtual Machine
Bagian ini menjelaskan cara mengatur perangkat lunak container dan virtual machine yang tersedia di T4n OS.
Daftar Isi
Chroot & Container
Chroot dan container dapat digunakan untuk berbagai tujuan, antara lain:
- Menjalankan perangkat lunak berbasis
glibcdi sistemmusl(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:
- Buat direktori tujuan:
sudo mkdir <direktori_chroot>
- 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
- 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"
- 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
- Salin konfigurasi jaringan (opsional):
sudo cp /etc/resolv.conf <direktori_chroot>/etc/
- 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
- Masuk ke chroot:
sudo chroot <direktori_chroot> /bin/bash
Selalu lakukan
umountsetelah 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.
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
qemujuga 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:
- Pastikan paket
polkitdandbusterinstal serta layanandbusaktif. - 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.
LXC (Linux Containers)
Proyek Linux Containers mencakup empat subproyek utama:
| Subproyek | Keterangan |
|---|---|
| LXC | Inti dari Linux Containers |
| LXCFS | Filesystem virtual untuk container |
| Incus | Fork komunitas dari LXD, dikelola oleh kreator asli LXD |
| distrobuilder | Tool 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>
| Field | Keterangan |
|---|---|
user | Pengguna yang mendapat delegasi range |
1000000 | ID terkecil dalam range |
65536 | Jumlah 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 User | Lokasi 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
| Field | Keterangan |
|---|---|
u | UID mapping |
g | GID mapping |
0 | Awal range UID/GID di dalam container |
1000000 | Awal range UID/GID di host |
65536 | Jumlah 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
| Tipe | Lokasi 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.idmapke 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-userakan menginisialisasi profil default Incus saat pertama kali dijalankan. Jika ingin mengontrol inisialisasi sendiri, jalankanincus admin initsebelum mengaktifkanincus-user.
incus-userjuga 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.
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)
| Paket | Fungsi |
|---|---|
libvirt | API dan daemon untuk mengelola VM |
virt-manager | GUI untuk mengelola VM via libvirt |
virt-viewer | Tampilan konsol VM (VNC/SPICE) |
edk2-ovmf | Firmware UEFI untuk VM |
spice-vdagent | Integrasi 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:
| Opsi | Keterangan |
|---|---|
-enable-kvm | Aktifkan akselerasi KVM |
-m 2G | Alokasi RAM untuk VM |
-smp 2 | Jumlah CPU virtual |
-drive | Disk image VM |
-cdrom | File ISO installer |
-boot d | Boot 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
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:
| Mode | Keterangan |
|---|---|
| Full system | Emulasi sistem penuh termasuk CPU, memori, dan perangkat keras |
| User mode | Menjalankan 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:
| Binary | Arsitektur |
|---|---|
qemu-system-x86_64 | x86 64-bit |
qemu-system-i386 | x86 32-bit |
qemu-system-aarch64 | ARM 64-bit (aarch64) |
qemu-system-arm | ARM 32-bit |
qemu-system-riscv64 | RISC-V 64-bit |
qemu-system-ppc64 | PowerPC 64-bit |
qemu-system-mips | MIPS |
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
| Opsi | Keterangan |
|---|---|
-enable-kvm | Aktifkan akselerasi KVM |
-m <size> | RAM yang dialokasikan (contoh: 2G, 512M) |
-smp <n> | Jumlah CPU virtual |
-cpu host | Gunakan 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) |
-snapshot | Jalankan tanpa menyimpan perubahan ke disk |
-nographic | Mode tanpa tampilan grafis (serial console) |
-daemonize | Jalankan 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-kvmdigunakan. - Gunakan
-cpu hostbukan-cpu qemu64. - Gunakan driver
virtiountuk 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
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
- Buat VM baru di VMware.
- Pilih "Other Linux 5.x or later kernel 64-bit" sebagai OS type.
- Alokasikan resource:
| Resource | Minimum | Rekomendasi |
|---|---|---|
| RAM | 1 GB | 2 GB+ |
| Storage | 10 GB | 20 GB+ |
| CPU | 1 core | 2 core+ |
- 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
| Aspek | VMware | KVM/QEMU | VirtualBox |
|---|---|---|---|
| Lisensi | Proprietary | Open-source | Open-source |
| Performa | Sangat baik | Sangat baik | Baik |
| Kemudahan setup | Mudah | Sedang | Mudah |
| Integrasi Linux | Baik | Native | Baik |
| Snapshot | โ | โ | โ |
| Nested virt. | โ (Pro) | โ | Terbatas |
| Biaya | Gratis (Player) | Gratis | Gratis |
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
- Buka VirtualBox โ klik New.
- Isi konfigurasi:
| Setting | Nilai yang Disarankan |
|---|---|
| Name | T4n OS (atau sesuai keinginan) |
| Type | Linux |
| Version | Other Linux (64-bit) |
| RAM | Minimal 1 GB, disarankan 2 GB+ |
| Storage | Minimal 10 GB, disarankan 20 GB+ |
| CPU | Minimal 1 core, disarankan 2 core+ |
| Video Memory | 128 MB |
- Mount ISO T4n OS di Settings โ Storage โ Controller: IDE โ Empty.
- 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
- Di VirtualBox host, buka Settings โ Shared Folders โ Add.
- Tentukan path folder di host dan nama share (contoh:
hostfolder). - 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
| Mode | Keterangan |
|---|---|
| NAT | VM bisa akses internet, tidak bisa diakses dari luar (default) |
| Bridged | VM seperti perangkat fisik di jaringan lokal |
| Host-only | VM hanya bisa berkomunikasi dengan host, tidak ke internet |
| Internal | VM hanya bisa berkomunikasi dengan VM lain dalam jaringan internal |
| NAT Network | Seperti 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>
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
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
waydroidtidak tersedia di repositori default, aktifkan repositorinonfreeterlebih 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.cfguntuk mengatur alokasi resource:
[resources]
memory_mb = 4096
cpu_shares = 1024
- GPU NVIDIA proprietary tidak kompatibel dengan baik di Wayland โ gunakan driver
nouveauatau 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
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.cfguntuk 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
| Aspek | Wayland (Native) | X11 (dengan Weston) |
|---|---|---|
| Performa | Native, tanpa overhead | Ada overhead compositor tambahan |
| Instalasi | Sederhana | Perlu Weston + konfigurasi |
| Integrasi desktop | Penuh (menu, notifikasi) | Terisolasi di jendela Weston |
| GPU Acceleration | Langsung | Melalui 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
EOF
GnuPG & OpenPGP
T4n OS menyediakan dua versi GnuPG:
| Paket | Versi |
|---|---|
gnupg | Stable |
gnupg1 | Legacy |
Smartcard (Yubikey, dll.)
Untuk menggunakan smartcard dengan GnuPG, tersedia dua backend komunikasi:
| Backend | Keterangan |
|---|---|
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:
- Smartcard kamu terdaftar dalam udev rules scdaemon.
- Kamu menggunakan
elogindatau tergabung di grupplugdev:
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-toolswajib menggunakanpcscduntuk 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.
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:
- Mengunduh paket dari repositori (server resmi distribusi).
- Memeriksa dependensi โ paket lain yang dibutuhkan agar program bisa berjalan.
- Menginstal semua paket yang diperlukan dalam urutan yang benar.
- 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
| Distribusi | Package Manager | Format Paket |
|---|---|---|
| T4n OS / Void Linux | xbps | .xbps |
| Debian / Ubuntu / Mint | apt | .deb |
| Fedora / RHEL | dnf | .rpm |
| Arch Linux / Manjaro | pacman | .pkg.tar |
| openSUSE | zypper | .rpm |
| Gentoo | portage | Source |
| Alpine Linux | apk | .apk |
| NixOS | nix | .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.
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
-fwajib 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
| Fitur | Perintah | Keterangan |
|---|---|---|
| Downgrade | xdowngrade <file.xbps> | Downgrade via file cache lokal |
| Hold | xbps-pkgdb -m hold <paket> | Cegah paket diperbarui saat update sistem |
| Unhold | xbps-pkgdb -m unhold <paket> | Lepas hold |
| Repolock | xbps-pkgdb -m repolock <paket> | Paksa update hanya dari repositori asal |
| Repounlock | xbps-pkgdb -m repounlock <paket> | Lepas repolock |
| Ignore | ignorepkg=<paket> di xbps.d | Izinkan hapus paket meski ada dependensi |
| Virtual pkg | virtualpkg=<alias>:<paket> di xbps.d | Buat alias paket yang diarahkan ke paket nyata |
Referensi
- Dokumentasi Advanced Usage โ Void Linux Handbook
man xbps-pkgdbโ opsi lengkap manajemen database paketman xbps.dโ format file konfigurasi XBPS
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
| Tool | Keterangan | Docs | Link |
|---|---|---|---|
xbps-alternatives | Kelola sistem alternatif antar paket yang menyediakan fungsionalitas yang sama | Docs โ | Link |
xbps-checkvers | Periksa paket yang sudah usang dengan membandingkan versi lokal terhadap void-packages | Docs โ | Link |
xbps-create | Buat paket biner .xbps dari file-file dalam suatu direktori | Docs โ | Link |
xbps-dgraph | Hasilkan grafik dependensi paket dalam format DOT (untuk Graphviz) | Docs โ | Link |
xbps-digest | Hitung message digest (hash) dari sebuah file menggunakan algoritma kriptografi | Docs โ | Link |
xbps-fbulk | Lakukan bulk build paket secara paralel dari repositori void-packages | Docs โ | Link |
xbps-fetch | Unduh file dari URL โ terintegrasi dengan ekosistem XBPS via libfetch | Docs โ | Link |
xbps-install | Instal, perbarui, dan kelola paket di sistem | Docs โ | Link |
xbps-pkgdb | Periksa dan perbaiki database paket, serta modifikasi atribut paket | Docs โ | Link |
xbps-query | Cari dan tampilkan informasi paket โ lokal maupun dari repositori remote | Docs โ | Link |
xbps-reconfigure | Jalankan ulang skrip konfigurasi paket yang sudah terinstal | Docs โ | Link |
xbps-remove | Hapus paket yang terinstal dari sistem | Docs โ | Link |
xbps-rindex | Kelola repositori paket biner lokal | Docs โ | Link |
xbps-uchroot | Chroot dan bind mount menggunakan Linux namespaces | Docs โ | Link |
xbps-uhelper | Fungsi pembantu untuk mengolah string dan informasi paket XBPS | Docs โ | Link |
xbps-uunshare | Chroot dan bind mount menggunakan Linux user namespaces โ tanpa akses root | Docs โ | Link |
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
| Distro | Tool | Contoh Perintah |
|---|---|---|
| T4n OS / Void | xbps-alternatives | xbps-alternatives -s <paket> -g <group> |
| Debian / Ubuntu | update-alternatives | update-alternatives --config <group> |
| Arch Linux | Tidak ada bawaan | โ |
File Terkait
| Path | Keterangan |
|---|---|
/var/db/xbps/pkgdb-0.38.plist | Database paket tempat alternatives dicatat |
/etc/xbps.d/ | Konfigurasi XBPS kustom |
/usr/share/xbps.d/ | Konfigurasi XBPS default sistem |
Referensi
man xbps-alternatives- xbps-alternatives(1) โ Void Linux manpages
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
| Flag | Keterangan |
|---|---|
-s, --show-all | Tampilkan semua paket dari void-packages beserta versi repo dan source-nya |
-I, --installed | Bandingkan 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, --removed | Tampilkan paket yang ada di repositori tapi sudah dihapus dari void-packages |
-m, --manual | Hanya proses paket yang disebutkan secara eksplisit via FILES argument |
-R, --repository=uri | Tambahkan repositori ke daftar (bisa diulang beberapa kali) |
-r, --rootdir <dir> | Tentukan root directory target |
-i, --ignore-conf-repos | Abaikan repositori dari file konfigurasi, hanya gunakan yang di -R |
--staging | Gunakan staged packages dari repositori remote |
Format Output
Format default: %n %r %s %t %R
| Kode | Keterangan |
|---|---|
%n | Nama paket |
%r | Versi dari repositori atau pkgdb (? jika tidak ditemukan) |
%s | Versi source package (? jika tidak ditemukan) |
%t | Nama template yang diminta (bisa subpaket) |
%R | URL repositori (? jika tidak ditemukan) |
%% | Karakter % literal |
\n | Newline |
\t | Tab |
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
man xbps-checkvers- xbps-checkvers(1) โ Void Linux manpages
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
| Flag | Keterangan |
|---|---|
-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
| Flag | Keterangan |
|---|---|
-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
| Flag | Keterangan |
|---|---|
-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, --preserve | Jika diset, file paket akan dipertahankan setelah update |
Shared Library
| Flag | Keterangan |
|---|---|
--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
| Flag | Keterangan |
|---|---|
--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
| Flag | Keterangan |
|---|---|
--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
destdirharus memiliki permission yang benar karena akan digunakan langsung saat instalasi. xbps-createhanya menerima regular file, symlink, dan direktori. Socket dan FIFO tidak didukung.- Format kompresi default adalah
zstd.
Referensi
man xbps-create- xbps-create(1) โ Void Linux manpages
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)
| Flag | Keterangan |
|---|---|
-f, --fulldeptree | Hasilkan grafik pohon dependensi lengkap dari paket target |
-m, --metadata | Hasilkan grafik metadata dari paket target |
-g, --gen-config | Buat file konfigurasi grafik di direktori saat ini (tidak butuh argumen PKG) |
Opsi
| Flag | Keterangan |
|---|---|
-R, --repository | Cari 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-sync | Ambil data repositori remote langsung ke memori, abaikan cache di disk |
-d, --debug | Tampilkan 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
man xbps-dgraph- xbps-dgraph(1) โ Void Linux manpages
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
| Flag | Keterangan |
|---|---|
-m, --mode <mode> | Algoritma hash yang digunakan. Saat ini hanya mendukung sha256 (default) |
-h, --help | Tampilkan pesan bantuan |
-V, --version | Tampilkan 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-digestmenggantikan fungsixbps-uhelper digestpada versi XBPS lama.
Referensi
man xbps-digest- xbps-digest(1) โ Void Linux manpages
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:
- Dependensi terminal dibangun dan dipaketkan terlebih dahulu.
- Setelah build selesai, dependensi berikutnya yang terpenuhi ditambahkan ke urutan build.
- 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
| Flag | Keterangan |
|---|---|
-j, --jobs <X> | Jumlah build paralel (default: 1) |
-l, --logdir <dir> | Direktori log (default: fbulk-log.<pid>) |
-s, --system | Hanya proses paket yang diinstal secara manual di sistem (lihat xbps-pkgdb) |
-v, --verbose | Tampilkan pesan verbose |
-d, --debug | Tampilkan informasi debug ke stderr |
File Log
Hasil build disimpan di direktori log:
| File | Isi |
|---|---|
logdir/run | Paket yang sedang dibangun |
logdir/good | Paket yang berhasil dibangun |
logdir/bad | Paket yang gagal dibangun |
logdir/skipped | Paket yang dilewati (arsitektur tidak didukung, broken, atau restricted) |
logdir/deps | Paket yang tidak dibangun karena dependensi gagal atau hilang |
Prasyarat
Sebelum menggunakan xbps-fbulk:
- Repositori
void-packagesharus sudah di-clone dan masterdir sudah terisi penuh untuk operasi chroot. - Set konfigurasi di
etc/confdalam repositori void-packages:
XBPS_CHROOT_CMD=uchroot
- User harus memiliki hak untuk menjalankan
xbps-uchroot. - 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.
man xbps-fbulk- xbps-fbulk(1) โ Void Linux manpages
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
| Flag | Keterangan |
|---|---|
-o <output> | Simpan file dengan nama tertentu (rename) |
-s | Tampilkan SHA-256 dari file yang diunduh |
-v | Tampilkan pesan verbose |
-d | Tampilkan 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
| Variabel | Keterangan |
|---|---|
HTTP_PROXY | Proxy URL untuk koneksi HTTP |
FTP_PROXY | Proxy URL untuk koneksi FTP |
SOCKS_PROXY | Proxy URL untuk koneksi SOCKS |
NO_PROXY | Daftar domain yang tidak menggunakan proxy (dipisah koma atau spasi). * menonaktifkan semua proxy |
HTTP_PROXY_AUTH | Kredensial autentikasi ke proxy, format: user:pass |
Autentikasi
| Variabel | Keterangan |
|---|---|
HTTP_AUTH | Kredensial autentikasi ke HTTP server, format: user:pass |
FTP_LOGIN | Username untuk autentikasi FTP |
FTP_PASSWORD | Password untuk autentikasi FTP |
HTTP
| Variabel | Keterangan |
|---|---|
HTTP_USER_AGENT | Override User-Agent header |
HTTP_REFERER | Override Referer header |
FTP_PASSIVE_MODE | Aktifkan passive mode FTP (apa saja selain no) |
SSL/TLS
| Variabel | Keterangan |
|---|---|
SSL_CA_CERT_FILE | Override file CA certificates (default: /etc/ssl/certs/ca-certificates.crt) |
SSL_CA_CERT_PATH | Override path CA certificates (default: /etc/ssl/certs) |
SSL_CLIENT_CERT_FILE | File sertifikat client untuk verifikasi SSL/TLS |
SSL_CLIENT_KEY_FILE | File key client untuk verifikasi SSL/TLS |
SSL_NO_VERIFY_PEER | Nonaktifkan verifikasi SSL/TLS peer |
SSL_NO_VERIFY_HOSTNAME | Nonaktifkan verifikasi hostname SSL/TLS |
Jaringan
| Variabel | Keterangan |
|---|---|
FORCE_IPV4 | Hanya gunakan IPv4 |
FORCE_IPV6 | Hanya gunakan IPv6 |
CONNECTION_TIMEOUT | Timeout 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
man xbps-fetch- xbps-fetch(1) โ Void Linux manpages
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
| Flag | Keterangan |
|---|---|
-S, --sync | Sinkronisasi indeks repositori remote |
-u, --update | Upgrade seluruh sistem โ semua paket (kecuali yang on hold) diperbarui ke versi terbaru |
-f, --force | Paksa instalasi ulang atau downgrade. Jika dua kali (-f -f), config files juga ditimpa |
-n, --dry-run | Tampilkan aksi yang akan dilakukan tanpa mengubah sistem |
-y, --yes | Asumsikan yes untuk sebagian besar pertanyaan. Prompt tetap muncul jika perlu trust signing key baru |
-D, --download-only | Hanya unduh paket ke cache, tidak menginstal |
-U, --unpack-only | Unpack paket tanpa menjalankan fase konfigurasi โ perlu xbps-reconfigure setelahnya |
Repositori
| Flag | Keterangan |
|---|---|
-R, --repository <url> | Tambahkan repositori ke urutan teratas daftar pencarian (bisa diulang beberapa kali) |
-i, --ignore-conf-repos | Abaikan repositori dari file konfigurasi, hanya gunakan yang di -R |
-M, --memory-sync | Ambil data repositori remote ke memori, abaikan cache index di disk |
Lainnya
| Flag | Keterangan |
|---|---|
-A, --automatic | Tandai paket sebagai automatic โ akan dianggap orphan jika tidak ada dependannya |
-I, --ignore-file-conflicts | Abaikan 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 |
--reproducible | Aktifkan reproducible mode โ install-date dan repository tidak disimpan ke pkgdb |
--staging | Aktifkan penggunaan staged packages dari repositori remote |
-v, --verbose | Tampilkan pesan verbose |
-d, --debug | Tampilkan informasi debug ke stderr |
Package Expression
XBPS mendukung tiga cara penulisan nama paket:
| Format | Contoh | Keterangan |
|---|---|---|
| Nama saja | firefox | Versi terbaru yang tersedia |
| Nama + versi eksak | firefox-120.0_1 | Versi spesifik |
| Nama + operator versi | firefox>=120.0 | Operator: <, >, <=, >= |
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
xbpsitu sendiri, jalankan perintah di atas dua kali โ XBPS harus memperbarui dirinya dalam transaksi terpisah.
Update satu paket spesifik:
sudo xbps-install -Su firefox
Flag
-Stetap 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
-Mdigunakan 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:
| Mode | Keterangan |
|---|---|
hold | Tidak diupdate kecuali dipaksa dengan -f. Cek dengan xbps-query -H |
manual | Tidak dianggap orphan oleh xbps-remove -o. Cek dengan xbps-query -m |
repolock | Hanya menerima update dari repositori asal instalasi. Cek dengan xbps-query --list-repolock-pkgs |
Environment Variables
| Variabel | Keterangan |
|---|---|
XBPS_ARCH | Override arsitektur dari uname. Berguna untuk instalasi dengan arsitektur palsu |
XBPS_TARGET_ARCH | Set arsitektur target โ fase konfigurasi dilewati (untuk cross-install) |
XBPS_SYSLOG | Override opsi syslog=true\|false dari xbps.d |
HTTP_PROXY | Proxy untuk koneksi HTTP |
HTTPS_PROXY | Proxy untuk koneksi HTTPS |
NO_PROXY | Domain yang tidak menggunakan proxy |
SSL_NO_VERIFY_PEER | Nonaktifkan verifikasi SSL/TLS peer |
CONNECTION_TIMEOUT | Timeout koneksi dalam milidetik (default: 5 menit). -1 untuk tanpa batas |
Lihat man xbps-install untuk daftar lengkap environment variables.
File Terkait
| Path | Keterangan |
|---|---|
/etc/xbps.d/ | Direktori konfigurasi kustom |
/usr/share/xbps.d/ | Direktori konfigurasi default sistem |
/var/db/xbps/pkgdb-0.38.plist | Database paket terinstal |
/var/db/xbps/keys/ | Direktori trusted signing keys |
/var/cache/xbps/ | Cache paket biner yang diunduh |
Perbandingan dengan Package Manager Lain
| Operasi | APT (Debian) | DNF (Fedora) | Pacman (Arch) | XBPS (T4n OS) |
|---|---|---|---|---|
| Update repo | apt update | dnf check-update | pacman -Sy | xbps-install -S |
| Instal paket | apt install nano | dnf install nano | pacman -S nano | xbps-install -S nano |
| Upgrade sistem | apt upgrade | dnf upgrade | pacman -Su | xbps-install -Su |
| Hapus paket | apt remove nano | dnf remove nano | pacman -R nano | xbps-remove nano |
| Cari paket | apt search nano | dnf search nano | pacman -Ss nano | xbps-query -Rs nano |
Referensi
man xbps-install- xbps-install(1) โ Void Linux manpages
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
| Pemeriksaan | Fungsi |
|---|---|
| METADATA CHECK | Memeriksa apakah file metadata paket telah dimodifikasi dengan membandingkan hash asli saat instalasi dengan yang sekarang. |
| FILES CHECK | Memeriksa semua file milik paket โ apakah ada yang hilang atau dimodifikasi. File biasa dicek via waktu modifikasi dan hash SHA256; symlink dicek targetnya. |
| DEPENDENCIES CHECK | Memeriksa apakah semua dependensi yang dibutuhkan suatu paket terpenuhi. |
| ALTERNATIVES CHECK | Memeriksa apakah semua symbolic link untuk grup xbps-alternatives sudah benar. |
| OBSOLETE METADATA CHECK | Membersihkan data usang dari versi XBPS sebelumnya. |
| FORMAT CONVERSION | Mengupdate format pkgdb ke versi terbaru (flag -u). |
2. Mode Manajemen Status Paket
Gunakan flag -m untuk mengubah status paket:
| Mode | Fungsi |
|---|---|
auto | Tandai paket sebagai automatic (terinstall sebagai dependensi). Akan dianggap orphan dan bisa dihapus oleh xbps-remove -o. |
manual | Tandai paket sebagai manual (diinstall eksplisit). Tidak akan dihapus sebagai orphan. |
hold | Cegah paket dari update saat upgrade sistem. Berguna untuk mempertahankan versi tertentu. |
unhold | Hapus status hold. |
repolock | Kunci paket agar hanya menerima update dari repositori asal instalasi. Berguna untuk paket yang di-build sendiri. |
repounlock | Hapus status repolock. |
Opsi
| Flag | Keterangan |
|---|---|
-a, --all | Proses semua paket terlepas dari statusnya |
-m, --mode <mode> | Ubah mode paket (auto, manual, hold, unhold, repolock, repounlock) |
-u, --update | Update 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, --verbose | Tampilkan informasi lebih detail |
-d, --debug | Tampilkan 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
| Path | Keterangan |
|---|---|
/var/db/xbps/pkgdb-0.38.plist | Database utama paket โ mencatat semua paket terinstall |
/var/db/xbps/.<pkgname>-files.plist | Metadata file per paket |
/var/cache/xbps/ | Cache paket biner |
Catatan Penting
- Perubahan mode paket langsung mempengaruhi perilaku
xbps-installdanxbps-remove. - Flag
-m manualdan-m autoadalah satu-satunya cara resmi mengubah status orphan suatu paket. - Beberapa operasi memerlukan akses root (
sudo). - Untuk
repolockyang efektif pada paket custom, pastikan repositori lokal tidak disinkronisasi ke repositori upstream.
Referensi
man xbps-pkgdb- xbps-pkgdb(1) โ Void Linux manpages
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
| Fungsi | Penjelasan |
|---|---|
| Mencari paket | Cari paket berdasarkan nama atau deskripsi di repositori |
| Melihat informasi paket | Tampilkan detail versi, lisensi, maintainer, dependensi |
| Daftar paket terinstall | Tampilkan semua paket yang ada di sistem |
| Mencari pemilik file | Tentukan paket mana yang memiliki suatu file |
| Memeriksa status paket | Lihat 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.
| Flag | Fungsi |
|---|---|
-l, --list-pkgs | Tampilkan semua paket terinstall beserta statusnya |
-L, --list-repos | Tampilkan 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-orphans | Tampilkan paket yang terinstall sebagai dependensi tapi tidak dibutuhkan lagi |
-m, --list-manual-pkgs | Tampilkan paket yang diinstall secara manual |
-H, --list-hold-pkgs | Tampilkan paket yang dikunci agar tidak diupdate |
--list-repolock-pkgs | Tampilkan paket yang terkunci ke repositori tertentu |
-p, --property <prop,...> | Tampilkan hanya properti tertentu dari informasi paket |
--regex | Gunakan regular expression pada pencarian |
-R, --repository | Operasikan pada repositori remote, bukan database lokal |
-R vs Tanpa -R
Tanpa -R (default) | Dengan -R |
|---|---|
| Membaca dari database lokal | Fetch dari repositori remote |
| Tidak perlu koneksi internet | Perlu koneksi internet (atau index ter-sync) |
| Hanya paket yang sudah terinstall | Semua 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:
| Status | Keterangan |
|---|---|
ii | Terinstall (installed ok) |
uu | Unpacked, belum dikonfigurasi |
hr | Half-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:
| Format | Contoh | Keterangan |
|---|---|---|
| Nama saja | firefox | Versi terbaru yang tersedia |
| Nama + versi eksak | firefox-120.0_1 | Versi spesifik |
| Nama + operator versi | firefox>=120.0 | Operator: <, >, <=, >= |
Perbandingan dengan Package Manager Lain
| Fungsi | XBPS (Void) | APT (Debian) | Pacman (Arch) |
|---|---|---|---|
| Cari paket | xbps-query -Rs | apt search | pacman -Ss |
| Info dari repo | xbps-query -RS | apt show | pacman -Si |
| Info terinstall | xbps-query -S | apt show | pacman -Qi |
| File milik paket | xbps-query -f | dpkg -L | pacman -Ql |
| Pemilik file | xbps-query -o | dpkg -S | pacman -Qo |
| Dependensi | xbps-query -x | apt depends | pacman -Qi |
| Orphans | xbps-query -O | deborphan | pacman -Qdt |
Catatan Penting
xbps-querytidak memerlukan root โ hanya membaca database, tidak mengubah sistem.- Sebelum menggunakan mode
-R, pastikan indeks repo sudah ter-sync viaxbps-install -S. - Pencarian nama paket bersifat case-sensitive.
Referensi
man xbps-query- xbps-query(1) โ Void Linux manpages
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:
| Langkah | Deskripsi |
|---|---|
| 1 | Eksekusi aksi post pada skrip INSTALL paket. Isi skrip bisa dilihat dengan xbps-query --property=install-script <paket> |
| 2 | Update 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
| Flag | Keterangan |
|---|---|
-a, --all | Konfigurasi semua paket terinstall |
-f, --force | Paksa konfigurasi ulang meskipun paket sudah dikonfigurasi sebelumnya |
-x, --deps | Konfigurasi paket beserta dependensi langsungnya |
--fulldeptree | Konfigurasi 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, --verbose | Tampilkan output lebih detail |
-d, --debug | Tampilkan informasi debug ke stderr |
Kapan Digunakan
| Skenario | Contoh |
|---|---|
| Paket dengan konfigurasi bermasalah | Instalasi terputus di tengah jalan |
| Bangun ulang initramfs | Setelah install atau update kernel |
| Bangun ulang modul DKMS | Setelah install kernel baru atau linux-headers |
| Terapkan ulang perubahan font | Setelah menambah atau mengubah konfigurasi font |
| Recovery sistem | Konfigurasi 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
| Aspek | xbps-install | xbps-reconfigure |
|---|---|---|
| Fungsi utama | Install/update paket | Jalankan ulang skrip konfigurasi paket |
| Mengubah file paket | Ya (download, ekstrak) | Tidak (hanya eksekusi skrip) |
| Konfigurasi | Hanya saat instalasi pertama | Bisa dijalankan kapan saja |
| Bangun initramfs | Tidak otomatis | Ya (untuk paket kernel) |
| Perlu download | Ya | Tidak |
Catatan Penting
- Sebagian besar operasi memerlukan
sudokarena menyentuh file sistem. - Tanpa
-f, paket yang sudah berstatusINSTALLEDtidak akan diproses ulang. - Beberapa skrip INSTALL bisa menimpa perubahan konfigurasi manual โ perhatikan ini sebelum menjalankan
-fpada paket yang konfigurasinya sudah dikustomisasi. - Membangun initramfs memakan waktu dan memerlukan ruang di
/boot.
Referensi
man xbps-reconfigure- xbps-reconfigure(1) โ Void Linux manpages
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
| Flag | Keterangan |
|---|---|
-R, --recursive | Hapus paket beserta dependensinya yang tidak dibutuhkan paket lain |
-f, --force | Paksa penghapusan meskipun ada paket lain yang bergantung โ berbahaya, bisa merusak sistem |
-n, --dry-run | Tampilkan aksi yang akan dilakukan tanpa mengubah sistem |
-y, --yes | Asumsikan yes untuk semua pertanyaan interaktif |
-v, --verbose | Tampilkan informasi lebih detail |
-d, --debug | Tampilkan informasi debug ke stderr |
Pembersihan
| Flag | Keterangan |
|---|---|
-O, --remove-orphans | Hapus package orphans โ paket yang terinstall sebagai dependensi tapi tidak dibutuhkan lagi |
-o, --remove-obsoletes | Hapus paket yang sudah tidak tersedia di repositori manapun |
-C, --remove-cache | Bersihkan cache paket biner di /var/cache/xbps/ |
Lainnya
| Flag | Keterangan |
|---|---|
-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=falseyang valid di xbps-remove. Untuk menghapus file konfigurasi, lakukan manual setelah paket dihapus.
-R vs Tanpa -R
Tanpa -R | Dengan -R |
|---|---|
| Hanya hapus paket yang disebutkan | Hapus paket + dependensi yang tidak dibutuhkan lagi |
| Dependensi tetap terinstall | Dependensi 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
| Fungsi | XBPS (T4n OS) | APT (Debian) | Pacman (Arch) | DNF (Fedora) |
|---|---|---|---|---|
| Hapus paket | xbps-remove nano | apt remove nano | pacman -R nano | dnf remove nano |
| Hapus + dependensi | xbps-remove -R nano | apt autoremove nano | pacman -Rs nano | dnf autoremove |
| Hapus orphans | xbps-remove -O | apt autoremove | pacman -Rns $(pacman -Qdtq) | dnf autoremove |
| Hapus cache | xbps-remove -C | apt clean | pacman -Sc | dnf clean all |
Catatan Penting
- Semua operasi penghapusan memerlukan
sudo. - Jangan gunakan
-fkecuali benar-benar paham dampaknya โ bisa merusak sistem. - Orphans yang muncul di
xbps-query -Oaman dihapus karena tidak dibutuhkan paket lain.
Referensi
man xbps-remove- xbps-remove(1) โ Void Linux manpages
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
| Fungsi | Penjelasan |
|---|---|
| Tambah paket ke repositori | Daftarkan file .xbps ke dalam indeks repositori lokal |
| Bersihkan indeks | Hapus entri usang dari repodata tanpa menghapus file .xbps-nya |
| Hapus paket usang | Hapus file .xbps yang tidak terdaftar di indeks |
| Tandatangani repositori | Tambahkan metadata tanda tangan RSA untuk distribusi remote |
| Tandatangani paket | Tandatangani file .xbps secara individual |
Mode Operasi
| Flag | Fungsi |
|---|---|
-a, --add | Tambahkan paket ke indeks. Paket hanya ditambahkan jika versinya lebih baru; gunakan -f untuk paksa menimpa |
-c, --clean | Bersihkan entri usang dari repodata (tidak menghapus file .xbps) |
-r, --remove-obsoletes | Hapus file .xbps yang sudah tidak terdaftar di indeks |
--sign | Inisialisasi repositori dengan metadata tanda tangan RSA |
--sign-pkg | Tandatangani file .xbps secara individual |
Opsi
| Flag | Keterangan |
|---|---|
-f, --force | Paksa timpa entri yang sudah ada saat menambahkan paket |
-C, --hashcheck | Saat -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:
| File | Deskripsi |
|---|---|
repodata | File indeks utama berisi metadata semua paket (format plist biner) |
repodata.old | Backup repodata sebelumnya |
*.xbps | File paket biner |
*.xbps.sig2 | File tanda tangan per paket (jika repositori ditandatangani) |
Format file tanda tangan yang digunakan adalah
.sig2, bukan.sig. Format.sigsudah deprecated di XBPS versi modern.
Signed vs Unsigned
| Aspek | Unsigned | Signed |
|---|---|---|
| Keamanan | Tidak ada verifikasi keaslian | Terverifikasi secara kriptografis |
| Penggunaan | Repositori lokal, testing, development | Repositori remote atau produksi |
| Persyaratan | Tidak perlu kunci | Kunci RSA dalam format PEM |
| Perilaku XBPS | Prompt konfirmasi trust key saat pertama | Diverifikasi otomatis setelah key di-trust |
Void Linux mengharuskan repositori remote untuk ditandatangani. Repositori lokal tidak wajib ditandatangani.
Hubungan dengan Tools XBPS Lain
| Command | Peran |
|---|---|
xbps-src | Build paket dari source menggunakan void-packages |
xbps-create | Buat file .xbps dari direktori file |
xbps-rindex | Daftarkan .xbps ke repositori (buat repodata) |
xbps-install -R <repo> | Install paket dari repositori tertentu |
xbps-query -L | Tampilkan daftar repositori aktif |
Catatan Penting
xbps-rindextidak 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-pkguntuk menandatangani paket baru. xbps-rindex -amelakukan pengecekan konsistensi shared library saat paket ditambahkan.- Distribusikan file
private.pem.pubke pengguna agar mereka dapat memverifikasi tanda tangan repositori.
Referensi
man xbps-rindex- xbps-rindex(1) โ Void Linux manpages
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
| Fungsi | Penjelasan |
|---|---|
| Chroot ke direktori target | Berpindah ke lingkungan root yang terisolasi |
| Bind mount pseudo-filesystem | Auto-mount /dev, /dev/shm, /proc, dan /sys ke dalam chroot |
| Bind mount direktori kustom | Pasang direktori dari host ke dalam chroot (opsional) |
| Isolasi via namespaces | Pisahkan IPC, PID, dan mount points dari proses pemanggil |
Penggunaan
xbps-uchroot [OPSI] CHROOTDIR [CMD] [ARGS]
Opsi
| Flag | Keterangan |
|---|---|
-b src:dest | Bind mount src ke CHROOTDIR/dest (read-write) |
-B src:dest | Bind mount src ke CHROOTDIR/dest (read-only) |
-O | Buat overlay layer sementara โ perubahan tidak disimpan ke CHROOTDIR (butuh overlayfs) |
-t | Mount temporary dir di tmpfs (RAM) โ hanya berguna bersama -O |
-o opts | Argumen 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
| Persyaratan | Penjelasan |
|---|---|
| setuid/setgid | Binary harus memiliki bit setuid untuk berfungsi |
| Group khusus | Hanya anggota grup xbuilder yang dapat menjalankannya |
| Izin file | chmod 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
spada posisi owner), bukan setgid. Ini yang memberikan eskalasi privilege sementara saat dieksekusi.
Prasyarat Kernel
| Opsi Kernel | Fungsi |
|---|---|
CONFIG_NAMESPACES | Dukungan namespace secara umum |
CONFIG_IPC_NS | Isolasi IPC (Inter-Process Communication) |
CONFIG_PID_NS | Isolasi process ID |
CONFIG_UTS_NS | Isolasi hostname/domainname |
CONFIG_OVERLAY_FS | Diperlukan untuk opsi -O (overlay) |
Kernel Void Linux default sudah mengaktifkan semua opsi ini.
Perbandingan Backend Chroot di xbps-src
| Utility | Mekanisme | Default | Catatan |
|---|---|---|---|
xbps-uunshare | User namespaces | Ya | Tidak perlu setuid, lebih aman untuk user biasa |
xbps-uchroot | Namespaces + setuid | Tidak | Perlu grup xbuilder, performa lebih baik |
proot | User-space ptrace | Tidak | Tidak 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-uchroottidak perlu dijalankan langsung โxbps-srcyang memanggilnya. xbps-uunshareadalah pilihan default yang lebih aman jika tidak ingin setup grupxbuilder.- Opsi
-Omembutuhkan kernel denganCONFIG_OVERLAY_FSaktif.
Referensi
man xbps-uchroot- xbps-uchroot(1) โ Void Linux manpages
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
| Action | Argumen | Output |
|---|---|---|
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
| Action | Argumen | Output |
|---|---|---|
getpkgdepname | <dep...> | Nama paket dari pola dependensi |
getpkgdepversion | <dep...> | Constraint versi dari pola dependensi |
Perbandingan dan Pencocokan
| Action | Argumen | Output |
|---|---|---|
cmpver | <instver> <reqver> | Bandingkan dua string versi โ lihat exit codes di bawah |
pkgmatch | <pkgver> <pkgpattern> | Cek apakah pkgver cocok dengan pola |
Informasi Paket Terinstall
| Action | Argumen | Output |
|---|---|---|
version | <pkgname...> | Versi paket yang terinstall |
real-version | <pkgname...> | Versi "real" (relevan untuk virtual/metapackage) |
Informasi Sistem
| Action | Argumen | Output |
|---|---|---|
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
| Flag | Keterangan |
|---|---|
-C, --config <dir> | Tentukan direktori konfigurasi XBPS |
-r, --rootdir <dir> | Tentukan direktori root target |
-v, --verbose | Tampilkan hasil perbandingan ke stdout (untuk cmpver dan pkgmatch) |
-d, --debug | Tampilkan informasi debug ke stderr |
-V, --version | Tampilkan 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 Code | Arti |
|---|---|
0 | instver == reqver |
1 | instver < reqver |
255 | instver > 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 Code | Arti |
|---|---|
1 | Match |
0 | Tidak match |
255 | Error |
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 Lama | Ganti Dengan |
|---|---|
xbps-uhelper digest <file> | xbps-digest |
xbps-uhelper fetch <url> | xbps-fetch |
Catatan Penting
- Semua operasi bersifat case-sensitive.
- Exit codes
cmpverdanpkgmatchberbeda dari konvensi Unix standar โ1bukan berarti error, tapi memiliki arti semantik sendiri. Perhatikan ini saat scripting. - Gunakan flag
-vuntuk mendapatkan output teks daricmpverdanpkgmatch, bukan hanya exit code.
Referensi
man xbps-uhelper- xbps-uhelper(1) โ Void Linux manpages
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
| Fungsi | Penjelasan |
|---|---|
| Chroot ke direktori target | Berpindah ke lingkungan root yang terisolasi |
| Mount pseudo-filesystem | Auto-mount /dev, /proc, dan /sys ke dalam chroot |
| Bind mount direktori kustom | Pasang direktori dari host ke dalam chroot via -b |
| Isolasi via user namespaces | Pisahkan IPC, PID, dan mount points tanpa hak istimewa |
Penggunaan
xbps-uunshare [OPSI] CHROOTDIR [CMD] [ARGS]
Opsi
| Flag | Keterangan |
|---|---|
-b src:dest | Bind 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 Kernel | Fungsi |
|---|---|
CONFIG_NAMESPACES | Dukungan namespace secara umum |
CONFIG_IPC_NS | Isolasi IPC (Inter-Process Communication) |
CONFIG_UTS_NS | Isolasi hostname/domainname |
CONFIG_USER_NS | User 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
| Aspek | xbps-uunshare | xbps-uchroot |
|---|---|---|
| Hak akses | Tidak perlu root | Perlu grup xbuilder dan bit setuid |
| Kernel requirement | CONFIG_USER_NS | CONFIG_PID_NS, CONFIG_IPC_NS |
| Default di xbps-src | Ya | Tidak |
Overlay (-O) | Tidak didukung | Didukung (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-uunsharetidak mendukung flag-O(overlay) โ untuk itu gunakanxbps-uchroot.- Untuk penggunaan sehari-hari,
xbps-uunsharetidak perlu dijalankan langsung โxbps-srcyang memanggilnya. /dev/shmtidak di-mount otomatis olehxbps-uunshare, berbeda denganxbps-uchroot.
Referensi
man xbps-uunshare- xbps-uunshare(1) โ Void Linux manpages
Repository
Repositori adalah inti dari sistem paket XBPS. Repositori dapat bersifat lokal (di mesin sendiri) atau remote (di server internet).
Sebuah repositori berisi:
| Komponen | Penjelasan |
|---|---|
File paket (.xbps) | File paket yang sudah dikompilasi dan siap diinstall |
Tanda tangan (.sig2) | File signature untuk memverifikasi keaslian paket |
| File repodata | File $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 & Libc | Path |
|---|---|
| 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:
| Subrepositori | Isi | Paket Aktivasi |
|---|---|---|
nonfree | Paket dengan lisensi non-free | void-repo-nonfree |
multilib | Library 32-bit untuk sistem x86_64 glibc | void-repo-multilib |
multilib/nonfree | Paket 32-bit dengan lisensi non-free | void-repo-multilib-nonfree |
debug | Simbol debugging untuk paket | void-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
-Sagar indeks disinkronkan setelah repositori baru ditambahkan.
nonfree
Berisi paket dengan lisensi tidak bebas. Alasan umum suatu paket masuk ke nonfree:
| Alasan | Contoh |
|---|---|
| Lisensi proprietary meski source tersedia | Beberapa tool komersial |
| Dirilis hanya sebagai biner tanpa source | Driver NVIDIA, beberapa firmware |
| Mengandung teknologi berpaten | Beberapa 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
-dbgbiasanya berukuran beberapa kali lipat dari paket aslinya. Hapus setelah selesai:sudo xbps-remove -R bash-dbg.
Konfigurasi Repositori
| Lokasi | Keterangan |
|---|---|
/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
.confdari/usr/share/xbps.d/, tapi ini akan dikembalikan saat paketvoid-repo-*diupdate.
Catatan Penting
- Repositori
multilibtidak 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.sigsudah deprecated di XBPS versi modern.
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:
| Tipe | Format | Contoh |
|---|---|---|
| Direktori lokal | /absolute/path atau file:///absolute/path | repository=/home/user/myrepo |
| HTTP/HTTPS | http:// atau https:// | repository=https://mirror.example.com/repo |
| FTP | ftp:// | 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:
| File | Prioritas |
|---|---|
00-local.conf | Tertinggi |
10-custom.conf | Sedang |
20-void-repo.conf | Rendah |
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.pemadalah kunci privat โ jangan disebarkan.private.pem.pubadalah 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
| Risiko | Penjelasan |
|---|---|
| Malware | Repositori tidak resmi bisa menyisipkan kode berbahaya |
| Konflik dependensi | Paket dari sumber berbeda mungkin tidak kompatibel satu sama lain |
| Ketidakstabilan sistem | Paket yang tidak teruji bisa merusak sistem |
| Tidak ada dukungan | Jika 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.
Signing Repository
| Jenis Repositori | Wajib 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
-des3pada 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 -aharus dijalankan sebelum--signagar 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
| Tugas | Perintah |
|---|---|
| Generate kunci | ssh-keygen -t rsa -b 4096 -m PEM -f private.pem |
| Buat indeks repositori | xbps-rindex -a /path/to/repo/*.xbps |
| Inisialisasi signature repo | xbps-rindex --privkey private.pem --sign --signedby "Nama" /path/to/repo |
| Tandatangani paket | xbps-rindex --privkey private.pem --sign-pkg /path/to/repo/*.xbps |
| Tandatangani paket baru | xbps-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.
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:
| Alasan | Penjelasan |
|---|---|
| Ukuran besar | Terlalu besar untuk didistribusikan melalui repositori utama |
| Lisensi restriktif | Melarang redistribusi biner atau source oleh pihak ketiga |
| Kebijakan upstream | Pembuat software tidak mengizinkan distribusi ulang |
| Kebijakan Void | Void 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 Daya | URL |
|---|---|
| Repositori VUR | https://github.com/T4n-Labs/vur |
| Website VUR | https://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 Daya | URL |
|---|---|
| Repositori Let-X | https://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
| Perintah | Fungsi |
|---|---|
letx search | Cari paket di VUR berdasarkan nama atau deskripsi |
letx info | Tampilkan detail paket dan status lokal |
letx list | Lihat daftar paket per kategori |
letx get | Unduh template paket ke lokal |
letx update | Perbarui cache index VUR |
letx -x <xbps-src> | Menggunakan Fungsi xbps-src pada Let-X |
Perbandingan Metode
| Metode | Kelebihan | Kekurangan | Cocok untuk |
|---|---|---|---|
| Build manual via xbps-src | Kontrol penuh, stabil | Perlu setup void-packages, lebih ribet | Developer, maintainer |
| VUR + Let-X | Mudah, lebih banyak pilihan paket | Tidak resmi, perlu review template | Power user, daily driver |
Keamanan
- Selalu review file
templatedanpatches/sebelum build paket dari VUR. - Cek field
maintainerdi 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.
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.
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
| Mirror | Lokasi | URL |
|---|---|---|
| labkom.id | Indonesia | https://mirror.labkom.id/voidlinux |
| repo-fastly | CDN Global | https://repo-fastly.voidlinux.org |
| koddos.net | Asia (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 paketvoid-repo-*diupdate. - Jika repositori tambahan (
nonfree,multilib,debug) diaktifkan setelah mengganti mirror, jalankan ulang perintahseddi atas agar URL-nya juga ikut diperbarui. - Selalu jalankan
sudo xbps-install -Ssetelah mengganti mirror.
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
| Mirror | Lokasi | URL |
|---|---|---|
| Lysator | EU: Swedia | http://lysator7eknrfl47rlyxvgeamrv7ucefgrrlhk7rouv3sna25asetwid.onion/pub/voidlinux/ |
| Dotsrc | EU: Denmark | http://dotsrccccbidkzg7oc7oj4ugxrlfbt64qebyunxbrgqhxiwj3nl6vcad.onion/ |
Gunakan
http://(bukanhttps://) 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
-Epadasudodiperlukan agar variabel environmentSOCKS_PROXYikut 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_PROXYselalu di-set saat menggunakan mirror.onion.
Referensi
man xbps-install(bagian environment variables:SOCKS_PROXY)
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:
| Subcommand | Fungsi |
|---|---|
binary-bootstrap | Setup masterdir dari biner (sekali saja) |
bootstrap-update | Update masterdir ke versi terbaru |
pkg <nama> | Build paket |
clean <nama> | Bersihkan build directory paket |
cleanall | Bersihkan seluruh masterdir |
install <nama> | Build dan install paket ke masterdir |
remove <nama> | Hapus paket dari masterdir |
list | Tampilkan 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 |
chroot | Masuk 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:
| Backend | Default | Keterangan |
|---|---|---|
xbps-uunshare | Ya | Tidak perlu root, menggunakan user namespaces |
xbps-uchroot | Tidak | Perlu grup xbuilder, performa lebih baik |
proot | Tidak | Tidak 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:
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.
| Info | Detail |
|---|---|
| Binary | letx |
| Versi | 0.1.2 |
| Bahasa | Python 3.11+ |
| Repo | https://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]
| Subcommand | Fungsi |
|---|---|
search | Cari paket di VUR berdasarkan nama atau deskripsi |
info | Tampilkan detail paket dan status lokal |
list | Tampilkan daftar paket per kategori |
get | Unduh template paket ke lokal |
update | Perbarui 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
templatedanpatches/sebelum build. - Membutuhkan
void-packagesyang sudah di-bootstrap untuk build paket.
Dokumentasi Lengkap
| Dokumen | URL |
|---|---|
| Home | https://github.com/T4n-Labs/Let-X/blob/main/vdocs/docs.md |
| Panduan User ID | https://github.com/T4n-Labs/Let-X/blob/main/vdocs/ID/user.md |
| Panduan Dev ID | https://github.com/T4n-Labs/Let-X/blob/main/vdocs/ID/dev.md |
| Panduan User EN | https://github.com/T4n-Labs/Let-X/blob/main/vdocs/EN/user.md |
| Panduan Dev EN | https://github.com/T4n-Labs/Let-X/blob/main/vdocs/EN/dev.md |
VUR โ Void User Repository
Dokumentasi resmi VUR (Void User Repository) untuk T4n OS.
Daftar Isi
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
| Aspek | Repositori Resmi | VUR |
|---|---|---|
| Pengelola | Tim Void Linux | Komunitas |
| Format | Paket biner siap install | Template build (source-based) |
| Status | Stabil dan terverifikasi | Bisa eksperimental |
| Kontribusi | Terbatas pada maintainer resmi | Terbuka 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.
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.
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
| Kategori | Isi |
|---|---|
core | Paket inti โ stabil dan umum digunakan |
extra | Paket tambahan โ bisa bersifat eksperimental |
multilib | Paket 32-bit untuk sistem x86_64 glibc |
File Index
| File | Fungsi |
|---|---|
index.json | Indeks semua paket yang tersedia di VUR |
packages.json | Metadata lengkap setiap paket |
categories.json | Daftar kategori yang tersedia |
search.json | Data yang digunakan Let-X untuk pencarian |
vtools
| Script | Fungsi |
|---|---|
generate.sh | Generate ulang file metadata index |
scan.sh | Scan paket di seluruh direktori kategori |
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:
| Cara | URL / Link |
|---|---|
| Website | https://t4n-labs.github.io/vur-web |
| Repositori | https://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:
| Menu | Fungsi |
|---|---|
| Home | Kembali ke halaman utama dan statistik |
| Package | Langsung ke bagian Package Index |
| GitHub | Buka repositori VUR di GitHub |
Mencari Paket
Via Search
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
godotuntuk mencari game engine Godot - Ketik
lib32untuk melihat paket-paket multilib
Via Filter Kategori
Di atas tabel Package Index, tersedia tombol filter kategori:
| Filter | Isi |
|---|---|
| All | Tampilkan semua paket dari semua kategori |
| Core | Paket inti โ stabil dan umum digunakan |
| Extra | Paket tambahan โ bisa bersifat eksperimental |
| Multilib | Paket 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:
| Kolom | Keterangan |
|---|---|
| Name | Nama paket |
| Version | Versi paket yang tersedia di VUR |
| Category | Kategori (core, extra, multilib) |
| Description | Deskripsi 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 denganxbps-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/vurdi 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
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
| Risiko | Penjelasan |
|---|---|
| Template tidak teraudit | Paket VUR tidak melalui proses review seketat repositori resmi Void |
| Kode berbahaya | Template atau patch bisa saja menyisipkan kode yang tidak diinginkan |
| Konflik dependensi | Paket dari VUR mungkin tidak kompatibel dengan paket dari repositori resmi |
| Paket usang | Template mungkin tidak diperbarui seiring update upstream |
| Tidak ada dukungan resmi | Jika 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 dimaksuddistfilesโ URL source yang diunduh, pastikan dari domain resmi upstreamchecksumโ hash SHA256 untuk verifikasi integritas sourcemaintainerโ identitas pengelola template; lebih baik dari sumber yang dikenaldo_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
maintainerdi 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
checksumdi 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:
- Buka halaman Issues di repositori VUR: https://github.com/T4n-Labs/vur/issues
- Deskripsikan masalah dengan jelas โ sertakan nama paket, versi, dan bagian template yang bermasalah.
Referensi
Maintainer VUR โ Void User Repository
Dokumentasi resmi VUR (Void User Repository) untuk Maintainer.
Daftar Isi
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:
gitterinstallxbps-srcsudah 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:
| Kategori | Kriteria |
|---|---|
core | Paket stabil, umum digunakan, dependensi minimal |
extra | Paket tambahan, bisa eksperimental, niche, atau dependensi besar |
multilib | Paket 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:
| Aksi | Format 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:
- Update
versionditemplate - Update
revisionkembali ke1 - Update
distfilesjika URL berubah - Update
checksumsesuai file source baru - Test build ulang secara lokal
- Jalankan
vtools/scan.shdanvtools/generate.sh - 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:
- Hapus direktori paket dari kategori
- Jalankan
vtools/scan.shdanvtools/generate.sh - Commit dengan pesan
<kategori>/<nama>: remove (<alasan>) - Buat PR dengan penjelasan alasan penghapusan
Standar Template VUR
| Hal | Standar |
|---|---|
pkgname | Huruf kecil, pisah kata dengan tanda - |
maintainer | Format Nama <email> yang valid dan aktif |
license | Sesuai lisensi upstream โ jangan asal tulis MIT |
checksum | Wajib diisi, tidak boleh kosong atau placeholder |
distfiles | URL langsung ke source resmi upstream |
short_desc | Maksimal 72 karakter, tidak diawali huruf kapital |
| Direktori paket | Nama 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
checksumkosong atau placeholder. - Template yang terbukti berbahaya akan di-remove dan kontributor bisa diblokir dari repositori.
- Maintainer bertanggung jawab memperbarui templatenya seiring update upstream.
Referensi
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
| Field | Keterangan |
|---|---|
pkgname | Nama paket โ huruf kecil, pisah kata dengan -, sama dengan nama direktori |
version | Versi upstream tanpa suffix |
revision | Revisi template, mulai dari 1, reset ke 1 setiap update version |
short_desc | Deskripsi singkat, maksimal 72 karakter, tidak diawali huruf kapital |
maintainer | Format Nama <email> yang valid |
license | Lisensi SPDX upstream (contoh: MIT, GPL-2.0-only, Apache-2.0) |
homepage | URL halaman resmi upstream |
distfiles | URL direct download source โ gunakan ${version} bukan hardcode versi |
checksum | SHA256 hash dari file distfiles โ wajib diisi, tidak boleh kosong |
Field Dependensi
| Field | Keterangan |
|---|---|
hostmakedepends | Tool yang dibutuhkan di host saat build (contoh: cmake, meson, go) |
makedepends | Library header yang dibutuhkan saat kompilasi (contoh: libfoo-devel) |
depends | Paket runtime yang dibutuhkan saat paket dijalankan |
checkdepends | Dependensi 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 Style | Digunakan untuk |
|---|---|
cmake | Proyek yang menggunakan CMake |
meson | Proyek yang menggunakan Meson + Ninja |
gnu-configure | Proyek dengan ./configure (autotools) |
gnu-makefile | Proyek dengan Makefile GNU standar |
go | Proyek Go |
cargo | Proyek Rust (Cargo) |
python3-module | Modul Python 3 dengan setup.py |
python3-pep517 | Modul Python 3 dengan pyproject.toml |
perl-module | Modul Perl (ExtUtils::MakeMaker) |
perl-ModuleBuild | Modul Perl (Module::Build) |
qmake | Proyek Qt (qmake) |
gem | Ruby gem |
gemspec | Ruby gem via gemspec |
cabal | Proyek Haskell (Cabal) |
haskell-stack | Proyek Haskell (Stack) |
r-cran | Paket R dari CRAN |
raku-dist | Distribusi Raku |
fetch | Hanya unduh file tanpa build (untuk biner prebuilt) |
Dokumentasi per build style tersedia di: vdokumentasi/build-style/
Variabel Penting dalam do_build / do_install
| Variabel | Nilai | Keterangan |
|---|---|---|
$DESTDIR | Path install sementara di dalam masterdir | Semua file harus diinstall ke sini |
$makejobs | -jN sesuai setting XBPS_MAKEJOBS | Gunakan ini di make untuk build paralel |
$wrksrc | Direktori source yang sudah diekstrak | Working directory saat build berlangsung |
$CFLAGS | Flag compiler C dari environment | Jangan hardcode, gunakan variabel ini |
$CXXFLAGS | Flag compiler C++ dari environment | |
$LDFLAGS | Flag linker dari environment | |
$pkgname | Nama paket dari field pkgname | Bisa digunakan di dalam fungsi |
$version | Versi dari field version |
Fungsi Hook Opsional
Selain do_build() dan do_install(), ada fungsi hook yang bisa digunakan:
| Fungsi | Dipanggil 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
pkgnamesama dengan nama direktoridistfilesmenggunakan${version}, bukan hardcodechecksumsudah diisi dengan hash yang benarmaintainermenggunakan formatNama <email>short_desctidak lebih dari 72 karakterlicensesesuai lisensi upstream yang sebenarnya- Build lokal berhasil tanpa error
revisiondimulai dari1