Hoe werkt de LInux LOader ('lilo')?

Opmerking

Tegenwoordig gebruiken bijna alle Linux distributies 'grub' in plaats van 'lilo'. Dit omdat 'lilo' vrij lang een aantal beperkingen kende die 'grub' niet had (met name van toepassing op de explosief gegroeide opslag capaciteit van moderne harde schijven). Tegenwoordig zijn 'grub' en 'lilo' 2 gelijkwaardige programma's en is het gebruik vooral een kwestie van voorkeur.



'Lilo' wordt gebruikt om Linux op te kunnen starten op een systeem met meerdere besturingssystemen. De meest gangbare situatie is een Windows 95/98 machine waarop Linux erbij geinstalleerd wordt. 'Lilo' stelt de gebruiker voor de keuze welk besturingssysteem opgestart moet worden: Windows of Linux.

Als U een oudere versie van 'lilo' gebruikt (dus voor SuSE 7.1), dan krijgt U tijdens het opstarten de lilo-prompt te zien:Door op de 'Tab' toets te drukken krijgt U een overzicht te zien van de mogelijkheden. Door een van de mogelijkheden in te typen (gevolgd door 'Enter') start U het desbetreffende besturingssysteem op. Vanaf SuSe 7.1 is 'lilo' volledig grafisch en kunt U met de pijltjestoetsen eenvoudig het gewenste besturingssysteem selecteren. 'Lilo' kent ook nog de mogelijkheid om boot-parameters op te geven tijdens het opstarten, bijvoorbeeld om een driver voor een SCSI kaart correct te configureren. Het voert echter te ver om hier verder op in te gaan. Geinteresseerde lezers kunnen bij de Nederlandstalige lilo-HowTo terecht.

Naast 'lilo' is er ook nog een andere mogelijkheid om Linux te starten, namelijk via 'loadlin.' Het gebruik van 'loadlin' kan noodzakelijk zijn om insteekkaarten onder DOS goed te configureren, zodat Linux met bijvoorbeeld netwerkondersteuning of geluidsondersteuning kan opstarten. Heel veel oudere geluidskaarten starten standaard in de SoundBlaster modus op, waardoor de sampling rate beperkt is tot 22 KHz (in het meest gunstige geval). Deze kaarten zijn meestal niet standaard en een methode om naar de MSS (Microsoft Sound System) over te schakelen onder Linux is er niet. Door eerst naar DOS te starten en een configuratie programma aan te roepen wordt de kaart in MSS modus gezet en start Linux (d.m.v. 'loadlin') met 44 KHz geluidsondersteuning op (de standaard sampling rate onder Linux; CD kwaliteit). Maar goed, ik wijk nu te veel van het onderwerp af.


'Lilo'

'Lilo' kende helaas een aantal beperkingen: De oorzaak van deze restricties is het BIOS (Basic Input Output System): de minimale hoeveelheid programmatuur nodig om een computer op te kunnen laten starten en de hardware correct te kunnen configureren (zoals de harde schijf). De oude BIOS versies hadden de beperkingen van 2 harde schijven en 1024 cylinders. 'Lilo' is afhankelijk van het BIOS tijdens het startproces. Linux zelf leest de fysieke harde schijf parameters uit zonder tussenkomst van het BIOS (tijdens het opstarten) en kent deze restricties dus niet.

Het probleem van 'lilo' m.b.t. de 1024 cylinders kan opgelost worden door de zogenaamde LBA modus te gebruiken bij het aansturen van de harde schijf. LBA (Logical Block Addressing) kan 'lilo' foppen door het aantal cylinders te halveren en het aantal koppen te verdubbelen. Voorbeeld: een harde schijf met 2048 cylinders en 16 koppen wordt met LBA voorgewend als een harde schijf met 1024 cylinders en 32 koppen. 'Lilo' kan door dit foefje Linux gewoon opstarten! LBA kan U in het BIOS van Uw computer instellen. Hoe U in het BIOS van Uw computer komt, hangt van Uw systeem af. Vaak is het een kwestie van op 'Del' drukken als de computer aangezet wordt.

In het geval dat U reeds een andere boot manager gebruikt, bijvoorbeeld omdat U beschikt over Windows NT/2000 of OS/2, dient U 'lilo' in de boot sector te installeren van de Linux root partitie. De OS/2 of Windows boot manager moet U dan gebruiken om Linux te kunnen booten. Alle andere opties van de originele boot managers blijven uiteraard ongewijzigd. Voor meer informatie over dit specifieke onderwerp moet U de Nederlandstalige lilo-HowTo nalezen.

Hoe dan ook: als Uw Linux boot partitie zich niet onder de 1024 cylinders bevindt, kijk dan of U een recente versie van 'lilo' hebt en dat Uw moederbord hier geschikt voor is. Zo niet, installeer 'lilo' dan beslist niet (maar gebruik 'loadlin')!!!


Ongedaan maken van de 'lilo' installatie

Als Uw computer om wat voor reden dan ook niet opstart met 'lilo' dan kunt U de bootsector van Uw harde schijf altijd repareren met de opdracht 'fdisk /mbr' onder DOS (dus eerst DOS opstarten, desnoods via een DOS opstartdiskette; Windows in DOS modus kan uiteraard ook). Uw harde schijf blijft gewoon bruikbaar, maar 'lilo' (of de verwijzing naar 'lilo') is verwijderd.


'Lilo' configuratie

Tijdens de installatie van 'lilo' wordt de file '/etc/lilo.conf' aangemaakt. Mijn 'lilo.conf' file ziet er als volgt uit: Het hekje (#) is het commentaarteken. Alle tekst na zo'n hekje wordt buiten beschouwing gelaten. Tijdens de configuratie van 'lilo' (door de opdracht 'lilo' in een xterm in te typen) wordt '/etc/lilo.conf' gelezen. Als resultaat worden onder andere de zogenaamde 'boot' parameters uitgevoerd tijdens het opstarten. In mijn situatie is dat bijvoorbeeld: Dit is voor mijn printer. Standaard gebruikt de Linux 2.2.x of 2.4.x kernel 'polling' om de eerste parallelle poort (waar mijn printer aanhangt) aan te sturen. Nadelen: het kost extra processor tijd en is relatief langzaam. 'Polling' wordt gebruikt omdat printers niet werken als de printerinterrupt niet vrij is of niet correct geconfigureerd is. 'Polling' omzeilt de printerinterrupt en werkt dus altijd! Echter: als je de printerinterrupt gewoon vrij hebt, dan is het zonde om hem niet te gebruiken. De Linux kernel doet dat standaard niet, tenzij je de bovenstaande 'boot' parameter meegeeft. '0x378' staat voor het 'base address' van de eerste parallelle poort (LPT1 onder DOS/Windows): dit is standaard voor LPT1. Indien deze afwijkt, moet U onder Windows kijken hoe Uw printer daar is geconfigureerd (of beter: hoe Uw eerste parallelle poort onder Windows is geconfigureerd; ervan uitgaande dat Uw printer op de eerste parallelle poort zit). De '7' staat voor de printerinterrupt. Dat kan in uw situatie eventueel afwijken. Neem altijd de originele Windows settings over!

De regel:

geeft aan dat mijn eerste harde schijf (/dev/hda) de boot partitie is. Meestal is dit de eerste harde schijf en zal dit '/dev/hda' zijn. De overige parameters onder het kopje 'compact' ken ik zelf ook niet. Ik laat ze gewoon staan.

Onder het kopje 'DOS bootable partition config begins' staat de informatie om DOS/Windows op te kunnen starten. Een vereiste voor DOS of Windows 95/98 is dat ze op de eerste partitie van de primaire harde schijf staan. De regel geeft aan dat de DOS/Windows partitie zich op dev/hda1 bevindt: de eerste partitie op /dev/hda; de primaire harde schijf.'/dev/hda1/ is geen Linux-partitie. Vandaar de naam 'other' om een ander besturingssysteem aan te geven. De regel geeft de naam weer die 'lilo' tijdens het opstarten aan de DOS/Windows partitie geeft. Dit kan de gebruiker vrij wijzigen (daarna moet 'lilo' wel even in een xterm uitgevoerd worden)! Omdat dit gedeelte bovenaan staat in 'lilo.conf', is Windows het besturingssysteem dat standaard opgestart wordt.

Onder het kopje 'Linux bootable partition config begins' staan de instellingen van de Linux partitie, bijvoorbeeld waar op deze partitie de kernel staat die opgestart moet worden, in mijn situatie dus: Verder wilt 'lilo' weten welke partitie mijn root partitie is. Dat wordt met de volgende regel aangemeld:
Het handige van 'lilo' is de optie om oude kernels op te kunnen starten in geval van nood. In mijn situatie zorgen daar de volgende regels voor: In '/boot/vmlinux' staat de originele SuSE kernel zoals die tijdens de installatie ooit is gekopieerd. Om de oude Linux kernel op te starten moet ik bij de lilo-prompt de opdracht 'old_linux' intypen. Uiteraard wilt 'lilo' nu ook weten wat mijn root partitie is (/dev/hda3).

De mogelijkheid om een oude kernel paraat te hebben kan ik iedereen van harte aanbevelen! als er met de huidige kernel iets fout gaat, bijvoorbeeld door het compileren van een nieuwe kernel, kunt U zonder veel problemen een oude kernel opstarten en het probleem oplossen!


Loadlin

Met loadlin kunt U een gecompileerde kernel onder DOS opstarten. Als om wat voor reden ook 'lilo' niet werkt, kunt U altijd Uw toevlucht nemen tot 'loadlin'.

Hoe werkt het?
  • Maak op Uw DOS-partitie een directory aan, bijvoorbeeld C:\LINUX.
  • Kopieer 'loadlin.exe' naar deze directory (staat op de eerste SuSE CD in de directory \DOSUTILS).
  • Kopieer een Kernel naar deze directory (bijvoorbeeld /boot/vmlinuz; de installatiekernel).

    Als U de kernel zelf hebt gecompileerd en Uw systeem configuratie is ongewijzigd, dan kunt U de Linux kernel eenvoudigweg opstarten door deze opdracht onder DOS in te typen: Linux wordt nu opgestart op de manier zoals U gewend bent. Soms echter kan het noodzakelijk zijn om 'loadlin' te vertellen welke partitie de Linux root partitie is. Dat kan noodzakelijk zijn wanneer U Uw systeem hebt aangepast en nog geen nieuwe kernel hebt gecompileerd. Tijdens de kernel-compilatie worden namelijk de dan geldende instellingen overgenomen. 'Loadlin' kan die settings 'overrulen' indien dit noodzakelijk is:
    'Loadlin' weet nu dat de root-partitie zich op /dev/hda3 bevindt. 'Loadlin' kent nog meer opties en mogelijkheden. De geinteresseerde lezer wordt daarvoor verwezen naar de Nederlandstalige loadlin-HowTo.

    Terug naar de hoofdpagina
    Lees of teken in mijn gastenboek
    Stuur een email naar: philipg@philipg.nl

    Gewoon een individuele pagina teller:

    Last modified: Mon Feb 28 21:31:27 CEST 2005