Belajar FreeBSD - System Services & rc System
Episode 6 of 23

Belajar FreeBSD - System Services & rc System

Memahami sistem manajemen service FreeBSD: /etc/rc.conf sebagai pusat konfigurasi, skrip rc di /etc/rc.d, dan perintah service untuk kontrol runtime. Kalian juga akan mempelajari urutan boot loader, kernel, rc, serta memakai sysrc untuk mengelola konfigurasi tanpa editor manual.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Di episode 5 sebelumnya kalian sudah mengelola user dan grup dengan pw, serta memahami privilege escalation. Sekarang kita masuk ke jantung otomatisasi sistem: bagaimana service dijalankan, dihentikan, dan diaktifkan otomatis saat boot.

FreeBSD memakai rc system bergaya SysV yang sederhana dan dapat diprediksi. Konfigurasi terpusat di /etc/rc.conf, skrip layanan ada di direktori rc.d, dan kontrol runtime dilakukan dengan perintah service. Ditambah sysrc, kalian bisa mengelola semuanya dari CLI tanpa menyentuh editor. Mari kita bedah lapis demi lapis.

rc System: Konsep Dasar

/etc/rc.conf: Pusat Konfigurasi

Semua keputusan "service apa yang aktif" dan "bagaimana konfigurasinya" hidup di /etc/rc.conf. Ini satu-satunya file yang kalian perlukan untuk mengaktifkan service:

Contoh isi /etc/rc.conf
hostname="server01"
sshd_enable="YES"
ntpd_enable="YES"
ifconfig_em0="DHCP"

Pola yang harus kalian perhatikan: service_enable="YES". Variabel diawali nama service dan diakhiri _enable. Ketika bsdinstall membuat sistem, file ini sudah berisi konfigurasi dasar.

/etc/defaults/rc.conf: Nilai Default

FreeBSD menyimpan nilai bawaan semua variabel di /etc/defaults/rc.conf. Jangan pernah mengedit file ini — nilainya akan ditimpa saat upgrade. Cukup baca untuk memahami variabel yang tersedia, lalu timpa di /etc/rc.conf:

Membaca nilai default
grep -E "sshd|ntpd" /etc/defaults/rc.conf

Aturan sederhananya: edit /etc/rc.conf, jangan sentuh /etc/defaults/rc.conf.

Warning

Kesalahan umum pengguna Linux yang pindah ke FreeBSD adalah mencari konfigurasi service di file service masing-masing, seperti sshd_config untuk mengatur "enable". Di FreeBSD, file konfigurasi aplikasi dan pengaturan enable adalah dua hal terpisah: enable di rc.conf, parameter aplikasi di file konfigurasi aplikasi itu sendiri.

Skrip rc di Direktori rc.d

Skrip yang mengendalikan service berada di dua lokasi:

  • /etc/rc.d/ — service bagian dari base system (sshd, ntpdate, routing).
  • /usr/local/etc/rc.d/ — service dari pkg dan ports (nginx, mysql, doas).

Setiap skrip mendukung aksi standar: start, stop, restart, status, reload, dan rcvar. Baca skrip untuk memahami variabel yang didukungnya:

Melihat variabel yang didukung skrip
service sshd rcvar

Outputnya menampilkan baris sshd_enable="YES" dan sshd_flags — persis apa yang perlu kalian isi di rc.conf.

Perintah service

Kontrol Runtime

Setelah service diaktifkan, kelola status runtime dengan service:

Mengelola service sshd
service sshd start
service sshd status
service sshd restart
service sshd stop

service <nama> onestart berguna untuk menjalankan service yang tidak diaktifkan di rc.conf — berjalan sekali tanpa membuatnya persist di boot:

Menjalankan service sekali tanpa enable
service nginx onestart

Menjalankan Skrip Sendiri

Kalian juga bisa menaruh skrip custom di /usr/local/etc/rc.d untuk dikelola cara yang sama. Saya akan membahas pola ini lebih lanjut di episode 11 ketika membuat service kustom.

Urutan Boot: Loader, Kernel, dan rc

Memahami urutan boot membantu troubleshooting service yang tidak muncul saat start:

  1. Firmware (UEFI/BIOS) memuat bootloader.
  2. Bootloader membaca /boot/loader.conf dan memuat kernel.
  3. Kernel menginisialisasi hardware, lalu memanggil init dan /etc/rc.
  4. /etc/rc membaca /etc/defaults/rc.conf + /etc/rc.conf, lalu menjalankan skrip rc secara berurutan.

Log proses boot tersimpan di /var/log/boot.log (jika diaktifkan) dan bisa dilihat dengan dmesg. Jika sebuah service gagal start, catat urutannya di sini.

/etc/rc.local

Untuk perintah sekali jalan di akhir boot, FreeBSD mendukung /etc/rc.local. File ini dieksekusi terakhir, setelah semua service:

Contoh /etc/rc.local
echo "Boot selesai" > /var/log/rc.local.log

Info

Gunakan /etc/rc.local dengan bijak. Untuk pekerjaan yang harus dijalankan ulang atau dikontrol, lebih baik tulis skrip rc yang proper daripada menyembunyikan semuanya di rc.local yang sulit diaudit.

sysrc: Mengelola rc.conf dari CLI

sysrc adalah tool yang membuat pengelolaan rc.conf tanpa editor menjadi mungkin. Sintaksnya mirip mengubah variabel shell:

Mengaktifkan service dengan sysrc
sysrc sshd_enable="YES"
sysrc nginx_enable="YES"
sysrc nginx_flags="-c /usr/local/etc/nginx/nginx.conf"

sysrc membaca dan menulis /etc/rc.conf, membuat backup sebelum perubahan, dan mempertahankan format file. Cek nilai yang sudah ada:

Melihat nilai variabel
sysrc sshd_enable
sysrc -a

sysrc -a menampilkan seluruh isi rc.conf. Ini cara cepat untuk mengaudit apa yang aktif di sistem. Karena mengedit file secara programatik, sysrc sempurna untuk skrip provisioning dan playbook otomasi.

Success

Kombinasi sysrc untuk mengatur config dan service untuk mengontrol runtime adalah dua kata kunci yang akan kalian pakai setiap hari di FreeBSD. Keduanya idempoten dan mudah dipelajari — cocok untuk otomasi dan dokumentasi yang bisa dieksekusi.

Alur Kerja Praktis: Mengaktifkan Sebuah Service

Mari kita praktikkan pola lengkap untuk mengaktifkan nginx dari pkg:

Pola lengkap aktivasi service
pkg install nginx
sysrc nginx_enable="YES"
service nginx start
service nginx status

Empat baris ini adalah pola yang akan kalian ulangi untuk hampir semua service: install, enable, start, verify. Ingat, sysrc menggantikan kebutuhan membuka editor untuk pengaturan enable.

Penutup

Di episode 6 ini kalian sudah memahami rc system FreeBSD: /etc/rc.conf sebagai pusat konfigurasi, /etc/defaults/rc.conf sebagai nilai default yang tidak boleh diedit, skrip rc di dua direktori, perintah service untuk kontrol runtime, urutan boot, dan sysrc sebagai pengelola konfigurasi berbasis CLI.

Inti yang harus dibawa pulang:

  • Enable service ditulis di /etc/rc.conf dengan pola service_enable="YES".
  • Jangan pernah mengedit /etc/defaults/rc.conf — itu nilai bawaan yang ditimpa saat upgrade.
  • service <nama> start/stop/restart/status mengontrol runtime.
  • Urutan boot: loader, kernel, /etc/rc, lalu skrip rc.
  • sysrc mengubah rc.conf tanpa editor dan aman untuk otomasi.

Di episode 7 selanjutnya kita akan membahas filesystem, mount & disks — dari UFS dan ZFS, pseudo-filesystem seperti tmpfs dan devfs, sampai mount dan umount, konfigurasi /etc/fstab, dan manajemen swap. Fondasi penyimpanan ini menentukan bagaimana data kalian hidup di disk.