← Back to team overview

sslug-teknik team mailing list archive

Re: Sv: Vedr Linux CD

 

Brian Christiansen wrote:
> 
> Skal man så bare bruge den ene fil, til at få et helt operation system til at køre, jeg mener, at man skal bruge en hel cdrom til windows og kun en fil til linux???...

Den fil han snakker om er "kernen". Det er det program, der styrer
adgang til 
hardware, og fordeler ressourcer mellem de processor der kører på
systemet.

Kernen ligger typisk (RedHat) under /boot og hedder vmlinuz. (Dybt
forvirrende). Kernen kan have understøttelse for moduler - f.eks. ligger
understøttelsen for
mit tv kort i moduler, som jeg kan ændre i uden at bringe systemet ned.

Alle andre programmer bruger kernen til at tilgå systemets ressourcer -
enten
direkte, eller ved at bruge systembibliotekerne. 

Her kommer en -ultrakort- oversigt over hvordan et "typisk" Intel linux
system starter. (Som jeg skriver fordi jeg har drukket for meget cola
til at sove, men er for træt til at lave noget fornuftigt. Bemærk, det
er min opfattelse - andre
ved nok mere om det, og kan eventuelt rette det jeg skriver).

o Først tændes systemet - BIOS'en aktiveres og fyrer op under
forskellige kort, mv.

o Når diskene er gået i gang, indlæser BIOS'en Master Boot Recorden
(MBR) fra den "første" fysiske disk - "første" er som BIOS'en synes,
hvilket kan give "sjove" problemer med IDE & SCSI i den samme maskine.
CPU'en er her i 8086 mode (tror jeg nok. Ihvertfald ikke mere end 286
mode.)

o For et DOS system indeholder MBR typisk en stump kode, der kigger
efter "den aktive partition" på den første fysiske DISK. Jeg ved ikke
hvem der har fundet på det. Man kan iøvrigt restore sin MBR til denne
tilstand med dos programmet fdisk; fdisk /mbr dumper en stump kode på
MBR der osv. Når denne partition er fundet, indlæses boot sektoren fra
denne partition, og DOS/Windows bootes. (Dos/Windows (NT)) bootes stort
set på den samme måde.

o For et Linux system indeholder MBR typisk en stump kode skrevet af
programmet LILO. Når denne kode er loadet, skrives "L" på skærmen. Denne
kode indeholder en specifikation af, hvor filen /boot/boot.b ligger.
Bemærk at denne specifikation er uafhængig af filsystem. Det betyder at
man ikke må flytte rundt på /boot/boot.b, uden at køre lilo. Når
/boot/boot.b er loadet, skrives et "I" på skærmen. Derefter forsøges
boot.b afviklet. Hvis det lykkedes skrives et L på skærmen. Herefter vil
LILO forsøge at indlæse /boot/map filen. Hvis denne fil kan afvikles vil
der blive skrevet et O på skærmen. I map filen ligger den information
som LILO skal bruge for at boote linux kernen. Eller rettere; for at
boote 1 ud af 16 mulige systemer. F.eks. kan LILO boote Windows ved at
aktivere boot sektoren på den partition som windows ligger på. (Man skal
iøvrigt heller ikke flytte rundt på map uden at køre LILO). Bemærk, at
det er som hovedregel totalt trivielt at få LILO til at boote andre
OS'er. Der findes folk som skriver lange artikler om hvordan man får
Windows NT til at boote linux, men det er faktisk meget nemmere at få
lilo til at boote NT. 

o Hvis man har valgt at starte Linux, indlæser LILO den kerne man har
valgt i RAM. Dernæst afvikles kernen. (Eventuelle argumenter til lilo,
f.eks. den klassiske "linux single" gives automatisk til kernen). En af
de første ting kernen gør, er at sætte CPU'en i protected mode. Det vil
sige, at den ikke længere emulerer en oldnordisk CPU. Derefter booter
kernen. 

o Når kernen er færdig med at boote, starter den programmet "init".
Derefter starter kernen ikke flere programmer. Alle andre programmer
bliver startet af init. (Iøvrigt er det derfor at init har process
nummer 1). Init bruger en konfigurationsfil, der typisk ligger i
/etc/inittab. Den svarer groft sagt til autoexec.bat under DOS. (Grov
sammenligning). Hvis man ser i den, vil man se at init typisk starter en
bunke /sbin/mingetty, starter de services der hører til
det konkrete runlevel, etc. 

Angående argumenter til kernen fra LILO: Udover argumenter til kernen om
underligt hardware, som man lejlighedsvis kan indtaste her, kan man
f.eks. skrive
LILO:linux init=/bin/bash 
for at få kernen til at starte bash istedet for init.

Jeg har skrevet "typisk" mange steder ovenfor. Som med alt andet under
Linux gælder at man kan konfigurere et givent system helt helt
anderledes. Men, som jeg har antydet skal der mere til en blot een fil,
før Linux kører. De mindste distributioner jeg har hørt om fylder
omkring en diskette - og, det er meget specialiserede løsninger, f.eks.
"Lav en gammel 386 m. 2 eller flere netkort om til en router, ved bare
at stikke en diskette i den".  I praksis installerer flertallet Linux
fra CD'ere, mens de heldige få, installerer fra nettet.

Kernen definerer grænselaget til hardwaren. Da jeg installerede linux
første gang, var der ikke noget der hed moduler. Jeg havde brug for IPX,
samt understøttelse af mit lydkort. Men, jeg kunne ikke finde ud af at
kompilere en kerne selv. En af mine kammerater havde adgang til en linux
maskine (en pentium - min var en 486) som han loggede ind på fra DIKU.
Derefter oversatte han en kerne til mig, der havde den support jeg havde
brug for. Den fik jeg så på en diskette, og tog med hjem til mig selv.
Det var stort. 
(Til dem der driller mig med Quake; ja - DOS Quake klienten
understøttede kun IPX på det tidspunkt, men heldigvis var der en UDP/IP
til IPX proxy man kunne hente fra nettet. Og serveren kørte selvklart
langt bedre under Linux end under DOS :-)

Orv, der fik jeg da vist fablet lidt. Oh well.

Mads



References