Bővíthető firmware interfész

Extensible Firmware Interface ( EFI ) (  angolul  -  "expandable firmware interface ") - interfész az operációs rendszer és a firmware között , amely a berendezés alacsony szintű funkcióit vezérli, fő célja a berendezés helyes inicializálása a rendszer bekapcsolásakor be, és átadja a vezérlést a rendszerbetöltőre vagy közvetlenül az operációs rendszer kernelére . Az EFI célja a BIOS leváltása  , egy olyan interfész, amelyet hagyományosan minden IBM PC-kompatibilis személyi számítógép használ. Az első EFI specifikációt az Intel fejlesztette ki , később a keresztnevet elhagyták, és a szabvány legújabb verzióját Unified Extensible Firmware Interface-nek ( UEFI ) hívják. Az UEFI-t jelenleg az Egységes EFI Fórum fejleszti .

Történelem

Az EFI-t eredetileg az első Intel-HP Itanium rendszerekhez hozták létre az 1990-es évek közepén . A PC-BIOS korlátait (16 bites futtatható kód, 1 MB címezhető memória, IBM PC/AT hardverkorlátozások stb.) nyilvánvalóan nem engedélyezték azokon a nagy szerverplatformokon, amelyeken az Itaniumot használni tervezték. Az eredeti neve Intel Boot Initiative ( Intel Boot Initiative ), később EFI [1] néven :

Tartalom

Az EFI specifikáció által meghatározott interfész adattáblázatokat tartalmaz, amelyek a platformról, a rendszerindítási és a futásidejű szolgáltatásokról tartalmaznak információkat, amelyek elérhetők az operációs rendszer (OS) betöltője és maga az operációs rendszer számára. Néhány létező BIOS -bővítmény , például az ACPI és az SMBIOS , szintén megtalálható az EFI-ben, mivel nem igényelnek 16 bites futásidejű interfészt.

Szolgáltatások

Az EFI meghatározza a "boot service"-et, amely magában foglalja a szöveges és grafikus konzol támogatását különböző eszközökön, busz-, blokk- és fájlszolgáltatásokat, valamint futásidejű szolgáltatásokat, például dátumot, időt és nem felejtő memóriát.

Eszköz illesztőprogramok

A szabványos, architektúra-specifikus eszközillesztő-programok mellett az EFI-specifikáció rendelkezik egy platformfüggetlen illesztőprogram-környezetről is, az EFI Byte Code (EBC) néven. Az UEFI specifikációja megköveteli a rendszer firmware -jét, hogy rendelkezzen értelmezővel a környezetbe betöltött vagy betölthető EBC-képekhez. Ebben az értelemben az EBC hasonló az Open Firmware -hez, az Apple Macintosh és Sun Microsystems SPARC számítógépeken használt hardverfüggetlen firmware- hez .

Egyes architektúra-specifikus (nem EBC) EFI-illesztőprogram-típusok rendelkezhetnek interfészekkel az operációs rendszer számára. Ez lehetővé teszi az operációs rendszer számára, hogy az EFI-t használja az alapvető grafikus és hálózati támogatáshoz, mielőtt az operációs rendszer által meghatározott illesztőprogramokat betöltené.

Letöltéskezelő

Az EFI rendszerindítás-kezelő az operációs rendszer kiválasztására és indítására szolgál, így nincs szükség dedikált rendszerindítási mechanizmusra (az operációs rendszer betöltő egy EFI-alkalmazás).

Lemeztámogatás

A szabványos MBR lemezelrendezés mellett az EFI rendelkezik GPT támogatással , amely mentes az MBR-specifikus korlátozásoktól. Az EFI specifikáció nem tartalmazza a fájlrendszerek leírását, azonban az EFI implementációk általában támogatják a FAT32 fájlrendszert [3] .

EFI shell

Az EFI közösség nyitott shell környezetet hozott létre ( EFI shell ) [4] .  A felhasználó betölthet egy EFI-héjat, hogy végrehajtson bizonyos műveleteket az operációs rendszer indítása helyett. A shell egy EFI alkalmazás; állandóan a platform ROM-ban vagy egy olyan eszközön tartózkodhat, amelynek az illesztőprogramjai a ROM-ban vannak.

A shell más EFI-alkalmazások futtatására is használható, mint például a konfiguráció, az operációs rendszer telepítése, a diagnosztika, a konfigurációs segédprogramok és a firmware-frissítések. Használható CD vagy DVD lemezek lejátszására is az operációs rendszer indítása nélkül, feltéve, hogy az EFI alkalmazások támogatják ezeket a funkciókat. Az EFI shell parancsok lehetővé teszik fájlok és könyvtárak másolását vagy áthelyezését a támogatott fájlrendszereken, valamint az illesztőprogramok betöltését és eltávolítását. A shell használhatja a teljes TCP/IP-vermet is.

Az EFI shell támogatja a szkripteket .nsh fájlként , hasonlóan a DOS kötegfájlokhoz . Ebben az esetben a startup.nsh nevű parancsfájl automatikusan végrehajtásra kerül rendszerindításkor.

A shell parancsneveket gyakran a parancssori értelmezőktől öröklik ( COMMAND.COM vagy Unix shell ). Az EFI shell a BIOS parancssori értelmező és szöveges felület funkcionális helyettesítőjeként tekinthető.

Kiterjesztések

Az EFI-bővítmények szinte bármilyen, a számítógéphez csatlakoztatott, nem felejtő tárolóeszközről betölthetők. Például egy OEM eladhat egy olyan rendszert, amelynek a merevlemezén EFI-partíció van, amely extra funkciókat adna az alaplap ROM-jában található EFI-firmware-hez.

Megvalósítás

Intel Platform Innovation Framework for EFI

Az Intel Platform Innovation Framework for EFI ( oroszul Intel Innovation Toolkit ) az Intel által az EFI-vel közösen kifejlesztett specifikációkészlet. Míg az EFI az operációs rendszer és a firmware közötti interfészt határozza meg, az eszköztár alacsonyabb szinten határozza meg a beágyazott szoftverek létrehozásához használt struktúrákat, mint az operációs rendszer és a firmware közötti interfész.

Az eszközkészlet különösen támogatja a számítógép bekapcsolása utáni inicializálásához szükséges összes lépést. Ezek a belső firmware-képességek nem az EFI specifikáció részeként vannak meghatározva, hanem az UEFI által kifejlesztett platform inicializálási specifikációjában szerepelnek . Az eszközkészletet a következő platformokon tesztelték: Intel XScale , Intel Itanium és IA-32 .

A „régi BIOS” interfészt igénylő x86 operációs rendszerekkel a kompatibilitást támogató modul (CSM) segítségével érhető el. A CSM tartalmaz egy 16 bites programot (CSM16), amelyet a BIOS gyártó valósít meg, és egy réteget, amely a CSM16-ot az eszközkészlethez köti.

Az Intel kifejlesztett egy referencia implementációt az eszközkészlethez, kódnéven "Tiano". A Tiano a beágyazott szoftverek teljes örökségmentes megvalósítása , amely EFI támogatást nyújt. A Tiano nem tartalmazza a CSM 16 bites részét, de biztosítja a BIOS gyártók által megvalósított kiegészítők által megkívánt interfészt. Az Intel nem biztosítja a Tiano teljes megvalósítását a végfelhasználók számára.

A Tiano egy része a TianoCore projekt forráskódjaként jelent meg EFI Developer Kit (EDK) néven [5] . Ez a megvalósítás magában foglalja az EFI-t és néhány hardveres inicializálási kódot, de nem fedi le teljesen a közvetlenül beágyazott szoftver sajátosságait. Számos licencet használtak ehhez a kódhoz, beleértve a BSD licencet és az Eclipse Public License -t .

Az EFI-n, UEFI-n és a műszerspecifikációkon alapuló termékek független BIOS-gyártókon keresztül érhetők el, mint például az American Megatrends (AMI) és az Insyde Software . Egyes gyártói implementációk teljes mértékben a Tiano-n alapulnak, míg mások megfelelnek a specifikációknak, de nem az Intel referenciamegvalósításán [6] .

EFI-t vagy eszközkészletet használó platformok

Az Intel által 2000-ben kiadott Itanium alapú rendszerek támogatták az EFI 1.02-t. A Hewlett-Packard által 2002-ben kiadott Itanium 2 rendszerek támogatták az EFI 1.10-et; elindíthatták a Windowst , a Linuxot , a FreeBSD -t és a HP-UX- t . Minden EFI-kompatibilis firmware-rel kiadott Itanium vagy Itanium 2 rendszernek meg kell felelnie a DIG64 specifikációnak .

2003 novemberében a Gateway bemutatta a Gateway 610 Media Centert, az első Windows-alapú x86 számítógépes rendszert, amely az Insyde Software InsydeH2O eszközkészletén alapuló beágyazott szoftvert használ. A BIOS támogatást a kompatibilitási támogatási modul (CSM) segítségével valósították meg a Windows indításához.

2006 januárjában az Apple Inc. bemutatta az első Intel platformon alapuló Macintosh számítógépeket . Ezek a rendszerek EFI-t és szerszámozást használnak a korábbi PowerPC platformrendszereken használt Open Firmware helyett [7] .

2006. április 5-én az Apple kiadta a Boot Camp csomagot , amely lehetővé teszi Windows XP illesztőprogram-lemez létrehozását, és tartalmaz egy roncsolásmentes lemezparticionáló eszközt is, amely lehetővé teszi a Windows XP telepítését Mac OS X rendszerrel. A firmware frissítése kiadta azt a kiegészített BIOS-támogatást is ehhez az EFI-megvalósításhoz. A későbbi Macintosh modelleket frissített firmware-rel adták ki. Mostantól minden modern Macintosh számítógép képes elindítani a BIOS -kompatibilis operációs rendszereket, mint például a Windows XP, Vista és Windows 7.

Számos Intel alaplap rendelkezik eszközkészlet-alapú firmware-rel[ adja meg ] . Így 2005 folyamán több mint egymillió Intel rendszert adtak ki [8] . 2006-ban kezdték el gyártani az eszközkészletet használó új mobiltelefonokat, asztali számítógépeket és szervereket. Például minden Intel 945 lapkakészletre épülő alaplap használja az eszközkészletet. A gyártott firmware azonban általában nem tartalmaz EFI-támogatást, és a BIOS-támogatásra korlátozódik [9] .

Az EFI-t 2005 óta használják nem PC-s architektúrákban, például az XScale magon alapuló beágyazott rendszerekben [10] .

Az EDK tartalmaz egy NT32 célt, amely lehetővé teszi az EFI firmware és EFI alkalmazások futtatását Windows alkalmazásokon.

2007 - ben a Hewlett-Packard kiadta a 8000-es sorozatú többfunkciós nyomtatót EFI-kompatibilis firmware-rel [11] .

Hogyan működik az UEFI rendszerindítás

A GPT lemezelrendezésben az EFI ( ESP ) rendszerpartíció EF00 azonosítóval és a FAT32 fájlrendszer tartalmazza a \efi\boot\boot[architektúra neve].efi fájlt , például: \efi\boot\bootx64. efi. Az EFI BIOS rendszerbetöltő betölti és végrehajtja az ilyen fájlokat a számítógépes rendszer architektúrájának megfelelően.  

Például egy rendszerindító USB flash meghajtó létrehozásához a Windows rendszerben , csak meg kell jelölnie az USB flash meghajtót a GPT-ben, létre kell hoznia rajta egy aktív partíciót FAT32 fájlrendszerrel és partícióazonosítóval EF00, majd másolja az összes fájlt a CD-ről az operációs rendszer disztribúciója.

Példa GPT lemez létrehozására GNU/Linux operációs rendszerben:

Ezenkívül a legtöbb UEFI -megvalósításban lehetséges a kompatibilitási módban való rendszerindítás MBR-lemezről.

Az Apple nem használ ESP-t a rendszerindításhoz, a bootstrap átadja a vezérlést az NVRAM -ban (BootRom) írt címre: /System/Library/CoreServices/boot.efi a bless segédprogrammal [a felhasználó megváltoztathatja ezt az értéket ugyanazzal a segédprogrammal], vele megtekintheti az aktuális rendszerindító eszközt és a rendszerindítási beállításokat is:

bless --info --getBoot --verbose

Operációs rendszerek

Microsoft Windows

A Windows 2000 Itanium verziói (Advanced Server Limited Edition és Datacenter Server Limited Edition) 2002-ben megkapták az EFI 1.1 támogatást.

A Windows Server 2003 for IA-64 , a Windows XP 64 bites és a Windows 2000 Advanced Server Limited Edition az Intel Itanium processzorcsaládhoz támogatja az EFI-t a DIG64 specifikációban [15] erre a platformra meghatározottak szerint .

A Microsoft bevezette az UEFI-támogatást a 64 bites Windows operációs rendszerekben, kezdve a Windows Server 2008 -tól és a Windows Vista Service Pack 1 -től [16] [17] . A Microsoft azt állítja, hogy a hivatalos EFI-támogatás hiánya a 32 bites CPU-kon a PC-gyártók és -szállítók elégtelen támogatásának tudható be. A Microsoft 64 bites operációs rendszerekre való átállása nem teszi lehetővé az EFI 1.10 használatát, mivel az operációs rendszer által igényelt 64 bites processzorbővítéseket a processzorkörnyezet nem támogatja. Az x86-64 támogatást az UEFI 2.0 tartalmazza.

A Microsoft kiadott egy  videót Andrew Ritz és Jamie Schwarz közreműködésével, amelyben elmagyarázza az UEFI támogatás megvalósítását a Windows Vista és a Windows Server 2008 rendszerben [  18] .

Grafikus jellemzők

Az EFI támogatja a grafikus menüket és néhány szolgáltatást, például az Aptio vagy a Great Wall UEFI által megvalósítottakat [19] .

Kritika

Az EFI-t kritizálták amiatt, hogy jelentős előnyök nélkül bonyolítja a rendszert [20] , és elhagyta a teljesen nyílt forráskódú alternatív rendszerbetöltőket, mint például az OpenBIOS és a coreboot [21] .

2011-ben a Linux-alapú operációs rendszerek felhasználói és fejlesztői arra figyelmeztettek , hogy a Secure Boot technológia a Microsoft által a Windows 8 rendszerű eszközökön megkövetelt módon történő megvalósítása jelentősen korlátozza ezen eszközök felhasználóinak szabadságát az operációs rendszer kiválasztásában vagy üzemeltetésében [22] [23 ] ] .

2018 szeptemberében egy víruskereső cég jelentést tett közzé a LoJax-ról, az első ismert rootkitről, amelyet valós használatban láttak egy UEFI rendszerhez. A vállalat mérnökei felfedeztek egy esetet, amikor sikeresen legyőzték az SPI alrendszert, és elmentették a rootkitet az alrendszer flash meghajtójára. Ennek köszönhetően a rosszindulatú programok nem csak a merevlemez újraformázásakor maradhatnak a számítógépben, hanem a merevlemez cseréjekor is. Az egyetlen lehetőség, hogy megszabaduljon egy ilyen rootkittől, az UEFI rendszer firmware flash memóriájának felülírása.

Jegyzetek

  1. Dong Wei. BIOS-on túl (előszó). Intel Press, 2006, ISBN 978-0-9743649-0-2
  2. Információ az Egységes EFI Fórumról . Letöltve: 2008. június 13. Az eredetiből archiválva : 2008. június 10.
  3. FAT illesztőprogram-információk az EFI-hez  (lefelé irányuló kapcsolat) (regisztráció szükséges)
  4. Információ az EFI shellről (downlink) . Letöltve: 2008. június 16. Az eredetiből archiválva : 2007. szeptember 28.. 
  5. SourceForge.net: tianocore . Letöltve: 2008. július 6. Az eredetiből archiválva : 2021. április 28..
  6. Intel Platform Innovation Framework for EFI archiválva 2011. augusztus 21-én a Wayback Machine -nél az Intel webhelyén
  7. Univerzális bináris programozási irányelvek, második kiadás: Extensible Firmware Interface (EFI) Archiválva : 2009. január 3. Apple számítógép
  8. A keretrendszer áttekintése archiválva 2008. november 18-án a Wayback Machine Intelnél
  9. Információk az Intel kártyákon lévő EFI-ről . Letöltve: 2008. július 6. Az eredetiből archiválva : 2020. július 27.
  10. Az Intel Platform Innovation Framework áttekintése . Letöltve: 2008. július 6. Az eredetiből archiválva : 2008. november 18..
  11. HP nyomtatók  (elérhetetlen link)
  12. Grub EFI verziója (Debian Linux) . Letöltve: 2008. július 7. Az eredetiből archiválva : 2008. május 30.
  13. Linux operációs rendszer betöltése rendszerbetöltő nélkül / Sudo Null IT News . Letöltve: 2017. július 21. Az eredetiből archiválva : 2016. augusztus 7..
  14. rEFIT – Windows Vista és EFI . Letöltve: 2008. július 7. Az eredetiből archiválva : 2008. szeptember 5..
  15. A bővíthető firmware-interfész archiválva : 2006. augusztus 30. Microsoft Windows Server TechCenter
  16. Microsoft bomba: nincs EFI-támogatás a Vistához Archiválva 2006. október 17.
  17. Mary Jo Foley. A Vista SP1 béta 1 verziója július közepén jelenik meg (downlink) . ZDNet (2007. július 8.). Letöltve: 2007. július 20. Az eredetiből archiválva : 2012. március 2. 
  18. Microsoft Pre-OS Video . Letöltve: 2008. július 7. Az eredetiből archiválva : 2008. április 9..
  19. Az Intel azt mutatja, hogy a számítógép UEFI firmware-rel indítja a Windows rendszert. Archiválva : 2007. december 20.
  20. Linux: Linus a bővíthető firmware felületen
  21. Interjú: Ronald G Minnich (a link nem érhető el) . Hozzáférés dátuma: 2008. július 7. Az eredetiből archiválva : 2011. január 29. 
  22. Számítógépe "Biztonságos rendszerindítása" "Restricted Boot" lesz?  (angol) . Szabad Szoftver Alapítvány . Letöltve: 2013. november 24. Az eredetiből archiválva : 2013. november 28..
  23. Rod Smith. A biztonságos rendszerindítás kezelése  . EFI rendszertöltők kezelése Linuxhoz . Letöltve: 2013. november 24. Az eredetiből archiválva : 2013. november 6..

Linkek

Lásd még