Bab 3. Inisialisasi sistem

# Bab 3. Inisialisasi sistem

Adalah bijaksana bagi Anda sebagai administrator sistem untuk mengetahui kira-kira bagaimana sistem Debian dimulai dan dikonfigurasi. Meskipun rincian yang tepat ada di berkas sumber paket yang dipasang dan dokumentasinya, itu agak membuat kewalahan bagi kebanyakan dari kita.

Berikut adalah gambaran kasar dari poin-poin penting dari inisialisasi sistem Debian. Karena sistem Debian adalah target yang bergerak, Anda harus merujuk ke dokumentasi terbaru.

- Buku Pegangan Kernel Linux Debian adalah sumber informasi primer atas kernel Debian.

- bootup(7) menggambarkan proses boot sistem yang berbasis `systemd`. (Debian terbaru)

- boot(7) menjelaskan proses boot sistem berbasis UNIX System V Release 4. (Debian Yang Lebih Tua)

## 3.1. Ringkasan proses boot strap

Sistem komputer mengalami beberapa fase proses boot strap dari peristiwa daya dinyalakan sampai menawarkan sistem operasi (OS) yang berfungsi penuh kepada pengguna.

Untuk kesederhanaan, saya membatasi diskusi ke platform PC umum dengan instalasi baku.

Proses boot strap yang umum itu seperti roket empat tahap. Setiap tahap roket menyerahkan kontrol sistem ke tahap berikutnya.

- Bagian 3.1.1, “Tahap 1: UEFI”

- Bagian 3.1.2, “Tahap 2: boot loader”

- Bagian 3.1.3, “Tahap 3: sistem mini-Debian”

- Bagian 3.1.4, “Tahap 4: sistem Debian normal”

Tentu saja, ini dapat dikonfigurasi secara berbeda. Misalnya, jika Anda menyusun kernel Anda sendiri, Anda mungkin melewatkan langkah dengan sistem mini-Debian. Jadi tolong jangan berasumsi ini adalah kasus untuk sistem Anda sampai Anda memeriksanya sendiri.

### 3.1.1. Tahap 1: UEFI

Unified Extensible Firmware Interface (UEFI) mendefinisikan boot manager sebagai bagian dari spesifikasi UEFI. Ketika komputer dinyalakan, boot manager adalah tahap pertama dari proses boot yang memeriksa konfigurasi boot dan berdasarkan pengaturannya, kemudian mengeksekusi boot loader OS atau kernel sistem operasi yang ditentukan (biasanya boot loader). Konfigurasi boot didefinisikan oleh variabel yang disimpan dalam NVRAM, termasuk variabel yang menunjukkan path sistem berkas ke loader OS atau kernel OS.

EFI system partition (ESP) adalah partisi perangkat penyimpanan data yang digunakan dalam komputer yang mengikuti spesifikasi UEFI. Diakses oleh firmware UEFI ketika komputer dinyalakan, ia menyimpan aplikasi UEFI dan berkas-berkas yang perlu dijalankan aplikasi ini, termasuk boot loader sistem operasi. (Pada sistem PC warisan, BIOS yang disimpan dalam MBR dapat digunakan sebagai gantinya.)

### 3.1.2. Tahap 2: boot loader

Boot loader adalah tahap ke-2 dari proses boot yang dimulai oleh UEFI. Ini memuat image kernel sistem dan image initrd ke memori dan memindahkan kontrol kepada mereka. Image initrd ini adalah image sistem berkas root dan dukungannya tergantung pada bootloader yang digunakan.

Sistem Debian biasanya menggunakan kernel Linux sebagai kernel sistem baku. Image initrd untuk kernel Linux 5.x saat ini secara teknis adalah image initramfs (sistem berkas RAM awal).

Ada banyak boot loader dan opsi konfigurasi yang tersedia.

Tabel 3.1. Daftar boot loader

paket | popcon | ukuran | initrd | bootloader | deskripsi
--- | --- | --- | --- | --- | ---
grub-efi-amd64 | I:459 | 142 | Didukung | GRUB UEFI | Ini cukup pintar untuk memahami partisi disk dan sistem berkas seperti vfat, ext4, …. (UEFI)
grub-pc | V:16, I:518 | 479 | Didukung | GRUB 2 | Ini cukup pintar untuk memahami partisi disk dan sistem berkas seperti vfat, ext4, …. (BIOS)
grub-rescue-pc | V:0.06, I:0.63 | 7273 | Didukung | GRUB 2 | Ini adalah image penyelamatan GRUB 2 yang dapat di-boot (CD dan floppy) (versi PC/BIOS)
grml-rescueboot | V:0.1, I:1.1 | 36 | T/T | Plugin GRUB 2 | grml-rescueboot menambahkan image ISO Linux live ke menu boot grub2
syslinux | V:3, I:31 | 325 | Didukung | Isolinux | Ini memahami sistem berkas ISO9660. Ini digunakan oleh CD boot.
syslinux | V:3, I:31 | 325 | Didukung | Syslinux | Ini memahami sistem berkas MSDOS (FAT). Ini digunakan oleh boot floppy.
loadlin | V:0.04, I:0.42 | 87 | Didukung | Loadlin | Sistem baru dimulai dari sistem FreeDOS/MSDOS.
mbr | V:0.2, I:2.8 | 47 | Tidak didukung | MBR oleh Neil Turton | Ini adalah perangkat lunak bebas yang menggantikan MBR MSDOS. Ini hanya memahami partisi disk.

Untuk sistem UEFI, GRUB2 terlebih dahulu membaca partisi ESP dan menggunakan UUID yang ditentukan untuk `search.fs_uuid` di "`/boot/efi/EFI/debian/grub.cfg`" untuk menentukan partisi berkas konfigurasi menu GRUB2 "`/boot/grub/grub.cfg`".

Bagian penting dari berkas konfigurasi menu GRUB2 terlihat seperti:

    menuentry 'Debian GNU/Linux' ... {
            load_video
            insmod gzio
            insmod part_gpt
            insmod ext2
            search --no-floppy --fs-uuid --set=root fe3e1db5-6454-46d6-a14c-071208ebe4b1
            echo    'Loading Linux 5.10.0-6-amd64 ...'
            linux   /boot/vmlinuz-5.10.0-6-amd64 root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ro quiet
            echo    'Loading initial ramdisk ...'
            initrd  /boot/initrd.img-5.10.0-6-amd64
    }

Untuk bagian `/boot/grub/grub.cfg` ini, entri menu ini berarti sebagai berikut.

Tabel 3.2. Arti dari entri menu dari bagian di atas dari `/boot/grub/grub.cfg`

setelan | nilai
--- | ---
Modul GRUB2 dimuat | `gzio`, `part_gpt`, `ext2`
partisi sistem berkas root yang digunakan | partisi yang diidentifikasi oleh `UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1`
path image kernel dalam sistem berkas root | `/boot/vmlinuz-5.10.0-6-amd64`
parameter boot kernel yang digunakan | "`root=UUID=fe3e1db5-6454-46d6-a14c-071208ebe4b1 ro quiet`"
path image initrd dalam sistem berkas root | `/boot/initrd.img-5.10.0-6-amd64`

Pada sistem Debian, "`/boot/grub/grub.cfg`" dikelola oleh paket GRUB yang terinstall (misalnya `grub-efi-amd64`) dan modifikasi langsung oleh pengguna pada berkas ini sudah tidak dianjurkan. Anda sebaiknya menyesuaikan berkas konfigurasi di "`/etc/grub.d/`" dan "`/etc/default/grub`". Kemudian konfigurasikan berkas konfigurasi GRUB dan perbarui variabel NVRAM untuk boot otomatis ke Debian dengan:

    # dpkg-reconfigure grub-efi-amd64

| Tip
Anda dapat menampilkan pesan log boot kernel dengan menghapus "`quiet`" dari nilai "`GRUB_CMDLINE_LINUX_DEFAULT`" di "`/etc/default/grub`".

| Tip
Anda dapat menambahkan latar belakang splash GRUB dengan menempatkan berkas gambarnya di "`/boot/grub/`".

Lihat "`info grub`", grub-install(8), grub-mkconfig(8).

### 3.1.3. Tahap 3: sistem mini-Debian

Sistem mini-Debian adalah tahap ke-3 dari proses boot yang dimulai oleh boot loader. Ini menjalankan kernel sistem dengan sistem berkas root pada memori. Ini adalah tahap persiapan opsional dari proses boot.

| Catatan
Istilah "sistem mini-Debian" diciptakan oleh penulis untuk menggambarkan proses boot tahap ke-3 ini untuk dokumen ini. Sistem ini sering disebut sebagai sistem initrd atau initramfs. Sistem serupa pada memori digunakan oleh Debian Installer.

Program "`/init`" dijalankan sebagai program pertama dalam sistem berkas root ini pada memori. Ini adalah program yang menginisialisasi kernel di ruang pengguna dan mewariskan kendali ke tahap berikutnya. Sistem mini-Debian ini menawarkan fleksibilitas untuk proses boot seperti menambahkan modul kernel sebelum proses boot utama atau mengait sistem berkas root sebagai yang dienkripsi.

- Program "`/init`" adalah program skrip shell jika initramfs dibuat oleh `initramfs-tools`.

  - Anda dapat menginterupsi bagian dari proses boot ini untuk mendapatkan shell root dengan memberikan "`break=init`" dll. bagi parameter boot kernel. Lihat skrip "`/init`" untuk kondisi istirahat lainnya. Lingkungan shell ini cukup canggih untuk melakukan inspeksi yang baik terhadap perangkat keras mesin Anda.

  - Perintah yang tersedia dalam sistem mini-Debian ini adalah yang dirampingkan dan terutama disediakan oleh alat GNU yang disebut busybox(1).

- Program "`/init`" adalah program biner `systemd` jika initramfs diciptakan oleh `dracut`.

  - Perintah yang tersedia dalam sistem mini-Debian adalah lingkungan systemd(1) yangn dirampingkan.

| Perhatian
Anda perlu menggunakan opsi "`-n`" untuk perintah `mount` saat Anda berada di sistem berkas root yang hanya-baca.

### 3.1.4. Tahap 4: sistem Debian normal

Sistem Debian normal adalah tahap ke-4 dari proses boot yang dimulai oleh sistem mini-Debian. Kernel sistem untuk sistem mini-Debian terus berjalan di lingkungan ini. Sistem berkas root dialihkan dari yang ada di memori ke yang ada di perangkat penyimpanan fisik.

Program init dijalankan sebagai program pertama dengan PID=1 untuk melakukan proses boot utama yang memulai banyak program. Path berkas baku untuk program init adalah "`/usr/sbin/init`" tetapi dapat diubah oleh parameter boot kernel sebagai "`init=/path/ke/program_init`".

"`/usr/sbin/init`" di-symlink ke "`/lib/systemd/systemd`" setelah Debian 8 Jessie (dirilis pada tahun 2015).

| Tip
Perintah init yang sebenarnya pada sistem Anda dapat diverifikasi oleh perintah "`ps --pid 1 -f`".

Tabel 3.3. Daftar utilitas boot untuk sistem Debian

paket | popcon | ukuran | deskripsi
--- | --- | --- | ---
`systemd` | V:920, I:979 | 11013 | daemon init(8) berbasis kejadian untuk konkurensi (alternatif dari `sysvinit`)
`cloud-init` | V:3.6, I:6.7 | 3267 | sistem inisialisasi bagi instansi cloud infrastruktur
`systemd-sysv` | V:912, I:981 | 76 | halaman manual dan tautan yang diperlukan bagi `systemd` untuk menggantikan `sysvinit`
`init-system-helpers` | V:585, I:988 | 131 | alat-alat pembantu untuk beralih antara `sysvinit` dan `systemd`
`initscripts` | V:16, I:59 | 197 | skrip untuk menginisialisasi dan mematikan sistem
`sysvinit-core` | V:3.4, I:3.8 | 365 | Utilitas init(8) mirip System-V
`sysv-rc` | V:31, I:63 | 85 | Mekanisme perubahan runlevel mirip System-V
`sysvinit-utils` | V:722, I:1000 | 100 | Utilitas mirip System-V (startpar(8), bootlogd(8), …)
`lsb-base` | V:217, I:320 | 12 | Fungsionalitas skrip init Linux Standard Base 3.2
`insserv` | V:35, I:62 | 132 | alat untuk mengatur urutan boot menggunakan dependensi skrip init.d LSB
`kexec-tools` | V:1.4, I:5.4 | 320 | alat kexec untuk mem-boot ulang kexec(8) (boot ulang warm)
`systemd-bootchart` | V:0.20, I:0.60 | 131 | penganalisis kinerja proses boot
`mingetty` | V:0.1, I:2.5 | 36 | getty(8) hanya konsol
`mgetty` | V:0.15, I:0.50 | 318 | pengganti getty(8) smart modem

| Tip
Lihat Wiki Debian: BootProcessSpeedup bagi tips terbaru untuk mempercepat proses boot.

## 3.2. Sistem penyelamat

| Awas
Jangan lakukan tugas administrasi sistem di sekitar proses boot strap tanpa memiliki sistem penyelamat.

Ketersediaan sistem penyelamat memungkinkan kita melakukan tugas-tugas menantang seperti:

- Mem-boot sistem dari instalasi boot loader yang rusak

- Memperbaiki instalasi boot loader yang rusak

- Mengekstrak data dari sistem yang rusak dan tidak dapat di-boot

- Mengedit sistem berkas, partisi disk, dan volume LVM yang melibatkan sistem berkas root

Biasanya, sistem penyelamat disediakan sebagai berkas image ISO dan ditulis ke media penyimpanan yang dapat dilepas seperti:

- USB flash drive yang disiapkan sebagai Bagian 9.7.2, “Menulis secara langsung ke disk”

- CD / DVD yang disiapkan sebagai Bagian 9.7.7, “Menulis secara langsung ke CD/DVD-R/RW”

Demi kesederhanaan, kasus USB flash drive disebutkan sebagai contoh di bawah ini, tetapi CD atau DVD juga dapat digunakan.

| Tip
Anda mungkin perlu mengubah beberapa variabel UEFI NVRAM untuk mem-boot boot loader sembarang pada media penyimpanan yang dapat dilepas.

### 3.2.1. Sistem penyelamat GRUB UEFI pada USB

Sistem penyelamat GRUB UEFI dengan menu dapat dimulai dengan menyalakan daya sistem saat "Sistem penyelamat GRUB UEFI pada USB" terpasang.

"Sistem penyelamat GRUB UEFI pada USB" ini disiapkan dengan menulis image ISO Super Grub2 Disk ke USB flash drive terlebih dahulu.

Jika konfigurasi boot loader rusak akibat instalasi sistem operasi lain, dll., Anda dapat memperbaikinya dengan:

- Mulai sistem penyelamat GRUB UEFI untuk menemukan sistem yang terinstall dan dapat di-boot secara otomatis.

- Mulai sistem Debian yang terinstall dari menu GRUB.

- Pada prompt shell root Linux:

      # dpkg-reconfigure grub-efi-amd64

| Catatan
Image ISO penyelamat GRUB yang dapat di-boot juga dapat dibuat dengan mengikuti "`info grub-mkrescue`". Ini menawarkan prompt shell GRUB CLI tetapi tidak menawarkan penemuan otomatis sistem yang terinstall dan dapat di-boot.

### 3.2.2. Sistem penyelamat Linux live pada USB

Sistem penyelamat Linux live dapat dimulai dengan menyalakan daya sistem saat "Sistem penyelamat Linux live pada USB" terpasang.

"Sistem penyelamat Linux live pada USB" ini dapat disiapkan dengan menulis salah satu image ISO Linux live berbasis Debian ke USB flash drive terlebih dahulu. Berikut beberapa contoh image Linux live tersebut.

- Image Debian Live

- Kali Linux Live

- Grml Live Linux

Berikut beberapa kasus penggunaan sistem penyelamat Linux live ini:

- Memperbaiki konfigurasi boot loader yang rusak akibat instalasi sistem operasi lain, dll.:

  - Mulai sistem penyelamat Linux live.

  - Pasang partisi yang berisi sistem berkas root dari sistem Debian yang terinstall dan tidak dapat di-boot ke "`/mnt`".

  - Pada prompt shell root Linux:

        # chroot /mnt; dpkg-reconfigure grub-efi-amd64

- Memperbaiki paket `dpkg` yang rusak:

  - Mulai sistem penyelamat Linux live.

  - Pasang partisi yang berisi sistem berkas root dari sistem Debian yang terinstall dengan paket `dpkg` yang rusak ke "`/mnt`".

  - Pada prompt shell root Linux:

        # dpkg --root /mnt -i /mnt/var/cache/apt/archives/dpkg_old_version_amd64.deb

- Lakukan perubahan yang biasanya dilarang seperti operasi sistem berkas pada sistem yang terinstall (lihat Bagian 9.6, “Tips penyimpanan data”).

| Awas
Layar GUI sistem Linux live Anda mungkin terkunci setelah tidak aktif.

| Tip

- Sebaiknya atur kata sandi Anda segera setelah memulai sistem Linux live.

- Anda dapat mengatur kata sandi misalnya dengan "`sudo passwd user`" dari prompt shell pengguna di konsol virtual Linux (lihat Bagian 1.1.6, “Konsol virtual”).

- Beberapa sistem Linux live mungkin menetapkan "user/password" bawaan: "Debian Live" = "user/live", "Kali Linux Live" = "kali/kali"

### 3.2.3. Sistem penyelamat Linux live dari GRUB

Sistem penyelamat Linux live dapat dimulai dari entri menu GRUB. Konfigurasi GRUB untuk ini disiapkan dengan langkah berikut:

- Instal paket `grml-rescueboot`.

- Temukan image ISO Linux live yang memiliki "`/boot/grub/loopback.cfg`" di dalam imagenya.

  - Image ISO yang disebutkan di Bagian 3.2.2, “Sistem penyelamat Linux live pada USB” memiliki "`/boot/grub/loopback.cfg`" di dalam imagenya.

- Salin beberapa image ISO Linux live ini ke direktori "`/boot/grml/`".

- Perbarui menu GRUB dengan:

      # dpkg-reconfigure grub-efi-amd64

Saat menyalakan daya sistem, GRUB menampilkan menu dengan kandidat sistem penyelamat Linux live.

## 3.3. Systemd

### 3.3.1. Init systemd

Ketika sistem Debian mulai berjalan, `/usr/sbin/init` yang di-symlink ke `/usr/sbin/init` dimulai sebagai proses init sistem (`PID=1`) yang dimiliki oleh root (`UID=0`). Lihat systemd(1).

Proses init `systemd` men-spawn proses secara paralel berdasarkan berkas konfigurasi unit (lihat systemd.unit(5)) yang ditulis dalam gaya deklaratif, bukan gaya prosedural seperti SysV.

Proses yang di-spawn ditempatkan dalam kelompok kontrol Linux individu yang dinamai sesuai dengan unit yang mereka miliki dalam hierarki sistem pribadi (lihat cgroup dan Bagian 4.7.5, “Fitur keamanan Linux”).

Unit-unit untuk mode sistem dimuat dari "Path Pencarian Unit Sistem" yang diuraikan dalam systemd.unit(5). Yang utama adalah sebagai berikut dalam urutan prioritas:

- "`/etc/systemd/system/*`": Unit sistem yang dibuat oleh administrator

- "`/run/systemd/system/*`": Unit runtime

- "`/lib/systemd/system/*`": Unit sistem yang dipasang oleh manajer paket distribusi

Inter-dependensi mereka ditentukan oleh arahan "`Wants=`", "`Requires=`", "`Before=`", "`After=`", … (lihat "PEMETAAN PROPERTI UNIT UNTUK INVERSI MEREKA" dalam systemd.unit(5)). Kontrol sumber daya juga didefinisikan (lihat systemd.resource-control(5)).

Akhiran berkas konfigurasi unit mengodekan jenisnya sebagai:

- *.service menjelaskan proses yang dikendalikan dan diawasi oleh `systemd`. Lihat systemd.service(5).

- *.device menggambarkan perangkat yang terpapar dalam sysfs(5) sebagai pohon perangkat udev(7). Lihat systemd.device(5).

- *.mount menggambarkan titik kait sistem berkas yang dikendalikan dan diawasi oleh `systemd`. Lihat systemd.mount(5).

- *.automount menggambarkan titik kait otomatis sistem berkas yang dikendalikan dan diawasi oleh `systemd`. Lihat systemd.automount(5).

- *.swap menggambarkan perangkat atau berkas swap yang dikontrol dan diawasi oleh `systemd`. Lihat systemd.swap(5).

- *.path menggambarkan path yang dipantau oleh `systemd` untuk aktivasi berbasis-path. Lihat systemd.path(5).

- *.socket menjelaskan soket yang dikendalikan dan diawasi oleh `systemd` untuk aktivasi berbasis soket. Lihat systemd.socket(5).

- *.timer menjelaskan timer yang dikendalikan dan diawasi oleh `systemd` untuk aktivasi berbasis timer. Lihat systemd.timer(5).

- *.slice mengelola sumber daya dengan cgroup(7). Lihat systemd.slice(5).

- *.scope dibuat secara pemrograman menggunakan antarmuka bus `systemd` untuk mengelola serangkaian proses sistem. Lihat systemd.scope(5).

- *.target kelompok berkas konfigurasi unit lainnya untuk membuat titik sinkronisasi selama start-up. Lihat systemd.target(5).

Saat sistem mulai dijalankan (yaitu, init), proses `systemd` mencoba untuk memulai "`/lib/systemd/system/default.target` (biasanya di-symlink ke "`graphical.target`"). Pertama, beberapa unit target khusus (lihat systemd.special(7)) seperti "`local-fs.target`", "`swap.target`", dan "`cryptsetup.target`" ditarik untuk mengait sistems berkas. Kemudian, unit target lainnya juga ditarik oleh dependensi unit target. Untuk detailnya, baca bootup(7).

`systemd` menawarkan fitur kompatibilitas mundur. Skrip boot gaya SysV dalam "`/etc/init.d/rc[0123456S].d/[KS]nama`" masih diurai dan telinit(8) diterjemahkan ke dalam permintaan aktivasi unit systemd.

| Perhatian
Runlevel 2 hingga 4 yang diemulasi semuanya di-symlink ke "`multi-user.target`" yang sama.

### 3.3.2. Login systemd

Ketika seorang pengguna log masuk ke sistem Debian melalui gdm3(8), sshd(8), dsb., `/lib/systemd/system --user` mulai dijalankan sebagai proses manajer layanan pengguna yang dimiliki oleh pengguna yang bersangkitan. Lihat systemd(1).

Proses manajer layanan pengguna `systemd` men-spawn proses secara paralel berdasarkan berkas konfigurasi unit (lihat systemd.unit(5)) dan `user@.service`(5)).

Unit untuk mode pengguna dimuat dari "Path Pencarian Unit Pengguna" yang dijelaskan dalam systemd.unit(5). Yang utama adalah sebagai berikut dalam urutan prioritas:

- "`~/.config/systemd/user/*`": Unit konfigurasi pengguna

- "`/etc/systemd/user/*`": Unit pengguna yang dibuat oleh administrator

- "`/run/systemd/user/*`": Unit runtime

- "`/lib/systemd/user/*`": Unit pengguna yang dipasang oleh manajer paket distribusi

Ini dikelola dengan cara yang sama dengan Bagian 3.3.1, “Init systemd”.

## 3.4. Pesan kernel

Pesan kesalahan kernel yang ditampilkan ke konsol dapat dikonfigurasi dengan mengatur tingkat ambang batasnya.

    # dmesg -n3

Tabel 3.4. Daftar tingkat kesalahan kernel

nilai tingkat kesalahan | nama tingkat kesalahan | arti
--- | --- | ---
0 | KERN_EMERG | sistem tidak dapat digunakan
1 | KERN_ALERT | tindakan harus segera diambil
2 | KERN_CRIT | kondisi kritis
3 | KERN_ERR | kondisi galat
4 | KERN_WARNING | kondisi peringatan
5 | KERN_NOTICE | kondisi normal namun signifikan
6 | KERN_INFO | informasi
7 | KERN_DEBUG | pesan tingkat debug

## 3.5. Pesan sistem

Di bawah `systemd`, baik kernel dan pesan sistem dicatat oleh layanan jurnal `systemd-journald.service` (alias `journald`) baik ke dalam data biner persisten di bawah "`/var/log/journal`" atau ke dalam data biner volatile di bawah "`/run/log/journal/`". Data log biner ini diakses oleh perintah journalctl(1). Misalnya, Anda dapat menampilkan log dari boot terakhir sebagai:

    $ journalctl -b

Tabel 3.5. Daftar cuplikan perintah `journalctl` yang umum

Operasi | Cuplikan perintah
--- | ---
Melihat log untuk layanan-layanan sistem dan kernel dari boot terakhir | "`journalctl -b --system`"
Melihat log untuk layanan pengguna saat ini dari boot terakhir | "`journalctl -b --user`"
Melihat log pekerjaan "`$unit`" dari boot terakhir | "`journalctl -b -u $unit`"
Melihat log pekerjaan "`$unit`" (gaya "`tail -f`") dari boot terakhir | "`journalctl -b -u $unit -f`"

Di bawah `systemd`, utilitas log sistem rsyslogd(8) dapat dihapus. Jika terpasang, ia mengubah perilakunya untuk membaca data log biner volatil (bukan "`/dev/log`" baku pra-systemd) dan untuk membuat data log sistem ASCII permanen tradisional. Ini dapat disesuaikan dengan "`/etc/default/rsyslog`" dan "`/etc/rsyslog.conf`" baik untuk berkas log maupun tampilan layar. Lihat rsyslogd(8) dan rsyslog.conf(5). Lihat juga Bagian 9.3.2, “Penganalisis log”.

## 3.6. Manajemen sistem

`systemd` ini tidak hanya menawarkan sistem init tetapi juga operasi manajemen sistem generik dengan perintah systemctl(1).

Tabel 3.6. Daftar cuplikan perintah `systemctl` umum

Operasi | Cuplikan perintah
--- | ---
Daftar semua tipe unit yang tersedia | "`systemctl list-units --type=help`"
Daftar semua unit target dalam memori | "`systemctl list-units --type=target`"
Daftar semua unit layanan dalam memori | "`systemctl list-units --type=service`"
Daftar semua unit perangkat dalam memori | "`systemctl list-units --type=device`"
Cantumkan semua unit mount dalam memori | "`systemctl list-units --type=mount`"
Daftar semua unit soket dalam memori | "`systemctl list-sockets`"
Daftar semua unit timer dalam memori | "`systemctl list-timers`"
Start "`$unit`" | "`systemctl start $unit`"
Stop "`$unit`" | "`systemctl stop $unit`"
Memuat ulang konfigurasi spesifik layanan | "`systemctl reload $unit`"
Menghentikan dan memulai semua "`$unit`" | "`systemctl restart $unit`"
Memulai "`$unit`" dan menghentikan yang lainnya | "`systemctl isolate $unit`"
Beralih ke "`grafis`" (sistem GUI) | "`systemctl isolate graphical`"
Beralih ke "`multi-user`" (sistem CLI) | "`systemctl isolate multi-user`"
Beralih ke "`penyelamatan`" (sistem CLI pengguna tunggal) | "`systemctl isolate rescue`"
Mengirim sinyal kill ke "`$unit`" | "`systemctl kill $unit`"
Memeriksa apakah layanan "`$unit`" aktif | "`systemctl is-active $unit`"
Memeriksa apakah layanan "`$unit`" gagal | "`systemctl is-failed $unit`"
Memeriksa status "`$unit|$PID|device`" | "`systemctl status $unit|$PID|$device`"
Menampilkan properti "`$unit|$job`" | "`systemctl show $unit|$job`"
Me-reset "`$unit`" yang gagal | "`systemctl reset-failed $unit"`
Menampilkan daftar dependensi semua layanan unit | "`systemctl list-dependencies --all`"
Menampilkan daftar berkas unit yang dipasang pada sistem | "`systemctl list-unit-files`"
Memfungsikan "`$unit`" (menambahkan symlink) | "`systemctl enable $unit`"
Menonaktifkan "`$unit`" (menghapus symlink) | "`systemctl disable $unit`"
Membuka mask "`$unit`" (menghapus symlink ke "`/dev/null`") | "`systemctl unmask $unit`"
Me-mask "`$unit`" (menambahkan symlink ke "`/dev/null`") | "`systemctl mask $unit`"
Mendapatkan pengaturan target baku | "`systemctl get-default`"
Mengatur target baku ke "`grafis`" (sistem GUI) | "`systemctl set-default graphical`"
Mengatur target baku ke "`multi-user`" (sistem CLI) | "`systemctl set-default multi-user`"
Tampilkan lingkungan kerja | "`systemctl show-environment`"
Menata "`variabel`" lingkungan pekerjaan ke "`nilai`" | "`systemctl set-environment variable=value`"
Menghapus tatanan "`variabel`" lingkungan pekerjaan | "`systemctl unset-environment variable`"
Memuat ulang semua berkas unit dan daemon | "`systemctl daemon-reload`"
Mematikan sistem | "`systemctl poweroff`"
Mematikan dan reboot sistem | "`systemctl reboot`"
Suspensikan sistem | "`systemctl suspend`"
Hibernasikan sistem | "`systemctl hibernate`"

Di sini, "`$unit`" dalam contoh di atas mungkin nama unit tunggal (akhiran seperti `.service` dan `.target` adalah opsional) atau, dalam banyak kasus, beberapa spesifikasi unit (glob gaya shell "`*`", "`?`", "`[]`" menggunakan fnmatch(3) yang akan dicocokkan dengan nama-nama utama dari semua unit yang saat ini dalam memori).

Perintah yang mengubah keadaan sistem dalam contoh-contoh di atas biasanya didahului oleh "`sudo`" untuk mendapatkan hak administratif yang diperlukan.

Keluaran dari "`systemctl status $unit|$PID|$device`" menggunakan warna titik ("●") untuk meringkas keadaan unit secara sekilas.

- "●" putih mengindikasikan keadaan "tidak aktif" atau "menonaktifkan".

- "●" merah mengindikasikan keadaan "gagal" atau "galat".

- "●" hijau mengindikasikan keadaan "aktif", "memuat ulang", atau "mengaktifkan".

## 3.7. Pemantau sistem lainnya

Berikut adalah daftar cuplikan perintah pemantauan lain di bawah `systemd`. Silakan baca halaman man yang bersangkutan termasuk cgroups(7).

Tabel 3.7. Daftar cuplikan perintah pemantauan lainnya di bawah `systemd`

Operasi | Cuplikan perintah
--- | ---
Menampilkan waktu yang dihabiskan untuk setiap langkah inisialisasi | "`systemd-analyze time`"
Daftar semua unit pada saat menginisialisasi | "`systemd-analyze blame`"
Memuat dan mendeteksi kesalahan dalam berkas "`$unit`" | "`systemd-analyze verify $unit`"
Tampilkan informasi status runtime singkat dari pengguna sesi pemanggil | "`loginctl user-status`"
Tampilkan informasi status runtime singkat dari sesi pemanggil | "`loginctl session-status`"
Melacak proses boot oleh cgroups | "`systemd-cgls`"
Melacak proses boot oleh cgroups | "`ps xawf -eo pid,user,cgroup,args`"
Melacak proses boot oleh cgroups | Membaca sysfs di bawah "`/sys/fs/cgroup/`"

## 3.8. Konfigurasi sistem

### 3.8.1. Nama host

Kernel mempertahankan nama host sistem. Unit sistem yang dimulai oleh `systemd-hostnamed.service` menetapkan nama host sistem pada waktu boot ke nama yang disimpan dalam "`/etc/hostname`". Berkas ini harus berisi hanya nama host sistem, bukan suatu FQDN (fully qualified domain name).

Untuk mencetak nama host saat ini jalankan hostname(1) tanpa argumen.

### 3.8.2. Sistem berkas

Opsi kait disk normal dan sistem berkas jaringan diatur dalam "`/etc/fstab`". Lihat fstab(5) dan Bagian 9.6.7, “Optimalisasi sistem berkas dengan opsi mount”.

Konfigurasi sistem berkas terenkripsi diatur dalam "`/etc/crypttab`". Lihat crypttab(5)

Konfigurasi perangkat lunak RAID dengan mdadm(8) diatur dalam "`/etc/mdadm/mdadm.conf`". Lihat mdadm.conf(5).

| Awas
Setelah mengait semua sistem berkas, berkas-berkas sementara di "`/tmp`", "`/var/lock`", dan "`/var/run`" dibersihkan setiap kali boot.

### 3.8.3. Inisialisasi antarmuka jaringan

Antarmuka jaringan biasanya diinisialisasi dalam "`networking.service`" untuk antarmuka `lo` dan "`NetworkManager.service`" untuk antarmuka lain pada sistem desktop Debian modern di bawah `systemd`.

Lihat Bab 5, Penyiapan jaringan untuk cara mengonfigurasi mereka.

### 3.8.4. Inisialisasi sistem cloud

Instansi sistem cloud dapat diluncurkan sebagai klon dari "Image Cloud Resmi Debian" atau image serupa. Untuk instansi sistem seperti itu, kepribadian seperti nama host, sistem berkas, jaringan, lokal, kunci SSH, pengguna, dan grup dapat dikonfigurasikan menggunakan fungsionalitas yang disediakan oleh paket `cloud-init` dan `netplan.io` dengan berbagai sumber data seperti berkas yang diletakkan di dalam image sistem asli dan data eksternal yang disediakan selama peluncuran. Paket-paket ini memungkinkan konfigurasi sistem deklaratif menggunakan data YAML.

Lihat lebih lanjut di "Cloud Computing dengan Debian dan turunannya", "Dokumentasi Cloud-init", dan Bagian 5.4, “Konfigurasi jaringan modern untuk cloud”.

### 3.8.5. Contoh penyesuaian untuk mengubah layanan sshd

Dengan instalasi baku, banyak layanan jaringan (lihat Bab 6, Aplikasi jaringan) dimulai sebagai proses daemon setelah `network.target` pada waktu boot oleh `systemd`. "`sshd`" tidak terkecuali. Mari kita ubah ini menjadi memulai "`sshd`" saat dibutuhkan sebagai contoh kustomisasi.

Pertama, nonaktifkan unit layanan yang dipasang sistem.

     $ sudo systemctl stop sshd.service
     $ sudo systemctl mask sshd.service

Sistem aktivasi soket on-demand dari layanan Unix klasik adalah melalui superserver `inetd` (atau `xinetd`). Di bawah `systemd`, yang setara dapat diaktifkan dengan menambahkan berkas konfigurasi unit *.socket dan *.service.

`sshd.socket` untuk menentukan soket tempat mendengarkan

    [Unit]
    Description=SSH Socket for Per-Connection Servers

    [Socket]
    ListenStream=22
    Accept=yes

    [Install]
    WantedBy=sockets.target

`sshd@.service` sebagai berkas layanan pencocokan `sshd.socket`

    [Unit]
    Description=SSH Per-Connection Server

    [Service]
    ExecStart=-/usr/sbin/sshd -i
    StandardInput=socket

Lalu muat ulang.

     $ sudo systemctl daemon-reload

## 3.9. Sistem udev

Sistem udev menyediakan mekanisme untuk penemuan dan inisialisasi perangkat keras otomatis (lihat udev(7)) sejak kernel Linux 2.6. Setelah penemuan setiap perangkat oleh kernel, sistem udev memulai proses pengguna yang menggunakan informasi dari sistem berkas sysfs (lihat Bagian 1.2.12, “procfs dan sysfs”), memuat modul kernel yang diperlukan untuk mendukungnya menggunakan program modprobe(8) (lihat Bagian 3.10, “Inisialisasi modul kernel”), dan menciptakan simpul perangkat yang sesuai.

| Tip

Jika "`/lib/modules/versi-kernel/modules.dep`" tidak dihasilkan dengan benar oleh depmod(8) karena suatu alasan, modul mungkin tidak dimuat seperti yang diharapkan oleh sistem udev. Jalankan "`depmod -a`" untuk memperbaikinya.

Untuk aturan pengaitan di "`/etc/fstab`", simpul perangkat tidak perlu statis. Anda dapat menggunakan UUID untuk mengait perangkat menggantikan nama perangkat seperti "`/dev/sda`". Lihat Bagian 9.6.3, “Mengakses partisi menggunakan UUID”.

Karena sistem udev agak merupakan target bergerak, saya meninggalkan rincian ke dokumentasi lain dan menjelaskan informasi minimum di sini.

| Awas
Jangan mencoba menjalankan program yang berjalan lama seperti skrip backup dengan `RUN` dalam aturan udev seperti yang disebutkan dalam udev(7). Buatlah berkas systemd.service(5) yang tepat dan aktifkan berkas tersebut sebagai pengganti. Lihat Bagian 10.2.3.2, “Pencadangan yang dipicu kejadian mount”.

## 3.10. Inisialisasi modul kernel

Program modprobe(8) memungkinkan kita untuk mengonfigurasi kernel Linux yang berjalan dari proses pengguna dengan menambahkan dan menghapus modul kernel. Sistem udev (lihat Bagian 3.9, “Sistem udev”) mengotomatiskan pemanggilannya untuk membantu inisialisasi modul kernel.

Ada modul non-perangkat keras dan modul driver perangkat keras khusus sebagai berikut yang perlu dimuat sebelumnya dengan mencantumkannya dalam berkas "`/etc/modules`" (lihat modules(5)).

- Modul TUN/TAP yang menyediakan perangkat jaringan Point-to-Point (TUN) virtual dan perangkat jaringan Ethernet virtual (TAP),

- Modul netfilter yang menyediakan kemampuan firewall netfilter (iptables(8), Bagian 5.7, “Infrastruktur netfilter”), dan

- modul driver timer watchdog.

Berkas konfigurasi untuk program modprobe(8) terletak di bawah direktori "`/etc/modprobes.d/`" seperti yang dijelaskan dalam modprobe.conf(5). (Jika Anda ingin menghindari beberapa modul kernel dimuat secara otomatis, pertimbangkan untuk memasukkannya ke dalam berkas "`/etc/modprobes.d/blacklist`".)

Berkas "`/lib/modules/versi/modules.dep`" yang dihasilkan oleh program depmod(8) menjelaskan dependensi modul yang digunakan oleh program modprobe(8).

| Catatan
Jika Anda mengalami masalah pemuatan modul dengan pemuatan modul waktu boot atau dengan modprobe(8), "`depmod -a`" dapat menyelesaikan masalah ini dengan merekonstruksi "`modules.dep`".

Program modinfo(8) menunjukkan informasi tentang suatu modul kernel Linux.

Program lsmod(8) dengan baik memformat isi "`/proc/modules`", menunjukkan modul kernel apa yang saat ini dimuat.

| Tip

Anda dapat mengidentifikasi perangkat keras yang tepat pada sistem Anda. Lihat Bagian 9.5.3, “Identifikasi perangkat keras”.

Anda dapat mengonfigurasi perangkat keras pada waktu boot untuk mengaktifkan fitur perangkat keras yang diharapkan. Lihat Bagian 9.5.4, “Konfigurasi perangkat keras”.

Anda mungkin dapat menambahkan dukungan untuk perangkat khusus Anda dengan mengkompilasi ulang kernel. Lihat Bagian 9.10, “Kernel”.

Bab 2. Manajemen paket Debian |  | Bab 4. Kontrol akses dan autentikasi