15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
08.10.2024

LILO (Linux Loader) Nedir? Mimari, Yapılandırma ve GRUB ile Karşılaştırma

LILO (Linux Loader), Linux ve Unix benzeri işletim sistemleri için, çekirdek dosyasını kurulum sırasında kaydedilen disk adresinden doğrudan yükleyen ve önyükleme sırası boyunca dosya sistemi sürücüsü desteği gerektirmeyen eski bir önyükleyicidir. İşletim sistemi öncesi aşamada — Master Boot Record (MBR) veya bir bölüm önyükleme sektöründen — çalışır ve çekirdeği belleğe yükledikten sonra CPU kontrolünü Linux çekirdeğine devreder.

Günümüzdeki üretim sistemlerinin büyük çoğunluğunda LILO’nun yerini GRUB2 almıştır. Ancak iç yapısını anlamak; eski altyapıları, gömülü sistemleri veya minimal ve deterministik bir önyükleyicinin bilinçli bir mimari tercih olduğu hava boşluklu sunucuları yöneten mühendisler için hâlâ kritik öneme sahiptir.

LILO Önyükleme Süreci Düşük Düzeyde Nasıl Çalışır

Bir makine açıldığında, BIOS POST (Power-On Self-Test) işlemini gerçekleştirir, ardından önyüklenebilir diskin ilk 512 baytını — MBR’yi — okur. LILO oraya kurulmuşsa, bu 512 bayt LILO’nun birinci aşama yükleyicisini içerir. Süreç şu şekilde ilerler:

  1. Aşama 1 (MBR kodu): BIOS, MBR’den 512 baytı `0x7C00` adresindeki belleğe yükler ve yürütmeyi buraya aktarır. Bu küçük taslak yalnızca tek bir işi bilir: Aşama 2’yi bulup yüklemek.
  2. Aşama 2 (harita dosyası): LILO, `lilo` komutu tarafından kurulum sırasında yazılan harita dosyasını (`/boot/map`) okur. Bu harita, her çekirdek imajının ve zincir yükleyici girişinin mutlak disk blok adreslerini içerir. Burada dosya sistemi ayrıştırması gerçekleşmez — LILO ham LBA/CHS sektör adreslerini kullanır.
  3. Önyükleme menüsü sunumu: `lilo.conf` içinde `prompt` ayarlanmışsa, LILO bir metin menüsü görüntüler. `timeout` yönergesi, varsayılana geçmeden önce ne kadar bekleneceğini kontrol eder.
  4. Çekirdek yükleme: LILO, çekirdek imajını önceden hesaplanmış disk adreslerinden düşük belleğe okur, ardından sıkıştırmasını açar ve yeniden konumlandırır.
  5. Kontrolün devredilmesi: LILO, çekirdek komut satırı parametrelerini ve başlangıç RAM diski (`initrd`) konumunu çekirdeğe aktarır; çekirdek donanım başlatma işlemini devralır.

Kritik mimari çıkarım: LILO, kurulum sırasında mutlak disk blok adreslerini kodladığından, çekirdek dosyasında, bölüm düzeninde veya `lilo.conf` içinde yapılan herhangi bir değişiklik, haritayı yeniden oluşturmak için `/sbin/lilo` komutunun yeniden çalıştırılmasını gerektirir. Çekirdek güncellemesinin ardından bu adımın unutulması, LILO önyükleme hatalarının tek en yaygın nedenidir.

LILO Yapılandırması: `/etc/lilo.conf` Dosyasına Derinlemesine Bakış

LILO tamamen `/etc/lilo.conf` aracılığıyla yapılandırılır. Aşağıda, orijinal belgelerin sıklıkla atladığı seçenekleri kapsayan açıklamalarla birlikte üretime yönelik temsili bir örnek verilmiştir:

“`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

“`

Her düzenlemeden sonra değişiklikleri şu komutla uygulayın:

“`bash

sudo /sbin/lilo -v

“`

`-v` bayrağı, eşlenen her çekirdek ve zincir yükleyici girişini gösteren ayrıntılı çıktıyı etkinleştirir. Çıkış kodunu her zaman doğrulayın — sıfır dışı bir dönüş değeri, haritanın başarıyla yazılmadığı anlamına gelir.

Sıklıkla Gözden Kaçan Yapılandırma Parametreleri

  • `lba32`: 8 GB’tan büyük disklerde bu yönerge olmadan LILO, CHS adreslemeye geri döner ve 8 GB sınırının ötesindeki çekirdekleri bulamaz. Bu, eski donanımlarda sayısız üretim kesintisine yol açmış sessiz bir hata modudur.
  • `compact`: Bitişik sektör okumalarını birleştirerek dönen disklerde önyükleme süresini azaltır. Bazı disket önyükleme senaryolarıyla uyumsuzdur.
  • `vga=`: Çekirdeğe bir video modu parametresi iletir. Konsolda belirli bir çerçeve arabelleği çözünürlüğü istediğiniz başsız sunucular için kullanışlıdır.
  • `append=`: Rastgele çekirdek komut satırı parametreleri iletir. GRUB’un `linux` satır argümanlarına eşdeğerdir.
  • `password=`: Belirli bir girişin önyüklenmesini parola ile kısıtlar. Bu parolanın `lilo.conf` içinde düz metin olarak saklandığını unutmayın; bu nedenle dosya izinleri (`chmod 600`) zorunludur.

LILO Kurulum Senaryoları

MBR’ye Kurulum

“`bash

Verify the target device

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT

Install LILO to MBR of /dev/sda

sudo /sbin/lilo -b /dev/sda

“`

Bölüm Önyükleme Sektörüne Kurulum

System Commander gibi bir önyükleme yöneticisi kullanırken, LILO’yu MBR yerine bir bölümün önyükleme sektörüne kurmak isteyebilirsiniz:

“`ini

boot=/dev/sda1 # Install to partition boot sector, not MBR

“`

Bu, LILO’nun başka bir önyükleyici tarafından zincir yükleneceği durumlarda da doğru yaklaşımdır.

LILO’yu Kaldırma

Orijinal MBR’yi geri yüklemek için (örneğin GRUB ile değiştirmeden önce):

“`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

“`

MBR’nin tamamında `dd if=/dev/zero` kullanmayın — bölüm tablosunu yok eder.

LILO ve GRUB: Teknik Karşılaştırma

Aşağıdaki tablo, ikisi arasında seçim yapan bir sistem yöneticisi için en önemli boyutları kapsamakta olup çoğu karşılaştırmada yer almayan çeşitli nüansları da içermektedir:

ÖzellikLILOGRUB2
**Dosya sistemi farkındalığı**Yok — ham disk blok adreslerini kullanırext2/3/4, XFS, Btrfs, ZFS, FAT, NTFS için tam destek
**Yapılandırma uygulama yöntemi**Her değişiklikten sonra `/sbin/lilo` çalıştırılmalıdırÖnyükleme sırasında `grub.cfg` dosyasını dinamik olarak okur
**Çekirdek güncelleme yönetimi**Manuel yeniden çalıştırma gereklidir; kolayca unutulabilir`update-grub` / `grub-mkconfig` bunu otomatikleştirir
**Önyükleme parametresi düzenleme**Önyükleme sırasında mümkün değilÖnyükleme menüsünde etkileşimli düzenleyici (`e` tuşuna basın)
**UEFI desteği**HayırEvet (GRUB2, UEFI Secure Boot’u destekler)
**GPT bölüm tablosu**Sınırlı / güvenilmezTam destek
**Disk boyutu sınırı**`lba32` olmadan 8 GB; bununla birlikte pratikte sınırsızPratik sınır yok
**Ağ önyüklemesi (PXE)**HayırEvet (`grub-efi` ve tftp modülleri aracılığıyla)
**Kurtarma modu**Yerleşik yokYerleşik kurtarma kabuğu
**Yapılandırmada betik desteği**HayırEvet (`grub.cfg` içinde bash benzeri betik desteği)
**Initrd/initramfs desteği**EvetEvet
**Çoklu işletim sistemi algılama**Yalnızca manuel girişler`os-prober` kurulu işletim sistemlerini otomatik algılar
**İkili boyut / kaplama alanı**Çok küçük (~20 KB)Daha büyük (~1–4 MB modüllerle birlikte)
**Aktif geliştirme**Terk edildi (son sürüm 2015)Aktif olarak sürdürülüyor
**Secure Boot**HayırEvet (shim + imzalı GRUB aracılığıyla)

Üretim sistemleri için karar: GRUB2, yaklaşık 3.x sürümünden daha yeni bir çekirdek çalıştıran, GPT, UEFI, LVM veya yazılım RAID kullanan herhangi bir sistem için doğru seçimdir. LILO’nun günümüzdeki değeri, deterministik ve dosya sistemi bağımsız yükleme modelinin bir yük değil bir avantaj olduğu gömülü veya eski ortamlarla sınırlıdır.

LILO Hâlâ Doğru Araç Olduğunda

Yaşına rağmen LILO, belirli senaryolarda hâlâ uygundur:

  • Önyükleyici kaplama alanının 32 KB’ın altında olması ve çekirdek konumunun hiç değişmemesi gereken gömülü Linux sistemleri.
  • GRUB2 modüllerinin mevcut belleği aştığı veya BIOS’un GRUB’un aşama yüklemesiyle uyumluluk sorunları yaşadığı eski donanımlar (2000 öncesi).
  • Betik yeteneklerine sahip karmaşık bir önyükleyici yerine bilinen, iyi durumda ve minimal bir önyükleyicinin tercih edildiği adli bilişim ve kurtarma ortamları.
  • LILO’nun düz yapılandırma modelinin sadeliği ve denetlenebilirliğinin saldırı yüzeyini azalttığı hava boşluklu sistemler.
  • Eğitim amaçlı kullanım — LILO’nun kaynak kodu ve önyükleme sırası GRUB2’ye kıyasla çok daha basittir; bu da onu işletim sistemi iç yapısı dersleri için mükemmel bir konu haline getirir.

Herhangi bir modern dağıtım için — ister bir VPS Hosting ortamı sağlıyor, ister bir Dedicated Server yapılandırıyor, isterse Shared Web Hosting üzerinde bir geliştirme ortamı kuruyorsanız — GRUB2 varsayılan ve doğru önyükleyici seçimidir.

Yaygın LILO Hata Modları ve Tanılama

LILO’nun hata kodlarını anlamak, kurtarma için kritik öneme sahiptir. LILO, ilerlemeyi belirtmek için önyükleme sırasında `LILO` dizesinin bir kısmını yazdırır:

Yazdırılan KarakterlerUlaşılan AşamaMuhtemel Hata Nedeni
_(hiçbir şey)_MBR yüklenmediBIOS önyüklenebilir aygıt bulamıyor
`L`Aşama 1 yüklendiAşama 2 yüklenirken hata; hatalı harita dosyası yolu
`LI`Aşama 2 yüklendiAşama 2 ikili dosyası uyumsuz veya bozuk
`LIL`Harita dosyası bulunduHarita dosyası bozuk veya yanlış adreste
`LIL?`Harita dosyası yüklendiHarita dosyası yanlış adresten yüklendi
`LILO`Tam yüklemeÖnyükleme menüsü başarıyla görüntülendi

Kurtarma Prosedürü

LILO, çekirdek güncellemesinin ardından önyükleme yapamazsa:

  1. Canlı CD veya kurtarma ortamından önyükleme yapın.
  2. Kök bölümü bağlayın: `mount /dev/sda1 /mnt`
  3. Chroot yapın: `chroot /mnt`
  4. `/etc/lilo.conf` dosyasının doğru çekirdek yoluna işaret ettiğini doğrulayın.
  5. Yeniden çalıştırın: `/sbin/lilo -v`
  6. Yeniden başlatın.

Harita dosyasının kendisi bozuksa, komutu yeniden çalıştırmadan önce `/boot/boot.b` dosyasını geri yüklemek için `lilo` paketini yeniden yüklemeniz gerekebilir.

Güvenlik Değerlendirmeleri

LILO, modern ürün yazılımı güvenlik modellerinden önce gelir ve birkaç önemli sınırlaması vardır:

  • Secure Boot desteği yok: LILO, UEFI Secure Boot güven zincirine katılamaz. Ürün yazılımı bütünlüğü doğrulamasının gerekli olduğu sistemlerde, imzalı shim ile birlikte GRUB2 zorunludur.
  • Parola koruma zayıflıkları: `lilo.conf` içindeki `password=` yönergesi kimlik bilgilerini düz metin olarak saklar. Dosya izinlerini kesinlikle kısıtlayın (`chmod 600 /etc/lilo.conf`, root’a ait).
  • Fiziksel erişim açığı: BIOS/UEFI parolası olmadan, fiziksel erişime sahip bir saldırgan harici ortamdan önyükleme yaparak LILO’yu tamamen atlayabilir.
  • TPM entegrasyonu yok: LILO, uygun modüllerle GRUB2’nin aksine, ölçülmüş önyükleme gerçekleştiremez veya tasdik için bir TPM ile etkileşime giremez.

Disk şifreleme, ölçülmüş önyükleme veya uzaktan tasdik güvenlik mimarisinin bir parçasını oluşturduğu sunucular için — örneğin cPanel’li VPS veya sertleştirilmiş bir Dedicated Server — bu sınırlamalar LILO’yu uygunsuz kılar.

LILO’dan GRUB2’ye Geçiş

Hâlâ LILO çalıştıran eski bir sistemi yönetiyorsanız ve geçiş yapmanız gerekiyorsa:

“`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

“`

GRUB2’nin başarıyla önyükleme yaptığını doğrulayana kadar `lilo` paketini kaldırmayın. Geçiş sırasında canlı kurtarma USB’sini hazır bulundurun.

Sunucunuz önyükleyiciyle etkileşime giren (örneğin çekirdek değiştirme veya kurtarma modu için) VPS Control Panels kullanıyorsa, geçiş yapmadan önce panel uyumluluğunu GRUB2 ile doğrulayın.

Temel Teknik Çıkarımlar: Karar Matrisi

LILO’nun ortamınız için uygun olup olmadığını belirlemek için bu kontrol listesini kullanın:

LILO kullanın, eğer:

  • Sistem BIOS (UEFI değil) ürün yazılımı kullanıyorsa
  • Disk MBR bölüm tablosu kullanıyorsa (GPT değil)
  • Çekirdek ve bölüm düzeni statikse ve nadiren değişiyorsa
  • Önyükleyici kaplama alanı minimize edilmesi gerekiyorsa (gömülü sistemler)
  • Eğitim amaçlı önyükleme sırası iç yapısını inceliyorsanız

LILO kullanmayın, eğer:

  • Sistem UEFI ürün yazılımı kullanıyorsa (LILO uyumsuz)
  • Disk GPT bölümlendirmesi kullanıyorsa
  • Çekirdekler paket yöneticisi aracılığıyla düzenli olarak güncelleniyorsa
  • Secure Boot, TPM tasdiki veya ölçülmüş önyükleme gerekiyorsa
  • Sistem kök dosya sistemi için LVM, yazılım RAID veya Btrfs kullanıyorsa
  • Sorun giderme için etkileşimli önyükleme parametresi düzenlemesi gerekiyorsa
  • Sistem internete açıksa veya güvenlik uyumluluk gereksinimlerine tabiyse

Operasyonel kural: LILO tarafından yönetilen bir sistemde `/etc/lilo.conf` dosyasını her düzenlediğinizde veya çekirdeği güncellediğinizde, `/sbin/lilo -v` komutunu çalıştırmak isteğe bağlı değildir — düzenlemenin kendisi kadar zorunludur. Paket yöneticiniz destekliyorsa bunu bir çekirdek kurulum sonrası kancasıyla otomatikleştirin.

Sıkça Sorulan Sorular

`/sbin/lilo` çalıştırmadan LILO sisteminde Linux çekirdeğini güncellerseniz ne olur?

LILO’nun harita dosyası hâlâ eski çekirdeğin disk blok adreslerine işaret eder. Sistem, güncelleme hiç yapılmamış gibi önceki çekirdeği önyükler — ya da eski çekirdek imajı yerinde üzerine yazılmışsa, bozuk veri yükler ve panik yapar. Herhangi bir çekirdek güncellemesinin hemen ardından her zaman `/sbin/lilo -v` komutunu çalıştırın.

LILO, GPT bölümlendirilmiş diskten önyükleme yapabilir mi?

Güvenilir bir şekilde yapamaz. LILO, MBR bölüm tabloları için tasarlanmıştır. GPT diskler teknik olarak LILO kurulumuna izin veren koruyucu bir MBR kullanır, ancak LILO’nun GPT bölüm girişlerinden haberi yoktur ve ilk dörtten fazla bölümü güvenilir biçimde bulamaz. Herhangi bir GPT disk için GRUB2 kullanın.

LILO, UEFI sistemlerle uyumlu mudur?

Hayır. LILO, EFI uygulama desteği olmayan BIOS dönemi bir önyükleyicidir. UEFI sistemlerde ürün yazılımı, EFI Sistem Bölümünde PE biçimli bir `.efi` ikili dosyası bekler. LILO bunu sağlayamaz. UEFI için doğru seçimler GRUB2, systemd-boot veya rEFInd’dir.

LILO’nun `timeout` değeri ile gerçek saniyeler arasındaki fark nedir?

`timeout` yönergesi saniyenin onda biri cinsinden ölçülür. `50` değeri 5 saniyeye, `100` değeri 10 saniyeye eşittir. Bu yaygın bir yanlış yapılandırmadır — 50 saniyelik zaman aşımı bekleyip `timeout=50` ayarlayan yöneticiler 5 saniyelik bir pencere elde eder.

LILO, LVM veya yazılım RAID birimlerinden önyükleme yapabilir mi?

Hayır. LILO, çekirdek konumlarını kurulum sırasında mutlak disk blok adreslerine çözümlediğinden, LVM veya MD RAID tarafından sunulan soyutlama katmanlarını yönetemez. `/boot` bölümü, BIOS tarafından doğrudan erişilebilen düz bir bölümde bulunmalıdır. Bu, GRUB2’nin modern Linux dağıtımlarında LILO’nun yerini almasının birincil mimari nedenlerinden biridir.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın