Devuan dan berbagai distribusi Linux bebas sistem menyediakan sistem init alternatif. lari adalah salah satu yang paling barebone dan paling ringan. Memiliki basis kode yang kecil memudahkan pemeliharaan dan juga mengaudit bug dan masalah keamanan. Hal ini dapat berjalan di Unices lain seperti *BSD, MacOSX, dll, juga. Dalam artikel ini, saya akan membahas dasar-dasar runit skema init dengan Devuan sebagai basis. Namun, sebagian besar konsep dan perintah harus sama untuk distribusi lain. Anda dapat merujuk ke referensi di bagian akhir untuk mempelajari lebih detail.
Mekanisme Kerja
Menurut dokumentasi resmi, runit adalah skema init dengan pengawasan layanan. Itu berarti menangani mulai otomatis layanan selama boot, serta memantau dan memulai kembali mereka. Sesuai dengan filosofi UNIX, runit terdiri dari berbagai alat kecil dan binari (walaupun tidak sampai membengkak *ahem* systemd *ahem* ) untuk berinteraksi dengannya dan daemon lainnya.
Seperti kebanyakan sistem init, kernel memuat proses pertama – /sbin/init
yang disediakan oleh program runit-init(8). Itu kemudian menggantikan dirinya dengan runit(8). runit adalah apa yang melakukan booting, menjalankan dan mematikan sistem dan melakukannya dalam tiga tahap:
- Tahap 1 :
Sistem melakukan tugas inisialisasi satu kali melalui/etc/runit/1
. Kami mendapatkan shell darurat jika tahap ini gagal. - Tahap 2 :
runit memulai/etc/runit/2
yang menangani runlevel melalui runvdir(8). Ini adalah tahap sistem kami tetap berada saat sedang berjalan. Kami juga dapat memberikan Ctrl+Alt+Delete permintaan reboot pada tahap ini. - Tahap 3:
Jika/etc/runit/2
kembali tanpa kesalahan, yang terjadi selama sistem berhenti atau reboot, runit dimulai/etc/runit/3
. Tugas shutdown dilakukan di tahap 3.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816193144.png)
Runlevel
Instalasi standar runit memiliki 2 runlevel , default
dan single
. Direktori runlevel berisi symlink ke direktori layanan lain. Sebagian besar tugas dilakukan dan sebagian besar layanan dimulai dalam default
tingkat run Tapi kita bisa membuat runlevel sendiri dengan membuat folder baru di/etc/runit/runsvdir/
dan menghubungkan layanan yang kami inginkan ke runlevel itu. Instalasi Devuan saya memiliki dua runlevel lain yang dibuat.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816193208.png)
Runit mengubah runlevel dengan mengganti direktori runsvdir
program sedang berjalan. Ini ditangani oleh runsvchdir
memerintah.
Misalnya, untuk beralih ke single
runlevel pengguna:
# runsvchdir single
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816193265.png)
Kami juga dapat meminta runit untuk memulai di runlevel tertentu selama bootup alih-alih default
. Kita dapat melakukannya dengan menambahkan runitdir=name
parameter inti. Jelas, runlevel name
harus ada yaitu direktori harus tersedia di /etc/runit/runsvdir
dengan nama itu.
Misalnya, untuk langsung mem-boot ke mode pengguna tunggal (yaitu single
runlevel), kita dapat menambahkan runitdir=single
ke parameter kernel.
Di GRUB, kita dapat melakukannya dengan menekan e
kunci sambil menyorot entri di menu bootloader.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816193289.png)
Menekan Ctrl+X
akan membuat sistem boot dengan parameter yang diberikan, secara efektif membawa kita ke mode pengguna tunggal.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816193212.png)
Mengelola Layanan
Direktori layanan berisi file dan skrip yang diperlukan untuk mengelola daemon. Direktori layanan terletak di /etc/sv
direktori.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816193291.png)
Direktori layanan ini harus disinkronkan ke /etc/service
jika tidak runit
tidak akan dapat mengaksesnya.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816193242.png)
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816193208.png)
Membuat symlink di /etc/service
pada dasarnya akan enable
itu sehingga dimulai saat boot. Kami dapat disable
layanan dengan membuat file bernama down
di dalam direktori layanan.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042816193363.png)
Meskipun runit memiliki beberapa program, biasanya kita hanya perlu berinteraksi dengan sv
memerintah. Sintaksnya setara dengan systemd systemctl
perintah.
Memulai layanan:
# sv start <service_name>
Menghentikannya:
# sv stop <service_name>
Memulai ulang atau memuat ulang layanan:
# sv restart <service_name>
Periksa status layanan:
# sv status <service_name>
Ada juga penulisan ulang sv
perintah di Rust disebut rsv
. Namun, saya tidak akan membahasnya di artikel ini. Silakan periksa tautan di antara referensi di bawah ini.
Referensi:
- Jalankan Beranda
- rsv
- Artix Wiki | Runit
- Hapus Linux | Layanan dan Daemon – runit