Bootning

Från Wikipedia
Hoppa till: navigering, sök

Bootning eller Initial Program Load är en term för processen som startar igång ett operativsystem på en dator när strömmen slås på. Med bootsekvens avses de operationer som datorn genomför efter strömpåslag som leder till att datorn är driftklar.

Ordets ursprung[redigera | redigera wikitext]

Ordet 'bootning' kommer från det engelska substantivet booting, en förkortning av bootstrapping, som i sin tur är en sammanfattning av det paradoxala engelska uttrycket lift oneself up by the bootstraps (att lyfta sig själv i stövelremmarna). Uttrycket syftar på en legend om Baron von Münchhausen som kunde lyfta upp sig ur ett träsk genom att dra sig själv i håret; denna legend förändrades i senare versioner till att han använde sig av sina stövelremmar för att dra ut sig ur havet.

Bootloader[redigera | redigera wikitext]

De flesta datorer kan enbart utföra instruktioner som befinner sig i minnet (antingen RAM eller ROM). Moderna operativsystem lagras på hårddiskar, eller ibland på Live-CD:er, flashminnen eller andra icke-flyktiga lagringsenheter. När datorn först slås på finns inte operativsystemet i minnet, och datorns hårdvara kan inte på egen hand genomföra en sådan komplex operation som att läsa in ett program från disk. Alltså en paradox: för att kunna läsa in operativsystemet, verkar det som om man måste redan ha operativsystemet laddat.

Lösningen på paradoxen är att använda ett litet specialskrivet program, kallat bootloader, vars enda uppgift är att läsa in andra program för att hjälpa igång operativsystemet. Detta program ligger i ROM, alltså minne varifrån processorn direkt kan exekvera, men som inte försvinner när strömmen stängts av. Ofta används flerstegs-bootloaders, där flera program läser in och anropar varann successivt tills det sist läser in själva operativsystemet. Det steg i en PC som kan läsa hårddisken kallas BIOS.

Tidiga datorsystem hade en rad med strömbrytare på sin frontpanel som tillät operatören att manuellt mata in bootloaderns maskinkodsinstruktioner i minnet, för att sedan starta CPU:n. Bootloadern kunde sedan läsa in operativsystemet från ett extern medium som hålremsa, hålkort eller trumminne. Pseudokoden för en sådan bootloader kan vara så enkel som den följande:

0: ge registret P värdet 8
1: kolla om läsaren är beredd
2: om så inte är fallet, gå till steg 1
3: läs in en byte från läsaren till register A
4: om läsaren har läst slut remsan, hoppa till 8
5: lagra A i minnesadressen P
6: öka P med 1
7: gå till steg 1

I moderna datorer börjar processen med att processorn börjar exekvera maskinkodsinstruktioner på en fast adress (hos en x86-kompatibel processor är denna adress 0xF000:0xFFF0). På PC-kompatibla datorer finns BIOSets startinstruktioner just där. BIOSets bootloader letar då efter enheter som går att boota ifrån, väljer den lämpligaste av dessa, och läser ett litet program från en speciell sektion av enheten, oftast bootsektorn.

Bootloaders möter stora begränsningar, framförallt storleksmässiga. Exempelvis måste det första steget i en bootloader på en PC-kompatibel dator få plats i de första 446 bytes i MBR, för att ge plats åt partitionstabellen (64 byte) och en tvåbytes 'signatur' (0xAA 0x55) som BIOSet kräver för att identifiera en bootloader.

Det lilla programmet som BIOSet hämtat från enheten är oftast inte i sig ett komplett operativsystem, men bara en 'sekundär bootloader'. Några exempel på sådana är NTLDR, LILO eller GRUB. Dessa måste nu i sin tur läsa in resten av operativsystemet i minnet och sedan ge över kontrollen till det. Operativsystemet initierar sig då, läser in fler drivrutiner och startar ytterliga program som krävs för att operativsystemet skall fungera.

Bootningen betraktas som klar när datorn är färdig att användas. Det tar ungefär en minut för typiska moderna PC-datorer att boota, varav ungefär 15 sekunder består i BIOSets självtest (POST), medan somliga servrar kan ta många minuter att boota och starta alla tjänster.

De flesta inbyggda system måste boota omedelbart: det är oacceptabelt att vänta en minut på att TV:n eller bilen skall komma igång. Därför har sådan system sina operativsystem helt i ROM- eller flashminnen så att det kan exekveras direkt.

BIOS-bootenheter[redigera | redigera wikitext]

BIOS-bootenheterna är de enheter som måste vara initierade före operativsystemet läses in. Bland dessa räknas den primära inenheten (tangentbord), den primära utenheten (bildskärm) och lagringsenheten som operativsystemet är lagrat på (diskett, hårddisk, CD-ROM, flashminne, ett nätverkskort som använder sig av PXE m.fl.) I ett modernt BIOS kan användaren rangordna en lista av flera enheter från vilka BIOSet gör försök att boota. Hittar BIOSet inte ett bootbart operativsystem på den första enheten i listan försöker den boota på nästa enhet i listan tills antingen ett operativsystem är laddat eller listan tar slut. Bootningen har i det sista fallet misslyckats och ett felmeddelande visas på skärmen.