LILO, LiLo (skr. od linux loader) – program komputerowy pozwalający wybrać i zainicjować system operacyjny po uruchomieniu komputera (tzw. program rozruchowy).

LILO nie jest zależne od żadnego systemu plików, potrafi załadować jądro systemu operacyjnego Linux lub inny kod wykonywalny zarówno z dyskietki, jak i z dysku twardego. Program obsługuje od 1 do 16 różnych wpisów. Różne parametry startowe (takie jak urządzenie, z którego należy zamontować główny system plików) mogą być ustawiane niezależnie dla każdego wpisu.

LILO może zostać zainstalowany jako główny program rozruchowy w MBR (uruchamiany bezpośrednio przez BIOS) lub w sektorze rozruchowym partycji (uruchamiany pośrednio – z innego programu rozruchowego). Dla komputerów wykorzystujących UEFI zamiast BIOSu stosuje się program elilo„ELILO: EFI Linux Boot Loader”..

LILO a GRUB LILO jest wykorzystywane praktycznie od pojawienia się pierwszego jądra Linux. Obecnie jednak coraz częściej jest zastępowane przez GRUB-a.

Dla początkujących użytkowników konfiguracja GRUB-a może wydawać się trudniejsza, ale po instalacji obsługa jest znacznie prostsza, gdyż po dodaniu nowego jądra nie trzeba zapisywać danych do sektora rozruchowego, natomiast stosując LILO jako program rozruchowy trzeba umieścić plik obrazu w stałym miejscu oraz każdorazowo po zmianie konfiguracji jądra dokonać aktualizacji sektora rozruchowego poleceniem lilo.

Opcje Opcje globalne backup = plik zapasowy – wskazuje nazwę pliku, do którego kopiowany zostaje oryginalny sektor startowy, zamiast (standardowo) do pliku /boot/boot.nr_urządzenia (nr_urządzenia jest zależny od typu dysku) boot = urządzenie inicjacji – ustala nazwę urządzenia, które powinno zawierać sektor startowy; w przypadku gdy nie ma zmiennej boot, domyślnie wybrane zostaje urządzenie aktualnie zamontowane jako katalog główny compact – uaktywnia tryb, w którym LILO łączy żądania odczytu sąsiednich sektorów dysku w celu przyspieszenia inicjacji; używanie tej opcji jest zalecane przy uruchamianiu z dyskietki; użycie opcji compact może być jednak sprzeczne z opcją linear default = nazwa – jako domyślny obraz startowy wskazuje nazwę obrazu; w przypadku braku tej opcji, zastosowany zostanie pierwszy obraz określony w pliku konfiguracyjnym delay = czas sekundy – wskazuje w dziesiątych częściach sekundy czas, po którym nastąpi inicjacja obrazu; w przypadku braku opcji delay, LILO uruchamia się bez czekania, a w przypadku użycia opcji serial, czas wynosi co najmniej 20 disk = nazwa urządzenia – definiuje parametry dysku wskazanego przez nazwę urządzenia; przeważnie opcja ta nie jest potrzebna, gdyż LILO samodzielnie potrafi zdefiniować parametry dysku bios = kod urządzenia bios – numer BIOS-u używany do definiowania urządzenia; zazwyczaj pierwszy dysk to 0x80, a drugi to 0x81 cylinders = cylindry – liczba cylindrów na dysku heads = głowice – liczba głowic na dysku innaccessible – informuje LILO, o tym że BIOS nie może czytać dysku; stosuje się go do zabezpieczenia systemu, aby nie stał się nieinicjowany, w przypadku gdy LILO myśli, że BIOS może go odczytać partion = urządzenie partycji – rozpoczyna nową sekcję partycji sectors = sektory – liczba sektorów na ścieżce disktab = plik tablica dysku – ustala ścieżkę pliku disktab ignore-table – informuje LILO, aby ignorował uszkodzone tablice partycji fix-table – umożliwia zastosowanie adresów 3D w postaci sektor/głowica/cylinder w tablicach partycji force-backup = plik zapasowy – działa podobnie do opcji backup, ale nadpisuje istniejącą kopie zapasową install = sektor inicjacji – instaluje wskazany plik jako nowy sektor inicjacji, zamiast domyślnego /boot/boot.b linear – generuje, niezależne od geometrii dysku, linowe adresy sektorów, zamiast adresów 3D; map = plik mapy – wskazuje położenie pliku mapy; standardowo /boot/map message = plik komunikatu – określa plik, którego zawartość ma być wyświetlona przed znakiem zgłoszenia inicjacji; np. może być to znak (ctrl L), który czyści ekran; w przypadku modyfikacji pliku komunikatu, bądź zmienienia jego lokalizacji, należy przebudować plik mapy; plik komunikatu może mieć maksymalnie 65 535 bajtów timeout = czas sekundy – określa czas oczekiwania liczony w dziesiątych częściach sekundy na naciśnięcie klawisza; jeśli w ciągu tego czasu nie zostanie naciśnięty żaden klawisz inicjowany zostaje domyślny obraz verbose = poziom – określa poziom opisu aktualnego stanu (od 0 do 5 – im większa cyfra tym opis jest dokładniejszy) prompt – wymusza wprowadzenie konfiguracji inicjującej z klawiatury; jeśli opcja prompt będzie włączona, a timeout wyłączona przeładowanie systemu będzie niemożliwe bez udziału użytkownika serial = parametry – wskazuje parametry portu szeregowego, który jest inicjowany i boot loader akceptuje dane wysłane z niego i z klawiatury;parametry: port – wybór jednego z czterech portów szeregowych (numeracja rozpoczyna się od 0, które odpowiada COM1) bps – liczba bodów portu; obsługiwane ilości: 110, 150, 300, 600, 1200, 2400, 4800, 9600 (standardowo jest to 2400) parity – określa parzystość linii; ‘n’ – brak parzystości, ‘e’ – linia szeregowa parzysta, ‘o’ – linia szeregowa nieparzysta bits – liczba bitów danych na znak, jednak obsługiwane jest jedynie 7 lub 8 bitów; 8 gdy brak parzystości, w przeciwnym razie 7

Opcjami globalnymi mogą być również opcje jądra: append, read-only, read-write, root, vga

Opcje obrazu alias = nazwa – ustawia drugą nazwę dla obrazu; nazwy można używać zamiennie z tą zdefiniowaną opcją label image = nazwa ścieżki – określa plik zawierający obraz startowy jądra Linuksa; label = nazwa – ustala nazwę aktualnego obrazu jądra loader = łańcuchowy program ładowania – wskazuje program ładowania dla innego systemu operacyjnego, któremu LILO przekazuje kontrole w celu uruchomienia tego systemu; w przypadku gdy system będzie startował z dyskietki, lub z dysku który nie jest pierwszym dyskiem twardym, musi zostać ustalony „łańcuchowy” program ładujący lock – mówi programowi LILO, aby zapisał wiersz poleceń inicjacji, a następnie używał go jako domyślnego przy następnych inicjacjach; optional – powoduje pominięcie obrazu, jeśli nie był on dostępny przy tworzeniu mapy password = hasło – powoduje ochronę hasłem danego obrazu range = sektory – wskazuje zakres sektorów mający zostać zmapowane do pliku mapy, gdy obraz startuje z urządzenia; można podać zasięg: początek – koniec lub początek + liczba, gdzie początek i koniec to numery sektorów, a liczba określa ile należy dodać do początku; w przypadku wskazania tylko początku zmapowany zostaje tylko jeden sektor restricted – informuje, że hasło przy inicjacji obrazu jest potrzebne gdy w wierszu poleceń zostaną określone parametry table = urządzenie – określa urządzenie zawierające tablicę partycji; brak tej opcji oznacza że program ładowania początkowego nie poinformuje o partycjach inicjowany system operacyjny; opcja stosowana dla nielinuksowych systemów operacyjnych; opcja nie może być stosowana z opcją unsafe unsafe – mówi, że sektor inicjacji nie ma być dostępny podczas tworzenia mapy; opcja stosowana dla nielinuksowych systemów operacyjnych; opcja nie może być stosowana z opcją table

Opcje jądra append = ciąg – dołącza ciąg do parametrów przekazywanych do jądra; zazwyczaj tę opcję stosuje się do określenia parametrów sprzętowych initrd = nazwa pliku – wskazuje plik, który będzie ładowany przy inicjowaniu dysku RAM literal = ciąg – działa tak jak append, ale zamiast dołączania zastępuje obecne opcje jądra noinitrd – gwarantuje, że plik initrd zostanie przeczytany po inicjacji jądra prompt ramdisk = 0/1 – mówi, czy jądro potrzebuje dyskietki zawierającej obraz dysku RAM; 0 – nie, 1 (domyślnie) – tak ramdisk = rozmiar – stosuje się tylko dla jąder starszych niż wersja 1.3.48; dla nowszych jąder stosuje się opcje: load_ramdisk, prompt_ramdisk, ramdisk_size, ramdisk_start ramdisk size = n – wskazuje ilość pamięci przeznaczonej na dysk RAM; wartość podawana w kilobajtach; domyślnie 4096 ramdisk start = przesunięcie – stosowana przy instalacji Linuksa w przypadku gdy obraz RAM i plik jądra są na tej samej dyskietce; przesunięcie informuje, gdzie rozpoczyna się obraz RAM na dyskietce; wartość w kilobajtach read-only – mówi, że główny system plików montowany jest w trybie tylko do odczytu read-write – mówi, że główny system plików montowany jest w trybie odczytu i zapisu root = urządzenie głównego katalogu – określa urządzenie, które zostanie zamontowane jako główny katalog vga = tryb – określa tekstowy tryb VGA ustawiany podczas inicjalizacji; istnieją następujące tryby: ask – zapytanie użytkownika o tryb tekstowy extended (zamiennie ext) – wybór trybu 80x50 normal – wybór trybu 80x25

Opcje jądra mogą być określane w pliku lilo.conf, bądź w wierszu poleceń

Opcje polecenia „lilo” -C plik konfiguracyjny – określa plik konfiguracyjny zamienny dla pliku domyślnego (lilo.conf); -I etykieta – wyświetla na ekranie ścieżkę do jądra wskazaną przez etykietę, bądź komunikat -błędu w przypadku nieznalezienia pasującej etykiety -q – wyświetla aktualnie zmapowane pliki -r główny katalog – przed rozpoczęciem działania lilo przekierowuje do wskazanego katalogu; opcja wykorzystywana do naprawy konfiguracji -R wiersz poleceń – określa standardowe polecenie dla programu startowego, które zostanie wykorzystane następnym razem (ale tylko raz, ponieważ zostanie ono usunięte przez program ładujący) -t – informuje, że jest to test; podczas użycia tego polecenia nie zostanie zapisany nowy sektor inicjacji ani plik map -u nazwa urządzenia – sprawdza aktualność urządzenia na podstawie przypisanego mu czasu, a następnie odinstalowuje lilo, odtwarzając zachowany sektor startowy z pliku /boot/boot.nr_urządzenia -U nazwa urządzenia – robi to samo co polecenie -u, z tą różnicą, że nie sprawdza aktualności -v – zwraca wynik w postaci opisu -V – wyświetla numer używanej wersji lilo

Parametry uruchomieniowe LILO Kombinacja klawisza bądź z , lub (alternatywnie podanie dyrektywy prompt) powoduje przełączenie LILO w tryb interaktywny. Chcąc wybrać konfigurację inicjującą należy wprowadzić nazwę zdefiniowaną jako etykieta (z ang. label). Po wciśnięciu klawisza ‘Tab’, wyświetlą się dostępne konfiguracje startowe. Ponadto można przekazywać parametry (podobnie jak przy uruchamianiu programu z shella). LILO przekazuje podczas uruchamiania do jądra linię poleceń, która powstaje poprzez połączenie tych parametrów. Następnie wszystkie parametry zawierające znak =, zostają umieszczone w środowisku init, a pozostałe zostają przekazane jako zwykłe parametry.

Komunikaty Komunikaty startowe LILO no message – żaden fragment programu rozruchowego LILO nie został załadowany L – załadowana została tylko pierwsza część LILO LI – druga część została załadowana, ale jej wykonywanie nie powiodło się LIL – druga część została uruchomiona, ale nie może ona odczytać tablic deskryptorów z pliku mapy LIL? – załadowano drugą część programu ładującego pod niewłaściwy adres LIL- – druga część odczytała tablicę deskryptorów, ale jest ona błędna LILO – pomyślnie załadowano program ładujący

Komunikaty o błędach