9.2. LILO

Mange vil allerede under installationen af Red Hat have installeret LILO som opstarter (eng. Boot Manager). Senere kan det være, at du vil have mulighed for at opstarte med en ny kerne eller lignende. Typisk ændres opsætningsfilen /etc/lilo.conf, hvor der står nogle linjer (et "vers" eller en stanza) for hvert af de styresystemer, der kan opstartes. Når du har rettet, skal du køre /sbin/lilo som "root", hvorefter rettelserne har effekt.

Et eksempel på /etc/lilo.conf kan være

Eksempel 9-2. En lilo.conf med tre boot-muligheder

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
lba32
timeout=50
image=/boot/bzImage
        label=linux
        root=/dev/hda3
        read-only
        restricted  
        password=HEMLIPASSWORD
        append="max_loop=128 quiet"
image=/boot/vmlinuz-2.0.40-2
        label=linux2
        root=/dev/hda3
        read-only
        restricted  
        password=HEMLIPASSWORD
other=/dev/hda1
        label=ms-dos
        table=/dev/hda

I eksemplet installeres bootsectoren på første IDE-disk (med linjen boot=/dev/hda. For at vise, hvordan disken med partitioner og boot-blokke "ser ud" på harddisken, har Werner Almesberger tegnet nogle diagrammer:

        +--------------------------------------------+
        | Partition table                  /dev/hda  |
        | +------------------------------------------|
        | | Partition 1                    /dev/hda1 |
        | |                                          |
        | |------------------------------------------|
        | | Partition 2                    /dev/hda2 |
        | |                                          |
        | |------------------------------------------|
        | | Extended partition             /dev/hda3 |
        | | +----------------------------------------|
        | | | Extended partition table               |
        | | |----------------------------------------|
        | | | Partition 3                  /dev/hda5 |
        | | |                                        |
        | | |----------------------------------------|
        | | | Extended partition table               |
        | | |----------------------------------------|
        | | | Partition 4                  /dev/hda6 |
        | | |                                        |
        +--------------------------------------------+


Hver partition har en boot sector. Partitionstabellen er en del af boot-sectoren, så en partition med boot sector kan illustreres således:

                    
                    +------------------------+ - - -\
              0x000 |                        |       |
                    |      Program code      |        
                    |                        |       |
                    |                        |
                    |------------------------|       |
              0x1BE |    Partition table     |
                    |                        |       |
                    |------------------------|
              0x1FE | Magic number (0xAA55)  |       | partition
                    +------------------------+
                    | lidt mellemrum ....... |       |
                    +------------------------+
                    | Partition med          |       |
                    | "unix-boot-sector"     |
                    | superblok              |       |
                    | inode-tabel            |
                    | fil-blokke m.v.        |       |
                    .                        .
                    .                        .       |
                    |                        |       |
                    +------------------------+ - - -/

LILO boot-sectoren er designet, så den kan være partitions-bootsector, eller med andre ord, der er plads til en partitions-tabel. Den kan derfor bruges som følger:

LILO bootsector er lille og kan ikke have alle de oplysninger, der skal bruges til at boote. Den får hjælp ved at henvise til præcise adresser (fysiske disk-blokke, positioner på disken) hvor resten af informationerne ligger. Først finder den nogle blokke med "blok-listen".

Bloklisten gemmer LILO i en fil, /boot/map , som genskrives, hver gang LILO kører uden fejl. I map filen ligger så alle de øvrige oplysninger, evt. prompt dialog og oplysning om, hvor kernens diskblokke er.

Map filen er specificeret ovenfor i Eksempel 9-2 på lilo.conf: map=/boot/map.

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
lba32
timeout=50
image=/boot/bzImage
        label=linux
        root=/dev/hda3
        read-only
        restricted
        password=HEMLI

install=<filename> er specifikation af, hvilken boot sector, som skal anvendes. Denne boot sector er typisk den, som følger med LILO systemet.

prompt: betyder at LILO skal vise en boot prompt, hvor vi kan indtaste noget til LILO eller til kernen. Hvis kernen ikke forstår vores indtastning, gives det videre til init-programmet, som styrer maskinens opstart. Efter 5 sekunders venten på tastaturtryk bootes den første mulighed i listen af kerner.

lba32 står for Logical Block Addressing 32-bit-tilstand og bør anvendes på alle nyere harddiske. På ældre PC'er kan det være nødvendigt i stedet at skrive "linear".

Eksemplet har to forskellige kerner (linjerne med image). Begge starter op med root-partition på /dev/hda3. Feltet "label" (mærkat) er det, du ser på skærmen som opstarts-valgmulighed. Den sidste mulighed i eksemplet er, at noget andet startes (her kaldt MS-DOS - men det er ikke sikkert, at det er MS-DOS!)

I eksemplet er der benyttet kommandoerne restricted og password. De linjer gør at man ikke kan starte op i enkeltbrugertilstand (eng. »single user mode«) uden at give password "HEMLIPASSWORD". Husk at /etc/lilo.conf ikke bør kunne læses af andre end root. Sæt dens access-attributer så kun root kan læse den:

[root@hven /root]#  chmod 600 /etc/lilo.conf

I eksemplet ses også kommandoen append= som får LILO til at give kernen nogle ekstra direktiver til opstart. Læs mere om direktiverne i Afsnit 9.4.

LILO kan en hel del. Hvis du vil udnytte mere af LILO, kan du læse README filen, typisk /usr/share/doc/lilo-*/README, eller du kan læse den mini-HOWTO om LILO, som findes under "Linux Documentation Project" på http://sunsite.dk/ldp. Specielt kan det være at de to alternativer "restricted" eller "password" (adgangskode) er værd at forstå.

9.2.1. Slette LILO

Tip: Hvis du kører DOS eller Windows 9x kan LILO fjernes ved at køre fdisk /mbr i et DOS-vindue under DOS/Windows.

Tip: Hvis du kører Windows 2000/XP kan LILO fjernes ved at boot op i en Genoprettelseskonsol. Du kan starte en genoprettelseskonsol ved enten boot den op fra din Windows cd, eller ved at installer den som et punkt i din boot loader, dette kan gøres ved at kører følgende, hvor cdrom er dit cd-rom-drev med din indsatte windows cd, cdrom:\i386\win32.exe /cmdcons i en cmd under windows. Du kan start en cmd ved at trykke på punktet kør i startmenuen, her skriver du cmd og trykker derefter ok. Når du er startet op i genoprettelseskonsolen skal du kører fixmbr Herefter kørere du så exit for at afslutte genoprettelseskonsolen og genstarte til Windows.

Tip: LILO kan i Linux fjernes ved at køre /sbin/lilo -u /dev/hda, hvis din boot-harddisk er /dev/hda.

9.2.2. LILO gik galt!

Hvis uheldet er ude og du har Linux installeret og der er problemer med LILO, så maskinen ikke booter, så kan du bruge din installations-cd-rom til at reparere systemet med.

Du skal starte op på din Linux-cd-rom og vælge rescue-muligheden. Du får ikke kontakt med din harddisk derved, men får Linux startet op med programmer til at klare problemerne.

Hvis vi antager at Linux er installeret med / (roden) på /dev/hda1, så kan du skrive følgende for at montere harddisk-roden på /mnt.

[root@hven /root]#  mount /dev/hda1 /mnt

Nu kan du med cd /mnt/etc komme ned til /etc på harddisken. Husk at dit Linux-system er fra din cd-rom og din cd-rom er tilgængelig via /mnt. Du kan nu rette i lilo.conf eller rettere /mnt/etc/lilo.conf, f.eks. med vi eller pico. Derefter kan du køre lilo -r /mnt, der læser lilo.conf-filen fra /mnt/etc/lilo.conf, og installerer LILO, som om du havde /mnt som dit rod-filsystem.

Husk at det kan være et problem at boote fra en harddisk, som har flere end 1024 cylindre - hvis de filer som LILO skal bruge for at boote ligger over cylinder 1024, er det ikke altid LILO eller din BIOS kan finde ud af det, og derfor vil LILO i så fald komme med en advarsel. Det kan være årsagen til, at den ikke vil installeres automatisk. Heldigvis er dette kun et problem med ældre distributioner, idet LILO fra version 0.21.4.2 og fremover kan understøtte op til 2 Tb diske, hvilket vel stadig dækker de fleste personers behov :-) Husk dog at den nye LILO kun vil virke med BIOS'er der understøtter de udvidede LBA-funktioner til store diske, så ældre BIOS'er og nyere BIOS'er der ikke helt følger standarden kan stadig give problemer.