Extensible Firmware Interface | это... Что такое Extensible Firmware Interface? (original) (raw)
Логотип UEFI
Extensible Firmware Interface (EFI) — интерфейс между операционной системой и микропрограммами, управляющими низкоуровневыми функциями оборудования, его основное предназначение: корректно инициализировать оборудование при включении системы и передать управление загрузчику операционной системы. EFI предназначен для замены BIOS — интерфейса, который традиционно используется всеми IBM PC-совместимыми персональными компьютерами. Первая спецификация EFI была разработана Intel, позднее от первого названия отказались и последняя версия стандарта носит название Unified Extensible Firmware Interface (UEFI). В настоящее время разработкой UEFI занимается Unified EFI Forum.
Содержание
- 1 История
- 2 Содержание
- 3 Реализация
- 4 Графические возможности
- 5 Критика
- 6 Отличия в процессе загрузки BIOS и UEFI
- 7 См. также
- 8 Примечания
- 9 Ссылки
- 10 Литература
История
Изначально EFI создавалась для первых систем Intel-HP Itanium в начале 2000-х годов. Ограничения PC-BIOS (16-битный исполняемый код, адресуемая память 1 Мбайт, аппаратные ограничения IBM PC/AT и т. д.) были очевидно недопустимы в больших серверных платформах, для использования в которых планировался Itanium. Изначально назывался — Intel Boot Initiative (Загрузочная Инициатива Intel), позже было переименовано в EFI.[1]
Спецификация EFI 1.02 была выпущена Intel 12 декабря 2000 года. (Версия 1.01 имела проблемы в юридическом плане, связанные с торговой маркой, и была быстро изъята).
Спецификация EFI 1.10 была выпущена 1 декабря 2002 года. Она включала модель драйвера EFI, а также несколько незначительных улучшений по сравнению с версией 1.02.
В 2005 году Intel внесла эту спецификацию в UEFI Forum, который теперь ответственен за развитие и продвижение EFI.[2] EFI был переименован в Unified EFI (UEFI), чтобы отразить это изменение, при этом большая часть документации использует оба термина.
UEFI Forum выпустил спецификацию 2.1 UEFI 7 января 2007 года. Она добавила и улучшила криптографию, установление подлинности сети и архитектуру пользовательского интерфейса.
Текущая спецификация UEFI версии 2.3.1 была представлена в апреле 2011 года.
Содержание
Интерфейс, определённый спецификацией 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).
Поддержка дисков
В дополнение к стандартной схеме разметки дисков — Master boot record (MBR), EFI имеет поддержку GUID Partition Table (GPT), которая свободна от характерных для MBR ограничений. Спецификация EFI не включает описание для файловых систем, однако реализации EFI обычно поддерживают FAT32 как файловую систему.[3]
Оболочка EFI
Сообщество EFI создало открытую среду оболочки (shell environment).[4] Пользователь для выполнения некоторых операций может загрузить оболочку EFI (EFI shell) вместо того, чтобы загружать ОС. Оболочка — приложение EFI; она может постоянно находиться в ПЗУ платформы или на устройстве, драйверы для которого находятся в ПЗУ.
Оболочка может использоваться для выполнения других приложений EFI, таких как настройка, установка ОС, диагностика, утилиты конфигурации и обновления прошивок. Она также может использоваться, чтобы проиграть CD или DVD-носители не загружая ОС, при условии, что приложения EFI поддерживают эти возможности. Команды оболочки EFI также позволяют копировать или перемещать файлы и каталоги в поддерживаемых файловых системах, загружать и выгружать драйверы. Также оболочкой может использоваться полный TCP/IP-стек.
Оболочка EFI поддерживает сценарии в виде файлов .nsh, аналогичных пакетным файлам в DOS.
Названия команд оболочки часто наследуются от интерпретаторов командной строки (COMMAND.COM или Unix shell). Оболочка EFI может рассматриваться как функциональная замена интерпретатора командной строки и текстового интерфейса BIOS.
Расширения
Расширения EFI могут быть загружены с практически любого энергонезависимого устройства хранения данных, присоединённого к компьютеру. Например, OEM-производитель может продать систему с разделом EFI на жёстком диске, который добавил бы дополнительные функции к встраиваемому ПО EFI, размещённому в ПЗУ системной платы.
Реализация
Intel Platform Innovation Framework для EFI
Intel Platform Innovation Framework для EFI («инновационный инструментарий Intel») — ряд спецификаций, разработанных Intel совместно с EFI. Если EFI определяет интерфейс между ОС и firmware, то инструментарий определяет структуры, используемые для создания встраиваемого ПО на более низком уровне, чем интерфейс между ОС и firmware.
В частности, инструментарий включает все шаги, необходимые для инициализации компьютера после включения. Эти внутренние возможности встраиваемого ПО не определены как часть спецификации EFI, но включены в спецификацию инициализации платформы (Platform Initialization Specification), разработанную UEFI. Инструментарий был проверен на платформах XScale, Itanium и IA-32.
Совместимость с ОС для платформы x86, требующими для работы интерфейса «legacy BIOS», достигается с помощью модуля поддержки совместимости (CSM). CSM включает 16-битную программу (CSM16), реализуемую изготовителем BIOS, и слой, связывающий CSM16 с инструментарием.
Intel разработал эталонную реализацию для инструментария под кодовым названием «Tiano». Tiano — полная, legacy-free реализация встраиваемого ПО, обеспечивающая поддержку EFI. Tiano не включает 16-битную часть CSM, но обеспечивает интерфейсы, требуемые для дополнений, реализуемых производителями BIOS. Intel не предоставляет полную реализацию Tiano для конечных пользователей.
Часть Tiano была выпущена в виде исходных текстов TianoCore проекта как EFI Developer Kit (EDK).[5] Эта реализация включает EFI и некоторый код инициализации аппаратных средств, но не раскрывает полностью особенностей непосредственно встраиваемого ПО. Несколько лицензий использовались для этого кода, включая BSD license и Eclipse Public License.
Продукты, основанные на EFI, UEFI и спецификациях инструментария, доступны через независимых производителей BIOS, например, American Megatrends (AMI) и Insyde Software. Некоторые реализации производителей полностью основаны на Tiano, в то время как другие, соответствуют спецификациям, но не основываются на эталонной реализации Intel.[6]
Платформы, использующие EFI или инструментарий
Выпущенные в 2000 году Intel системы на платформе Itanium поддерживали EFI 1.02.
Выпущенные в 2002 году Hewlett-Packard системы на платформе Itanium 2 поддерживали EFI 1.10; они могли загружать Windows, Linux, FreeBSD и HP-UX.
Все системы Itanium или Itanium 2, которые выпускаются с EFI-совместимым встраиваемым ПО, должны соответствовать спецификации DIG64.
В ноябре 2003 года Gateway представила Gateway 610 Media Center — первую x86 компьютерную систему на основе Windows, использующую встраиваемое ПО, основанное на инструментарии, InsydeH2O от Insyde Software. Поддержка BIOS была реализована с помощью модуля поддержки совместимости (CSM) для загрузки Windows.
В январе 2006 года Apple представила первые компьютеры Macintosh на платформе Intel. Эти системы используют EFI и инструментарий вместо Open Firmware, который использовался на предыдущих системах платформы PowerPC.[7]
5 апреля 2006 года Apple выпустила пакет Boot Camp, который позволяет создать диск с драйверами Windows XP, а также содержит неразрушающий инструмент разметки дисков, позволяющий установить Windows XP совместно с Mac OS X. Также было выпущено обновление встраиваемого ПО, которое добавило поддержку BIOS для данной реализации EFI. Последующие модели Macintosh были выпущены с обновлённым встраиваемым ПО. Теперь все современные компьютеры Macintosh могут загружать BIOS-совместимые ОС, такие как Windows XP, Vista и Windows 7.
Большое количество системных плат фирмы Intel выпускается с встраиваемым ПО на основе инструментария (например, DP35DP). Так, в течение 2005 было выпущено более одного миллиона систем Intel.[8] Новые мобильные телефоны, настольные компьютеры и серверы, использующие инструментарий, начали производить в 2006 году. Например, все системные платы, которые построены на наборе системной логики Intel 945, используют инструментарий. Однако производимое встраиваемое ПО обычно не включает поддержку EFI и ограничено поддержкой BIOS.[9]
С 2005 года EFI начал применяться в не-ПК архитектурах, таких, как встраиваемые системы на ядре XScale.[10]
EDK включает цель NT32, которая позволяет встраиваемому ПО EFI и приложениям EFI выполняться в приложениях Windows.
В 2007 году компания Hewlett-Packard выпустила многофункциональный принтер серии 8000, оснащённый встраиваемым ПО, совместимым с EFI.[11]
В 2008 году компания MSI выпустила линейку системных плат на чипсете Intel P45 с поддержкой EFI,[12]
Операционные системы
- ОС GNU/Linux могли использовать EFI при загрузке с начала 2000 года, используя загрузчик EFI, elilo[источник не указан 353 дня] появившиеся позднее EFI версии загрузчика grub[13] или встроенный в ядро Linux[14] механизм EFI Stub, позволяющий ядру при определенных условиях[15] быть своим собственным загрузчиком.
- ОС HP-UX начали использовать EFI как загрузочный механизм в системах на платформе IA-64 с 2002 года. ОС OpenVMS использовала его начиная с января 2005 года.
- Apple приняла EFI для линейки своих компьютеров, основанных на архитектуре Intel (Intel-based Macs). Mac OS X 10.4 (Tiger) для Intel и Mac OS X 10.5 (Leopard) поддерживают EFI v1.10 в 32-разрядном режиме, а также на 64-разрядных центральных процессорах (новые Macintosh имеют 64-разрядный EFI).[16] В связи с этим установка Microsoft Windows 7 через загрузчик EFI на компьютеры Apple невозможна, так как Windows 7 требует наличие UEFI или более новой версии.
- Microsoft Windows поддерживает EFI для 64-разрядных архитектур. 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.[17]
- 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, определённый для данной платформы спецификацией DIG64.[18] Microsoft ввела поддержку UEFI в 64-разрядных ОС Windows начиная с Windows Server 2008 и Windows Vista Service Pack 1.[19][20]
Графические возможности
EFI поддерживает графические меню и некоторые возможности, например, осуществленные Aptio или Great Wall UEFI.[21]
Критика
EFI критиковался за то, что он привёл к усложнению системы, не давая существенных преимуществ[22], из-за отказа от альтернативных реализаций BIOS с полностью открытыми исходными текстами — OpenBIOS и coreboot.[23]
В сентябре 2011 года Matthew Garrett предупредил о том, что условия сертификации компьютеров как совместимых с Microsoft Windows 8, могут привести к появлению компьютеров, на которые невозможно будет установить какую‐либо другую операционную систему.[24][25] Microsoft заявила, что поставщики могут реализовать возможность добавления других подписей, и позже сделала это обязательным требованием сертификации, однако для устройств на ARM (ранее речь могла идти о мобильных устройствах с ОС Windows Phone, но как раз в те дни Qualcomm объявила о планах выпуска субноутбуков с поддержкой Windows 8) требование противоположное: отключение «безопасной загрузки» (и, соответственно, установка других ОС) должно быть невозможным.[26]
Отличия в процессе загрузки BIOS и UEFI
Проверить нейтральность. На странице обсуждения должны быть подробности. |
---|
При разработке UEFI участники форума с самого начала установили четкие рамки для каждого процесса. Процедуру загрузки (PI, Platform Initialization — инициализация платформы)материнской платы, основанной на UEFI, также можно разделить на несколько этапов. Первым из них, следующим непосредственно за включением компьютера,является Pre-EFI Initialization (PEI): система загружает модули инициализации процессора, памяти и чипсета и выполняет их. Затем осуществляется переход в окружение исполнения драйверов (DXE). В этот момент производится активация остальных компонентов, причем одновременно нескольких.
В UEFI можно интегрировать большое количество драйверов, не привязанных к определенной системе. Это значит, что производителям достаточно написать всего одну версию драйвера для всех платформ. Благодаря инициализации драйверов на этом раннем этапе запуска можно получить доступ к сетевой плате, в том числе функциям загрузки по сети или удаленного обслуживания. Кроме того, при активной графической подсистеме можно наслаждаться привлекательно оформленным меню UEFI.
Наибольший выигрыш во времени запуска достигается благодаря тому, что отпадает необходимость в поиске загрузчика на всех устройствах: загрузочный диск назначается в UEFI на этапе установки ОС. Ускорение старта системы не единственное достоинство UEFI. В отдельном EFI-разделе можно хранить множество приложений. Так, еще до загрузки самой ОС можно запустить программу диагностики, антивирусное ПО или утилиту управления системой.
Давно назревший переход на платформу UEFI постоянно откладывался. Теперь это в прошлом, и во многом — благодаря жестким дискам емкостью 3 Тбайт, которые уже доступны в продаже. BIOS ПК, используя классическую MBR винчестера, способна получать доступ только к 232 секторам размером 512 байт, то есть максимум к 2 Тбайт (2,2 ТБ) дискового пространства. Seagate использует секторы большего размера с целью сделать всю емкость доступной хотя бы после старта Windows. При этом компьютер на основе BIOS не сможет загрузиться с такого диска. UEFI же работает с таблицей разделов GUID (GPT, GUID Partition Table), в которой размер адреса составляет 64 бита, и поддерживает до 264 секторов, то есть способен обращаться к девяти зеттабайтам (9 млрд. терабайт).
Еще одна особенность UEFI - Безопасный протокол загрузки. Он позволяет установить один или несколько подписанных ключей в прошивку системы. После включения, “безопасной загрузки” UEFI предотвращает загрузку исполняемых файлов или драйверов, если они не подписаны одним из заранее установленных ключей. Другой набор ключей (Pkek) позволяет поддерживать связь между ОС и прошивкой. ОС вместе с набором ключей соответствия Pkek, которые организует связь с установлеными в прошивку ключами, может добавлять дополнительные ключи в так называемый “белый список” в прошивке. Естественно, помимо этого она может добавить ключи в “черный список”. Бинарники, которые отметились в черном списке ключей, естественно не будут срабатывать при загрузке.
Windows 8 совместно с UEFI 2.3.1 закрывают дыру в безопасности текущей схемы BIOS, которая позволяет любому загрузчику, в том числе содержащему руткит, загружаться раньше операционной системы. В отличие от BIOS, UEFI будет позволять загружаться только подтверждённым загрузчикам ОС в случае, если разрешена безопасная загрузка. Это означает, что вредоносное ПО в загрузчиках находиться больше не сможет. Microsoft утверждала, что возможность отключить безопасную загрузку UEFI у пользователей все же будет, если поставщики материнских плат реализуют эту функцию. Это позволит устанавливать на персональные компьютеры GNU/Linux и любые другие операционные системы, включая старые Windows. Но здесь уже начинает страдать защита и к тому же Windows 8 работать уже не будет. Позже эта возможность была запрещена для мобильных устройств.
См. также
Примечания
- ↑ Dong Wei. Beyond BIOS (foreword). Intel Press, 2006. ISBN 978-0-9743649-0-2
- ↑ Информация о Unified EFI Forum
- ↑ Информация о драйвере FAT для EFI (требует регистрации)
- ↑ Информация об оболочке EFI
- ↑ SourceForge.net: tianocore
- ↑ Intel Platform Innovation Framework для EFI на сайте Intel
- ↑ Universal Binary Programming Guidelines, Second Edition: Extensible Firmware Interface (EFI) Apple Computer
- ↑ Framework Overview Intel
- ↑ Information about EFI on Intel boards
- ↑ Overview of the Intel Platform Innovation Framework
- ↑ HP Printers
- ↑ http://fr.msi.com/img/NEWS/P45-Leaflet_back.pdf
- ↑ EFI version of Grub (Debian Linux) — Retrieved on 1 May 2008.
- ↑ x86 EFI boot stub
- ↑ Образы ядра Linux и первоначального системного окружения должны или располагаться на системном разделе EFI, или данная реализация EFI должна быть способна прочесть их с используемой данной инсталляцией Linux файловой системы
- ↑ rEFIt — Windows Vista and EFI
- ↑ Microsoft Pre-OS Video
- ↑ Extensible Firmware Interface Microsoft Windows Server TechCenter
- ↑ Microsoft bombshell: no EFI support for Vista
- ↑ Mary Jo Foley. Vista SP1 beta 1 to launch in mid-July. ZDNet (8 июля 2007). Архивировано из первоисточника 2 марта 2012. Проверено 20 июля 2007.
- ↑ Intel shows PC booting Windows with UEFI firmware
- ↑ Linux: Linus On The Extensible Firmware Interface
- ↑ Interview: Ronald G Minnich
- ↑ Matthew Garrett. UEFI secure booting (англ.). блог (20 September 2011). Архивировано из первоисточника 2 марта 2012. Проверено 23 сентября 2011.
- ↑ Matthew Garrett. UEFI secure booting (part 2) (англ.). блог (23 September 2011). Архивировано из первоисточника 2 марта 2012. Проверено 23 сентября 2011.
- ↑ Microsoft confirms UEFI fears, locks down ARM devices — SFLC Blog — Software Freedom Law Center
Ссылки
- Unified EFI Forum
- Intel Corporation — Extensible Firmware Interface
- support.apple.com :: Сводная таблица обновлений прошивок EFI и SMC для компьютеров Mac с процессорами Intel