Sāknēšanas programma

**Sāknēšanas programma** (angļu: *Boot loader*, krievu: *программа самозагрузки*) ir īsa programma, kas pastāvīgi glabājas datora energoneatkarīgajā atmiņā un kas vajadzības gadījumā no lasāmatmiņas operatīvajā atmiņā izsauc uzdevumu risināšanas vadības sistēmu (piemēram, operētājsistēmu) vai tās ielādes programmu.

Lielākā daļa datoru paši par sevi spēj izpildīt tikai kodu, kas glabājas lasāmatmiņā vai operatīvajā atmiņā, savukārt lielākā daļa mūsdienu operacionālo sistēmu glabājas citos datu nesējos, visbiežāk cietajos diskos. Ieslēdzot datoru, tās operatīvajā atmiņā nav operacionālās sistēmas koda, līdz ar to tas nespēj veikt sarežģītākas operācijas, piemēram, nolasīt failu no diska.

Lai atrisināt šo problēmu, tiek rakstīta neliela programma, ko sauc par sāknēšanas programmu. Tās uzdevums nav nodrošināt plašu operacionālās sistēmas funkcionalitāti, bet tikai ielasīt operacionālās sistēmas kodu operatīvajā atmiņā un nodot vadību operacionālās sistēmas rīcībā. Dažkārt arī tiek lietotas vairāku pakāpju sāknēšanas programmas — viena līmeņa sāknēšanas programma ielādē nākamī līmeņa sāknēšanas programmu, līdz pēdējā no tām ielādē arī pašu operacionālo sistēmu.

## OS ielādes process personālajos datoros
Sākumā pieejamajiem personālajiem datoriem bija ļoti maz atmiņas. Liela daļa programmatūras bieži vien jau no sākuma bija sistēmas lasāmatmiņā. Šīm sistēmām bieži vien nemaz nebija operētājsistēmas (vai arī to bieži nelietoja), jo tā aizņemtu pārāk daudz sistēmas resursu.

IBM PC savietojamajos datoros, pēc ieslēgšanas notiek šādi procesi:
* POST (power on self test) — lasāmatmiņā esoša programma, kas pārbauda visu sistēmas ierīču stāvokli (eksistē/neeksistē, dažām ierīcēm, ja eksistē, tad kurā vietā (PCI adrese)). Šī ir tā programma, kas ja datoram ir izrauta klaviatūra, izmet paziņojumu, ka klaviatūra nav atrasta. POST ir BIOSa daļa.
* BIOS meklē ielādes ierīci. BIOS konfigurācijā var norādīt kādā secībā pārbaudīt kādas ierīces. Dažiem BIOSiem kādu brīdi pēc ieslēgšanas (tomēr ne uzreiz), nospiežot noteiktu pogu, var dabūt sarakstu ar potenciāli pieejamajām ielādes ierīcēm un izvēloties ierīci no tā saraksta var apiet BIOSa konfigurācijā norādīto ierīču meklēšanas secību. Parasti pirmā ielādes ierīce ir diskešu ierīce vai optisko disku nolasītājs, pēc tam mēģina cieto disku un pašās beigās mēģina ielādēties no tīkla (PXE). OS ielādes ierīces var būt:
** Diskešu ierīce — šī iekārta bija pieejama visiem pirmajiem PC datoriem (pašā sākumā nemaz nebija citu variantu). Mūsdienās šo lieto arvien mazāk.
** Cietais disks — Mūsdienās operētājsistēmu parasti ielādē no cietajiem diskiem, citas ierīces lieto tikai ārkārtējos gadījumos. Cietais disks var būt pieslēgts pie sistēmas disku adaptera vai arī pie atsevišķa disku adaptera (karte, kas iesprausta PCI slotā). Parasti sākumā mēģina lādēties no sistēmas disku adaptera pieslēgtā diska.
** Optisko disku nolasītājs — Mūsdienās otra plašāk lietotā ielādes ierīce. Pamatā lieto lai ieinstalētu operētājsistēmu cietajā diskā, vai arī ja kādu citu iemeslu dēļ negrib lietot cietajā diskā esošo operētājsistēmu.
** USB mass storage — USB flešatmiņa — BIOS šo emulē kā ierīci, kas līdzīga cietajam diskam vai disketei.
** PXE tīklakarte — ielāde no lokālajā tīklā esoša PXE servera.
* Tālākais ir atkarīgs no izvēlētās ielādes ierīces veida:
** Parasti tā ir lokāla, bloku segmentēta ārējā atmiņas ierīce (cietais disks, kompaktdisks, utt). Šajā gadījumā BIOS nolasa pirmo ierīces sektoru (MBR) (magnētiskajiem datu nesējiem (disketēm un cietajiem diskiem) sektoru izmēri (vismaz līdz 2008. gadam) bija 512 baiti), palaiž tur esošo programmu un nodod vadību tai. Parasti šī programma ir sāknēšanas programma, kas turpina sistēmas ielādi.
** Ja ielādes ierīce ir PXE tīklakarte, tad process ir sarežģītāks. Vienkāršotā variantā: BIOSa ielādes programma satur DHCP un TFTP klientus. Sākumā DHCP klients dabū IP adresi un TFTP servera adresi no kurienes ielādēt OS. Pēc tam TFTP klients ielādē atmiņā no servera sāknēšanas programmas failu un palaiž tur esošo programmu un nodod tai vadību. Šis fails var būt ievērojami lielāks (vairāki megabaiti) kā diska sektors, taču tam ir jānodrošina visai augsta līmeņa operētājsistēmas funkcionalitāti, lai varētu turpināt operētājsistēmas ielādi.
* Tālākais operētājsistēmas ielādes process ir atkarīgs no operētājsistēmas. Vienkāršākām sistēmām tas ir vienkāršāks, sarežģītākām — sarežģītāks. Piemēram, DOS diska pirmajā sektorā esošā sāknēšanas programma ielādē divus tajā pašā diskā esošos failus: io.sys un msdos.sys, pēc tam nolasa tajā pašā diskā esošo config.sys un ielādē tur norādīto lietotāja interfeisu (parasti command.com). Config.sys var būt norādīti arī citi ielādējamie faili (pamatā ierīču draiveri). Ja config.sys neatrodas, tad vienkārši ielādē command.com. Vēl, command.com palaižoties pirmo reizi var palaist failu autoexec.bat, pēc kura izpildes pabeigšanas DOS ielāde ir pabeigta. Citām OS šis process ir sarežģītāks, piemēram windows NT un linux parasti lieto otrā līmeņa boot loaderi, kas pašas par sevi ir primitīva operētājsistēma un, ja ir vairākas operētājsistēmas (vai vienas operētājsistēmas vairākas konfigurācijas), ļauj izvēlēties, kuru tieši ielādēt.

## UEFI
Tad, kad parādījās pirmie datori ar Itanium procesoru, tajiem nevarēja lietot parasto BIOS ielādes procesu, jo tie nespēja darboties 16 bitu režīmā (tie bija tīri 64 bitu procesori). Tas bija 20. gs 90. gadu otrajā pusē. Tiem tika izgudrots EFI. Vēlāk, ap 2009-2012 to pielāgoja x64 procesoriem un paplašināja citiem procesoriem, un nosauca par UEFI. Liela daļa pēc 2012 ražoto datoru atbalsta UEFI (un neliela daļa atbalsta tikai UEFI). UEFI (*unified extensible firmware interface*) atšķirībā no klasiskā bios OS ielādes procesa atpazīst failsistēmu un OS ielādes programmas ir failsistēmā esoši faili. Līdzīga funkcionalitāte ar bios bija tikai PXE ielādes gadījumā. Lielākoties UEFI ir x64 (procesors pārslēdzas x64 režīmā visai ātri, pie POST) un OS ielādes programma ir x64 programma. Vēl, dažiem datoriem (mazāk izplatīts 2017jun) ir 32 bitu variants. Klasiskais BIOS darbojās 16 bitu režīmā un OS ielādes programma arī bija 16 bitu programma. UEFI firmware ir sarežģītāka un var pārbaudīt ielādes programmas elektronisko parakstu (*secure boot*). UEFI nolasāmā failsistēma ir fat32 vai fat16. Fiksētos cietajos diskos lietotās EFI partīcijas failsistēma ir fat32.

UEFI OS ielādes process: POST process notiek līdzīgi, bet potenciāli var būt ātrāks, jo pārslēgšanās uz ātrāko x64 režīmu notiek ātrāk. OS ielādes ierīce var būt ne tikai nolasāms lokālais disks (cietais disks, diskete, usbflash, cdrom) vai PXE serveris, bet arī konkrēts fails EFI partīcijā. (tālākie piemēri pieņem ka ir x64 sistēma)

* OS ielāde no fiksēta cietā diska: parasti kā ieinstalētas OS normālā ielāde: nolasa biosā konfigurēto entriju un pēc tam ielādē un palaiž norādīto failu.

* OS ielāde no noņemama diska (piem usbflash): darbojas, tikai ja tas disks ir formatēts kā fat32 (fat16), vai ja tur ir fat32 partīcija. Nolasa un ielādē defaulto ielādes failu \efi\boot\bootx64.efi (direktoriju struktūra efi\boot ir nepieciešama). Šo normāli lieto OS instalēšanai.

* OS ielāde no optiskā diska (cd/dvd): EFI tiešā veidā neredz optisko disku failsistēmas, bet var atrast fat32 image failu, kurā atrodas tā pati efi\boot\bootx64.efi struktūra.

Tālākā OS ielāde atkarīga no OS. UEFI nevar ielādēt 16 bitu OS, kā DOS.

## Ārējās saites