Apa Itu LILO (Linux Loader)? Arsitektur, Konfigurasi, dan Perbandingan dengan GRUB
LILO (Linux Loader) adalah bootloader lama untuk sistem operasi Linux dan Unix-like yang memuat kernel langsung dari alamat disk yang disimpan saat instalasi, tanpa memerlukan dukungan driver filesystem selama urutan boot. Ini beroperasi pada tahap pra-OS — baik dari Master Boot Record (MBR) atau sektor boot partisi — dan menyerahkan kontrol CPU ke kernel Linux setelah memuatnya ke dalam memori.
Untuk sebagian besar sistem produksi saat ini, LILO telah digantikan oleh GRUB2. Namun, memahami cara kerjanya secara internal tetap penting bagi para insinyur yang memelihara infrastruktur lama, sistem tertanam, atau server yang terisolasi di mana bootloader yang minimal dan deterministik merupakan pilihan arsitektur yang disengaja.
Cara Kerja Proses Boot LILO pada Level Rendah
Ketika mesin dinyalakan, BIOS menjalankan POST (Power-On Self-Test), kemudian membaca 512 byte pertama dari disk yang dapat di-boot — MBR. Jika LILO terinstal di sana, 512 byte tersebut berisi loader tahap pertama LILO. Urutannya berlangsung sebagai berikut:
- Tahap 1 (kode MBR): BIOS memuat 512 byte dari MBR ke dalam memori di alamat `0x7C00` dan mengalihkan eksekusi ke sana. Stub kecil ini hanya mengetahui satu tugas: menemukan dan memuat Tahap 2.
- Tahap 2 (file map): LILO membaca file map-nya (`/boot/map`), yang ditulis saat instalasi oleh perintah `lilo`. Map ini berisi alamat blok disk absolut dari setiap image kernel dan entri chain-loader. Tidak ada penguraian filesystem yang terjadi di sini — LILO menggunakan alamat sektor LBA/CHS mentah.
- Tampilan menu boot: Jika `prompt` diatur dalam `lilo.conf`, LILO menampilkan menu teks. Direktif `timeout` mengontrol berapa lama ia menunggu sebelum menggunakan default.
- Pemuatan kernel: LILO membaca image kernel dari alamat disk yang telah dihitung sebelumnya ke dalam memori rendah, kemudian mendekompresi dan merelokasikannya.
- Penyerahan kontrol: LILO meneruskan parameter baris perintah kernel dan lokasi RAM disk awal (`initrd`) ke kernel, yang kemudian mengambil alih inisialisasi perangkat keras.
Implikasi arsitektur yang kritis: Karena LILO mengkodekan alamat blok disk absolut saat instalasi, setiap perubahan pada file kernel, tata letak partisi, atau `lilo.conf` mengharuskan menjalankan kembali `/sbin/lilo` untuk meregenerasi map. Melupakan langkah ini setelah pembaruan kernel adalah penyebab paling umum dari kegagalan boot LILO.
Konfigurasi LILO: Pendalaman `/etc/lilo.conf`
LILO dikonfigurasi sepenuhnya melalui `/etc/lilo.conf`. Di bawah ini adalah contoh representatif produksi dengan anotasi yang mencakup opsi yang sering diabaikan oleh dokumentasi asli:
“`ini
Global section
boot=/dev/sda # Install LILO to the MBR of /dev/sda
map=/boot/map # Path to the map file (must be on a non-LVM, non-RAID partition)
install=/boot/boot.b # Second-stage boot loader binary
prompt # Always show the boot menu
timeout=100 # Wait 10 seconds (units are 1/10th of a second)
default=linux-stable # Default entry label
lba32 # Enable LBA32 addressing — critical for disks > 8 GB
compact # Merge adjacent read requests; speeds up boot on HDD
Linux kernel entry
image=/boot/vmlinuz-5.4.0
label=linux-stable
initrd=/boot/initrd.img-5.4.0
root=/dev/sda1
read-only # Mount root read-only initially; fsck runs before remount rw
append="quiet splash"
Fallback kernel entry
image=/boot/vmlinuz-4.19.0
label=linux-fallback
initrd=/boot/initrd.img-4.19.0
root=/dev/sda1
read-only
Chain-load Windows from a second partition
other=/dev/sda2
label=windows
table=/dev/sda # Partition table to pass to the Windows bootloader
“`
Setelah setiap pengeditan, terapkan perubahan dengan:
“`bash
sudo /sbin/lilo -v
“`
Flag `-v` mengaktifkan output verbose, menampilkan setiap entri kernel dan chain-loader yang dipetakan. Selalu verifikasi kode keluar — nilai non-zero berarti map tidak berhasil ditulis.
Parameter Konfigurasi yang Sering Terlewatkan
- `lba32`: Tanpa direktif ini pada disk yang lebih besar dari 8 GB, LILO akan kembali ke pengalamatan CHS dan gagal menemukan kernel di luar batas 8 GB. Ini adalah mode kegagalan diam yang telah menyebabkan banyak gangguan produksi pada perangkat keras lama.
- `compact`: Mengurangi waktu boot pada disk berputar dengan menggabungkan pembacaan sektor yang berdekatan. Tidak kompatibel dengan beberapa skenario boot floppy.
- `vga=`: Meneruskan parameter mode video ke kernel. Berguna untuk server headless di mana Anda menginginkan resolusi framebuffer tertentu di konsol.
- `append=`: Meneruskan parameter baris perintah kernel yang sewenang-wenang. Setara dengan argumen baris `linux` GRUB.
- `password=`: Membatasi boot entri tertentu dengan kata sandi. Perhatikan bahwa kata sandi ini disimpan dalam teks biasa di `lilo.conf`, sehingga izin file (`chmod 600`) bersifat wajib.
Skenario Instalasi LILO
Menginstal ke MBR
“`bash
Verify the target device
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
Install LILO to MBR of /dev/sda
sudo /sbin/lilo -b /dev/sda
“`
Menginstal ke Sektor Boot Partisi
Saat menggunakan boot manager seperti System Commander, Anda mungkin ingin LILO berada di sektor boot partisi daripada MBR:
“`ini
boot=/dev/sda1 # Install to partition boot sector, not MBR
“`
Ini juga merupakan pendekatan yang tepat ketika LILO di-chain-load oleh bootloader lain.
Menghapus LILO
Untuk memulihkan MBR asli (misalnya, sebelum diganti dengan GRUB):
“`bash
Overwrite MBR with a generic boot sector, preserving the partition table
sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sda bs=440 count=1
“`
Jangan pernah menggunakan `dd if=/dev/zero` pada MBR penuh — ini akan menghancurkan tabel partisi.
LILO vs. GRUB: Perbandingan Teknis
Tabel berikut mencakup dimensi yang paling penting bagi administrator sistem yang memilih antara keduanya, termasuk beberapa nuansa yang tidak ada dalam sebagian besar perbandingan:
| Fitur | LILO | GRUB2 |
|---|
| — | — | — |
|---|
| **Kesadaran filesystem** | Tidak ada — menggunakan alamat blok disk mentah | Dukungan penuh untuk ext2/3/4, XFS, Btrfs, ZFS, FAT, NTFS |
|---|
| **Metode penerapan konfigurasi** | Harus menjalankan `/sbin/lilo` setelah setiap perubahan | Membaca `grub.cfg` secara dinamis saat boot |
|---|
| **Penanganan pembaruan kernel** | Perlu dijalankan ulang secara manual; mudah terlupakan | `update-grub` / `grub-mkconfig` mengotomatiskan ini |
|---|
| **Pengeditan parameter boot** | Tidak memungkinkan saat boot | Editor interaktif di menu boot (tekan `e`) |
|---|
| **Dukungan UEFI** | Tidak | Ya (GRUB2 mendukung UEFI Secure Boot) |
|---|
| **Tabel partisi GPT** | Terbatas / tidak dapat diandalkan | Dukungan penuh |
|---|
| **Batas ukuran disk** | 8 GB tanpa `lba32`; praktis tidak terbatas dengan itu | Tidak ada batas praktis |
|---|
| **Boot jaringan (PXE)** | Tidak | Ya (melalui `grub-efi` dan modul tftp) |
|---|
| **Mode penyelamatan / pemulihan** | Tidak ada bawaan | Shell penyelamatan bawaan |
|---|
| **Skrip dalam konfigurasi** | Tidak | Ya (skrip mirip bash dalam `grub.cfg`) |
|---|
| **Dukungan Initrd/initramfs** | Ya | Ya |
|---|
| **Deteksi multi-OS** | Hanya entri manual | `os-prober` mendeteksi OS yang terinstal secara otomatis |
|---|
| **Ukuran binary / jejak** | Sangat kecil (~20 KB) | Lebih besar (~1–4 MB dengan modul) |
|---|
| **Pengembangan aktif** | Ditinggalkan (rilis terakhir 2015) | Dipelihara secara aktif |
|---|
| **Secure Boot** | Tidak | Ya (melalui shim + GRUB yang ditandatangani) |
|---|
Kesimpulan untuk sistem produksi: GRUB2 adalah pilihan yang tepat untuk sistem apa pun yang menjalankan kernel yang lebih baru dari sekitar versi 3.x, menggunakan GPT, UEFI, LVM, atau software RAID. Proposisi nilai LILO saat ini terbatas pada lingkungan tertanam atau lama di mana model pemuatan deterministik dan agnostik filesystem merupakan aset daripada kewajiban.
Kapan LILO Masih Menjadi Alat yang Tepat
Meskipun sudah tua, LILO tetap sesuai dalam skenario tertentu:
- Sistem Linux tertanam di mana jejak bootloader harus di bawah 32 KB dan lokasi kernel tidak pernah berubah.
- Perangkat keras lama (sebelum tahun 2000) di mana modul GRUB2 melebihi memori yang tersedia atau BIOS memiliki masalah kompatibilitas dengan pemuatan tahap GRUB.
- Lingkungan forensik dan pemulihan di mana bootloader minimal yang diketahui baik lebih disukai daripada yang kompleks dengan kemampuan skrip.
- Sistem yang terisolasi di mana kesederhanaan dan kemampuan audit model konfigurasi datar LILO mengurangi permukaan serangan.
- Tujuan pendidikan — kode sumber dan urutan boot LILO jauh lebih sederhana daripada GRUB2, menjadikannya subjek yang sangat baik untuk kursus internal OS.
Untuk penerapan modern apa pun — baik saat Anda menyediakan lingkungan VPS Hosting, mengonfigurasi Dedicated Server, atau menyiapkan stack pengembangan di Shared Web Hosting — GRUB2 adalah pilihan bootloader default dan yang tepat.
Mode Kegagalan LILO yang Umum dan Diagnostik
Memahami kode kesalahan LILO sangat penting untuk pemulihan. LILO mencetak string parsial dari `LILO` selama boot untuk menunjukkan kemajuan:
| Karakter yang Dicetak | Tahap yang Dicapai | Kemungkinan Penyebab Kegagalan |
|---|
| — | — | — |
|---|
| _(tidak ada)_ | MBR tidak dimuat | BIOS tidak menemukan perangkat yang dapat di-boot |
|---|
| `L` | Tahap 1 dimuat | Kesalahan memuat Tahap 2; jalur file map buruk |
|---|
| `LI` | Tahap 2 dimuat | Binary Tahap 2 tidak kompatibel atau rusak |
|---|
| `LIL` | File map ditemukan | File map rusak atau berada di alamat yang salah |
|---|
| `LIL?` | File map dimuat | File map dimuat dari alamat yang salah |
|---|
| `LILO` | Pemuatan penuh | Menu boot ditampilkan dengan sukses |
|---|
Prosedur Pemulihan
Jika LILO gagal boot setelah pembaruan kernel:
- Boot dari live CD atau lingkungan penyelamatan.
- Mount partisi root: `mount /dev/sda1 /mnt`
- Chroot: `chroot /mnt`
- Verifikasi `/etc/lilo.conf` menunjuk ke jalur kernel yang benar.
- Jalankan kembali: `/sbin/lilo -v`
- Reboot.
Jika file map itu sendiri rusak, Anda mungkin perlu menginstal ulang paket `lilo` untuk memulihkan `/boot/boot.b` sebelum menjalankan kembali perintah tersebut.
Pertimbangan Keamanan
LILO mendahului model keamanan firmware modern dan memiliki beberapa keterbatasan penting:
- Tidak ada dukungan Secure Boot: LILO tidak dapat berpartisipasi dalam rantai kepercayaan UEFI Secure Boot. Pada sistem di mana verifikasi integritas firmware diperlukan, GRUB2 dengan shim yang ditandatangani adalah wajib.
- Kelemahan perlindungan kata sandi: Direktif `password=` dalam `lilo.conf` menyimpan kredensial dalam teks biasa. Batasi izin file secara ketat (`chmod 600 /etc/lilo.conf`, dimiliki oleh root).
- Kerentanan akses fisik: Tanpa kata sandi BIOS/UEFI, penyerang dengan akses fisik dapat boot dari media eksternal dan melewati LILO sepenuhnya.
- Tidak ada integrasi TPM: LILO tidak dapat melakukan measured boot atau berinteraksi dengan TPM untuk attestasi, tidak seperti GRUB2 dengan modul yang sesuai.
Untuk server di mana enkripsi disk, measured boot, atau remote attestation merupakan bagian dari arsitektur keamanan — seperti VPS dengan cPanel atau Dedicated Server yang diperkuat — keterbatasan ini membuat LILO tidak sesuai.
Migrasi dari LILO ke GRUB2
Jika Anda memelihara sistem lama yang masih menjalankan LILO dan perlu bermigrasi:
“`bash
1. Install GRUB2
sudo apt-get install grub2 # Debian/Ubuntu
sudo yum install grub2-tools # RHEL/CentOS
2. Install GRUB2 to MBR
sudo grub-install /dev/sda
3. Generate GRUB configuration
sudo update-grub # Debian/Ubuntu
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL/CentOS
4. Verify the new configuration
sudo grep -i menuentry /boot/grub/grub.cfg
5. Reboot and confirm GRUB2 loads
sudo reboot
“`
Jangan hapus paket `lilo` sampai Anda telah mengonfirmasi bahwa GRUB2 berhasil boot. Simpan live rescue USB yang tersedia selama migrasi.
Jika server Anda menggunakan VPS Control Panels yang berinteraksi dengan bootloader (misalnya, untuk pergantian kernel atau mode penyelamatan), verifikasi kompatibilitas panel dengan GRUB2 sebelum bermigrasi.
Poin Teknis Utama: Matriks Keputusan
Gunakan daftar periksa ini untuk menentukan apakah LILO sesuai untuk lingkungan Anda:
Gunakan LILO jika:
- Sistem menggunakan firmware BIOS (bukan UEFI)
- Disk menggunakan tabel partisi MBR (bukan GPT)
- Kernel dan tata letak partisi bersifat statis dan jarang berubah
- Jejak bootloader harus diminimalkan (sistem tertanam)
- Anda mempelajari internal urutan boot untuk tujuan pendidikan
Jangan gunakan LILO jika:
- Sistem menggunakan firmware UEFI (LILO tidak kompatibel)
- Disk menggunakan partisi GPT
- Kernel diperbarui secara rutin melalui manajer paket
- Anda memerlukan Secure Boot, attestasi TPM, atau measured boot
- Sistem menggunakan LVM, software RAID, atau Btrfs untuk filesystem root
- Anda memerlukan pengeditan parameter boot interaktif untuk pemecahan masalah
- Sistem terhubung ke internet atau tunduk pada persyaratan kepatuhan keamanan
Aturan operasional: Setiap kali Anda mengedit `/etc/lilo.conf` atau memperbarui kernel pada sistem yang dikelola LILO, menjalankan `/sbin/lilo -v` bukanlah opsional — ini sama wajibnya dengan pengeditan itu sendiri. Otomatiskan ini dengan hook kernel pasca-instalasi jika manajer paket Anda mendukungnya.
Pertanyaan yang Sering Diajukan
Apa yang terjadi jika saya memperbarui kernel Linux pada sistem LILO tanpa menjalankan `/sbin/lilo`?
File map LILO masih menunjuk ke alamat blok disk kernel lama. Sistem akan boot kernel sebelumnya seolah-olah pembaruan tidak pernah terjadi — atau, jika image kernel lama ditimpa di tempat yang sama, sistem akan memuat data yang rusak dan mengalami panic. Selalu jalankan `/sbin/lilo -v` segera setelah pembaruan kernel apa pun.
Bisakah LILO boot dari disk berpartisi GPT?
Tidak dapat diandalkan. LILO dirancang untuk tabel partisi MBR. Disk GPT menggunakan MBR pelindung yang secara teknis memungkinkan instalasi LILO, tetapi LILO tidak memiliki kesadaran tentang entri partisi GPT dan tidak dapat secara andal menemukan partisi di luar empat yang pertama. Gunakan GRUB2 untuk disk GPT apa pun.
Apakah LILO kompatibel dengan sistem UEFI?
Tidak. LILO adalah bootloader era BIOS tanpa dukungan aplikasi EFI. Pada sistem UEFI, firmware mengharapkan binary `.efi` berformat PE di Partisi Sistem EFI. LILO tidak dapat menyediakan ini. GRUB2, systemd-boot, atau rEFInd adalah pilihan yang tepat untuk UEFI.
Apa perbedaan antara nilai `timeout` LILO dan detik sebenarnya?
Direktif `timeout` diukur dalam sepersepuluh detik. Nilai `50` sama dengan 5 detik, `100` sama dengan 10 detik. Ini adalah kesalahan konfigurasi yang umum — administrator yang mengharapkan timeout 50 detik dan menetapkan `timeout=50` akan mendapatkan jendela 5 detik.
Bisakah LILO boot dari volume LVM atau software RAID?
Tidak. Karena LILO menyelesaikan lokasi kernel ke alamat blok disk absolut saat instalasi, ia tidak dapat menangani lapisan abstraksi yang diperkenalkan oleh LVM atau MD RAID. Partisi `/boot` harus berada di partisi biasa yang dapat diakses langsung oleh BIOS. Ini adalah salah satu alasan arsitektur utama mengapa GRUB2 menggantikan LILO dalam distribusi Linux modern.
