Пређи на садржај

Pokretač operativnog sistema

С Википедије, слободне енциклопедије
GNU/Linuks GRUB pokretač operativnog sistema.
GNU/Linuks LILO pokretač operativnog sistema.

Pokretač operativnog sistema (engl. Bootloader) je računarski program za učitavanje 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.

Primeri pre ROM memorije

[уреди | уреди извор]

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.

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.

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.

  1. ^ The PC DOS 5.0 manual incorrectly states that the systen files no longer need to be contiguous. However, for the boot process to work the system files still need to occupy the first two directory entries and the first three sectors of IBMBIO.COM still need to be stored contiguously. SYS continues to take care of these requirements.
  2. ^ а б As an example, while the extended functionality of DR-DOS MBRs and boot sectors compared to their MS-DOS/PC DOS counterparts could still be achieved utilizing conventional code optimization techniques up to 7.05, for the addition of LBA, FAT32 and LOADER support the 7.07 sectors had to resort to self-modifying code, opcode-level programming, controlled utilization of side effects, multi-level data/code superpositioning and algorithmic folding techniques to squeeze everything into a single physical sector, as it was a requirement for backward- and cross-compatibility with other operating systems in multi-boot and chain load scenarios.
  3. ^ There is one exception to the rule that DR-DOS VBRs will load the whole IBMBIO.COM file into memory: If the IBMBIO.COM file is larger than some 29 KB, trying to load the whole file into memory would result in the boot loader to overwrite the stack and relocated Disk Parameter Table (DPT/FDPB). Therefore, a DR-DOS 7.07 VBR would only load the first 29 KB of the file into memory, relying on another loader embedded into the first part of IBMBIO.COM to check for this condition and load the remainder of the file into memory by itself if necessary. This does not cause compatibility problems, as IBMBIO.COM's size never exceeded this limit in previous versions without this loader. Combined with a dual entry structure this also allows the system to be loaded by a PC DOS VBR, which would load only the first three sectors of the file into memory.
  1. ^ „Programming the EDSAC”. IEEE Annals of the History of Computing. 2: 7—36. 1980. doi:10.1109/mahc.1980.10009. 
  2. ^ „The System Design of the IBM Type 701 Computer” (PDF). Proceedings of the I.R.E. 41 (10): 1273. 1953. 
  3. ^ From Gutenberg to the Internet, Jeremy M. Norman, 2005, page 436, ISBN 0-930405-87-0
  4. ^ „Oldcomputers: Altair 8800b”. Архивирано из оригинала 3. 7. 2019. г. Приступљено 4. 11. 2019. 
  5. ^ Ciaramella, Alberto. "Device for automatically loading the central memory of electronic processors." U.S. Patent No. 4,117,974. 1978-10-03. (submitted in 1975)
  6. ^ а б Paul, Matthias R. (1997-10-02) [1997-09-29]. „Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT and BOOT.TXT - A short description of how OpenDOS is booted”. Архивирано из оригинала 2003-10-04. г. Приступљено 2009-03-29.  [1]
  7. ^ Sakamoto, Masahiko (2010-05-13). „Why BIOS loads MBR into 7C00h in x86?”. Glamenv-Septzen.net. Приступљено 2012-08-22. 
  8. ^ Compaq Computer Corporation; Phoenix Technologies Ltd; Intel Corporation (1996-01-11). „BIOS Boot Specification 1.01” (PDF). Приступљено 2017-12-21. 
  9. ^ Zbikowski, Mark; Allen, Paul; Ballmer, Steve; Borman, Reuben; Borman, Rob; Butler, John; Carroll, Chuck; Chamberlain, Mark; Chell, David; Colee, Mike; Courtney, Mike; Dryfoos, Mike; Duncan, Rachel; Eckhardt, Kurt; Evans, Eric; Farmer, Rick; Gates, Bill; Geary, Michael; Griffin, Bob; Hogarth, Doug; Johnson, James W.; Kermaani, Kaamel; King, Adrian; Koch, Reed; Landowski, James; Larson, Chris; Lennon, Thomas; Lipkie, Dan; McDonald, Marc; McKinney, Bruce; Martin, Pascal; Mathers, Estelle; Matthews, Bob; Melin, David; Mergentime, Charles; Nevin, Randy; Newell, Dan; Newell, Tani; Norris, David; O'Leary, Mike; O'Rear, Bob; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim; Perez, Gary; Peters, Chris; Petzold, Charles; Pollock, John; Reynolds, Aaron; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Short, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). „Technical advisors”. The MS-DOS Encyclopedia: versions 1.0 through 3.2. Од стране Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom; Kyle, Jim; Letwin, Gordon; Petzold, Charles; Rabinowitz, Chip; Tomlin, Jim; Wilton, Richard; Wolverton, Van; Wong, William; Woodcock, JoAnne (Completely reworked изд.). Redmond, Washington, USA: Microsoft Press. ISBN 1-55615-049-0. LCCN 87-21452. OCLC 16581341.  (xix+1570 pages; 26 cm) (NB. This edition was published in 1988 after extensive rework of the withdrawn 1986 first edition by a different team of authors. [2])
  10. ^ а б в Chappell, Geoff (јануар 1994). „Chapter 2: The System Footprint”. Ур.: Schulman, Andrew; Pedersen, Amorette. DOS Internals. The Andrew Schulman Programming Series (1st printing, 1st изд.). Addison Wesley Publishing Company. ISBN 978-0-201-60835-9.  (xxvi+738+iv pages, 3.5"-floppy [3][4]) Errata: [5][6][7]
  11. ^ Rosch, Winn L. (1991-02-12). „DR DOS 5.0 - The better operating system?”. PC Magazine. св. 10 бр. 3. стр. 241-246, 257, 264, 266. Архивирано из оригинала 25. 7. 2019. г. Приступљено 2019-07-26. „[…] SYS has been improved under DR DOS 5.0 so you don't have to worry about leaving the first cluster free on a disk that you want to make bootable. The DR DOS system files can be located anywhere on the disk, so any disk with enough free space can be set to boot your system. […]  (NB. The source attributes this to the SYS utility while in fact this is a feature of the advanced bootstrap loader in the boot sector. SYS just plants this sector onto the disk.)
  12. ^ Paul, Matthias R. (2001-01-17). „FAT32 in DR-DOS”. opendos@delorie. Архивирано из оригинала 2017-10-06. г. Приступљено 2017-10-06. „[…] The DR-DOS boot sector […] searches for the IBMBIO.COM (DRBIOS.SYS) file and then loads the *whole* file into memory before it passes control to it. […] 
  13. ^ Paul, Matthias R. (2002-02-20). „Can't copy”. opendos@delorie. Архивирано из оригинала 2017-10-06. г. Приступљено 2017-10-06. „[…] The DR-DOS boot sector loads the whole IBMBIO.COM file into memory before it executes it. It does not care at all about the IBMDOS.COM file, which is loaded by IBMBIO.COM. […] The DR-DOS boot sector […] will find the […] kernel files as long as they are logically stored in the root directory. Their physical location on the disk, and if they are fragmented or not, is don't care for the DR-DOS boot sector. Hence, you can just copy the kernel files to the disk (even with a simply COPY), and as soon as the boot sector is a DR-DOS sector, it will find and load them. Of course, it is difficult to put all this into just 512 bytes, the size of a single sector, but this is a major convenience improvement if you have to set up a DR-DOS system, and it is also the key for the DR-DOS multi-OS LOADER utility to work. The MS-DOS kernel files must reside on specific locations, but the DR-DOS files can be anywhere, so you don't have to physically swap them around each time you boot the other OS. Also, it allows to upgrade a DR-DOS system simply by copying the kernel files over the old ones, no need for SYS, no difficult setup procedures as required for MS-DOS/PC DOS. You can even have multiple DR-DOS kernel files under different file names stored on the same drive, and LOADER will switch between them according to the file names listed in the BOOT.LST file. […] 
  14. ^ Paul, Matthias R. (2017-08-14) [2017-08-07]. „The continuing saga of Windows 3.1 in enhanced mode on OmniBook 300”. MoHPC - the Museum of HP Calculators. Архивирано из оригинала 2017-10-06. г. Приступљено 2017-10-06. „[…] the DR-DOS FDISK does not only partition a disk, but can also format the freshly created volumes and initialize their boot sectors in one go, so there's no risk to accidentally mess up the wrong volume and no need for FORMAT /S or SYS. Afterwards, you could just copy over the remaining DR-DOS files, including the system files. It is important to know that, in contrast to MS-DOS/PC DOS, DR-DOS has "smart" boot sectors which will actually "mount" the file-system to search for and load the system files in the root directory instead of expecting them to be placed at a certain location. Physically, the system files can be located anywhere and also can be fragmented. […] 
  15. ^ „iAPX 286 Programmer's Reference Manual” (PDF). Intel. 1983. Section 5.3 SYSTEM INITIALIZATION, p. 5-7. Приступљено 23. 8. 2019. „Since the CS register contains F000 (thus specifying a code segment starting at physical address F0000) and the instruction pointer contains FFF0, the processor will execute its first instruction at physical address FFFF0H. 
  16. ^ „Intel 64 and IA-32 Architectures Software Developer’s Manual” (PDF). Intel Corporation. maj 2012. Section 9.1.4 First Instruction Executed, p. 2611. Приступљено 23. 8. 2012. „The first instruction that is fetched and executed following a hardware reset is located at physical address FFFFFFF0h. This address is 16 bytes below the processor’s uppermost physical address. The EPROM containing the software-initialization code must be located at this address. 

Spoljašnje veze

[уреди | уреди извор]