Wireless Home Digital Interface
- 1 year ago
- 0
- 0
Extensible Firmware Interface ( EFI ) (с англ. — «интерфейс расширяемой прошивки ») — интерфейс между операционной системой и микропрограммами , управляющими низкоуровневыми функциями оборудования, его основное предназначение: корректно инициализировать оборудование при включении системы и передать управление загрузчику или непосредственно ядру операционной системы. EFI предназначен для замены BIOS — интерфейса, который традиционно используется всеми IBM PC-совместимыми персональными компьютерами. Первая спецификация EFI была разработана Intel , позднее от первого названия отказались и последняя версия стандарта носит название Unified Extensible Firmware Interface ( UEFI ). В настоящее время разработкой UEFI занимается .
Изначально EFI создавалась для первых систем Intel-HP Itanium в середине 1990-х годов. Ограничения PC-BIOS (16-битный исполняемый код, адресуемая память 1 Мбайт, аппаратные ограничения IBM PC/AT и т. д.) были, очевидно, недопустимы в больших серверных платформах, для использования в которых планировался Itanium. Изначальное название — Intel Boot Initiative ( Загрузочная инициатива Intel ), позже было переименовано в EFI :
Интерфейс, определённый спецификацией EFI, включает таблицы данных, содержащие информацию о платформе, загрузочные и runtime-сервисы, которые доступны для загрузчика операционной системы (ОС) и самой ОС. Некоторые существующие расширения BIOS , типа ACPI и SMBIOS , также присутствуют в EFI, поскольку не требуют 16-разрядного runtime-интерфейса.
EFI определяет «загрузочные сервисы», которые включают поддержку текстовой и графической консоли на различных устройствах, шин, блоков и файловых сервисов, а также runtime-сервисы, например: дата, время и энергонезависимая память.
В дополнение к стандартным, архитектурно-зависимым драйверам устройств, спецификация EFI предусматривает независимую от платформы среду драйверов, названную EFI Byte Code (EBC). От системного встраиваемого ПО ( firmware ) спецификацией UEFI требуется иметь интерпретатор для любых образов EBC, которые загружены или могут быть загружены в среду. В этом смысле EBC подобен Open Firmware , независимому от аппаратных средств встраиваемому ПО, используемому в компьютерах Apple Macintosh и Sun Microsystems SPARC .
Некоторые архитектурно-зависимые (non-EBC) типы драйверов EFI могут иметь интерфейсы для использования ОС. Это позволяет ОС использовать EFI для базовой поддержки графики и сети до загрузки драйверов, определённых в ОС.
Менеджер загрузки EFI используется для выбора и загрузки ОС, исключая потребность в специализированном механизме загрузки (загрузчик ОС является приложением EFI).
В дополнение к стандартной схеме разметки дисков MBR EFI имеет поддержку GPT , которая свободна от характерных для MBR ограничений. Спецификация EFI не включает описания для файловых систем, однако реализации EFI обычно поддерживают FAT32 как файловую систему .
Сообщество EFI создало открытую среду оболочки ( англ. EFI shell) . Пользователь для выполнения некоторых операций может загрузить оболочку EFI вместо того, чтобы загружать ОС. Оболочка — приложение EFI; она может постоянно находиться в ПЗУ платформы или на устройстве, драйверы для которого находятся в ПЗУ.
Оболочка может использоваться для выполнения других приложений EFI, таких как настройка, установка ОС, диагностика, утилиты конфигурации и обновления прошивок. Она также может использоваться, чтобы проиграть CD- или DVD-носители, не загружая ОС, при условии, что приложения EFI поддерживают эти возможности. Команды оболочки EFI также позволяют копировать или перемещать файлы и каталоги в поддерживаемых файловых системах, загружать и выгружать драйверы. Также оболочкой может использоваться полный стек TCP/IP.
Оболочка EFI поддерживает сценарии в виде файлов .nsh , аналогичных пакетным файлам в DOS . При этом файл сценария с именем startup.nsh исполняется при загрузке автоматически.
Названия команд оболочки часто наследуются от интерпретаторов командной строки ( COMMAND.COM или Unix shell ). Оболочка EFI может рассматриваться как функциональная замена интерпретатора командной строки и текстового интерфейса BIOS.
Расширения EFI могут быть загружены с практически любого энергонезависимого устройства хранения данных, присоединённого к компьютеру. Например, OEM-производитель может продать систему с разделом EFI на жёстком диске, который добавил бы дополнительные функции к встраиваемому ПО EFI, размещённому в ПЗУ системной платы.
Intel Platform Innovation Framework для EFI ( рус. инновационный инструментарий Intel) — ряд спецификаций, разработанных Intel совместно с EFI. Если EFI определяет интерфейс между ОС и firmware, то инструментарий определяет структуры, используемые для создания встраиваемого ПО на более низком уровне, чем интерфейс между ОС и firmware.
В частности, инструментарий поддерживает все шаги, необходимые для инициализации компьютера после включения. Эти внутренние возможности встраиваемого ПО не определены как часть спецификации EFI, но включены в спецификацию инициализации платформы ( Platform Initialization Specification ), разработанную UEFI . Инструментарий был проверен на платформах: Intel XScale , Intel Itanium и IA-32 .
Совместимость с ОС для платформы x86, требующей для работы интерфейса «legacy BIOS», достигается с помощью модуля поддержки совместимости (CSM). CSM включает в себя 16-битную программу (CSM16), реализуемую изготовителем BIOS, и слой, связывающий CSM16 с инструментарием.
Intel разработал эталонную реализацию для инструментария под кодовым названием «Tiano». Tiano — полная реализация встраиваемого ПО, обеспечивающая поддержку EFI. Tiano не включает в себя 16-битную часть CSM, но обеспечивает интерфейсы, требуемые для дополнений, реализуемых производителями BIOS. Intel не предоставляет полной реализации Tiano для конечных пользователей.
Часть Tiano была выпущена в виде исходных текстов TianoCore проекта как EFI Developer Kit (EDK) . Эта реализация включает в себя EFI и некоторый код инициализации аппаратных средств, но не раскрывает полностью особенностей непосредственно встраиваемого ПО. Несколько лицензий использовались для этого кода, включая BSD license и Eclipse Public License .
Продукты, основанные на EFI, UEFI и спецификациях инструментария, доступны через независимых производителей BIOS, например, American Megatrends (AMI) и . Некоторые реализации производителей полностью основаны на Tiano, в то время как другие соответствуют спецификациям, но не основываются на эталонной реализации Intel .
Выпущенные в 2000 году Intel системы на платформе Itanium поддерживали EFI 1.02. Выпущенные в 2002 году Hewlett-Packard системы на платформе Itanium 2 поддерживали EFI 1.10; они могли загружать Windows , Linux , FreeBSD и HP-UX . Все системы Itanium или Itanium 2, которые выпускаются с EFI-совместимым встраиваемым ПО, должны соответствовать спецификации .
В ноябре 2003 года представила Gateway 610 Media Center — первую x86 компьютерную систему на основе Windows, использующую встраиваемое ПО, основанное на инструментарии InsydeH2O от Insyde Software. Поддержка BIOS была реализована с помощью модуля поддержки совместимости (CSM) для загрузки Windows.
В январе 2006 года Apple Inc. представила первые компьютеры Macintosh на платформе Intel . Эти системы используют EFI и инструментарий вместо Open Firmware , который использовался на предыдущих системах платформы PowerPC .
5 апреля 2006 года Apple выпустила пакет Boot Camp , который позволяет создать диск с драйверами Windows XP, а также содержит неразрушающий инструмент разметки дисков, позволяющий установить Windows XP совместно с Mac OS X. Также было выпущено обновление встраиваемого ПО, которое добавило поддержку BIOS для данной реализации EFI. Последующие модели Macintosh были выпущены с обновлённым встраиваемым ПО. Теперь все современные компьютеры Macintosh могут загружать BIOS -совместимые ОС, такие как Windows XP, Vista и Windows 7.
Большое количество системных плат фирмы Intel выпускается со встраиваемым ПО на основе инструментария [ уточнить ] . Так, в течение 2005 года было выпущено более одного миллиона систем Intel . Новые мобильные телефоны, настольные компьютеры и серверы, использующие инструментарий, начали производить в 2006 году. Например, все системные платы, которые построены на наборе системной логики Intel 945, используют инструментарий. Однако, производимое встраиваемое ПО обычно не включает поддержку EFI и ограничено поддержкой BIOS .
С 2005 года EFI начал применяться в архитектурах, несовместимых с PC , таких как встраиваемые системы на ядре XScale .
EDK включает цель NT32, которая позволяет встраиваемому ПО EFI и приложениям EFI выполняться в приложениях Windows.
В 2007 году компания Hewlett-Packard выпустила многофункциональный принтер серии 8000, оснащённый встраиваемым ПО, совместимым с EFI .
В дисковой разметке GPT en ( англ. ESP) помечается GUID C12A7328-F81F-11D2-BA4B-00A0C93EC93B, а в MBR типом раздела 0xEF. Раздел отформатирован в FAT32 и содержит файлы с именами вида \efi\[имя ОС]\boot[название архитектуры].efi (например: \EFI\MICROSOFT\BOOT\bootx64.efi. ). Загрузчик EFI BIOS загружает и запускает такой файл, соответствующий архитектуре компьютерной системы.
Например, чтобы создать загрузочную флешку с Windows , достаточно просто разметить флешку в MBR, создать на ней активный раздел с файловой системой FAT32 и идентификатором раздела 0xEF, затем скопировать все файлы с компакт-диска с дистрибутивом операционной системы.
Пример создания GPT-диска в операционной системе GNU/Linux:
gdisk
или
fdisk
создать раздел GPT или MBR соответственно, указав тип EFI System — EF00 в gdisk или 0xEF в fdisk (EF00 в gdisk является мнемоникой для соответствующего GUID). Затем надо отформатировать раздел в файловую систему FAT32 командой
mkfs.fat -F32 /dev/<раздел диска>
;
Также в большинстве реализаций UEFI возможна загрузка в режиме совместимости с диска с разметкой MBR.
Apple не использует ESP для загрузки, bootstrap передаёт управление по адресу, записанному в NVRAM (BootRom): /System/Library/CoreServices/boot.efi с помощью утилиты bless [ пользователь может изменить это значение посредством этой же утилиты ], с её помощью можно так же посмотреть текущее загрузочное устройство и параметры загрузки:
bless --info --getBoot --verbose
Itanium версии Windows 2000 (Advanced Server Limited Edition и Datacenter Server Limited Edition) получили поддержку EFI 1.1 в 2002 году.
Windows Server 2003 для IA-64 , 64-разрядная версия Windows XP и Windows 2000 Advanced Server Limited Edition, предназначенные для семейства процессоров Intel Itanium , поддерживают EFI, определённый для данной платформы спецификацией .
Microsoft ввела поддержку UEFI в 64-разрядных ОС Windows начиная с Windows Server 2008 и Windows Vista Service Pack 1 . Microsoft утверждает, что отсутствие официальной поддержки EFI на 32-разрядных ЦП происходит из-за недостаточной поддержки изготовителями ПК и поставщиками. Миграция Microsoft к 64-разрядным ОС не позволяет использовать EFI 1.10, так как 64-разрядные расширения процессора, необходимые этим ОС, не поддерживаются окружением процессора. Поддержка x86-64 была включена в UEFI 2.0.
Microsoft выпустила видео с Эндрю Рицом ( англ. Andrew Ritz) и Джейми Шварцем ( англ. Jamie Schwarz), разъясняющим реализацию поддержки UEFI в Windows Vista и Windows Server 2008 .
EFI поддерживает графические меню и некоторые возможности, например, осуществленные Aptio или Great Wall UEFI .
EFI критиковался за то, что он привёл к усложнению системы, не давая существенных преимуществ , и за отказ от альтернативных загрузчиков с полностью открытыми исходными текстами — OpenBIOS и coreboot .
В 2011 году пользователи и разработчики операционных систем на ядре Linux предупреждали, что внедрение технологии Secure Boot способом, требуемым Microsoft для устройств с Windows 8 , существенно ограничит свободу пользователей этих устройств в выборе операционной системы или действиях с ней .
В сентябре 2018 года одна из антивирусных компаний опубликовала доклад о LoJax — первый известный руткит для системы UEFI, замеченный в реальном употреблении. Инженерами компании был обнаружен случай успешного поражения подсистемы SPI и сохранения руткита во флэш-накопителе этой подсистемы. Благодаря этому вредоносное ПО могло оставаться в компьютере не только при переформатировании жёсткого диска, а также при замене самого жёсткого диска. Единственный шанс избавиться от такого руткита — перезапись флэш-памяти встроенного ПО системы UEFI.