EFI

Ajalugu

Mõte EFI-t luua tekkis Inteli Itaniumi-põhiste süsteemide loomise varases faasis, 1990. aastate keskel. Põhjuseks oli tavapärase BIOS-i piiratus (nt 16-bitine protsessorirežiim, 1 MB addresseeritavat mälu ja olenemine PC AT riistvarast). Sellist olukorda peeti vastuvõetamatuks suuremõõtmeliste serveriplatvormide jaoks, turunišš, mida Itanium sihtis. Nende murede lahendamiseks algatati 1998. aastal "Intel Boot Initiative", mis nimetati hiljem ümber EFI-ks.
2005. aasta juulis lõpetas Intel EFI spetsifikatsiooni arendamise versiooni 1.10 juures ja andis selle üle Unified EFI Foorumile. Originaalne EFI spetsifikatsioon kuulub ikka veel Intelile, kuid UEFI kuulub Foorumile. 
UEFI versioon 2.1 avaldati 7. jaanuaril 2007, sellega kaasnes krüptograafia tugi ja kasutajaliidese arhitektuur (User Interface Architecture). 2010. aasta oktoobri seisuga oli uusim UEFI versioon 2.3.

Ketta tugi

Lisaks tavalisele jaotustabelile, mis kasutab peabuutsektorit (MBR), toetab EFI ka GUID partitsioonitabelit (GPT). GPT ei kannata tavaliste MBR piirangute all, näiteks ei piira GPT partitsioonide arvu (MBR ei toeta üle nelja partitsiooni) ja lubab kasutada kuni 9,4 ZB suurust ketast. EFI spetsifikatsioon ei määra millist failisüsteemi kasutama peaks. Ainukesed Windowsi versioonid, mis toetavad GPT-d, on Windows Vista/7, Windows Server 2008 ja uuemad.

32/64 bit

BIOS on piiratud 16-bitise protsessori režiimi ja 1 MB adresseeritava mälu peale, kuna disain põhineb IBM 5150-l, mis kasutas 16-bitist Intel 8080 protsessorit. Selle eest võib UEFI joosta nii 32(x86-32) kui ka 64-bitisena (x86-64 ja Itanium). 64-bitine UEFI lubab operatsioonisüsteemile eelneval keskkonnal kasutada 64-bitist mälu adresseerimist.

Teenused

EFI defineerib kahte sorti teenused: käivitusteenused (boot services) ja käitusteenused (runtime services). Käivitusteenuste alla käivad teksti ja graafilise konsooli tugi mitmetel seadmetel, siinidel, blokkidel ja failiteenustel. Käitusteenuste hulka kuuluvad teenused nagu kuupäev, aeg ja NVRAM.

Protokollid

EFI defineerib protokollid kui komplekti tarkvaraliideseid, mida kasutatakse suhtlemiseks kahe binaarse mooduli vahel. Kõik EFI draiverid peavad pakkuma teenuseid teistele draiveritele protokollide kaudu.

Draiverid

Lisaks standardardsetele arhitektuurile spetsiifilistele draiveritele, lubab EFI kasutada ka protsessori arhitektuurist mitte olenevaid draivereid, mida nimetatakse EFI Byte Code ehk EBC-ks. Süsteemi püsivaralt nõuab UEFI spetsifikatsioon, et tal oleks interpretaator kettal olevate EBC-de lugemiseks. Selles mõttes on EBC sarnane Open Firmware-le, tuntud mitmele platvormile kirjutatud püsivarale, mida kasutavad teiste seas ka PowerPC põhised Macintoshid ja Sun Microsystemsi SPARC arvutid.
Osad arhitektuuri-spetsiifilised (mitte EBC) EFI draiveritüübid võivad omada liideseid, mida kasutatakse operatsioonisüsteemis. See lubab operatsioonisüsteemil lasta EFI-l kuvada lihtsat graafikat, kuni operatsioonisüsteemi draivereid laetakse.

Buudihaldur

EFI buudihaldurit kasutatakse ka operatsioonisüsteemi valimiseks ja käivitamiseks, kaotades vajaduse eraldi buudihalduri järgi. Operatsioonisüsteemi buutija on EFI programm.

EFI kest

EFI toetab kestakeskkonda. Kesta saab kasutada teiste EFI programmide käivitamiseks.

Laiendused

EFI-le saab laiendusi laadida sisuliselt igalt mäluseadmelt. Näiteks saavad originaalseadmete tootjad (OEM-d) seadmele lisada EFI partitsiooni, et pakkuda funktsioone lisaks arvuti püsimälus olevale EFI püsivarale.

Inteli EFI

Inteli EFI implementatsioon kannab nime Intel Platform Innovation Framework, kuid on tuntud ka kui "Tiano". Tiano jookseb Inteli Xscale, Itanium ja IA32 protsessoritel ja on enamuses firmaomane (suletud koodiga). Vaid väike osa Tiano koodist on avaldatud (seda BSD ja EPL litsentsi all) ning kannab nime "TianoCore Project". Phoenix Technologies müüb praegusel ajal UEFI toega Phoenix SecureCore Tiano ja MicroCore Bios-i.

Platvormid, mis kasutavad EFI-t

Inteli esimesed Itaniumil põhinevad tööjaamad ja serverid alates aastast 2000, toetavad EFI 1.02.
Hewlett Packardi esimesed Itanuim 2-l põhinevad arvutid alates 2002. aastast toetavad EFI 1.10-i. Suudavad buutida nii Windowsit, Linuxit, FreeBSD-d kui ka HP-UX-i. OpenVMS-i tugi tuli 2003. aasta juunis.
2006. aasta jaanuarist alates on kõik Apple Inc-i Inteli põhised Macintosh tüüpi arvutid EFI toega. EFI asendas varasemat Open Firmware-i, millel põhinesid PowerPC tüüpi arvutid. 2006. aasta kevadel lasi Apple välja Boot Camp-i, mis suudab teha Windowsi draiveritega plaadi ja dünaamiliselt kõvaketast partitsioneerida, et installeerida Windows XP ja Vista, ilma Mac OS X-i uuesti installimata. Hiljem lasti välja püsivara uuendus, mis lisas nende EFI implementatsioonile BIOS-i toe. Kõik hilisemad Macintoshi mudelid tulevad uuema püsivaraga.
2005. aasta jooksul tarniti üle ühe miljoni Inteli arvuti, millel oli kaasas Inteli Platform Innovation Framework. Uuemaid mobiilseid tooteid ning servereid ja lauaarvuteid, mis kasutasid Inteli raamistikku, hakati tarnima 2006. aastal. Näiteks, emaplaadid, mis kasutasid Inteli 945 seeria kiibistikku.
EFI-it on alates 2005. aastast implementeeritud ka mitte-PC-arhitektuuriga toodetesse, näiteks manussüsteemidesse, mis põhinevad XScale'i tuumadel.
Juba 2008. aastal hakkas EFI laiemat kasutust leidma, eriti x64 arhitektuuriga arvutites. Kuigi paljud neist toetavad siiski veel BIOS-ist buutimist kasutades Compatibility Support Module-t, et BIOS-ipõhiseid operatsioonisüsteeme käivitada. Selle tõttu ei saa kasutajad tihti peale aru, et nende arvuti kasutab UEFI-t. Teised süsteemid on hakanud toetama UEFI-põhist buutimist teises operatsioonisüsteemide jaoks. Näiteks IBM x3450 server, MSI emaplaadid, millel on ClickBIOS ja kõik HP EliteBook süle- ja tahvelarvutid.
2009. aastal hakkas IBM tarnima System X arvuteid (x3550 M2, x3650 M2, iDataPlex dx360M2) ja BladeCenter HS22 UEFI toega. Dell omalt poolt hakkas pakkuma PowerEdge T610, R610, R710, M610 ja M710 serverid, mis ka toetasid UEFI-t.

Graafilised funktsioonid

EFI toetab graafilisi menüüsid ja funktsioone, näiteks selliseid, mis on implementeeritud Aptios või Great Wall UEFI-s.
EFI spetsifikatsioon defineerib kaks graafikaväljundi protokolli. Esimene neist on UGA (universaalsed graafikaadapterid), mida toetavad vaid EFI 1.1-st vanemad spetsifikatsioonid. Teine on GOP (graafilise väljundi protokoll), mida kasutatakse praegu.
EFI ei paku ega defineeri kasutajaliidest, selle välimus ja implementatsioon oleneb täielikult BIOS-i tootjast. Praegu kasutab enamik EFI-ga arvuteid BIOS-ile omast kasutajaliidest, aga see ei näita, milleks EFI tegelikult on võimeline.

Kriitika ja riskid

Corebooti (avatud lähtekoodiga alternatiiv BIOS-ile) looja Ronald G. Minnich kritiseeris EFI-t, oletades, et EFI ei ole midagi muud kui katse säilitada intellektuaalset omandit. Põhjuseks tõi ta selle, et EFI ei lahenda BIOS-iga kaasnevat probleemi – vaja on kahte draiverit, ühte püsivarale ja teist operatsioonisüsteemile. Seda vähemalt enamiku riistvara puhul.
Mainida tuleb, et avatud lähtekoodiga projekt TianoCore pakub tasuta tööriistu, millega saab teha täiesti vabu ja tasuta püsivarapõhist UEFI-t, kuid sellel puuduvad spetsiaalsed draiverid, mis kiibistiku käivitavad. Seetõttu on vaja kasutada väikseid juppe kinnise lähtekoodiga draivereid, mille kiibistiku tootjad on teinud.
Kuna UEFI lubab paindlikumalt kaugvõrgubuutimist kui praegused BIOS-i tehnoloogiad, on muret tuntud sellega kaasnevate turvariskide pärast.