Skip to main content

Sysvinit vs Systemd Apa Perbedaannya?

sysvinit vs systemd

Sebelum kita membahas tentang apa perbedaan sysvinit vs systemd, sebaiknya kita ulas terlebih dahulu dari masing-masing init sistem itu bagaimana mereka bekerja di Linux. Karena hal ini telah menimbulkan perdebatan beberapa tahun yang lalu, yang terjadi diantaranya pada para pengembang Distro Debian ketika mereka berdiskusi apakah akan tetap pada init sistem lama atau beralih ke Systemd. Yang kemudian diputuskan bahwa Debian beralih ke Systemd. Dari keputusan itu, maka para pengembang yang tidak setuju, mereka membuat varian Debian dengan tetap mempertahankan menggunakan sysvinit sebagai init sistem yang kemudian diberi nama Devuan.

Untuk ringkasan yang lebih banyak Anda bisa membaca pada tulsian saya Debian VS Devuan.

Back to top

1) Init System Linux

Init adalah kependekan dari initialization, pada sistem operasi linux dan yang berbasis unix. Init merupakan proses awal yang dijalankan oleh kernel pertama kali saat komputer diboot. Memiliki ID proses (PID) 1 yang berjalan dilatar belakang (Background).

Init merupakan induk dari semua proses yang terjadi pada sistem unix secara langsung dan tidak langsung. Dan dia juga memulai proses yang lain seperti Daemon, service, dan background proses. Proses init akan terus berjalan sampai komputer dimatikan (shutdown/turn off).

Pada sistem Unix III dan V, telah terjadi penyimpangan dari fungsi init yang disediakan dan begitu juga pada turunan BSD. Beberapa distribusi linux menggunakan sistem init tradisional yang hampir kompatibel dengan System V. Sementara lainnya ada yang menggunakan skrip startup bergaya BSD, dan ada juga yang menggunakan init buatan sendiri.

Sejak terjadinya pemabaruan itu, penambahan implementasi baru dibuat untuk mengatasi keterbatasan terhadap versi tradisional. Termasuk Launchd, Manajemen service, Systemd, dan OpenRC.

Kegagalan dalam menjalankan init system akan menimbulkan kernel panic

1.1) Research Unix dan BSD Script

Init Research Unix sebelum melaunch getty pada terminal di /etc/ttys init akan melakukan inisialisasi skrip yang berada di /etc/rc dan menentukan program yang akan dijalankan oleh init. Tidak ada runlevel. Kesederhanaan menjadi sebuah keuntungan pada program ini, selain itu juga bisa diedit secara manual. Tapi memiliki resiko sistem tidak bisa diboot.

BSD Init, memiliki kesamaan seperti Research Unix pada versi sebelum 4.3 BSD dan ada tambahan untuk dapat menjalankan sistem windowing pada X juga terminal grafis di /etc/ttys. Varian BSD telah lama mendukung file /etc/rc.local dan menjalankan dalam sub-shell diakhir prosess boot.

Sistem skrip modular telah diperkenalkan pada NetBSD 1.5 dan FreeBSD 5.0 yang akan menjalankan skrip di directory /etc/rc.d. Dengan tidak lagi berdasarkan nama file tapi dengan tag untuk mengeksekusi skrip berdasarkan skrip rcoder yang berdasarkan persyaratan pada tag.

Back to top

2) Sys-V Style

Ketika kita membandingkan dengan System III, ini telah ditambahkan konfigurasi startup system "gaya baru" kedalam System V dan disebut dengan Sys-V style.

Ketika System V (Sys-V init) yang sedang berjalan ada disalah satu dari jumlah status yang ditentukan, ini lebih dikenal dengan runlevel. Runlevel adalah kondisi normal pada sistem operasi, runlevel mewakili mode pengguna tunggal (rcovery), Shutdown, dan berbagai status lainnya. Setiap beralih dari satu runlevel ke runlevel lainnya, akan menjalankan skrip per-runlevel, biasanya mount filesyste, menjalankan daemon, memulai atau menghentikan X, dan lainnya.

Secara umun ada 7 tingkat runlevel pada System V (Sys-V) diantaranya ada tiga yang dianggap menjadi standar dan ini adalah hal penting untuk pengoperasian system yaitu 0 (Halt), 1 Single User Mode, 6 Reboot.

Pada sistem Linux umumnya secara default menjalankan runlevel 5, yang akan memanggil Desktop Environment multi-user. Ini akan menjalankan system X seperti GDM atau KDM. Namun ada juga yang menjalankan runlevel 5 untuk proses shutdown.

Kita bisa memeriksa runlevel saat ini dengan perintah who -r

runlevel sekarang who -r

User yang memiliki hak akses root juga bisa mengubah default runlevel pada /etc/inittab

runlevel edit default

Hampir semua distribusi linux awalnya menggunakan Sys-V init, kecuali Gentoo yang memiliki init sendiri dan Slackware yang menggunakan init BSD Style. Seiring berjalannya waktu, telah banyak ditemukan beberapa ketidakmampuan pada Sys-V init. Lalu muncullah alternatif untuk memperbaiki kekurangan itu, dengan tujuan agar linux berjalan lebih efisien dan sempurna.

Pengembangan itu ada yang masih kompatibel dengan Sys-V init dengan menawarkan fitur baru namun tetap diusahakan agar terus dapat berjalan denganSys-V init.

Beberapa pembaruan yang diketahui adalah

  • Upstart, Diterapkan pada Ubuntu untuk memulai proses secara asynchronously
  • Eporch, Dibangun berdasarkan kesederhanaan dan manajemen service. Untuk memulai proses secara single thread.
  • Mudar, Daemon proses yang ditulis menggunakan Python, untuk memulai proses secara tidak sinkron (asynchronously)>
  • OpenRC, Init siste Base Gentoo dirancang untuk dapat menjalankan lusinan Daemon yang juga telah banyak diadopsi oleh Distro lain seperti Debian sebalum versi 8, Arch Linux, dan lainnya.
  • Systemd, Memungkinkan untuk menjalankan Daemon secara parallel dan saat ini juga sudah banyak diadopsi oleh Distro besar seperti OpenSUSE, Arch, CentOS, RHEL, Debian, Ubuntu, SparkyLinux, dan Lainnya.
Back to top

3) SystemD

Ini adalah init sistem baru yang langsung populer, kemudian diubah menjadi sistem init standar baru dan telah digunakan pada banyak distro linux saat ini. Yang memiliki lebih banyak fitur dibandingkan dengan Sys-V init.

SystemD memiliki komponen utama yaitu system dan service manager, system digunakan untuk proses booting seperti Sys-V init. Mengelola proses Daemon, utilitas, manajemen perangkat, manajemen login, koneksi jaringan, dan logging.

Fitur yang ditawarkan SystemD

  • Melakukan parallelisasi yang agresif (pemrosesan bersamaan dan parallel saat boot)
  • Menggunakan socket dan D-Bus untuk memulai service
  • Melacak proses menggunakan cgroup Linux
  • Mendukung snapshotting dan pemulihan sistem
  • Mount point dan automount
  • Mudah dan efisien
  • API yang lebih baik
  • Memungkinkan menghapus proses opsional
  • Logging menggunakan journald
  • Peyimpanan log dalam file biner
  • Integrasi yang lebih baik dengan GNOME

Sejak tahun 2015, sebagian besar Distro linux mengadopsi systemd untuk mengganti init sistem lama mereka. Meski telah banyak mendapat kritik tidak hanya dari pengembang itu sendiri juga termasuk para pengguna linux lainnya.

Back to top

4) Kelebihan dan Kekurangan

Bila membandingkan init sistem yang ada di Linux, setidaknya kita juga perlu mengetahui apa saja kelebihan dan kekurangannya. Tidak semua init sistem hanya Systemd, Sys-V init, dan OpenRC saja.

4.1) Sys-V init

Kelebihan dan Kekurangan Sys-V init
# Kelebihan Kekurangan
1 Mudah dipahami Implementasi duplikat untuk setiap service. Setiap skrip init perlu menemukan kembali untuk pemrosesan argumen: start/stop/restart/reload, dan membuat PID seterusnya.
2 Sangat Stabil. Karena Sys-V init hanya melakukan satu hal yaitu menginisialisasi sistem. Dan ini tidak mungkin gagal jika tidak ada masalah yang berhubungan dengan memboot sistem. Banyak proses untuk satu proses. Setidaknya sh/dash/bash akan dispawn oleh ini, dan mungkin juga lainnya seperti cat, echo, start-stop-daemon, dan lainnya hanya untuk menjalankan satu daemon yang mungkin tidak diperlukan saat boot.
3 Waktu Boot yang lebih baik untuk semua performa Tapi Bisa juga menyebabkan boot jadi lambat. Karena memulai secara seri maka akan memakan waktu. Sebab harus menunggu proses selesai baru bisa melanjutkan ke proses berikutnya. Yang membuat banyak penundaan saat boot.
4 - skrip tidak portabel. Hampir tidak mungkin menulis skrip init portabel
5 - Sulit menulis skrip Sys-V init Dibandingkan dengan Declarative style, untuk menulis skrip init dibutuhkan kemampuan pemrograman.
2    

Kelebihan dan kekurangan OpenRC

Kelebihan dan Kekurangan OpenRC
# Kelebihan Kekurangan
1 Tidak ada fitur creep OpenRC mengikuti Filosofi UNIX yaitu Melakukan satu hal dan melakukannya dengan baik, Jika dibandingkan dengan Sys-V init, OpenRC memiliki lebih banyak fitur. Tidak ada aktivasi socket OpenRC belum memiliki aktifasi socket, mungkin akan ditambahkan dimasa depan.
2 Cepat Karena dibangun diatas Sys-V init dengan penambahan fitur yang lebih bermanfaat dan mempertahankan kesederhanaan yang dimiliki Sys-V init. Dan akan lebih cepat boot ketika mengaktifkan parallel. -
3 Tidak banyak dependensi Dapat menambahkan layanan NON-POSIX tertentu. -
4 Pada dasarnya OpenRC tidak menggantikan Sys-V init, hanya bekerja dengannya. Dan menambahkan fitur yang tidak dimiliki Sys-V init -
5 Portable dapat diporting kesistem operasi UNIX Like -
6 Efisien pada sumber daya sistem  
7 Menggunakan Multi-Core dan efisiensi RAM  
2    

Kelebihan dan Kekurangan SystemD

Kelebihan dan Kekurangan SystemD
# Kelebihan Kekurangan
1 Login Manajemen. Sistemd memiliki daemon yang bernama logind untuk menajemen atau mengelola pengguna Tidak memiliki filosif Unix Walaupun UNIX-Like tapi tidak sejalan dengan filosofi UNIX. Ini yang menjadi banyak dipertentangkan pengguna dan juga beberapa pengembang lainnya. Karena didalamnya berupa banyak pustaka yang dipaket, termasuk juga untuk menangani hal manajemen paket, power manager, cron, mount point, syslog, network, dan lainnya.
2 Kontrol cgroups Systemd mengelompokkan semuanya berdasarkan cgroup Linux, Memory, I/O, taks, NET, dan lainnya. Sulit untuk diport Setiap software yang membutuhkan dependensi systemd akan sulit untuk diport pada sistem yang tidak menggunakan systemd
3 Digunakan Distro Populer Systemd digunakan oleh banyak distro linux populer saat ini. Ini juga yang menjadikan systemd memiliki banyak pendukung, meski tidak sedikit juga yang menentangnya. Terlalu Monolotik Karena melakukan banyak hal.
4 - Binary Logging dengan menggunakan binnary pada logging, itu artinya membutuhkan tool atau software lain untuk melihat isinya. Dan bagaimana tau isinya jika rusak?
5 - Semua atau tidak sama sekali untuk menggunakan software yang ketergantungan terhadap systemd (dependencies) maka akan sangat tidak mungkin dilakukan pada sistem yang tidak menggunakan systemd. Kalau ingin menggunakannya berarti harus juga menggunakan systemd.

Meskipun Artix-, Gentoo, Void, Devuan telah berhasil melakukannya tanpa systemd bukan berarti ini pekerjaan mudah. Setiap pengembang dan pengguna yang ingin membuat paket software mereka sendiri (compile) karena mungkin perangkat lunak perlu diedit untuk kompatibilitas sambahan.

6 - Hanya berjalan di Linux
7 - Membutuhkan glibc
8 - Terhubung dengan Google DNS secara default
9 - Secara default Kill backgroun proses setelah user log out
Back to top

5) Perbedaan Perintah Sysvinit vs Systemd

Mungkin dari tadi masih ada yang belum paham mengenai Sys-V init dan SystemD. Kalau sering melakukan perintah lewat Command Line (CLI) pasti tidak asing dengan perintah berikut ini:

systemd vs sys-V init
Back to top

6) Kesimpulan

Sebagai pengguna awam seperti saya yang masih belajar linux, sebenarnya tidak perduli menggunakan init sistem yang mana. Yang penting sistem dapat berjalan normal tanpa ada masalah. Tapi perlu diketahui bahawa keduanya tidak kompatibel alias jika ada software yang membutuhkan dependensi systemd, maka tidak bisa diinstall pada sistem yang tidak memiliki systemd. Karena saya sendiri pernah melakukan itu, sistem baik-baik saja sebelum direstart/shutdown. Tapi setelah restart yang terjadi adalah kernel panic.😭️😭️😭️

Back to top