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 kernelBentuk kerjanya
Penjadwalan prosesmembagi waktu CPU kepada seluruh program yang berjalan
Manajemen memorimemberi tiap proses alamat memori virtual yang terlindungi
Driver perangkatmengendalikan diska, kartu jaringan, keyboard, dan layar
Sistem berkasmembaca serta menulis berkas pada berbagai format
Tumpukan jaringanmenerapkan protokol TCP/IP dari kartu jaringan sampai aplikasi
Penegakan izinmemeriksa 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:

bash
ls --version | head -n 2
bash --version | head -n 1

Output yang Dihasilkan:

text
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:

  1. Baris 1 (ls (GNU coreutils) 9.7): program ls ternyata milik paket GNU coreutils — utilitas harian kita berasal dari proyek GNU, bukan dari tim kernel.
  2. Baris 2 (Packaged by Debian (9.7-3)): utilitas yang sama dikemas dan diuji ulang oleh Debian, distro tempat contoh dijalankan.
  3. 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:

LapisanIsiContoh
Perangkat kerasCPU, RAM, diska, kartu jaringan—
Kernelpenjadwalan, memori, driver, jaringanLinux
System callgerbang layanan dari user spaceopen(), read(), write()
Pustaka sistempenerjemah system call untuk programglibc (GNU C Library)
Shell dan utilitasbahasa perintah serta alat harianbash, GNU coreutils
Aplikasi dan layananprogram yang kita jalankanGNOME, Firefox, nginx

Perjalanan Satu Perintah dari Enter sampai Layar #

Untuk menyatukan gambaran, mari kita ikuti perjalanan perintah ls langkah demi langkah:

  1. Terminal mengirim teks ls kepada shell.
  2. Shell mencari program ls di daftar direktori yang tercatat pada variabel PATH.
  3. Shell meminta kernel menjalankan program tersebut: kernel menduplikasi proses shell, lalu mengganti salinan itu dengan program ls.
  4. Program ls memanggil system call untuk membaca isi direktori kerja.
  5. Kernel meminta driver sistem berkas membaca data dari diska, lalu menyerahkan hasilnya kepada ls.
  6. ls menyusun daftar nama berkas dan memanggil system call write() untuk mencetaknya ke layar.
  7. 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:

KomponenPeranContoh
Init systemproses pertama; menjalankan dan mengawasi layanansystemd
Service dan daemonprogram yang bekerja di latar belakangsshd, nginx
Desktop environmentantarmuka grafis lengkapGNOME, KDE Plasma
Display serverperantara aplikasi grafis dengan kernelX11, Wayland
Package managermemasang perangkat lunak dari repositoriapt, 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.