Mengapa Sistem Operasi Tidak Langsung “Terbang”? Rahasia di Balik Fase Booting BIOS

Kompilasi Oleh : Reza Ervani bin Asmanu

Bagi banyak pengguna komputer, proses booting hanyalah menunggu logo produsen muncul hingga masuk ke layar login. Namun, bagi seorang pengembang sistem operasi (OS), fase ini adalah momen paling krusial. Sering muncul pertanyaan: Jika kita sudah bisa memuat Kernel ke RAM, mengapa kita tidak langsung menjalankannya saja?

Mengapa OS besar seperti Linux, Windows, atau Minix seolah-olah “singgah sebentar” di BIOS sebelum benar-benar mengambil alih kendali? Jawabannya terletak pada persiapan infrastruktur hardware yang sangat kompleks.


1. Inventarisasi Hardware: “Belanja Data” di Real Mode

Saat komputer menyala, CPU berada dalam Real Mode (16-bit). Di mode ini, CPU sangat terbatas, namun memiliki satu keistimewaan: ia bisa berkomunikasi langsung dengan BIOS melalui sistem Interrupt.

OS modern menggunakan kesempatan ini untuk melakukan “belanja data” atau inventarisasi hardware sebelum pindah ke mode yang lebih canggih.

Memetakan Memori (Memory Mapping)

OS tidak boleh menebak berapa besar RAM yang tersedia. Melalui instruksi int 0x15, eax=0xE820, OS meminta BIOS memberikan peta jalan (map) memori.

  • Tujuan: Mengetahui area mana yang berisi RAM kosong, area mana yang dipesan oleh hardware (seperti kartu grafis), dan area mana yang rusak. Tanpa peta ini, Kernel bisa saja menulis data ke alamat yang salah dan menyebabkan sistem crash seketika.

Pengaturan Resolusi Layar (VESA VBE)

Pernahkah Anda melihat logo Linux atau Windows yang muncul dengan resolusi tinggi sejak awal? Itu diatur selagi CPU masih di BIOS. OS menggunakan VESA BIOS Extensions (VBE) untuk menentukan resolusi layar. Begitu OS pindah ke mode 32-bit atau 64-bit, fungsi BIOS ini tidak lagi dapat dipanggil.


2. Mengatasi Warisan Sejarah: Jalur A20 (A20 Line)

Komputer modern masih membawa “beban sejarah” dari tahun 1980-an. Secara default, jalur data ke-21 (jalur A20) pada prosesor Intel dinonaktifkan untuk menjaga kompatibilitas dengan komputer purba.

Jika jalur ini tidak diaktifkan secara manual oleh sistem operasi saat masih di BIOS, CPU tidak akan bisa mengakses alamat memori genap secara benar di atas 1 MB. Ini adalah prosedur wajib yang harus dilakukan sebelum Kernel besar dimuat.


3. Menyiapkan “Paspor” Keamanan: GDT dan IDT

Sebelum melompat ke Kernel yang berjalan di Protected Mode (32-bit) atau Long Mode (64-bit), OS harus membangun struktur data yang disebut Global Descriptor Table (GDT).

Analogi: Jika BIOS adalah wilayah tanpa hukum di mana siapa saja bisa mengakses apa saja, maka GDT adalah konstitusi. GDT menentukan area memori mana yang merupakan “Kode Sistem”, mana yang merupakan “Data User”, dan tingkat keamanan (privilege) apa yang dimiliki oleh proses tersebut.


4. Estafet Pemuatan (Multi-Stage Loading)

Sebuah sektor bootloader hanya berukuran 512 byte. Ukuran ini tentu tidak cukup untuk memuat Kernel Linux yang berukuran megabyte dan memiliki fitur kompleks. Oleh karena itu, terjadi proses estafet:

  1. Bootloader Tahap 1: Kode 512 byte yang tugasnya hanya mencari dan memuat Bootloader yang lebih besar.
  2. Bootloader Tahap 2 (misal: GRUB): Memahami sistem file (seperti NTFS atau EXT4), mencari file Kernel, dan memuatnya ke area RAM yang luas.
  3. Kernel: Setelah semua data hardware siap, barulah kendali penuh diserahkan ke Kernel.

Kesimpulan

Proses “singgah” di BIOS bukan karena ketidakefisienan, melainkan sebuah keharusan. BIOS menyediakan jembatan informasi hardware yang tidak akan tersedia lagi setelah CPU masuk ke mode modern. Sistem operasi harus memastikan bahwa mereka memiliki “peta” yang akurat, “izin” yang tepat, dan “jalur” yang terbuka sebelum mulai menjalankan tugas-tugas berat.