Bootování - Booting

Vývojový diagram spouštění počítače

V oblasti výpočetní techniky je bootování procesem spuštění počítače . Může být spuštěno hardwarem , například stisknutím tlačítka, nebo softwarovým příkazem. Po zapnutí nemá centrální procesorová jednotka (CPU) počítače v hlavní paměti žádný software , takže nějaký proces musí před spuštěním načíst software do paměti. To lze provést hardwarem nebo firmwarem v CPU nebo samostatným procesorem v počítačovém systému.

Restartování počítače se také nazývá restart , který může být „tvrdý“, např. Poté, co je napájení CPU přepnuto z vypnutého do zapnutého stavu, nebo „měkký“, kde není přerušeno napájení. U některých systémů může soft boot volitelně vymazat RAM na nulu. Tvrdé i měkké spouštění lze zahájit hardwarem, například stisknutím tlačítka nebo softwarovým příkazem. Bootování je dokončeno, když je dosažen operační běhový systém , obvykle operační systém a některé aplikace.

Proces vrácení počítače ze stavu spánku (pozastavení) nezahrnuje spuštění; obnovení ze stavu hibernace však ano. Minimálně některé vestavěné systémy nevyžadují znatelnou spouštěcí sekvenci, aby mohly začít fungovat, a po zapnutí mohou jednoduše spouštět operační programy, které jsou uloženy v paměti ROM. Všechny výpočetní systémy jsou stavové stroje a restartování může být jedinou metodou, jak se vrátit do určeného nulového stavu z nezamýšleného, ​​uzamčeného stavu.

Kromě načítání operačního systému nebo samostatného nástroje může proces spouštění také načíst program výpisu paměti pro diagnostiku problémů v operačním systému.

Boot je zkratka pro bootstrap nebo bootstrap load a pochází z fráze vytáhnout se nahoru něčím bootstrapem . Toto použití upozorňuje na požadavek, že pokud je většina softwaru načtena do počítače jiným softwarem, který již v počítači běží, musí existovat nějaký mechanismus pro načtení původního softwaru do počítače. Počáteční počítače používaly různé metody ad-hoc k získání malého programu do paměti k vyřešení tohoto problému. Vynález paměti jen pro čtení (ROM) různých typů vyřešil tento paradox tím, že umožnil počítačům dodávat spouštěcí program, který nebylo možné vymazat. Růst kapacity ROM umožnil zavádění stále propracovanějších postupů při spouštění.

Dějiny

Přepínače a kabely používané k programování ENIAC (1946)

Existuje mnoho různých metod, jak načíst krátký počáteční program do počítače. Tyto metody sahají od jednoduchého fyzického vstupu až po vyměnitelná média, která pojmou složitější programy.

Příklady integrovaných obvodů ROM

Rané počítače

Počáteční počítače ve čtyřicátých a padesátých letech minulého století byly jedinečným technickým úsilím, jehož programování mohlo trvat týdny, a načítání programu bylo jedním z mnoha problémů, které bylo třeba vyřešit. Starší počítač ENIAC neměl žádný program uložený v paměti, ale byl nastaven pro každý problém konfigurací propojovacích kabelů. Bootstrapping se nevztahoval na ENIAC, jehož hardwarová konfigurace byla připravena k řešení problémů, jakmile bylo připojeno napájení.

Systém EDSAC , druhý počítač s uloženými programy, který měl být postaven, používal krokové přepínače k přenosu pevného programu do paměti, když bylo stisknuto jeho startovací tlačítko. Program uložený na tomto zařízení, který David Wheeler dokončil na konci roku 1948, nahrál další instrukce z děrné pásky a poté je provedl.

První komerční počítače

První programovatelné počítače pro komerční prodej, jako například UNIVAC I a IBM 701, obsahovaly funkce, které usnadňují jejich provoz. Obvykle obsahovaly instrukce, které prováděly kompletní vstupní nebo výstupní operaci. Stejnou hardwarovou logiku lze použít k načtení obsahu děrovací karty (nejtypičtější) nebo jiných vstupních médií, jako je magnetický buben nebo magnetická páska , která obsahovala program bootstrap stisknutím jediného tlačítka. Tato koncepce zavádění byla nazývána různými názvy pro počítače IBM padesátých a na začátku šedesátých let, ale IBM používala s IBM 7030 Stretch termín „Počáteční načtení programu“ a později jej použila pro své mainframe řádky, počínaje System/360 v 1964.

Děrovaná karta načtení počátečního programu pro IBM 1130 (1965)

Počítač IBM 701 (1952–1956) měl tlačítko „Načíst“, které iniciovalo čtení prvního 36bitového slova do hlavní paměti z děrné karty ve čtečce karet , magnetické pásky v páskové jednotce nebo jednotky magnetického válce , v závislosti na poloze přepínače zatížení. Levé 18bitové poloviční slovo bylo poté provedeno jako instrukce, která obvykle přečetla další slova do paměti. Načtený zaváděcí program byl poté spuštěn, což zase načetlo větší program z tohoto média do paměti bez další pomoci lidského operátora. V tomto smyslu se termín „bota“ používá nejméně od roku 1958.

Konzole IBM System/3 ze 70. let minulého století. Přepínač volby zatížení programu je vlevo dole; Přepínač načtení programu je vpravo dole.

Jiné počítače IBM té doby měly podobné funkce. Například systém IBM 1401 (c. 1958) používal čtečku karet k načtení programu z děrné karty. 80 znaků uložených na děrné kartě bylo načteno do paměťových míst 001 až 080, poté se počítač rozvětvil na paměťové místo 001, aby přečetl svou první uloženou instrukci. Tato instrukce byla vždy stejná: přesunout informace v těchto prvních 80 paměťových místech do oblasti sestavy, kde bylo možné kombinovat informace v děrných kartách 2, 3, 4 atd. Za vzniku uloženého programu. Jakmile byly tyto informace přesunuty do oblasti montáže, stroj se rozvětví na instrukci v místě 080 (přečte kartu) a přečte se další karta a její informace se zpracují.

Dalším příkladem byl IBM 650 (1953), desítkový stroj, který měl na svém ovládacím panelu skupinu deseti 10-polohových přepínačů, které byly adresovatelné jako paměťové slovo (adresa 8000) a mohly být provedeny jako instrukce. Nastavením přepínačů na 7004000400 a stisknutím příslušného tlačítka se načte první karta ve čtečce karet do paměti (operační kód 70), počínaje adresou 400 a poté přeskočí na 400, aby se na této kartě spustil program.

Konkurenti IBM také nabízeli načítání programu jedním tlačítkem.

  • CDC 6600 (c. 1964) měla mrtvého počáteční panel s 144 Přepínače; přepínač mrtvého startu zadal 12 slov z přepínacích přepínačů do paměti periferního procesoru ( PP ) 0 a zahájil sekvenci načítání. PP 0 nahrál potřebný kód do vlastní paměti a poté inicializoval ostatní PP.
  • GE 645 (c. 1965) měl tlačítko „SYSTEM BOOTLOAD“, které, když tiskl, způsobila jednu z řadiče I / O načíst 64-slovo programu do paměti z diody paměť pouze pro čtení a doručit přerušení způsobit aby se program spustil.
  • První model PDP-10 měl tlačítko „READ IN“, které po stisknutí resetovalo procesor a zahájilo I/O operaci na zařízení určeném přepínači na ovládacím panelu, přičemž přečetlo 36bitové slovo, které cílová adresa a počet pro další čtení slov; když bylo čtení dokončeno, procesor začal vykonávat načtený kód skokem na poslední načtené slovo.

Pozoruhodnou variaci tohoto lze nalézt na Burroughs B1700, kde není ani bootstrap ROM, ani pevná IPL operace. Místo toho po resetování systému čte a spouští operační kódy postupně z páskové jednotky namontované na předním panelu; tím se nastaví zavaděč v RAM, který se poté spustí. Protože to však činí málo předpokladů o systému, lze jej stejně dobře použít k načtení diagnostických (rutinních testů údržby), které zobrazují srozumitelný kód na předním panelu i v případech hrubého selhání procesoru.

IBM System/360 a nástupci

V systému IBM System/360 a jeho nástupcích, včetně aktuálních strojů z/Architecture , je proces spouštění známý jako IPL ( Initial Program Load ).

IBM vytvořilo tento termín pro 7030 (Stretch) , oživilo jej pro návrh System/360 a v těchto prostředích jej používá i dnes. V procesorech System/360 je IPL iniciováno počítačovým operátorem zvolením adresy zařízení se třemi hexadecimálními číslicemi (CUU; C = adresa kanálu I/O, UU = řídicí jednotka a adresa zařízení) a následným stisknutím tlačítka LOAD . U špičkových modelů System/360 , většiny System/370 a některých novějších systémů jsou funkce přepínačů a tlačítka LOAD simulovány pomocí volitelných oblastí na obrazovce grafické konzoly, často zařízení typu IBM 2250 nebo IBM Zařízení podobné 3270 . Například u System/370 Model 158 má sekvence klávesnice 0-7-X (nula, sedm a X v uvedeném pořadí) za následek IPL z adresy zařízení, která byla zadána do vstupní oblasti. Amdahl 470V / 6 a související CPU podporován čtyři hexadecimální číslice na těchto procesorech, které měly volitelný druhý kanál jednotka nainstalována, po dobu celkem 32 kanálů. Později by IBM také podporovala více než 16 kanálů.

Funkce IPL v systému/360 a jeho následnících a jeho kompatibilních zařízeních, jako je Amdahl, čte 24 bajtů ze zařízení specifikovaného operátorem do hlavního úložiště počínaje skutečnou adresou nula. Druhá a třetí skupina po osmi bajtech jsou pro pokračování načítání spouštěcího programu považovány za CCW ( Channel Command Words ) (první CCW je vždy simulováno CPU a skládá se z příkazu Read IPL, 02h , s řetězcem příkazů a potlačením nesprávné délky indikace se prosazuje). Po dokončení příkazů kanálu I/O se první skupina osmi bajtů načte do procesoru Program Status Word (PSW) a spouštěcí program spustí provádění v místě určeném tímto PSW. Zařízení IPL je obvykle disková jednotka, a proto má zvláštní význam příkazu 02h pro čtení, ale přesně stejný postup se používá i pro IPL z jiných zařízení vstupního typu, jako jsou páskové jednotky nebo dokonce čtečky karet, v způsob nezávislý na zařízení, umožňující například instalaci operačního systému na zbrusu nový počítač z počáteční distribuční magnetické pásky OS. U diskových řadičů také příkaz 02h způsobí, že vybrané zařízení vyhledá 0000h , hlava 0000h , simuluje příkaz Hledat válec a hlavu, 07h , a vyhledá záznam 01h , simuluje příkaz Search ID Equal, 31h ; vyhledávání a vyhledávání nejsou simulovány řadiči pásek a karet, protože pro tyto třídy zařízení je 02h příkaz jednoduše sekvenční příkaz pro čtení, nikoli příkaz Read IPL.

Disk, páska nebo balíček karet musí obsahovat speciální program pro načtení skutečného operačního systému nebo samostatného nástroje do hlavního úložiště, a pro tento konkrétní účel je „IPL Text“ umístěn na disk samostatným DASDI (Direct Access Storage Device) Inicializační) program nebo ekvivalentní program běžící pod operačním systémem, např. ICKDSF, ale pásky a balíčky s podporou IPL jsou obvykle distribuovány s tímto „IPL textem“, který již je k dispozici.

Minipočítače

Přední panel PDP-8/E zobrazující přepínače používané k načtení programu bootstrap

Minipočítače , počínaje Digital Equipment Corporation (DEC) PDP-5 a PDP-8 (1965), zjednodušily konstrukci pomocí CPU k podpoře vstupních a výstupních operací. To ušetřilo náklady, ale zkomplikovalo bootování než stisknutí jediného tlačítka. Minipočítače obvykle měly nějaký způsob, jak přepínat v krátkých programech manipulací s řadou přepínačů na předním panelu. Vzhledem k tomu, že rané minipočítače používaly paměť s magnetickým jádrem , která neztratila své informace, když bylo vypnuto napájení, tyto zavaděče bootstrap zůstanou na svém místě, pokud nebudou vymazány. Vymazání se někdy stalo omylem, když chyba programu způsobila smyčku, která přepsala veškerou paměť.

Mezi další minipočítače s tak jednoduchou formou spouštění patří řada HP 2100 společnosti Hewlett-Packard (polovina 60. let), původní Data General Nova (1969) a PDC- DEC (1970) společnosti DEC .

DEC později přidal volitelnou paměť diodové matice jen pro čtení pro PDP-11, která ukládala zaváděcí program až 32 slov (64 bajtů). Skládal se z tištěného obvodu karty, M792, že zapojen do Unibus a držel 32 o 16 pole polovodičových diod. Když bylo všech 512 diod na svém místě, paměť obsahovala všechny „jedno“ bity; karta byla naprogramována odříznutím každé diody, jejíž bit měl být „nula“. DEC také prodával verze karty, řady BM792-Yx, předem naprogramované pro mnoho standardních vstupních zařízení jednoduchým vynecháním nepotřebných diod.

Podle staršího přístupu má dřívější PDP-1 hardwarový zavaděč, takže operátor potřebuje pouze stisknout přepínač „načíst“, aby dal čtečce papírových pásek pokyn k načtení programu přímo do základní paměti. Data General Supernova použila přepínače na předním panelu k tomu, aby počítač automaticky načítal pokyny do paměti ze zařízení určeného datovými přepínači na předním panelu, a poté přeskočil na načtený kód; Nova 800 a 1200 měly přepínač, který načítal program do hlavní paměti ze speciální paměti jen pro čtení a skočil do ní.

Rané příklady zavaděče minipočítačů

V minipočítači se čtečkou papírových pásek by první program spuštěný při zaváděcím procesu, zavaděč, přečetl do základní paměti buď zavaděč druhého stupně (často nazývaný binární zavaděč ), který by dokázal přečíst papírovou pásku s kontrolním součtem nebo operační systém z externího paměťového média. Pseudokód pro zavaděč může být stejně jednoduchý jako následujících osm pokynů:

  1. Nastavte registr P na 9
  2. Zkontrolujte připravenost čtečky papírových pásek
  3. Pokud nejste připraveni, přejděte na 2
  4. Přečtěte si bajt od čtečky papírových pásek k akumulátoru
  5. Uložte akumulátor na adresu v registru P.
  6. Pokud je konec pásky, přejděte na 9
  7. Zvyšte registr P
  8. Skočit na 2

Související příklad je založen na zavaděči pro minipočítač Nicolet Instrument Corporation ze sedmdesátých let minulého století, který používá děrovací jednotku čtečky papírových pásek na dálnopisné tiskárně Teletype Model 33 ASR . Bajty jeho druhého stupně zavaděče se čtou z papírové pásky v opačném pořadí.

  1. Nastavte registr P na 106
  2. Zkontrolujte připravenost čtečky papírových pásek
  3. Pokud nejste připraveni, přejděte na 2
  4. Přečtěte si bajt od čtečky papírových pásek k akumulátoru
  5. Uložte akumulátor na adresu v registru P.
  6. Zmenšete registr P.
  7. Skočit na 2

Délka zavaděče druhého stupně je taková, že konečný bajt přepíše umístění 7. Po provedení instrukce v místě 6 spustí umístění 7 spuštění zavaděče druhého stupně. Zavaděč druhého stupně poté čeká na vložení mnohem delší pásky obsahující operační systém do čtečky pásek. Rozdíl mezi zavaděčem a zavaděčem druhého stupně spočívá v přidání kontrolního kódu k zachycení chyb při čtení papírové pásky, což je častý výskyt s relativně levným hardwarem „na částečný úvazek“, jako je Teletype Model 33 ASR. (Friden Flexowriters byly mnohem spolehlivější, ale také poměrně nákladné.)

Zavádění prvních mikropočítačů

Nejdříve mikropočítače, jako Altair 8800 (poprvé vydaný v roce 1975) a ještě starší podobný stroj (založený na procesoru Intel 8008), neměly žádný bootstrappingový hardware jako takový. Při spuštění by CPU viděl paměť, která by obsahovala spustitelný kód obsahující pouze binární nuly - paměť byla vymazána resetováním při zapnutí. Přední panely těchto strojů nesly přepínací přepínače pro zadávání adres a dat, jeden přepínač na bit slova paměti počítače a sběrnice adres. Jednoduché dodatky k hardwaru umožňovaly načítání jednoho paměťového místa současně z těchto přepínačů pro ukládání kódu bootstrapu. Mezitím se CPU zabránil pokusu o spuštění obsahu paměti. Po správném načtení byl CPU povolen ke spuštění zaváděcího kódu. Tento proces byl únavný a musel být bez chyb.

Integrovaná paměťová éra jen pro čtení

„Čip“ Intel 2708 EPROM na obvodové desce.

Proces zavádění minipočítačů a mikropočítačů byl revolucí zavedením integrované paměti jen pro čtení (ROM) s mnoha variantami, včetně masek programovaných ROM , programovatelných ROM (PROM), vymazatelných programovatelných ROM (EPROM) a flash pamětí . To umožnilo zahrnout spouštěcí programy firmwaru jako součást počítače. Zavedení (externí) ROM bylo v italském zpracovateli telefonního přepínání s názvem „Gruppi Speciali“, který si v roce 1975 nechal patentovat Alberto Ciaramella , výzkumný pracovník společnosti CSELT . Gruppi Speciali byl od roku 1975 plně jednotlačítkovým strojem, který se zaváděl do operačního systému z paměti ROM složené z polovodičů, nikoli z feritových jader. Přestože zařízení ROM nebylo nativně zabudováno v počítači Gruppi Speciali, vzhledem k konstrukci stroje také umožňovalo spouštění ROM pomocí jednoho tlačítka v počítačích, které k tomu nebyly určeny (proto toto „zařízení bootstrap“ bylo nezávislé na architektuře ), např. PDP-11. Uložení stavu stroje po vypnutí bylo také na místě, což byla další kritická funkce v soutěži o přepnutí telefonu.

Každý mikroprocesor obvykle po resetování nebo zapnutí provede spouštěcí proces, který má obvykle formu „zahájení provádění kódu, který se nachází na konkrétní adrese“ nebo „vyhledání vícebajtového kódu na konkrétní adresu a přeskočením na určené místo zahájíte provádění “. Systém postavený pomocí tohoto mikroprocesoru bude mít na těchto speciálních místech trvalou ROM, takže systém vždy začne fungovat bez pomoci operátora. Například procesory Intel x86 vždy začínají spuštěním pokynů začínajících na F000: FFF0, zatímco u procesoru MOS 6502 inicializace začíná čtením dvoubajtové vektorové adresy na $ FFFD (MS byte) a $ FFFC (LS byte) a skokem na toto místo spustíte kód bootstrapu.

První počítač Apple Inc. , Apple 1 představený v roce 1976, představoval čipy PROM, které eliminovaly potřebu předního panelu pro proces spouštění (jako tomu bylo u Altair 8800) v komerčním počítači. Podle reklamy společnosti Apple, která uvádí: „Žádné další přepínače, žádná další světla ... firmware v PROMS vám umožňuje zadávat, zobrazovat a ladit programy (vše v hexadecimálním formátu) z klávesnice“.

Kvůli nákladům na paměť jen pro čtení v té době zaváděla řada Apple II své diskové operační systémy pomocí řady velmi malých přírůstkových kroků, z nichž každý procházel kontrolou dále do další fáze postupně složitějšího zaváděcího procesu. (Viz Apple DOS: Boot loader ). Protože tak málo diskového operačního systému spoléhalo na ROM, byl hardware také extrémně flexibilní a podporoval širokou škálu přizpůsobených mechanismů ochrany proti kopírování disku . (Viz Software Cracking: History .)

Některé operační systémy, zejména systémy Macintosh před rokem 1995 od společnosti Apple , jsou tak úzce propojeny svým hardwarem, že není možné nativně spustit jiný operační systém než standardní. Toto je opačný extrém scénáře pomocí výše uvedených přepínačů; je vysoce nepružný, ale relativně odolný proti chybám a spolehlivý, pokud veškerý hardware funguje normálně. Běžným řešením v takových situacích je navrhnout zavaděč, který funguje jako program patřící do standardního operačního systému, který unese systém a načte alternativní operační systém. Tuto techniku ​​používala společnost Apple pro implementaci A/UX Unix a byla kopírována různými freewarovými operačními systémy a BeOS Personal Edition 5 .

Některé stroje, jako mikropočítač Atari ST , byly „okamžitě zapnuty“, přičemž operační systém byl spuštěn z ROM . Načítání OS ze sekundárního nebo terciárního úložiště tak bylo eliminováno jako jedna z charakteristických operací pro bootstrapping. Aby se umožnilo automatické načítání přizpůsobení systému, příslušenství a dalšího podpůrného softwaru, byla během procesu spouštění načtena disketa Atari pro další komponenty. Když systém hledal další součásti, došlo ke zpoždění časového limitu, které poskytlo čas na ruční vložení diskety. Tomu lze zabránit vložením prázdného disku. Hardware Atari ST byl také navržen tak, aby slot pro kazety mohl poskytovat nativní spouštění programu pro herní účely jako pozůstatek od dědictví Atari, který vyrábí elektronické hry; vložením kazety Spectre GCR s ROM ROM systému Macintosh do herního slotu a zapnutím Atari mohlo „nativně bootovat“ operační systém Macintosh spíše než vlastní TOS Atari .

IBM Personal Computer součástí firmware ROM bázi nazvaný BIOS ; jednou z funkcí tohoto firmwaru bylo provést autotest při zapnutí, když bylo zařízení zapnuto, a poté načíst software ze spouštěcího zařízení a spustit jej. V počítačích kompatibilních s IBM PC se používá firmware kompatibilní s BIOSem na osobním počítači IBM . UEFI byl vyvinut společností Intel, původně pro Itanium založené stroje, a později také používán jako alternativu k systému BIOS v x86 -založené stroje, včetně Apple Macs s využitím procesorů Intel .

Pracovní stanice Unix původně měly firmware ROM založené na konkrétním prodejci. Sun Microsystems později vyvinul OpenBoot , později známý jako Open Firmware, který obsahoval Forth interpreter, přičemž velká část firmwaru byla napsána ve Forthu. Byl standardizován IEEE jako standard IEEE 1275-1994; firmware, který implementuje tento standard, byl použit v počítačích Mac založených na PowerPC a některých dalších počítačích založených na PowerPC, stejně jako ve vlastních počítačích Sun založených na SPARC . Specifikace Advanced RISC Computing definovala další standard firmwaru, který byl implementován na některých strojích založených na MIPS a Alpha a na pracovních stanicích SGI Visual Workstation x86.

Moderní zavaděče

Když je počítač vypnutý, jeho software-včetně operačních systémů, kódu aplikace a dat-zůstane uložen v energeticky nezávislé paměti . Když je počítač zapnutý, obvykle nemá operační systém nebo jeho zavaděč v paměti RAM ( random-access memory ). Počítač nejprve provede relativně malý program uložený v paměti jen pro čtení (ROM a později EEPROM , NOR flash ) spolu s některými potřebnými daty, aby inicializoval paměť RAM (zejména na systémech x86), aby získal přístup k energeticky nezávislému zařízení (obvykle blokové zařízení , např. NAND flash) nebo zařízení, ze kterých lze načítat programy a data operačního systému do RAM.

Malý program, který spouští tuto sekvenci, je známý jako zavaděč bootstrap , bootstrap nebo zavaděč . Často se používají vícestupňové zavaděče, během nichž se v procesu řetězového načítání načítá jeden po druhém několik programů zvyšujících složitost .

Některé dřívější počítačové systémy mohou po přijetí zaváděcího signálu od lidského operátora nebo periferního zařízení načíst velmi malý počet pevných instrukcí do paměti na určitém místě, inicializovat alespoň jeden procesor a poté CPU nasměrovat na pokyny a zahájit jejich popravu. Tyto pokyny obvykle spouštějí operaci vstupu z nějakého periferního zařízení (které může být přepínatelné operátorem). Jiné systémy mohou odesílat hardwarové příkazy přímo do periferních zařízení nebo I/O řadičů, které způsobí, že bude provedena extrémně jednoduchá vstupní operace (například „načtení nuly sektoru systémového zařízení do paměti začínající na místě 1000“), čímž se efektivně načte malý počet instrukcí zavaděče do paměti; dokončovací signál z I/O zařízení pak může být použit ke spuštění provádění instrukcí CPU.

Menší počítače často používají méně flexibilní, ale více automatické zaváděcí zaváděcí mechanismy, aby zajistily rychlé spuštění počítače s předem určenou konfigurací softwaru. V mnoha počítačích, například proces bootstrapping začíná CPU vykonávajícím software obsažený v ROM (například BIOS z IBM PC ) na předdefinované adresy (některé procesory včetně Intel řady x86 jsou navrženy tak, aby spustit tento software po resetu bez vnější pomoci). Tento software obsahuje základní funkce pro vyhledávání zařízení způsobilých k účasti na zavádění a načtení malého programu ze speciální sekce (nejčastěji spouštěcí sektor ) nejslibnějšího zařízení, obvykle začíná na pevném vstupním bodě , jako je začátek sektor.

Zavaděče mohou čelit zvláštním omezením, zejména pokud jde o velikost; například na počítači IBM PC a kompatibilních musí spouštěcí kód zapadat do hlavního spouštěcího záznamu (MBR) a dělícího spouštěcího záznamu (PBR), které jsou zase omezeny na jeden sektor; v systému IBM System/360 je velikost omezena médiem IPL, např. velikost karty, velikost stopy.

V systémech s těmito omezeními nemusí být první program načtený do paměti RAM dostatečně velký k načtení operačního systému a místo toho musí načíst jiný, větší program. První program načtený do RAM se nazývá zavaděč první fáze a program, který načte, se nazývá zavaděč druhého stupně.

Zavaděč první fáze

Mezi příklady zavaděčů první fáze (fáze ROM nebo fáze inicializace hardwaru) patří BIOS , UEFI , coreboot , Libreboot a Das U-Boot . Na počítači IBM byl zavaděč v Master Boot Record (MBR) a Partition Boot Record (PBR) kódován tak, aby vyžadoval alespoň 32 KB (později zpřísněn na 64 KB) systémové paměti a používal pouze pokyny podporované původním 8088 / 8086 procesory.

Zavaděč druhého stupně

Zavaděče druhého stupně, jako GNU GRUB , rEFInd , BOOTMGR , Syslinux , NTLDR nebo iBoot , samy o sobě nejsou operačními systémy, ale jsou schopny správně načíst operační systém a přenést do něj provedení; operační systém se následně sám inicializuje a může načíst další ovladače zařízení . Zavaděč druhého stupně nepotřebuje pro svou činnost ovladače, ale místo toho může používat obecné metody přístupu k úložišti poskytované firmwarem systému, jako je BIOS, UEFI nebo Open Firmware , i když obvykle s omezenou funkcí hardwaru a nižším výkonem.

Mnoho zaváděcích zavaděčů (jako GNU GRUB, rEFInd, Windows BOOTMGR, Syslinux a NTLDR Windows NT/2000/XP) lze nakonfigurovat tak, aby poskytovaly uživateli více možností zavádění. Tyto možnosti mohou zahrnovat různé operační systémy (pro duální nebo vícenásobné zavádění z různých oddílů nebo jednotek), různé verze stejného operačního systému (v případě, že nová verze má neočekávané problémy), různé možnosti načítání operačního systému (např. Zavedení do záchranný nebo nouzový režim ) a některé samostatné programy, které mohou fungovat bez operačního systému, jako jsou testery paměti (např. memtest86+ ), základní prostředí (jako v GNU GRUB) nebo dokonce hry (viz seznam her PC Booter ). Některé zavaděče mohou načíst i jiné zavaděče; například GRUB načte BOOTMGR namísto přímého načítání systému Windows. Výchozí volba je obvykle předvolena s časovým zpožděním, během kterého může uživatel stisknutím klávesy volbu změnit; po tomto zpoždění se automaticky spustí výchozí volba, takže k normálnímu spuštění může dojít bez interakce.

Proces zavádění lze považovat za dokončený, když je počítač připraven k interakci s uživatelem nebo pokud operační systém dokáže spouštět systémové programy nebo aplikační programy.

Mnoho vestavěných systémů se musí spustit okamžitě. Například minutu čekání na spuštění digitální televize nebo navigačního zařízení GPS je obecně nepřijatelné. Taková zařízení proto mají softwarové systémy v paměti ROM nebo flash, takže zařízení může začít okamžitě fungovat; malé nebo žádné načítání je nutné, protože načítání lze předpočítat a uložit na ROM, když je zařízení vyrobeno.

Velké a složité systémy mohou mít zaváděcí procedury, které probíhají ve více fázích, dokud není operační systém a další programy načteny a připraveny ke spuštění. Protože jsou operační systémy navrženy tak, jako by se nikdy nespustily ani nezastavily, může zavaděč zavést operační systém, nakonfigurovat se jako pouhý proces v rámci tohoto systému a poté neodvolatelně přenést řízení do operačního systému. Zaváděcí zavaděč se pak normálně ukončí jako každý jiný proces.

Zavádění sítě

Většina počítačů je také schopna spustit počítačovou síť . V tomto scénáři je operační systém uložen na disku serveru a jeho určité části jsou přeneseny do klienta pomocí jednoduchého protokolu, jako je například Trivial File Transfer Protocol (TFTP). Poté, co byly tyto části přeneseny, přebírá kontrolu nad zaváděcím procesem operační systém.

Stejně jako u zavaděče druhé fáze zavádění ze sítě začíná pomocí obecných metod přístupu k síti poskytovaných zaváděcí ROM síťového rozhraní, která obvykle obsahuje obraz prostředí PXE ( Preboot Execution Environment ). Nejsou vyžadovány žádné ovladače, ale funkce systému je omezena, dokud nebude přeneseno a spuštěno jádro a ovladače operačního systému. Výsledkem je, že jakmile je zavádění na základě ROM dokončeno, je zcela možné zavést síť z operačního systému, který sám nemá schopnost používat síťové rozhraní.

Osobní počítače (PC)

Spouštěcí zařízení

Zaváděcí flash disk Windows To Go , příklad Live USB

Zaváděcí zařízení je zařízení, ze kterého je načten operační systém. Moderní počítačový firmware UEFI nebo BIOS podporuje spouštění z různých zařízení, obvykle z lokální jednotky SSD nebo pevného disku pomocí GPT nebo Master Boot Record (MBR) na takové jednotce nebo disku, optické jednotky (pomocí El Torito ), USB velkokapacitní paměťové zařízení ( FTL založené flash disk, SD kartu nebo štěrbinu multimediální karty , USB pevný disk, USB optickou jednotku, atd), nebo kartu síťového rozhraní (pomocí PXE ). Starší, méně běžné BIOS spouštěcí zařízení zahrnují disketové jednotky , jednotky Zip a LS-120 disky.

Firmware (UEFI nebo BIOS) obvykle uživateli umožní konfigurovat pořadí spouštění . Pokud je pořadí zavádění nastaveno na „první, jednotka DVD; za druhé, jednotka pevného disku“, pak se firmware pokusí spustit z jednotky DVD, a pokud to selže (např. Protože v jednotce není žádné DVD), pokusí se spustit z místní jednotky pevného disku.

Například na počítači s nainstalovaným systémem Windows na pevném disku může uživatel nastavit pořadí spouštění na výše uvedené a poté vložit disk Linux Live CD , aby si mohl Linux vyzkoušet, aniž by musel na pevný disk instalovat operační systém. řídit. Toto je příklad duálního spouštění , ve kterém si uživatel zvolí, který operační systém spustí poté, co počítač provedl svůj Power-on self-test (POST). V tomto případě duálního spouštění uživatel volí vložením nebo odebráním disku DVD z počítače, ale běžnější je zvolit, který operační systém se má spustit, výběrem z nabídky správce spouštění na vybraném zařízení pomocí klávesnice počítače vyberte z nabídky spouštění BIOS nebo UEFI , nebo obojí; spouštěcí nabídka se obvykle zadává stisknutím F8nebo F12během POST; nastavení systému BIOS se obvykle zadává stisknutím tlačítka F2nebo DELběhem testu POST.

K dispozici je několik zařízení, která uživateli umožňují rychle zavést systém, který je obvykle variantou Linuxu, pro různé jednoduché úkoly, jako je přístup na internet; příklady jsou Splashtop a Latitude ON .

Sekvence spouštění

Hex dump of FreeBSD ‚s boot0 MBR
Při zavádění udělejte Software BIOS od roku 2000

Po spuštění se procesor x86 osobního počítače kompatibilní s IBM spustí v reálném režimu , instrukce se nachází ve vektoru resetování (adresa fyzické paměti FFFF0h u 16bitových procesorů x86 a FFFFFFF0h u 32bitových a 64bitových procesorů x86), obvykle ukazující na vstupní bod firmwaru ( UEFI nebo BIOS ) uvnitř ROM. Toto umístění paměti obvykle obsahuje skokovou instrukci, která přenáší provedení do umístění spouštěcího programu firmwaru ( UEFI nebo BIOS ). Tento program spouští samočinný test při spuštění (POST) pro kontrolu a inicializaci požadovaných zařízení, jako je hlavní paměť ( DRAM ), sběrnice PCI a zařízení PCI (včetně spouštění integrovaných volitelných ROM ). Jedním z nejvíce zapojených kroků je nastavení DRAM přes SPD , což dále komplikuje skutečnost, že v tomto okamžiku je paměť velmi omezená.

Po inicializaci požadovaného hardwaru prochází firmware ( UEFI nebo BIOS ) předkonfigurovaným seznamem energeticky nezávislých paměťových zařízení („sekvence zaváděcích zařízení“), dokud nenajde zařízení, které lze zavést. Spouštěcí zařízení MBR je definováno jako zařízení, ze kterého lze číst, a kde poslední dva bajty prvního sektoru obsahují slovo endian AA55h , nalezené jako bajtová sekvence 55h , AAh na disku (také známé jako spouštěcí podpis MBR ) , nebo kde je jinak stanoveno, že kód uvnitř sektoru je spustitelný na počítačích x86.

Jakmile BIOS najde zaváděcí zařízení, načte zaváděcí sektor na lineární adresu 7C00h (obvykle segment : offset 0000h : 7C00h , ale některé BIOSy chybně používají 07C0h : 0000h ) a přenese provedení do zaváděcího kódu. V případě pevného disku se tomu říká Master Boot Record (MBR). Konvenční kód MBR kontroluje v tabulce oddílů MBR oddíl nastavený jako zaváděcí (ten s aktivní sadou příznaků). Pokud je nalezen aktivní oddíl , kód MBR načte kód zaváděcího sektoru z tohoto oddílu, známý jako Volume Boot Record (VBR), a provede jej. Zaváděcí kód MBR je často specifický pro operační systém.

Kód zaváděcího sektoru je zavaděč první fáze zavádění. Je umístěn na pevných discích a vyměnitelných disků a musí zapadnout do prvních 446 bajtů na Master Boot Record , aby vznikl prostor pro výchozí 64-byte partition tabulku se čtyřmi položkami oddílů a dvou-byte boot podpisu , který Systém BIOS vyžaduje správný zavaděč - nebo ještě méně, pokud jsou k dispozici další funkce, jako jsou více než čtyři položky oddílů (až 16 se 16 bajty), podpis disku (6 bajtů), časové razítko disku (6 bajtů), pokročilý aktivní V některých prostředích musí být podporovány také oddíly (18 bajtů) nebo speciální zavaděče . U disketových a superfloppy svazkových spouštěcích záznamů je obsazeno až 59 bytů pro Extended BIOS Parameter Block na svazcích FAT12 a FAT16 od DOS 4.0, zatímco FAT32 EBPB zavedený s DOS 7.1 vyžaduje dokonce 87 bytů, takže pro zavaděč zbývá pouze 423 bytů při předpokladu velikosti sektoru 512 bajtů. Zaváděcí sektory společnosti Microsoft proto tradičně ukládaly určitá omezení zaváděcímu procesu, například spouštěcí soubor musel být umístěn na pevném místě v kořenovém adresáři systému souborů a uložen jako po sobě jdoucí sektory, podmínky postarané SYSpříkazem a mírně uvolněný v novějších verzích DOSu. Zavaděč pak dokázal načíst první tři sektory souboru do paměti, což náhodou obsahovalo jiný integrovaný zavaděč schopný načíst zbývající část souboru do paměti. Když Microsoft přidal podporu LBA a FAT32, dokonce přešli na zavaděč, který dosáhl přes dva fyzické sektory a použil 386 pokynů z důvodů velikosti. Současně se dalším prodejcům podařilo vtěsnat mnohem více funkcí do jednoho zaváděcího sektoru, aniž by došlo k uvolnění původních omezení pouze s minimální dostupnou pamětí (32 kB) a podporou procesoru (8088/8086). Spouštěcí sektory DR-DOS jsou například schopny vyhledat spouštěcí soubor v systému souborů FAT12, FAT16 a FAT32 a načíst jej do paměti jako celek pomocí CHS nebo LBA, i když soubor není uložen na pevném místě a v navazujících sektorech.

VBR je často specifický pro OS; jeho hlavní funkcí je však načíst a spustit soubor zavaděče operačního systému (například bootmgrnebo ntldr), což je zavaděč druhého stupně zavádění, z aktivního oddílu. Poté zavaděč načte jádro OS z úložného zařízení.

Pokud neexistuje žádný aktivní oddíl nebo je spouštěcí sektor aktivního oddílu neplatný, může MBR načíst sekundární zavaděč, který vybere oddíl (často prostřednictvím vstupu uživatele) a načte jeho zaváděcí sektor, který obvykle načte odpovídající jádro operačního systému. V některých případech se MBR může také pokusit načíst sekundární zavaděče před pokusem o spuštění aktivního oddílu. Pokud vše ostatní selže, mělo by to vyvolat volání přerušení INT 18h BIOS (následované INT 19h jen pro případ, že by se INT 18h vrátilo), aby bylo možné vrátit kontrolu systému BIOS, který by se poté pokusil spustit jiná zařízení, pokus o vzdálené spuštění přes síť.

Většina moderních systémů (novější Apple Mac a novější PC ) používá UEFI .

Na rozdíl od systému BIOS se UEFI (nikoli Legacy boot from CSM) nespoléhá na zaváděcí sektory, systém UEFI načte zavaděč ( soubor aplikace EFI na disk USB nebo do oddílu systému EFI ) přímo a jádro OS načte zavaděč .

Jiné druhy zaváděcích sekvencí

Odemčené bootloader z Android zařízení, ukazující další dostupné možnosti

Některé moderní procesory a mikrokontroléry (například TI OMAP ) nebo někdy dokonce DSP mohou mít zaváděcí ROM se zaváděcím kódem integrovaným přímo do jejich křemíku, takže takový procesor by mohl sám provádět poměrně důmyslnou zaváděcí sekvenci a načítat zaváděcí programy z různých zdrojů jako NAND flash, SD nebo MMC karta a tak dále. Je obtížné propojit veškerou požadovanou logiku pro manipulaci s takovými zařízeními, takže v takových scénářích se místo toho používá integrovaná zaváděcí ROM. Využití zaváděcí ROM umožňuje flexibilnější zaváděcí sekvence, než by mohla poskytnout logika s pevným připojením. Zaváděcí ROM se například může pokusit provést zavádění z více zaváděcích zdrojů. Spouštěcí ROM také často dokáže načíst zavaděč nebo diagnostický program prostřednictvím sériových rozhraní, jako je UART , SPI , USB atd. Tato funkce se často používá pro účely obnovy systému, když z nějakých důvodů byl vymazán obvyklý spouštěcí software v energeticky nezávislé paměti, a lze ji také použít pro počáteční programování energeticky nezávislé paměti, když je nainstalována čistá energeticky nezávislá paměť, a tedy žádný software v systému zatím k dispozici.

Některé návrhy vestavěných systémů mohou také zahrnovat krok přechodné spouštěcí sekvence ve formě dodatečného kódu, který se načte do systémové paměti RAM pomocí integrované zaváděcí ROM. Takto načtený dodatečný kód obvykle slouží jako způsob překonání omezení platformy, jako je malé množství paměti RAM, takže jako další krok v zaváděcí sekvenci systému lze načíst vyhrazený primární zavaděč, jako je Das U-Boot . Krok dodatečného kódu a spouštěcí sekvence se obvykle označuje jako sekundární programový zavaděč (SPL).

Je také možné převzít kontrolu nad systémem pomocí hardwarového ladicího rozhraní, jako je JTAG . Takové rozhraní lze použít k zápisu programu zavaděče do zaváděcí energeticky nezávislé paměti (např. Flash) instruováním jádra procesoru k provedení nezbytných akcí k programování energeticky nezávislé paměti. Alternativně lze ladicí rozhraní použít k nahrání nějakého diagnostického nebo spouštěcího kódu do RAM a poté ke spuštění jádra procesoru a pokynu, aby spustil nahraný kód. To umožňuje například obnovu vestavěných systémů, kde na žádném podporovaném zaváděcím zařízení nezůstává žádný software a kde procesor nemá žádnou integrovanou zaváděcí ROM. JTAG je standardní a oblíbené rozhraní; mnoho procesorů, mikrokontrolérů a dalších zařízení se vyrábí s rozhraními JTAG (od roku 2009).

Některé mikrokontroléry poskytují speciální hardwarová rozhraní, která nelze použít k převzetí libovolné kontroly nad systémem nebo přímému spouštění kódu, ale místo toho umožňují vložení zaváděcího kódu do zaváděcí energeticky nezávislé paměti (jako je flash paměť) pomocí jednoduchých protokolů. Potom ve fázi výroby se taková rozhraní používají k vložení spouštěcího kódu (a případně jiného kódu) do energeticky nezávislé paměti. Po resetování systému začne mikrokontrolér spouštět kód naprogramovaný do své energeticky nezávislé paměti, stejně jako běžné procesory používají k zavádění ROM. Nejvíce pozoruhodně tuto techniku ​​používají mikrokontroléry Atmel AVR a další. V mnoha případech jsou taková rozhraní implementována hardwarovou logikou. V jiných případech může být takové rozhraní vytvořeno softwarem běžícím v integrované zaváděcí ROM na čipu z pinů GPIO .

Většina procesorů digitálního signálu má zavádění v sériovém režimu a zavádění v paralelním režimu, například rozhraní hostitelského portu (spouštění HPI)

V případě DSP je v návrhu systému často přítomen druhý mikroprocesor nebo mikrokontrolér, který je zodpovědný za celkové chování systému, zpracování přerušení, řešení vnějších událostí, uživatelské rozhraní atd., Zatímco DSP se věnuje pouze úlohám zpracování signálu . V takových systémech může být DSP spuštěn jiným procesorem, který je někdy označován jako hostitelský procesor (pojmenování hostitelského portu). Takový procesor je také někdy označován jako hlavní , protože se obvykle spouští nejprve z vlastních pamětí a poté řídí celkové chování systému, včetně zavádění DSP a poté dalšího řízení chování DSP. DSP často postrádá vlastní zaváděcí paměti a spoléhá na to, že požadovaný kód místo toho dodá hostitelský procesor. Nejpozoruhodnější systémy s takovým designem jsou mobilní telefony, modemy, audio a video přehrávače a tak dále, kde DSP a CPU/mikrokontrolér existují současně.

Mnoho čipů FPGA načte svoji konfiguraci z externího sériového EEPROM („konfigurační ROM“) při zapnutí.

Viz také

Poznámky

Reference