Ketika kita mengetik ls lalu menekan Enter, tidak ada satu program tunggal yang bekerja sendirian — ada lapisan demi lapisan yang bekerja sama, mulai dari terminal, shell, sampai penggerak diska. Sistem operasi Linux adalah orkestra itu: kernel, pustaka, shell, utilitas, hingga layanan latar belakang. Pada Chapter ini kita petakan lapisan-lapisan tersebut beserta perannya, supaya istilah “kernel” dan “sistem operasi” tidak lagi tertukar.
Tugas-Tugas Inti Kernel #
Kernel adalah satu-satunya program yang boleh menyentuh perangkat keras secara langsung. Seluruh program lain berjalan di wilayah yang disebut user space dan harus meminta layanan kernel melalui mekanisme bernama system call — gerbang resmi menuju wilayah kernel (kernel space). Pembagian tugas inti kernel dirangkum berikut:
| Tugas kernel | Bentuk kerjanya |
|---|---|
| Penjadwalan proses | membagi waktu CPU kepada seluruh program yang berjalan |
| Manajemen memori | memberi tiap proses alamat memori virtual yang terlindungi |
| Driver perangkat | mengendalikan diska, kartu jaringan, keyboard, dan layar |
| Sistem berkas | membaca serta menulis berkas pada berbagai format |
| Tumpukan jaringan | menerapkan protokol TCP/IP dari kartu jaringan sampai aplikasi |
| Penegakan izin | memeriksa permission pada setiap operasi yang sensitif |
Ketika sebuah program membuka berkas, program tidak bicara langsung kepada diska: program memanggil system call open(), kernel memeriksa izinnya, baru driver perangkat bekerja. Pemisahan inilah yang membuat satu aplikasi yang macet tidak ikut menjatuhkan seluruh sistem — kernel cukup menghentikan proses bermasalah dan melanjutkan pekerjaan yang lain.
Userland: GNU dan Komponen di Atas Kernel #
Seluruh wilayah di atas kernel disebut userland: shell, utilitas harian, pustaka, hingga aplikasi grafis. Porsi terbesar utilitas dasar pada distro umum berasal dari proyek GNU — inilah asal nama GNU/Linux. Kita bisa membuktikannya sendiri dengan meminta identitas dua program yang paling akrab:
ls --version | head -n 2
bash --version | head -n 1Output yang Dihasilkan:
ls (GNU coreutils) 9.7
Packaged by Debian (9.7-3)
GNU bash, version 5.2.37(1)-release (x86_64-pc-linux-gnu)Option --version meminta program melaporkan identitas dirinya. Tanda | (pipe) mengalirkan keluaran yang panjang ke head, yang hanya menampilkan beberapa baris pertama — pola aliran ini akan kita praktikkan tuntas pada Section Command Line. Mari kita baca hasilnya baris per baris:
- Baris 1 (
ls (GNU coreutils) 9.7): programlsternyata milik paket GNU coreutils — utilitas harian kita berasal dari proyek GNU, bukan dari tim kernel. - Baris 2 (
Packaged by Debian (9.7-3)): utilitas yang sama dikemas dan diuji ulang oleh Debian, distro tempat contoh dijalankan. - Baris 3 (
GNU bash, version ...): shell bash juga buatan proyek GNU.
Angka versi pasti berbeda di komputer kita; yang penting adalah polanya. Satu perintah sederhana langsung melibatkan dua pihak di luar kernel — proyek GNU dan tim distro. Posisi tiap lapisan dirangkum berikut:
| Lapisan | Isi | Contoh |
|---|---|---|
| Perangkat keras | CPU, RAM, diska, kartu jaringan | — |
| Kernel | penjadwalan, memori, driver, jaringan | Linux |
| System call | gerbang layanan dari user space | open(), read(), write() |
| Pustaka sistem | penerjemah system call untuk program | glibc (GNU C Library) |
| Shell dan utilitas | bahasa perintah serta alat harian | bash, GNU coreutils |
| Aplikasi dan layanan | program yang kita jalankan | GNOME, Firefox, nginx |
Perjalanan Satu Perintah dari Enter sampai Layar #
Untuk menyatukan gambaran, mari kita ikuti perjalanan perintah ls langkah demi langkah:
- Terminal mengirim teks
lskepada shell. - Shell mencari program
lsdi daftar direktori yang tercatat pada variabelPATH. - Shell meminta kernel menjalankan program tersebut: kernel menduplikasi proses shell, lalu mengganti salinan itu dengan program
ls. - Program
lsmemanggil system call untuk membaca isi direktori kerja. - Kernel meminta driver sistem berkas membaca data dari diska, lalu menyerahkan hasilnya kepada
ls. lsmenyusun daftar nama berkas dan memanggil system callwrite()untuk mencetaknya ke layar.- Prompt kembali muncul — shell siap menerima perintah berikutnya.
Seluruh perjalanan itu selesai dalam sepersekian detik, tetapi melibatkan tiga lapisan sekaligus. Pemahaman rantai ini sangat membantu saat men-debug: pesan error dari lapisan mana pun bisa kita lokalisasi dengan jauh lebih cepat.
Init System, Package Manager, dan Layanan #
Beberapa komponen userland perlu disebut khusus karena perannya sentral. Setelah kernel selesai memuat driver saat komputer menyala, kernel menjalankan proses pertama bernama init system — pada mayoritas distro modern yaitu systemd — yang kemudian menyalakan layanan jaringan, login, dan tampilan grafis. Package manager menghubungkan sistem dengan repositori distro. Ringkasan komponennya:
| Komponen | Peran | Contoh |
|---|---|---|
| Init system | proses pertama; menjalankan dan mengawasi layanan | systemd |
| Service dan daemon | program yang bekerja di latar belakang | sshd, nginx |
| Desktop environment | antarmuka grafis lengkap | GNOME, KDE Plasma |
| Display server | perantara aplikasi grafis dengan kernel | X11, Wayland |
| Package manager | memasang perangkat lunak dari repositori | apt, dnf, pacman |
Tidak ada satu pun komponen pada tabel di atas yang menjadi bagian kernel. Kernel bahkan bisa menjalankan sistem tanpa tampilan grafis sama sekali — pola server headless yang sepenuhnya kita kelola lewat terminal. Init system akan dibedah tuntas pada Section systemd dan Services, dan package manager pada Section Package Management.
Versi Kernel dan Ritme Rilisnya #
Kernel Linux diberi nomor seri — saat ini berkembang pada seri 6.x — dengan rilis utama baru kira-kira setiap dua hingga tiga bulan. Rilis utama selanjutnya dirawat sebagai cabang stabil yang hanya menerima perbaikan, dan distro umumnya menambal cabang stabil pilihannya sesuai kebutuhan. Versi kernel yang sedang berjalan dapat dilihat dengan uname -r; keluarannya berbeda-beda di tiap mesin, sehingga tidak kita tampilkan di sini. Seluruh rilis diumumkan di kernel.org
, dokumentasi resminya tersedia di docs.kernel.org
, dan perilaku system call uname dispesifikasikan pada halaman manualnya
.
Kernel, perkakas GNU, systemd, dan package manager dirakit dari kode yang lisensinya sengaja dibuat terbuka. Bagaimana lisensi semacam GPL bekerja, serta apa kewajibannya bagi kita dan bagi perusahaan, adalah topik Chapter Linux, Open Source, dan Lisensi.