2.4. Opstart af Linux

2.4.1. Samtidig installation af Windows og Linux

Windows og Linux kan sagtens være installeret på samme computer. Ved at bruge et opstartsprogram kan man, når man starter computeren, vælge om den skal starte i Linux eller i Windows. Det er samtidig også muligt at have flere forskellige udgaver af Linux og/eller Windows installeret på samme maskine. Man kan dog kun køre én ad gangen (med mindre man bruger VMware).

Når man starter en computer, der kun har Windows installeret indlæses der først et lille startprogram fra Master Boot Record (MBR), der ligger først på den første harddisk (/dev/hda) sammen med beskrivelsen af hvordan harddisken er opdelt (partitionstabellen). Startprogrammet fra MBR indlæser et egentligt startprogram fra den første del af den første harddisk (/dev/hda1) og overfører kontrollen til det. Hvis computeren kører Windows 95 eller 98 vil DOS blive startet, og DOS vil så automatisk starte Windows. Kører computeren Windows NT eller 2000 giver startprogrammet et valg mellem forskellige opsætninger af styresystemet.

Microsoft anbefaler, at C-drevet under Windows NT er formateret som et FAT-filsystem. Det giver flere muligheder for fejlfinding end hvis man bruger det nyere NTFS-filsystem. En praktisk sideeffekt af at bruge et FAT-filsystem er at Linux ikke har problemer med at læse fra og skrive til C-drevet. En anden fordel er at hvis man får en maskine hvor Windows fylder hele harddisken, så kan man bruge DOS-programmet fips.exe til at frigøre en del af Windows-partitionen til brug for Linux. Det er derimod ikke muligt at omstrukturere NTFS-filsystemer og det vil derfor være nødvendigt at slette og geninstallere Windows, hvis man har en harddisk der er fyldt op af et enkelt NTFS-filsystem.

Når man starter en maskine, der kun har Linux installeret, startes LInux LOader (LILO), der ligesom Windows' startprogram ligger i MBR. Der findes også en række andre startprogrammer til Linux, men dem vil vi ignorere i denne omgang. LILO giver brugeren mulighed for at vælge hvilken udgave af kernen, der skal startes. Typisk vil man kun have én udgave liggende, men det giver let mulighed for at afprøve en nyoversat kerne. Hvis den ikke virker kan man bare genstarte, og vælge den gamle og velfungerende kerne i stedet for. Der er mere om LILO i bogen "Linux - Friheden til at vælge installation".

Hvis det er Windows' startprogram der ligger i MBR, skal Windows-opsætningen ændres så det også kan starte Linux. Hvis det er Linux' startprogram (LILO) der ligger i MBR skal dets opsætning tilsvarende ændres, så det kan starte Windows. De følgende afsnit vil gennemgå begge muligheder.

Bemærk at når Windows (gen)installeres, bliver MBR harddisken overskrevet! Hvis LILO er installeret i MBR vil den derfor blive slettet, og man kan således ikke starte Linux. Det er derfor meget vigtigt at lave en startdiskette (eng. boot disk) til Linux, før man går i gang med at installere Windows på en maskine der allerede er Linux på. Det kan også være fornuftigt at lave en startdiskette før man begynder at eksperimentere med LILO. Så kan man altid redde sig ud af en uheldig opsætning af LILO.

Startdisketten kan fremstilles efter installationen med Linux-kommandoen mkbootdisk. Husk at have en formateret diskette parat. Det er vigtigt, at disketten er 100% fri for fysiske fejl!

Eksempel:

[root@linus /root]# fdformat /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
Verifying ... done
[root@linus /root]# mkbootdisk `uname --release`
Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press <Enter> to continue or ^C to abort:

Det er også en smart idé at lave en startdiskette til Windows før du går igang med LILO-eksperimenter. I Windows 95 og 98 kan man køre format a: /s på kommandolinjen. I Windows NT og 2000 skal disketten formateres, da det medfører at de nødvendige systemfiler bliver kopieret ud på disketten.

2.4.1.1. Linux styrer opstarten

Den letteste løsning er at lade Linux styre opstarten af maskinen. Det ser også mest blæret ud :-)

Under installationen af Red Hat gøres dette ved at vælge at lægge LILO i MBR. Under Red Hat-installationen vil et eventuelt eksisterende Windows-system automatisk blive tilføjet som en valgmulighed i LILO.

Har du allerede installeret Linux, kan et Windows-system føjes til LILO's menu ved at føje følgende linjer til /etc/lilo.conf:

other=/dev/hda1
        label=dos
        table=/dev/hda

Husk, at hver gang opsætningen af LILO ændres skal du køre /sbin/lilo som root. Det vil så opdatere informationerne, der ligger i MBR.

Når LILO starter får du en oversigt over mulighederne. Typisk kan du vælge mellem 'linux' og 'dos'. Når du vælger 'dos', kalder LILO Windows' "OS Loader". Med ældre udgaver af LILO er det nødvendigt at trykke på tabulatortasten for at blive præsenteret for valgmulighederne.

2.4.1.2. Windows styrer opstarten

Dette afsnit gælder ikke for Windows 95 og Windows 98. Hvis du bruger et af disse to systemer skal du lade Linux styre opstarten som beskrevet i forrige afsnit. Opsætningen af Windows NT's og 2000's startprogram, "OS Loader" findes i filen C:\Boot.ini.

Når Windows styrer opstarten skal LILO installeres i boot-sektoren på rod- eller /boot-filsystemet. For at kunne starte Linux fra Windows skal boot-sektoren kopieres over i en fil, overføres til C-drevet og føjes til C:\Boot.ini.

Først skal bootsektoren gemmes som en fil, for eksempel bootsect.lnx. I /etc/lilo.conf er der en linje "boot=...". Den fortæller hvor LILO's boot-sektor findes.

Eksempel:

[root@linus /root]# grep "^boot" /etc/lilo.conf
boot=/dev/hda3

Vi kan se at i eksemplet er LILO placeret i boot-sektoren på /dev/hda3. Vi kan nu kopiere boot-sektoren ud i filen bootsect.lnx med kommandoen:

[root@linus /root]#  dd if=/dev/hda3
of=/bootsect.lnx bs=512 count=1

(kopiér den første blok à 512 bytes fra /dev/hda3 til bootsect.lnx)

bootsect.lnx skal nu kopieres til Windows' C-drev og den følgende linje skal føjes til c:\Boot.ini:

C:\bootsect.lnx="Linux - Red Hat"

Denne linjer betyder at NT's startprogram kalder LILO - i filen C:\bootsect.lnx - hvis du vælger Linux i NT's opstartsmenu. Dette trick kan også laves med flere boot-sektorer.

Hvis C-drevet er i FAT-format, kan du montere det fra Linux (det er de to første linjer nedenfor). De to sidste linjer kopierer boot-sektorfilen til Windows-drevet, og føjer den til "OS Loaderens" opsætningsfil. Bemærk at >> skal bruges, da > alene vil overskrive filen og ikke føje til den:

[root@linus /root]#  mkdir /dos
[root@linus /root]#  mount -t vfat /dev/hda1 /dos
[root@linus /root]#  mv /bootsect.lnx /dos/bootsect.lnx
[root@linus /root]#  echo 'C:\\bootsect.lnx="Linux - Red Hat 7.0"' >> /dos/BOOT.INI

Dette virker ikke hvis dit Windows-drev er NTFS-formateret. Har du adgang til en FTP-server, kan du kopiere bootsect.lnx til en FTP-server, genstarte maskinen i Windows og hente filen igen. Et alternativ er at kopiere filen ud på en diskette med brug af mcopy, som vist her:

[root@linus /root]# mcopy /bootsect.lnx a:

Genstart derefter din maskine.

Eksempel på en komplet C:\Boot.ini:

[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(3)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\winnt="NT Workstation 4.00 SP3"
multi(0)disk(0)rdisk(0)partition(3)\winnt="NT Workstation 4.00 SP3 [VGA
mode]" /basevideo /sos
C:\="Windows 95"

Denne fil er Windows' startprograms opsætningsfil. Filen skal nu tilrettes, så Linux også bliver en valgmulighed.

Skriv i DOS/NT:

C:
CD \
ATTRIB -s -r BOOT.INI
EDIT BOOT.INI

Tilføj følgende linje:

C:\bootsect.lnx="Linux - Red Hat 7.0"

Sæt derefter filens attributter igen:

ATTRIB +s +r BOOT.INI

Nu kan Windows' "OS Loader" kalde LILO og dermed starte Linux. Så du kan opnå valgfrihed - også med Windows! Husk, at hvis du ændrer opsætningen af LILO, skal du huske at fremstille en ny bootsect.lnx-fil og kopiere den over på Windows-filsystemet.

Hvis du vil vide meget mere om MBR-placering, opstart og diskopdeling, kan det anbefales at læse HOWTO-guiden om LILO. På Red Hat Linux-cd-rom'en hedder filen /doc/HOWTO/mini/LILO.