Memahami perjalanan sistem dari tombol power ditekan hingga layanan berjalan: BIOS/UEFI, GRUB, kernel, initramfs, hingga systemd. Dilengkapi cara mengelola kernel modules, parameter sysctl, dan pemecahan masalah saat boot bermasalah.

Setelah di episode 15 sebelumnya kita membahas Storage Management, LVM, dan Filesystem — bagaimana disk dipartisi, digabung menjadi volume logical, hingga diformat dengan filesystem yang siap dipakai — kalian sekarang tahu bagaimana data disimpan secara fisik. Namun, pernahkah kalian bertanya: dari mana seluruh sistem ini "hidup"? Apa yang terjadi antara tombol power ditekan dan terminal login muncul?
Perjalanan itulah yang disebut boot process — dan di situlah kernel Linux bekerja paling keras sebelum menyerahkan kendali ke systemd. Memahami proses ini bukan sekadar pengetahuan akademis. Saat server produksi tidak kunjung bangun setelah maintenance window, atau saat kalian salah mengubah parameter kernel lalu mesin tidak bisa boot, pemahaman ini menentukan apakah kalian bisa menyelamatkan sistem dalam hitungan menit atau terpaksa rebuild dari awal.
Di episode 16 ini, kita akan menelusuri setiap tahap boot — dari firmware, bootloader, kernel, initramfs, hingga systemd. Lalu kita akan masuk ke dunia kernel itu sendiri: modul-modul yang bisa dimuat dan dilepas seperti puzzle, serta parameter runtime yang bisa kalian ubah lewat sysctl. Di akhir episode, kalian akan memiliki peta jalan yang jelas untuk mendiagnosis dan memperbaiki masalah boot.
Boot process Linux dapat dibagi menjadi beberapa tahap besar. Bayangkan seperti proses penerimaan penumpang pesawat: ada yang menyalakan daya, ada yang menyusun bagasi, ada yang menyalakan mesin, dan baru setelah semua cek selesai pesawat lepas landas. Linux melakukan hal yang sama dengan ketat dan berurutan.
Power On
│
▼
1. Firmware (BIOS/UEFI) ── POST, cek hardware, pilih boot device
│
▼
2. Bootloader (GRUB) ── tampilkan menu, pilih kernel & parameter
│
▼
3. Kernel ── dekompresi, inisialisasi CPU/memori/driver inti
│
▼
4. initramfs ── mount root filesystem, muat driver yang dibutuhkan
│
▼
5. systemd (PID 1) ── jalankan target & unit layanan
│
▼
6. Login prompt / services siap dipakaiTahap 1 — Firmware (BIOS/UEFI). Sebelum ada sistem operasi, ada firmware yang tertanam di motherboard. BIOS (legacy) atau UEFI (modern) melakukan Power-On Self-Test (POST), mengenali hardware dasar, lalu mencari boot device. Perbedaan penting: BIOS membaca sektor pertama disk secara langsung, sedangkan UEFI memuat file EFI yang hidup di partisi khusus bernama EFI System Partition (ESP, biasanya /dev/sda1 dengan filesystem FAT32).
Tahap 2 — Bootloader (GRUB). GRUB (GRand Unified Bootloader) adalah penghubung antara firmware dan kernel. Ia bertugas menampilkan menu boot, menemukan kernel yang tersimpan di disk, lalu melompat ke sana. GRUB menyimpan konfigurasinya di /boot/grub/grub.cfg — tapi file ini tidak boleh diedit langsung, melainkan dihasilkan dari /etc/default/grub dan skrip di /etc/grub.d/.
Tahap 3 — Kernel. Kernel Linux adalah program inti yang di-dekompresi ke memori dan mulai menginisialisasi hal paling fundamental: tabel interupsi, scheduler CPU, dan manajemen memori. Pada titik ini kernel belum bisa mengakses filesystem root secara penuh karena driver-nya belum tentu tersedia.
Tahap 4 — initramfs. Di sinilah letak salah satu konsep yang paling sering disalahpahami. Initial RAM filesystem adalah filesystem kecil yang dimuat ke RAM bersama kernel. Isinya adalah driver dan alat yang dibutuhkan untuk menemukan dan me-mount disk root yang sesungguhnya — misalnya driver NVMe, driver LVM, atau driver enkripsi LUKS. Analoginya: kernel seperti pilot yang butuh copilot (initramfs) untuk menyetel navigasi sebelum menyerahkan pesawat sepenuhnya ke sistem penuh.
Tahap 5 — systemd. Setelah root filesystem berhasil di-mount, systemd mengambil alih sebagai PID 1 — proses pertama yang akan menjadi "ibu" dari semua proses lain. systemd tidak langsung menjalankan semua layanan; ia mengikuti hierarki target, yang akan kita bahas sebentar lagi.
Note
Ingat tiga istilah kunci ini agar tidak rancu: kernel adalah program inti yang mengelola hardware; initramfs adalah filesystem sementara yang membantu kernel menemukan root disk; dan systemd adalah init system yang menjalankan layanan setelah sistem penuh siap. Urutan ini tidak bisa ditukar.
Sebelum era systemd, boot berjalan melalui runlevel 0–6 yang kaku. systemd menggantinya dengan targets — unit logis yang merupakan kumpulan layanan dan dependensinya. Cara membaca urutan boot di systemd: ikuti target default.target.
systemctl get-default
systemctl list-units --type=target --state=activesystemctl list-dependencies default.targetHasilnya akan memperlihatkan rantai: default.target → multi-user.target (atau graphical.target) → basic.target → sysinit.target → ... hingga unit-unit paling dasar. Urutan ini dijamin oleh dependency graph, sehingga systemd bisa memparalelkan layanan yang tidak saling bergantung — inilah salah satu alasan boot Linux modern jauh lebih cepat dari pendahulunya.
Untuk mengubah target yang dijalankan saat boot, gunakan:
systemctl set-default multi-user.target
systemctl get-defaultSemua pilihan boot — kernel mana yang dipakai, parameter apa yang diberikan — diatur oleh GRUB. File konfigurasi utama yang boleh diedit adalah /etc/default/grub:
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_CMDLINE_LINUX="rhgb quiet"
GRUB_DISABLE_RECOVERY="true"Dua variabel yang paling sering kalian sentuh:
| Variabel | Fungsi | Contoh |
|---|---|---|
GRUB_DEFAULT | Entry boot yang dipilih secara default | 0, 1, atau saved |
GRUB_TIMEOUT | Durasi menu tampil sebelum boot otomatis (detik) | 5, 10 |
GRUB_CMDLINE_LINUX | Parameter kernel yang ditambahkan ke semua entry | "quiet", "selinux=0" |
GRUB_CMDLINE_LINUX_DEFAULT | Parameter untuk entry boot normal (bukan recovery) | "quiet splash" |
Setelah mengubah file ini, kalian wajib meregenerasi konfigurasi GRUB. Nama perintahnya beda antar distro — ini salah satu jebakan klasik:
sudo update-grubWarning
Lupa menjalankan update-grub setelah mengedit /etc/default/grub adalah kesalahan paling umum di dunia GRUB. Konfigurasi kalian akan tampak berubah di file, tapi saat reboot GRUB tetap membaca grub.cfg yang lama. Selalu regenerasi, lalu verifikasi dengan grep menuentry /boot/grub/grub.cfg.
Recovery Mode & Single-User Mode. Saat sistem gagal boot karena layanan bermasalah atau root password hilang, kalian bisa masuk ke mode darurat:
rescue.target dan menyediakan menu untuk memperbaiki package, fsck, atau masuk ke root shell.systemd.unit=rescue.target atau init=/bin/bash) — sistem boot minimal tanpa layanan jaringan, hanya satu root shell. Ini adalah "kunci pas" terakhir kalian.Caranya: di menu GRUB, tekan e untuk mengedit entry boot, lalu tambahkan systemd.unit=rescue.target di akhir baris yang dimulai dengan linux. Tekan Ctrl+X untuk boot.
linux /vmlinuz-... root=/dev/mapper/vg-root ro systemd.unit=rescue.targetCaution
Single-user mode memberi root shell tanpa autentikasi ke siapa pun yang bisa menekan tombol di console fisik. Di server di datacenter, pastikan console fisik dan out-of-band management (iLO/iDRAC/IPMI) dilindungi aksesnya. Jangan pernah meninggalkan console terbuka tanpa pengawasan.
Setelah boot sukses, mari kita kenali kernel yang sedang berjalan. Perintah paling pertama yang harus kalian hafal:
uname -r # versi kernel
uname -m # arsitektur CPU (x86_64, aarch64)
uname -a # seluruh informasi ringkasContoh output uname -r:
6.8.0-31-genericBacaan 6.8.0-31-generic berarti: kernel seri 6.8, patchlevel 0, dan build .31 dari distro Ubuntu dengan flavour generic. Ketika masalah berhubungan dengan hardware, versi kernel inilah yang kalian sebutkan di forum atau saat membuat laporan bug.
Log Kernel dengan dmesg. Kernel berbicara lewat dmesg — ring buffer yang berisi pesan sejak sistem boot. Ini adalah jendela pertama untuk melihat masalah hardware:
sudo dmesg | tail -20sudo dmesg | grep -iE "error|fail|oom"sudo dmesg -T | tail -20Log kernel juga tersimpan permanen di /var/log/kern.log (Debian/Ubuntu) atau di dalam journal: journalctl -k. Untuk menyelidiki boot terakhir, journalctl -b adalah kawan terbaik kalian — dibahas detail di episode 14 tentang systemd & journal.
Kernel Linux dirancang modular — tidak semua driver dimuat permanen, melainkan sebagai modul yang bisa dimuat dan dilepas saat diperlukan. Analogikan seperti laptop yang support-nya dipasang saat dibutuhkan dan dicabut saat selesai, tanpa perlu mematikan laptop.
| Perintah | Fungsi |
|---|---|
lsmod | Tampilkan modul yang sedang dimuat |
modinfo <modul> | Detail modul: versi, license, dependensi, deskripsi |
modprobe <modul> | Muat modul beserta dependensinya |
modprobe -r <modul> | Lepas modul |
ls /lib/modules/$(uname -r) | Direktori berisi semua modul untuk kernel ini |
Mari kita praktikkan. Misalnya modul nf_tables yang dipakai firewall nftables:
lsmod | grep nf_tablesmodinfo nf_tablessudo modprobe nf_tablesUntuk memuat modul secara permanen saat boot, jangan menulisnya ke rc.local atau init script — gunakan file di /etc/modules-load.d/:
tunModul tun (di atas) sangat penting untuk OpenVPN dan network tunneling — topik yang selaras dengan episode networking nanti. Setelah file dibuat, modul akan dimuat otomatis saat boot berikutnya.
Tip
Sebelum menambahkan modul ke /etc/modules-load.d/, uji dulu dengan modprobe lalu cek lsmod. Jika modul tidak ada di direktori /lib/modules/$(uname -r), berarti modul tersebut tidak tersedia untuk kernel kalian — biasanya karena package linux-modules-extra belum terinstal atau kernel terlalu tua.
sysctl: Mengubah Perilaku Kernel Tanpa RebootParameter runtime kernel disimpan sebagai file teks di /proc/sys. Alat yang memudahkan kalian membacanya dan mengubahnya adalah sysctl. Ini adalah cara modern untuk mengatur perilaku seperti IP forwarding (agar mesin bisa jadi router), TCP tuning, hingga perlindungan terhadap serangan SYN flood.
sysctl net.ipv4.ip_forwardsudo sysctl -w net.ipv4.ip_forward=1Perubahan dengan sysctl -w hanya berlaku hingga reboot. Untuk membuatnya permanen, tulis ke /etc/sysctl.d/ — file dengan nomor urut dieksekusi terlebih dahulu:
net.ipv4.ip_forward = 1sudo sysctl --system/proc/sys bisa langsung dibaca seperti file biasa — contoh cat /proc/sys/net/ipv4/ip_forward. Hierarki direktori di /proc/sys persis mencerminkan nama parameter sysctl: titik (.) menggantikan garis miring (/).
Berikut jebakan yang paling sering membuat server gagal boot atau kernel "ngambek":
1. Lupa update-grub setelah mengubah GRUB. Sudah kita bahas — perubahan di /etc/default/grub tidak berlaku sampai grub.cfg di-regenerasi. Sering terjadi saat kalian menghapus parameter kernel atau mengubah timeout.
2. Menambah parameter kernel yang salah menyebabkan boot hang di tahap kernel. Solusinya: boot ulang, di menu GRUB tekan e, hapus parameter yang mencurigakan dari baris linux, lalu boot. Parameter tidak valid biasanya membuat kernel jatuh ke kernel panic sebelum login muncul.
3. Initramfs tidak sinkron dengan kernel. Saat kalian upgrade kernel atau pindah ke kernel baru, initramfs harus di-rebuild. Distro umumnya melakukannya otomatis via hook (Debian/Ubuntu) atau dracut (RHEL), tapi jika kalian memindahkan root filesystem ke LVM baru (kelanjutan episode 15) dan lupa menjalankan mkinitrd/dracut --force, sistem akan gagal menemukan root disk:
sudo update-initramfs -u -k allsudo dracut --force --regenerate-all4. Debug kernel panic yang cryptic. Catat baris terakhir dari panic — biasanya berisi modul atau driver yang bermasalah, misalnya Kernel panic - not syncing: Attempted to kill init! atau kegagalan pada driver nouveau. Gunakan dmesg dari sesi aman atau mode single-user untuk mendiagnosis.
5. Menjalankan modprobe -r pada modul yang masih dipakai. Kernel akan menolak dengan Module is in use atau justru merusak fungsionalitas. Cek dulu dengan lsmod | grep <modul> apakah ada proses yang menggunakan modul tersebut.
Pada episode 16 ini, kalian telah menyusun peta jalan lengkap perjalanan boot Linux: dari firmware (BIOS/UEFI) yang menghidupkan mesin, GRUB yang memilih kernel, kernel yang menginisialisasi inti sistem, initramfs yang menemukan root disk, hingga systemd sebagai PID 1 yang menyalakan target dan layanan. Kalian juga belajar mengelola kernel modules dengan lsmod, modprobe, dan modinfo, menyesuaikan perilaku runtime kernel lewat sysctl di /proc/sys, serta menyelamatkan sistem lewat recovery mode dan single-user mode.
Poin kunci yang perlu kalian bawa pulang:
/etc/default/grub, lalu selalu jalankan update-grub (Debian) atau grub2-mkconfig (RHEL) — tidak ada jalan pintas.uname -r untuk identitas kernel, dmesg untuk kesehatan kernel, journalctl -k untuk catatan permanen.modprobe, di-persisten-kan lewat /etc/modules-load.d/.sysctl -w dan permanen via /etc/sysctl.d/.Di episode 17 selanjutnya kita akan keluar dari dalam mesin dan mulai berkomunikasi dengan mesin lain lewat topik Networking Fundamentals & Diagnostic Tools. Kita akan membongkar ip addr, ip route, ping, traceroute, DNS lookup, hingga ss untuk memeriksa port yang terbuka — fondasi wajib sebelum kalian memegang SSH, firewall, dan layanan jaringan di episode-episode berikutnya. Sampai jumpa!