Pengenalan systemd
systemd, ditulis dengan huruf kecil, adalah init system baru di Debian Jessie dan belum pernah ada di versi Debian sebelumnya. Tulisan ini adalah sedikit apa yang saya ketahui dari systemd di Debian 8.
Para pengguna Debian mungkin saja sudah tahu bahwa keputusan Debian untuk mengadopsi systemd sebagai init system melalui perdebatan yang panjang antara pro systemd dan kontra systemd yang akhirnya menyebabkan para developer Debian terpecah menjadi dua kubu.
Kontroversi systemd
systemd memang mejadi kontroversi karena beberapa hal. Pertama, sebagian orang menganggap systemd tidak menghormati filosofi Unix. saya ingat ketika awal sekali mengenal Linux, bahwa Linux adalah sistem operasi yang Unix-like dan Unix terkenal dengan filosofi-nya, diantaranya:
- Tugas sebuah program adalah melakukan satu hal dan melakukannya dengan baik.
- Sistem yang besar dan kompleks merupakan gabungan dari program-program kecil yang bekerja bersama.
- Teks adalah interface yang universal
- Segalanya di Unix adalah file.
systemd dianggap tidak conform dengan filosofi Unix diatas sehingga banyak yang menolaknya. systemd awalnya di-develop oleh Lennart Poettering, developer yang sekarang bekerja untuk Red Hat. Lennart Poettering sebelumnya juga membuat program yang kontroversial yaitu Avahi dan PulseAudio. Silahkan baca tentang Lennart Poettering di halaman Wikipedia
Beberapa kritik terhadap systemd, systemd tidak hanya menjadi init system tapi juga mengambil alih banyak fungsi. Misalnya systemd berusaha mengatur network, cron, fstab, syslog/rsyslog, dll. Artinya systemd bukanlah sebuah program yang melakukan satu hal saja, tapi banyak hal. Kemudian, systemd dikritik karena logging filenya tidak berbasis teks seperti Unix dan Linux log pada umumnya, tapi binary log file.
Diantara kritik terhadap systemd ada beberapa yang tidak valid, misalnya saja systemd dianggap tidak modular. Lennart Poettering menjawab kritik yang seperti ini di halaman blognya dengan judul The Biggest Myths
Lahirnya Devuan GNU/Linux
Di Debian sendiri, setelah perdebatan panjang, systemd menjadi default init system di rilis Debian mulai Debian 8. Debian termasuk terlambat karena beberapa distribusi Linux sebelumnya sudah menggunakan systemd seperti Red Hat dan Fedora, Ubuntu, Gentoo, dll.
Akibat dari keputusan ini, beberapa developer Debian yang menolak systemd membuat distribusi baru berbasis Debian, Debian tanpa systemd yang diberi nama Devuan. Devuan adalah Debian yang masih menggunakan sysvinit, tentang Devuan bisa dilihat di https://devuan.org/
Bagi user seperti Saya, systemd atau bukan systemd tidak banyak pengaruhnya kecuali mempelajari command-command baru. Dan ini pendapat saya setelah beberapa waktu menggunakan Debian 8 dan systemd.
systemd adalah sistem yang modular. Di Debian 8, implementasi systemd hanya init system dan journal log. Debian menjaga backward compatibility dengan sysvinit, dan antara journal dan rsyslog. Artinya, dari sisi user tidak ada bedanya karena user tetap bisa menggunakan sysvinit dan logging menggunakan rsyslog, command service <service> (start|stop|restart) tetap bisa digunakan. systemd memang menawarkan banyak fitur seperti networking, cron, dsb tapi itu semua optional, satu-satunya fitur yang tidak bisa dipisahkan dari systemd adalah journald untuk system log, itu pun tidak mematikan service rsyslog dan rsyslog tetap bisa digunakan.
systemd adalah sistem yang modern, berbanding terbalik dengan sysvinit. Sysvinit memang sudah seharusnya hilang dari dunia per-init-an karena mangatur service melalui script itu tidak mudah dan tidak teratur. Ubuntu pernah membuat pengganti Sysvinit dengan Upstart, tapi kemudian ditinggalkan dan beralih ke systemd. systemd menggunakan file konfigurasi yang disebut unit, cara membuat file unit pun gampang karena konfigurasinya yang ini-style.
Yang menurut saya kurang adalah sistem logging dengan journald karena file log-nya bukan teks. Sebelumnya, dengan teks logging rsyslog bisa menggunakan tool apa saja seperti cat, grep, tail, atau head, tapi dengan journald hanya bisa menggunakan satu tool yaitu journalctl.
Command-command systemd
Beberapa command systemd yang sering digunakan.
Untuk me-restart service, systemctl restart. Misalnya merestart apache2
systemctl restart apache2
systemctl juga bisa me-restart beberapa service sekaligus, untuk restart apache2 dan mysql
systemctl restart apache2 mysql
Untuk start, stop dan reload, tinggal ganti restart dengan start, stop atau reload.
Mengaktifkan service saat start-up, misal mengaktifkan service systemd-networkd
systemctl enable systemd-networkd
Menonaktifkan service saat start-up, misal menonaktifkan service networking
systemctl disable networking
Restart
systemctl reboot
Shutdown
systemctl poweroff
Melihat tanggal dan jam
timedatectl
Set waktu
timedatectl set-time "2016-02-21 22:33:44"
Melihat log secara live
journalctl -f
Melihat log untuk service, email server postfix misalnya
journalctl -u postfix
Melihat log dari tanggal 20 sampai 21 Februari
journalctl --since "2016-02-20" --until "2016-02-21"
Melihat log dua jam terakhir
journalctl --since "2 hours ago"
Masih banyak lagi tentang systemd yang tidak tertulis disini dan belum saya ketahui. Manual untuk systemd bisa dibaca di https://www.freedesktop.org/software/systemd/man/