Pokretač operativnog sistema

Pokretač operativnog sistema (engl. Bootloader) je računarski program za učitavanje operativnog sistema.

GNU/Linuks GRUB pokretač operativnog sistema.
GNU/Linuks LILO pokretač operativnog sistema.

Računari mogu da izvršavaju samo programe koje nađu u ROM ili RAM memoriji. Operativni sistemi se nalaze na tvrdim diskovima, često i na prenosivim uređajima. Kada se računar uključuje, on nema učitan operativni sistem u memoriji. Računarski hardver ne može sam da izvršava učitavanje operativnog sistema s tvrdog diska, stoga se pojavljuje paradoks: da bi se učitao operativni sistem, jedan operativni sistem već mora biti učitan. Rešenje je pronađeno u malom programu, nazvanom bootloader. Njegova svrha je da učita programe koji su neophodni za pokretanje operativnog sistema.

Uz pomoć njega je moguće pokretati i nekoliko operativnih sistema na jednom računaru. Poznatiji pokretači operativnog sistema su GRUB i LILO.

Istorija

Primeri pre ROM memorije

Rani računari

Rani računari u četrdesetim i pedesetim godinama prošlog veka bili su jedinstveni inženjerski proizvodi koji su zahtevali više nedelja za programiranje. Učitavanje programa bio je jedan od mnogih problema koji su morali rešiti. Rani računar, ENIAC, nije imao nijedan program pohranjen u memoriji.

EDSAC sistem je koristio uniselektor za prenos fiksnog programa u memoriju kada se pritisne tipka za pokretanje. Program pohranjen na ovom uređaju, koji je Dejvid Viler dovršio krajem 1948. godine, učitavao je dalja uputstva pokretanja za računar sa bušenih traka.[1]

Prvi komercijalni računari

Prva programibilni računari za komercijalnu prodaju, poput UNIVAC I i IBM 701[2] imali su malo jednostavniji rad. Obično su uključivali uputstva za operacije unosa ili izlaza. Ista hardverska logika mogla se koristiti za učitavanje sadržaja bušenih kartica ili drugih ulaznih medija, poput magnetnog bubnja ili magnetne trake, koji su na sebi imali program za pokretanje.

Program za učitavanje na bušenoj kartici za IBM 1130 (1965)

Računar IBM 701 (1952–1956) imao je dugme „Učitaj“ koje je pokrenulo čitanje prve 36-bitne reči u glavnu memoriju sa bušene kartice, magnetne trake ili jedinice magnetnog bubnja. Leva 18-bitna polovina reči je imala uputstva za izvršenje, koja je obično učitavala dodatne reči u memoriju.[3] Zatim se izvršavao početni program za učitavanje, koji je kasnije učitavao mnogo veći program sa istog medija u memoriju. Termin učitavanje („boot”) se u tom smislu koristio od najmanje 1958. godine.

IBM System/3 konzola iz 1970-ih. Prekidač za odabir u donjem levom čošku; Prekidač za učitavanje je u donjem desnom čošku.

IBM Sistem/360 i naslednici

Na IBM System/60 i njegovim naslednicima, uključujući trenutne z/Architecture mašine, postupak pokretanja poznat je kao Početno učitavanje programa (Initial Program Load - IPL).

IBM je ovaj izraz koristio za 7030 (Stretch), i ponovo ga koristio za System/360 te ga nastavlja koristiti u tim okruženjima i danas.

Miniračunari

Prednja ploča PDP-8/E prikazuje prekidače koji se koriste za učitavanje programa za pokretanje

Miniračunari, počevši od PDP-5 i PDP-8 (1965) su imali još jednostavniji način za pokretanje. Miniračunari su imali način da sačuvaju jedan mali program u svoju memoriju koja nije gubila informacije nakon što je ugašena. Međutim, neka greška u programu je mogla da prebriše čitavu tu memoriju koja je bila bazirana na feritnom magnetnom jezgru i onemogući pokretanje sistema.

Ostali miniračunari koji su koristili sličan sistem pokretanja uključuju Hjulet-Pakardovu seriju HP 2100 (sredina 1960-ih), originalni Data General Nova (1969) i DEC-ov PDP-11 (1970).

Najraniji mikroračunari, poput Altair 8800 (1975) nisu imali hardver za pokretanje sistema.[4]

Integrisana ROM memorija

Intel 2708 EPROM „čip” na elektroničkoj ploči.

Proces pokretanja miniračunara i mikroračunara je uvođenjem memorije koja se može samo čitati (i nekim drugim varijantama kao što su EPROM i PROM) postao dosta lakši. Time je omogućeno da računar već ima na sebi uključen program za pokretanje. Uvođenje prvog eksternog ROM-a je izvela italijanska telekomunikacijska firma „Gruppi Speciali”, koji je 1975. patentirao Alberto Kijaramela, istraživač sa CSELT-a.[5] Gruppi Speciali je, počevši od 1975. mogla jednim pritiskom na tipku učitati operativni sistem sa ROM memorije sastavljene od poluprovodnika, a ne iz feritnih jezgara.

Obično svaki procesor nakon ponovnog pokretanja ili paljenja, izvodi postupak pokretanja koji obično radi na principu „započni izvršavanje koda koji se nađe počev od određene adrese” ili „traži višebajtni kod na određenoj adresi i skoči na naznačenu lokaciju i započni sa izvršavanjem”. Sistem ima u sebi ROM koji se ne menja i na kojem su isprogramirane ove posebne lokacije tako da sistem može da se sam učita bez pomoći operatera. Na primer, Intel x86 procesori uvek započinju izvršavanje uputa koje počinju od adrese F000: FFF0.

Prvi Epl 1 predstavljen 1976. godine, sadržavao je PROM čipove koji su eliminirali potrebu za prednjim panelom za proces pokretanja (kao što je to bio slučaj s Altairom 8800)

IBM računari su imali firmver na ROM-u koji se zvao BIOS; jedna od funkcija tog firmvera bila je obavljanje samoprovjere pri uključivanju kad je uređaj pokrenut, a zatim učitavanje softvera sa uređaja za pokretanje i njegovo izvršavanje. Firmver kompatibilan sa BIOS-om na IBM računarima se koristio i na IBM PC kompatibilnim računarima. EFI kojeg je razvio Intel je bio sledeći korak u evoluciji programa za pokretanje, prvobitno za mašine bazirane na Itanijumu, a kasnije i za x86, uključujući Epl Mak računare koji su koristili Intelove procesore.

Juniks radne stanice izvorno su imale firmver na ROM-u. San majkrosistems je kasnije razvio OpenBoot, kasnije poznat kao Open Firmware, koji je sadržavao interpreter Forth. Standardizovan je od strane IEEE kao IEEE standard 1275-1994; i korišten je na PowerPC Mak računarima.

Moderni programi za pokretanje

Kada se računar isključi njegov operativni sistem i podaci ostaju na neizbrisivoj memoriji kao što je tvrdi disk. Kada je računar uključen, operativni sistem ili njegov program za pokretanje nisu u memoriji nasumičnog pristupa (RAM). Računar prvo izvršava relativno mali program pohranjen u memoriji samo za čitanje (ROM), zajedno s malom količinom potrebnih podataka, kako bi pristupio uređaju ili uređajima s kojih se programi i podaci operativnog sistema mogu učitati u RAM.

Mali program koji pokreće ovaj sled poznat je kao učitavač (bootstrap loader, bootstrap ili boot loader). Jedini zadatak ovog malog programa jeste učitavanje drugih podataka i programa koji se tada izvode iz RAM-u.

Prvostupni pokretač

Pokretački učitavači mogu se suočiti sa jedinstvenim ograničenjima, posebno u pogledu veličine; na primer, na IBM PC-u i kompatibilnim komponentama, sektor za pokretanje bi obično trebalo da radi u samo 32 KB[6][7] (kasnije relaksirano do 64 KB[8]) sistemske memorije i da koristi samo uputstva podržana originalnim 8088/8086 procesorima. Prva faza PC učitavača (FSBL, prvostepeni pokretački program) koji su locirani na fiksnim diskovima i prenosnim drajvovima mora da se uklopi u prvih 446 bajtova glavnog pokretačkog zapisa kako bi se ostavilo prostora za podrazumevanu 64-bajtnu particijsku tabelu sa četiri particiona unosa i dvobajtni pokretački potpis, koji BIOS zahteva za valjan pokretački program - ili čak i manje, kada dodatne funkcije uključuju više od četiri particiona unosa (do 16 sa po 16 bajtova svaki), potpis diska (6 bajtova), vremenske oznake diska (6 bajtova), naprednu aktivnu particiju (18 bajtova) ili posebni višestruke učitavače, takođe moraju biti podržani u nekim okruženjima. U flopi i superflopi pokretačkim zapisima, do 59 bajtova je zauzeto proširenim BIOS blokom parametara na FAT12 i FAT16 particijama od DOS 4.0, dok FAT32 EBPB uveden sa DOS 7.1 zahteva čak 87 bajtova, ostavljajući samo 423 bajta za pokretački učitavač kada se pretpostavi da je veličina sektora 512 bajtova. Majkrosoftovi pokretački sektori su stoga tradicionalno nametali određena ograničenja u procesu pokretanja, na primer, datoteka za pokretanje morala je da se nalazi na fiksnom položaju u osnovnom direktorijumu sistema datoteka i da se čuva u vidu uzastopnih sektora,[9][10] uslovi koje obezbeđuje SYS naredba i koji su donekle relaksirani u kasnijim verzijama DOS-a.[10][nb 1] Pokretački učitavač je tada mogao da učita prva tri sektora datoteke u memoriju, koja je sadržala još jedan ugrađeni pokretački pokretački program koji može da se učita ostatak datoteke u memoriju.[10] Kada je Majkrosoft dodao podršku za LBA i FAT32, oni su čak prešli na pokretački učitavač koji je dosezao dva fizička sektora i koristio 386 uputstava zarad veličine. Istovremeno, drugi proizvođači su uspeli da sabiju mnogo više funkcionalnosti u jedan pokretački sektor sistema, bez ublažavanja originalnih ograničenja na samo minimalnu dostupnu memoriju (32 KB) i podršku procesora (8088/8086).[nb 2] Na primer, DR-DOS pokretački sektori mogu da pronađu pokretačku datoteku u sistemima datoteka FAT12, FAT16 i FAT32, i da je učitaju u memoriju kao celinu putem CHS ili LBA, čak i ako datoteka nije uskladištena na fiksnom mestu i u uzastopnim sektorima.[11][6][12][13][14][nb 3][nb 2]

Mrežno pokretanje

Većina računara ima ugrađenu podršku za pokretanje putem računarske mreže. U ovom se slučaju operativni sistem se nalazi na disku servera, a određeni delovi sistema se prenose klijentu pomoću jednostavnog protokola poput TFTP. Nakon što su ovi delovi preneseni, operativni sistem preuzima kontrolu nad procesom pokretanja.

Mrežno pokretanje započinje korištenjem generalnih metoda pristupa mreži koji pruža ROM mrežne kartice, koji obično sadrži PXE sliku.

Lični računari (PC)

Uređaji za pokretanje

Windows To Go pokretački flaš uređaj

Uređaj za pokretanje je uređaj sa kojeg se učitava operativni sistem. Moderni UEFI ili BIOS računara podržava pokretanje s različitih uređaja, obično preko lokalnih uređaja za pohranjivanje, optičkih diskova, USB uređaja, i mrežnog učitavanja.

Sled pokretanja

Nakon pokretanja, x86 procesor izvršava naredbe smeštene na pretpostavljenoj adresi (adresa fizičke memorije FFFF0h na 16-bitnim x86 procesorima[15] i FFFFFFF0h za 32-bitne i 64-bitne x86 procesore[16] ) koji ga upućuje na početnu tačku firmvera (UEFI ili BIOS) unutar ROM-a. Ovaj program pokreće samotestiranje pri uključivanju (POST) radi provere i inicijalizacije potrebnih uređaja poput DRAM-a.

Nakon inicijalizacije potrebnog hardvera, firmver (UEFI ili BIOS) prolazi kroz unapred postavljenu listu uređaja za pokretanje („boot device sequence”) dok ne nađe onaj sa kojeg se može pokrenuti operativni sistem.

Napomene

Reference

Spoljašnje veze