Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Положение EFI в программном стеке

Интерфейс Unified Extensible Firmware ( UEFI ) [1] является спецификацией , которая определяет программный интерфейс между операционной системой и платформой прошивкой . UEFI заменяет устаревший Basic Input / Output System ( BIOS ) прошивка интерфейса изначально присутствует во всех IBM PC-совместимых персональных компьютерах , [2] [3] с большинством реализаций прошивки UEFI , обеспечивающей поддержкой услуг устаревшего BIOS. UEFI может поддерживать удаленную диагностику и ремонт компьютеров, даже если операционная система не установлена. [4]

Корпорация Intel разработала оригинальные спецификации расширяемого интерфейса микропрограмм ( EFI ). Некоторые методы и форматы данных EFI отражают таковые в Microsoft Windows . [5] [6] В 2005 году UEFI отказался от поддержки EFI 1.10 (последней версии EFI). Unified EFI Forum является отраслевым органом , который управляет спецификации UEFI во всем.

История [ править ]

Первоначальная мотивация для EFI возникла во время ранней разработки первых систем Intel – HP Itanium в середине 1990-х годов. Ограничения BIOS (такие как 16-битный реальный режим , 1 МБ адресуемой памяти, [7] программирование на языке ассемблера и оборудование PC AT ) стали слишком жесткими для более крупных серверных платформ, на которые нацелился Itanium. [8] Работа по решению этих проблем началась в 1998 году и первоначально называлась Intel Boot Initiative . [9] Позже он был переименован в Extensible Firmware Interface (EFI). [10] [11]

В июле 2005 года Intel прекратила разработку спецификации EFI в версии 1.10 и представила ее на форуме Unified EFI Forum , который разработал спецификацию как Unified Extensible Firmware Interface (UEFI). Исходная спецификация EFI остается собственностью Intel, которая предоставляет лицензии исключительно для продуктов на основе EFI, но спецификация UEFI принадлежит UEFI Forum. [8] [12]

Версия 2.0 спецификации UEFI была выпущена 31 января 2006 года. Она добавила криптографию и безопасность. Версия 2.1 спецификации UEFI была выпущена 7 января 2007 года. В нее добавлена ​​сетевая аутентификация и архитектура пользовательского интерфейса («Инфраструктура интерфейса пользователя» в UEFI).

Последняя спецификация UEFI, версия 2.8, была опубликована в марте 2019 г. [13]

Первая реализация UEFI с открытым исходным кодом , Tiano, была выпущена Intel в 2004 году. С тех пор Tiano был заменен EDK [14] и EDK2 [15] и теперь поддерживается сообществом TianoCore. [16]

В декабре 2018 года Microsoft анонсировала Project Mu, форк TianoCore EDK2, который используется в продуктах Microsoft Surface и Hyper-V . Проект продвигает идею « Прошивка как услуга» . [17]

В октябре 2018 года Arm анонсировала Arm ServerReady , программу сертификации соответствия для установки стандартных готовых операционных систем и гипервизоров на серверах на базе Arm. Программа требует, чтобы микропрограмма системы соответствовала требованиям к базовой загрузке сервера (SBBR). SBBR требует соответствия UEFI, ACPI и SMBIOS. В октябре 2020 года Arm объявила о расширении программы на периферийный рынок и рынок Интернета вещей. Новое имя программы - Arm SystemReady . Arm SystemReady определила базовые требования к загрузке ( BBR) спецификация, которая в настоящее время предоставляет три рецепта, два из которых относятся к UEFI: 1) SBBR: для которого требуется соответствие UEFI, ACPI и SMBIOS, подходящее для операционной среды корпоративного уровня, такой как Windows, Red Hat Enterprise Linux, VMware ESXi; и 2) EBBR: требует соответствия набору интерфейсов UEFI, как определено в требованиях к встроенной базовой загрузке ( EBBR ), подходящим для встроенной среды, такой как Yocto. Многие дистрибутивы Linux и BSD могут поддерживать оба рецепта.

Преимущества [ править ]

Интерфейс, определенный спецификацией EFI, включает таблицы данных, которые содержат информацию о платформе, а также службы загрузки и выполнения, доступные загрузчику ОС и ОС. Прошивка UEFI имеет несколько технических преимуществ по сравнению с традиционной системой BIOS: [18]

  • Возможность использовать большие разделы дисков (более 2  ТБ ) с таблицей разделов GUID (GPT) [19] [a]
  • Гибкая среда до ОС, включая сетевые возможности, графический интерфейс, многоязычный интерфейс
  • 32-разрядная (например, IA-32 , ARM32 ) или 64-разрядная (например, x64 , AArch64 ) среда до ОС
  • Программирование на языке C
  • Модульная конструкция
  • Обратная и прямая совместимость

Совместимость [ править ]

Совместимость процессора [ править ]

Начиная с версии 2.5, привязки процессоров существуют для Itanium, x86, x86-64, ARM (AArch32) и ARM64 (AArch64). [20] Поддерживаются только процессоры с прямым порядком байтов . [21] Неофициальная поддержка UEFI находится в стадии разработки для POWERPC64 путем реализации TianoCore поверх OPAL, [22] уровня абстракции OpenPOWER, работающего в режиме прямого порядка байтов. [23] Подобные проекты существуют для MIPS [24] и RISC-V . [25] Начиная с UEFI 2.7, привязки процессоров RISC-V были официально установлены для 32-, 64- и 128-битных режимов. [26]

Стандартный BIOS ПК ограничен режимом 16-разрядного процессора и 1 МБ адресуемой памяти, что является результатом разработки, основанной на IBM 5150, в которой использовался 16-разрядный процессор Intel 8088 . [8] [27] Для сравнения, режим процессора в среде UEFI может быть 32-битным ( x86-32 , AArch32) или 64-битным ( x86-64 , Itanium и AArch64). [8] [28] Реализации 64-битного микропрограммного обеспечения UEFI поддерживают длинный режим , который позволяет приложениям в среде предварительной загрузки использовать 64-битную адресацию для получения прямого доступа ко всей памяти машины. [29]

UEFI требует, чтобы прошивка и загрузчик операционной системы (или ядро) соответствовали размеру; например, реализация 64-разрядного микропрограммного обеспечения UEFI может загружать только загрузчик или ядро ​​64-разрядной операционной системы (ОС) (за исключением устаревшей загрузки на основе CSM). После того, как система переходит от «Boot Services» к «Runtime Services», ядро ​​операционной системы вступает во владение. На этом этапе ядро ​​может изменить режимы процессора, если пожелает, но это запрещает использование служб времени выполнения (если ядро ​​снова не переключается обратно). [30] : разделы 2.3.2 и 2.3.4 Начиная с версии 3.15, ядро Linux поддерживает загрузку 64-битных ядер в 32-битных реализациях микропрограмм UEFI, работающих на процессорах x86-64 , с передачей UEFI.поддержка загрузчика UEFI в качестве требования. [31] Протокол передачи обслуживания UEFI дедуплицирует код инициализации UEFI между ядром и UEFI загрузчиками, в результате чего инициализации будет выполняться только в Linux ядре загрузки UEFI заглушки . [32] [33]

Совместимость дискового устройства [ править ]

В дополнение к стандартной схеме разделов диска ПК, которая использует основную загрузочную запись (MBR), UEFI также работает со схемой разделения таблицы разделов GUID (GPT), которая свободна от многих ограничений MBR. В частности, ослаблены ограничения MBR на количество и размер дисковых разделов (до четырех основных разделов на диск и до 2  ТиБ (2 × 2 40 байт ) на диск). [34] В частности, GPT допускает максимальный размер диска и раздела 8  ЗиБ (8 × 2 70 байт) . [35] [36]

Linux [ править ]

Поддержка GPT в Linux включается включением опции CONFIG_EFI_PARTITION(EFI GUID Partition Support) во время настройки ядра. [37] Эта опция позволяет Linux распознавать и использовать GPT-диски после того, как микропрограмма системы передает управление системой Linux.

Для обратной совместимости Linux может использовать GPT-диски в системах на основе BIOS как для хранения данных, так и для загрузки, поскольку и GRUB 2, и Linux поддерживают GPT. Такая настройка обычно называется BIOS-GPT . [38] Поскольку GPT включает в себя защитную MBR, компьютер на базе BIOS может загружаться с GPT-диска с помощью загрузчика с поддержкой GPT, хранящегося в области кода начальной загрузки защитной MBR . [36] В случае с GRUB такая конфигурация требует загрузочного раздела BIOS для GRUB для встраивания своего кода второго этапа из-за отсутствия промежутка после MBR на дисках с разделами GPT (который используется первичным заголовком GPT и Первичная таблица разделов ). Обычно 1 При размере MiB глобальный уникальный идентификатор (GUID) этого раздела в схеме GPT равен 21686148-6449-6E6F-744E-656564454649 и используется GRUB только в настройках BIOS-GPT. С точки зрения GRUB, в случае разделения MBR такого типа раздела не существует. Этот раздел не требуется, если система основана на UEFI, поскольку в этом случае не требуется встраивание кода второго уровня. [19] [36] [38]

Системы UEFI могут получать доступ к дискам GPT и загружаться непосредственно с них, что позволяет Linux использовать методы загрузки UEFI. Загрузка Linux с дисков GPT в системах UEFI включает создание системного раздела EFI (ESP), который содержит приложения UEFI, такие как загрузчики, ядра операционной системы и служебные программы. [39] [40] [41] Такая установка обычно называется UEFI-GPT , в то время как рекомендуется, чтобы размер ESP составлял не менее 512 МБ и был отформатирован с файловой системой FAT32 для максимальной совместимости. [36] [38] [42]

Для обратной совместимости большинство реализаций UEFI также поддерживают загрузку с дисков с разделами MBR через модуль поддержки совместимости (CSM), который обеспечивает совместимость с устаревшей BIOS. [43] В этом случае загрузка Linux в системах с UEFI такая же, как и в устаревших системах на основе BIOS.

Microsoft Windows [ править ]

64-разрядные версии Windows Vista с пакетом обновления 1 (SP1) и более поздние версии могут загружаться с диска GPT, размер которого превышает 2  ТБ .

Особенности [ править ]

Услуги [ править ]

EFI определяет два вида услуг: загрузочные служб и время выполнения услуг . Службы загрузки доступны только в то время, когда прошивка владеет платформой (то есть до ExitBootServices()вызова), и они включают текстовые и графические консоли на различных устройствах, а также шинные, блочные и файловые службы. Службы времени выполнения по-прежнему доступны, пока работает операционная система; они включают такие службы, как дата, время и доступ к NVRAM .

Услуги протокола вывода графики (GOP)
Протокол выдаваемой графики (GOP) обеспечивает во время выполнения услуги; см. также раздел « Графические возможности » ниже. Операционной системе разрешено напрямую записывать в буфер кадра, предоставляемый GOP, в режиме выполнения. [44]
Сервисы карт памяти UEFI
Карта памяти UEFI аналогична BIOS e820 .
SMM услуги
Услуги ACPI
Услуги SMBIOS
Различные услуги
Переменные UEFI предоставляют способ хранения данных, в частности, энергонезависимых данных. Некоторые переменные UEFI являются общими для прошивки платформы и операционных систем. Пространства имен переменных идентифицируются идентификаторами GUID, а переменные представляют собой пары ключ / значение. Например, переменные UEFI могут использоваться для хранения сообщений о сбоях в NVRAM после сбоя, чтобы операционная система могла их получить после перезагрузки. [45]
Службы времени
UEFI предоставляет службы времени. Службы времени включают поддержку полей часового пояса и перехода на летнее время, которые позволяют устанавливать аппаратные часы реального времени на местное время или UTC. [46] На машинах, использующих часы реального времени PC-AT, по умолчанию аппаратные часы по-прежнему должны быть установлены на местное время для совместимости с Windows на основе BIOS [6], если не используются последние версии и запись в реестре Windows. установлен для указания использования UTC.

Приложения [ править ]

Взаимодействие между диспетчером загрузки EFI и драйверами EFI

Помимо загрузки ОС, UEFI может запускать приложения UEFI , которые хранятся в виде файлов в системном разделе EFI . Их можно запустить из оболочки UEFI, диспетчера загрузки микропрограммы или других приложений UEFI. Приложения UEFI можно разрабатывать и устанавливать независимо от производителей оригинального оборудования (OEM).

Тип приложения UEFI - это загрузчик ОС, такой как GRUB , rEFInd , Gummiboot и Windows Boot Manager ; который загружает некоторые файлы ОС в память и выполняет их. Кроме того, загрузчик ОС может предоставить пользовательский интерфейс, позволяющий выбрать другое приложение UEFI для запуска. Такие утилиты, как UEFI Shell, также являются приложениями UEFI.

Протоколы [ править ]

EFI определяет протоколы как набор программных интерфейсов, используемых для связи между двумя двоичными модулями. Все драйверы EFI должны предоставлять услуги другим пользователям через протоколы. Протоколы EFI аналогичны вызовам прерывания BIOS .

Драйверы устройств [ править ]

Помимо стандартных драйверов устройств, зависящих от архитектуры набора команд , EFI предоставляет независимый от ISA драйвер устройства, который хранится в энергонезависимой памяти в виде байтового кода EFI или EBC . В системной прошивке есть интерпретатор образов EBC. В этом смысле, EBC аналогично Open Firmware , аппаратно-независимая прошивка используется в PowerPC -А Apple Macintosh и Sun Microsystems SPARC компьютеры, среди других.

Некоторые зависящие от архитектуры (не относящиеся к байтовому коду EFI) драйверы EFI для некоторых типов устройств могут иметь интерфейсы для использования ОС. Это позволяет ОС полагаться на EFI для драйверов для выполнения основных графических и сетевых функций до и в случае загрузки драйверов для конкретной операционной системы.

В других случаях драйвером EFI могут быть драйверы файловой системы, позволяющие загружаться с дисковых томов других типов. Примеры включают файлы efif для 37 файловых систем (на основе кода GRUB2 ) [47], используемые Rufus для последовательной загрузки файловых систем NTFS. [48]

Графические особенности [ править ]

Спецификация EFI 1.0 определяет протокол UGA (универсальный графический адаптер) как способ поддержки графических функций. UEFI не включал UGA и заменял его GOP (протокол вывода графики). [49]

UEFI 2.1 определил «Инфраструктуру интерфейса пользователя» (HII) для управления вводом пользователя, локализованными строками, шрифтами и формами (в смысле HTML ). Это позволяет производителям оригинального оборудования (OEM) или независимым поставщикам BIOS (IBV) разрабатывать графические интерфейсы для настройки перед загрузкой.

Самые ранние реализации прошивки UEFI были консольными. Сегодня многие реализации прошивки UEFI основаны на графическом интерфейсе пользователя.

Системный раздел EFI [ править ]

Системный раздел EFI, часто сокращенно ESP, представляет собой раздел устройства хранения данных, который используется в компьютерах, соответствующих спецификации UEFI. Прошивка UEFI, доступ к которой осуществляется при включении компьютера, хранит приложения UEFI и файлы, которые эти приложения должны запускать, включая загрузчики операционной системы . Поддерживаемые схемы таблиц разделов включают MBR и GPT , а также тома El Torito на оптических дисках. [30] : раздел 2.6.2. Для использования в ESP, UEFI определяет конкретную версию файловой системы FAT., который поддерживается как часть спецификации UEFI и независимо от исходной спецификации FAT, включая файловые системы FAT32 , FAT16 и FAT12 . [30] : раздел 12.3 [50] [51] [52] ESP также предоставляет место для загрузочного сектора как часть обратной совместимости с BIOS. [43]

Загрузка [ править ]

Загрузка UEFI [ править ]

В отличие от устаревшей версии BIOS ПК, UEFI не полагается на загрузочные секторы , а вместо этого определяет диспетчер загрузки как часть спецификации UEFI. Когда компьютер включен, диспетчер загрузки проверяет конфигурацию загрузки и, основываясь на ее настройках, затем запускает указанный загрузчик ОС или ядро операционной системы (обычно загрузчик [53] ). Конфигурация загрузки определяется переменными, хранящимися в NVRAM , включая переменные, указывающие пути файловой системы к загрузчикам ОС или ядрам ОС.

Загрузчики ОС могут быть автоматически обнаружены UEFI, что позволяет легко загружаться со съемных устройств, таких как флэш-накопители USB . Это автоматическое обнаружение основывается на стандартизованных путях к файлам загрузчика ОС, причем путь зависит от архитектуры компьютера . Формат пути к файлу определяется как <EFI_SYSTEM_PARTITION> \ EFI \ BOOT \ BOOT <MACHINE_TYPE_SHORT_NAME> .EFI ; например, путь к файлу загрузчика ОС в системе x86-64 : \ efi \ boot \ bootx64.efi , [30] и \ efi \ boot \ bootaa64.efi в архитектуре ARM64.

Процесс загрузки

Загрузка систем UEFI с дисков с разделами GPT обычно называется загрузкой UEFI-GPT . Несмотря на то, что спецификация UEFI требует полной поддержки таблиц разделов MBR, [30] некоторые реализации микропрограмм UEFI немедленно переключаются на загрузку CSM на основе BIOS в зависимости от типа таблицы разделов загрузочного диска, эффективно предотвращая выполнение загрузки UEFI из Системный раздел EFI на дисках с разделами MBR. [43] Такая схема загрузки обычно называется UEFI-MBR .

Диспетчер загрузки также часто имеет текстовый пользовательский интерфейс, поэтому пользователь может выбрать желаемую ОС (или служебную программу установки) из списка доступных параметров загрузки.

Загрузка CSM [ править ]

Чтобы обеспечить обратную совместимость, большинство реализаций микропрограмм UEFI на компьютерах класса ПК также поддерживают загрузку в устаревшем режиме BIOS с дисков с разделами MBR через модуль поддержки совместимости (CSM), который обеспечивает совместимость с устаревшей BIOS. В этом сценарии загрузка выполняется так же, как в устаревших системах на основе BIOS, игнорируя таблицу разделов и полагаясь на содержимое загрузочного сектора . [43]

Загрузка в стиле BIOS с дисков с разделами MBR обычно называется BIOS-MBR , независимо от того, выполняется ли она в системах на основе UEFI или устаревших BIOS. Кроме того, также возможна загрузка устаревших систем на основе BIOS с дисков GPT, и такая схема загрузки обычно называется BIOS-GPT .

Модуль поддержки совместимости позволяет по-прежнему использовать устаревшие операционные системы и некоторые устаревшие дополнительные ПЗУ, которые не поддерживают UEFI. [54] Он также обеспечивает необходимую унаследованную функциональность режима управления системой (SMM), называемую CompatibilitySmm , в качестве дополнения к функциям, предоставляемым UEFI SMM. Примером такой унаследованной функциональности SMM является обеспечение унаследованной поддержки USB для клавиатуры и мыши путем эмуляции их классических аналогов PS / 2 . [54]

В ноябре 2017 года Intel объявила, что планирует прекратить поддержку CSM к 2020 году [55].

Загрузка по сети [ править ]

Спецификация UEFI включает поддержку загрузки по сети через Preboot eXecution Environment (PXE). Сетевые протоколы загрузки PXE включают Интернет-протокол ( IPv4 и IPv6 ), протокол дейтаграмм пользователя (UDP), протокол динамической конфигурации хоста (DHCP), простой протокол передачи файлов (TFTP) и iSCSI . [30] [56]

Образы ОС могут удаленно храниться в сетях хранения данных (SAN) с помощью интерфейса малых компьютерных систем Интернета (iSCSI) и Fibre Channel over Ethernet (FCoE) в качестве поддерживаемых протоколов для доступа к SAN. [30] [57] [58]

Версия 2.5 спецификации UEFI добавляет поддержку доступа к загрузочным образам по протоколу HTTP . [59]

Безопасная загрузка [ править ]

Спецификация UEFI 2.3.1 Errata C (или выше) определяет протокол, известный как безопасная загрузка , который может защитить процесс загрузки, предотвращая загрузку драйверов UEFI или загрузчиков ОС, не подписанных приемлемой цифровой подписью . Механические детали того, как именно эти драйверы должны быть подписаны, не указаны. [60]Когда безопасная загрузка включена, она изначально переводится в режим «настройки», который позволяет записать в микропрограмму открытый ключ, известный как «ключ платформы» (PK). После записи ключа безопасная загрузка переходит в «Пользовательский» режим, в котором микропрограммой могут быть загружены только драйверы UEFI и загрузчики ОС, подписанные ключом платформы. Дополнительные «ключи обмена ключами» (KEK) могут быть добавлены в базу данных, хранящуюся в памяти, чтобы разрешить использование других сертификатов, но они по-прежнему должны иметь соединение с закрытой частью ключа платформы. [61] Безопасная загрузка также может быть переведена в «Пользовательский» режим, в котором в систему могут быть добавлены дополнительные открытые ключи, не совпадающие с частным ключом. [62]

Безопасная загрузка поддерживается Windows 8 и 8.1 , Windows Server 2012 и 2012 R2, Windows 10 , VMware vSphere 6.5 [63] и рядом дистрибутивов Linux, включая Fedora (начиная с версии 18), openSUSE (начиная с версии 12.3), RHEL (начиная с версия 7), CentOS (начиная с версии 7 [64] ), Debian (начиная с версии 10), [65] и Ubuntu (начиная с версии 12.04.2). [66] По состоянию на январь 2017 года поддержка FreeBSD находится на стадии планирования. [67]

Оболочка UEFI [ править ]

UEFI предоставляет среду оболочки , которую можно использовать для выполнения других приложений UEFI, включая загрузчики UEFI . [41] Кроме того, команды, доступные в оболочке UEFI, могут использоваться для получения различной другой информации о системе или прошивке, включая получение карты памяти ( memmap ), изменение переменных диспетчера загрузки ( bcfg ), запуск программ разбиения на разделы ( diskpart ), загрузка драйверов UEFI и редактирование текстовых файлов ( редактировать ). [68] [69] [70]

Исходный код для UEFI оболочки можно загрузить из Intel «s TianoCore проекта UDK / EDK2. [71] Также доступен предварительно созданный ShellBinPkg. [72] Shell v2 лучше всего работает в системах с UEFI 2.3+ и рекомендуется вместо Shell v1 в этих системах. Shell v1 должна работать во всех системах UEFI. [68] [73] [74]

Способы запуска оболочки UEFI зависят от производителя и модели системной платы . Некоторые из них уже предоставляют прямую опцию в настройке прошивки для запуска, например, скомпилированная версия оболочки x86-64 должна быть доступна как <EFI_SYSTEM_PARTITION> /SHELLX64.EFI . Некоторые другие системы имеют уже встроенную оболочку UEFI, которую можно запустить с помощью соответствующих комбинаций клавиш. [75] [76] Для других систем решением является либо создание соответствующего USB-накопителя, либо добавление вручную ( bcfg ) параметра загрузки, связанного с скомпилированной версией оболочки. [70] [75] [77] [78]

Команды [ править ]

Ниже приведен список команд, поддерживаемых оболочкой EFI. [69]

  • помощь
  • гид
  • набор
  • псевдоним
  • дх
  • разгрузить
  • карта
  • устанавливать
  • CD
  • эхо
  • Пауза
  • ls
  • mkdir
  • Режим
  • cp
  • комп
  • rm
  • Memmap
  • тип
  • dmpstore
  • нагрузка
  • вер
  • ошибаться
  • время
  • Дата
  • ларек
  • перезагрузить
  • объем
  • аттриб
  • cls
  • bcfg
  • редактировать
  • Edd30
  • dblk
  • pci
  • мм
  • мем
  • EddDebug

Расширения [ править ]

Расширения UEFI можно загружать практически с любого энергонезависимого запоминающего устройства, подключенного к компьютеру. Например, производитель оригинального оборудования (OEM) может распространять системы с системным разделом EFI на жестком диске, что добавит дополнительные функции к стандартной прошивке UEFI, хранящейся в ПЗУ материнской платы .

Капсула UEFI [ править ]

UEFI Capsule определяет современный и безопасный интерфейс обновления микропрограмм между микропрограммами. [79] Windows 8 , Windows 8.1 , Windows 10 [80] и Fwupd для Linux поддерживают UEFI Capsule.

Оборудование [ править ]

Как и BIOS , UEFI инициализирует и тестирует компоненты оборудования системы, а затем загружает загрузчик с запоминающего устройства или загружается по сети . В системах x86 прошивка UEFI обычно хранится на флеш- чипе NOR материнской платы. [81]

Классы UEFI [ править ]

Машины с UEFI могут иметь один из следующих «классов», которые использовались для облегчения перехода на UEFI. Intel прекратила использование устаревшей BIOS в 2020 году. [82]

  • Класс 0: устаревшая версия BIOS
  • Класс 1: UEFI в режиме CSM-only (т.е. без загрузки UEFI)
  • Класс 2: UEFI с CSM
  • Класс 3: UEFI без CSM
  • Класс 3+: UEFI с включенной безопасной загрузкой

Этапы загрузки [ править ]

SEC - Security Phase [ править ]

Это первый этап загрузки UEFI, но ему может предшествовать двоичный код платформы. (например, Intel ME , AMD PSP , микрокод процессора ). Он состоит из минимального кода, написанного на языке ассемблера для конкретной архитектуры. Он инициализирует временную память (часто кэш ЦП в качестве ОЗУ) и служит системным программным корнем доверия с возможностью проверки PEI перед передачей.

PEI - инициализация до EFI [ править ]

Второй этап загрузки UEFI состоит из диспетчера зависимостей, который загружает и запускает модули PEI (PEIM) для обработки задач начальной инициализации оборудования, таких как операции инициализации основной памяти и восстановления микропрограмм. Кроме того, он отвечает за обнаружение текущего режима загрузки и обработку многих операций ACPI S0ix / ACPI S3. В случае возобновления ACPI S0ix / ACPI S3 он отвечает за восстановление многих аппаратных регистров до состояния, предшествующего спящему режиму. PEI также использует кеш-память ЦП в качестве ОЗУ.

DXE - среда выполнения драйвера [ править ]

Этот этап состоит из модулей C и диспетчера зависимостей. Теперь, когда доступна основная память, ЦП, набор микросхем, SoC, корневой комплекс или хост-мост PCI , драйверы UEFI, аппаратные устройства, службы загрузки и службы времени выполнения инициализируются в DXE и BDS.

BDS - Выбор загрузочного устройства [ редактировать ]

BDS является частью DXE. [83] [84] На этой стадии ввода / вывода шины, устройства ввода / вывода и загрузочные устройства инициализируются, UEFI драйверов или дополнительных ПЗУ из PCI устройств выполнены в соответствии с конфигурацией системы, а также параметры загрузки обрабатываются.

TSL - переходная нагрузка на систему [ править ]

Это этап между выбором загрузочного устройства и передачей ОС. На этом этапе можно войти в оболочку UEFI или запустить приложение UEFI, такое как загрузчик ОС.

RT - время выполнения [ править ]

UEFI передается операционной системе (ОС) после выполнения ExitBootServices () . ОС, совместимая с UEFI, теперь отвечает за выход из служб загрузки, запускающий микропрограмму для выгрузки всего ненужного кода и данных, оставляя только код / ​​данные служб времени выполнения, включая SMM , карту памяти UEFI , UEFI GOP , ACPI и SMBIOS . [85] Современные ОС предпочитают использовать свои собственные программы (например, драйверы ядра ) для управления аппаратными устройствами.

Когда используется устаревшая ОС, CSM будет обрабатывать этот вызов, обеспечивая совместимость системы с ожиданиями устаревшей BIOS.

Реализация и принятие [ править ]

Intel EFI [ править ]

Реализацией EFI Intel является платформа Intel Platform Innovation Framework под кодовым названием Tiano . Tiano работает на процессорах Intel XScale , Itanium , x86-32 и x86-64 и является проприетарным программным обеспечением, хотя часть кода была выпущена под лицензией BSD или Eclipse Public License (EPL) как TianoCore . TianoCore может быть использован в качестве полезной нагрузки для Coreboot . [86]

Внедрение UEFI в Phoenix Technologies носит название SecureCore Technology (SCT). [87] American Megatrends предлагает собственную реализацию встроенного ПО UEFI, известную как Aptio, [88] в то время как Insyde Software предлагает InsydeH2O. [89]

В декабре 2018 года Microsoft выпустила версию с открытым исходным кодом своей реализации UEFI на основе TianoCore EDK2 из линейки Surface , Project Mu . [90]

Das U-Boot [ править ]

Реализация UEFI API была представлена ​​в универсальном загрузчике ( Das U-Boot ) в 2017 году. [91] В архитектуре ARMv8 дистрибутивы Linux используют реализацию UEFI UEFI вместе с GNU GRUB для загрузки (например, SUSE Linux [ 92] ), то же самое верно и для OpenBSD. [93] Для загрузки с iSCSI iPXE может использоваться как приложение UEFI, загружаемое с помощью U-Boot. [94]

Платформы, использующие EFI / UEFI [ править ]

Первые рабочие станции и серверы Intel Itanium , выпущенные в 2000 году, использовали EFI 1.02.

Первые системы Itanium 2 от Hewlett-Packard , выпущенные в 2002 г., включали EFI 1.10; они могли загружать Windows , Linux , FreeBSD и HP-UX ; OpenVMS добавила возможность UEFI в июне 2003 года.

В январе 2006 года Apple Inc. поставила свои первые компьютеры Macintosh на базе Intel . Эти системы использовали EFI вместо Open Firmware , которое использовалось в его предыдущих системах на базе PowerPC. [95] 5 апреля 2006 года Apple впервые выпустила Boot Camp , который производит диск с драйверами Windows и инструмент неразрушающего разметки, позволяющий установить Windows XP или Vista без необходимости переустановки Mac OS X. Также было выпущено обновление прошивки выпущен, который добавил совместимость BIOS с его реализацией EFI. Последующие модели Macintosh поставлялись с более новой прошивкой. [96]

В течение 2005 года более миллиона систем Intel были поставлены с внедрением Intel UEFI. [97] [ неудачная проверка ] Новые мобильные, настольные и серверные продукты, использующие реализацию UEFI Intel, начали поставляться в 2006 году. Например, платы, использующие серию наборов микросхем Intel 945, используют реализацию встроенного ПО Intel UEFI.

С 2005 года EFI также внедряется в архитектурах, отличных от ПК, таких как встроенные системы на основе ядер XScale . [97]

EDK (EFI Developer Kit) включает цель NT32, которая позволяет микропрограммному обеспечению EFI и приложениям EFI работать в приложении Windows . Но EDK NT32 не разрешает прямой доступ к оборудованию. Это означает, что на целевом объекте EDK NT32 может выполняться только подмножество приложения EFI и драйверов.

В 2008 году большее количество систем x86-64 приняли UEFI. Хотя многие из этих систем по-прежнему позволяют загружать только ОС на базе BIOS через модуль поддержки совместимости (CSM) (таким образом, пользователю не кажется, что они основаны на UEFI), другие системы начали разрешать загрузку ОС на основе UEFI. Например, сервер IBM x3450, материнские платы MSI с ClickBIOS, ноутбуки HP EliteBook.

В 2009 году IBM поставила машины System x (x3550 M2, x3650 M2, iDataPlex dx360 M2) и BladeCenter HS22 с поддержкой UEFI. Dell поставила серверы PowerEdge T610, R610, R710, M610 и M710 с поддержкой UEFI. Более коммерчески доступные системы упоминаются в техническом документе UEFI. [98]

В 2011 году основные производители (такие как ASRock , Asus , Gigabyte и MSI ) выпустили несколько ориентированных на потребителя материнских плат, использующих чипсет Intel 6-й серии LGA 1155 и чипсеты AMD 9-й серии AM3 + с UEFI. [99]

С выпуском Windows 8 в октябре 2012 года сертификационные требования Microsoft теперь требуют, чтобы компьютеры имели микропрограммное обеспечение, реализующее спецификацию UEFI. Кроме того, если компьютер поддерживает функцию « Connected Standby » в Windows 8 (которая позволяет устройствам иметь управление питанием, сопоставимое со смартфонами , с почти мгновенным выходом из режима ожидания), то микропрограммное обеспечение не может содержать модуль поддержки совместимости ( CSM). Таким образом, системы, поддерживающие Connected Standby, не могут загружать устаревшие операционные системы BIOS. [100] [101]

В октябре 2017 года Intel объявила, что к 2020 году она откажется от поддержки устаревшей BIOS для ПК во всех своих продуктах в пользу UEFI Class 3. [102]

Операционные системы [ править ]

Операционная система, которая может быть загружена из (U) EFI, называется (U) EFI-совместимой операционной системой, определенной спецификацией (U) EFI. Здесь термин « загрузка из (U) EFI» означает прямую загрузку системы с использованием загрузчика операционной системы (U) EFI, хранящегося на любом устройстве хранения. Расположение по умолчанию для операционной системы погрузчика <EFI_SYSTEM_PARTITION>/BOOT/BOOT<MACHINE_TYPE_SHORT_NAME>.EFI, где короткое имя типа машины может быть IA32, X64, IA64, ARMили AA64. [30] Некоторые поставщики операционных систем могут иметь свои собственные загрузчики. Они также могут изменить место загрузки по умолчанию.

  • Ядро Linux был в состоянии использовать EFI при загрузке с начала 2000 - х годов, [103] с помощью ELILO загрузчика EFI или, в последнее время , EFI версии GRUB . [104] Grub + Linux также поддерживает загрузку из таблицы разделов GUID без UEFI. [19] В дистрибутив Ubuntu добавлена ​​поддержка безопасной загрузки UEFI начиная с версии 12.10. [105] Кроме того, ядро ​​Linux может быть скомпилировано с возможностью самостоятельного запуска в качестве загрузчика EFI с помощью функции загрузчика EFI.
  • HP-UX использует (U) EFI в качестве механизма загрузки в системах IA-64 с 2002 года.
  • OpenVMS использует EFI на IA-64 с момента своего первоначального оценочного выпуска в декабре 2003 года, а для производственных выпусков - с января 2005 года. [106] Порт x86-64 OpenVMS также использует UEFI для загрузки операционной системы. [107]
  • Apple использует EFI для своей линейки компьютеров Mac на базе Intel . Mac OS X v10.4 Tiger и Mac OS X v10.5 Leopard реализуют EFI v1.10 в 32-битном режиме даже на новых 64-битных процессорах, но полная поддержка пришла с OS X v10.8 Mountain Lion . [108]
  • В Itanium версии Windows 2000 (Advanced Server Limited Edition и Datacenter Server Limited Edition) реализована EFI 1.10 в 2002 MS Windows Server 2003 для IA-64 , MS Windows XP 64-разрядная версия и для Windows 2000 Advanced Server Limited Edition, все из которых для семейства процессоров Intel Itanium , реализовать EFI, требование платформы через спецификацию DIG64 . [109]
  • Microsoft представила UEFI для x64 операционных систем Windows с Windows Vista SP1 [110] и Windows Server 2008, однако поддерживается только UGA (универсальный графический адаптер) 1.1 или Legacy BIOS INT 10h ; Протокол вывода графики (GOP) не поддерживается. Таким образом, компьютеры с 64-разрядными версиями Windows Vista SP1 , Windows Vista SP2 , Windows 7 , Windows Server 2008 и Windows Server 2008 R2 совместимы с UEFI Class 2. [111] [112] 32-разрядный UEFI изначально не поддерживался, поскольку производители не были заинтересованы в выпуске встроенного 32-разрядного прошивки UEFI из-за основного статуса64-битные вычисления . [113] Windows 8, наконец, представила дополнительную оптимизацию для систем UEFI, включая поддержку протокола вывода графики (GOP), [114] более быстрый запуск, поддержку 32-битного UEFI и поддержку безопасной загрузки. [115] [116]
  • 5 марта 2013 г. FreeBSD Foundation предоставил грант разработчику, стремящемуся добавить поддержку UEFI в ядро и загрузчик FreeBSD . [117] Изначально изменения хранились в отдельной ветви исходного кода FreeBSD, но 4 апреля 2014 г. были объединены с исходным кодом основной ветки (ревизия 264095); изменения также включают поддержку в установщике. [118] Поддержка загрузки UEFI для amd64 впервые появилась во FreeBSD 10.1, а для arm64 - в FreeBSD 11.0. [119]
  • Oracle Solaris 11.1 и более поздние версии поддерживают загрузку UEFI для систем x86 с микропрограммой UEFI версии 2.1 или более поздней. GRUB 2 используется в качестве загрузчика на x86. [120]
  • OpenBSD 5.9 [121] представила поддержку загрузки UEFI для 64-битных систем x86 с использованием собственного пользовательского загрузчика, OpenBSD 6.0 расширил эту поддержку, включив ARMv7. [122]

Использование UEFI с виртуализацией [ править ]

  • Виртуальные машины HP Integrity обеспечивают загрузку UEFI на серверах HP Integrity. Он также предоставляет виртуализированную среду UEFI для гостевых ОС с поддержкой UEFI.
  • Intel размещает на SourceForge проект прошивки для открытых виртуальных машин. [123]
  • Программное обеспечение VMware Fusion 3 для Mac OS X может загружать виртуальные машины Mac OS X Server с помощью UEFI.
  • VMware Workstation до версии 11 неофициально поддерживает UEFI, но включается вручную путем редактирования файла .vmx. [124] VMware Workstation версии 11 и выше поддерживает UEFI, независимо от того, основана ли физическая хост-система на UEFI. VMware Workstation 14 (и, соответственно, Fusion 10) добавляет поддержку функции безопасной загрузки UEFI. [125] [126]
  • Vsphere ESXi 5.0 гипервизор официально поддерживает UEFI. Версия 6.5 добавляет поддержку безопасной загрузки. [127] [128]
  • VirtualBox реализовал UEFI с версии 3.1, [129], но ограничен операционными системами Unix / Linux и некоторыми версиями Windows (не работает с Windows Vista x64 и Windows 7 x64). [130] [131]
  • QEMU / KVM можно использовать с прошивкой Open Virtual Machine (OVMF), предоставляемой TianoCore . [132]
  • Гипервизор VMware ESXi версии 5, входящий в состав VMware vSphere, поддерживает виртуализированный UEFI в качестве альтернативы устаревшей BIOS ПК внутри виртуальной машины.
  • Второе поколение виртуальной машины Microsoft Hyper-V поддерживает виртуализированный UEFI. [133]
  • Защищенные виртуальные машины Google Cloud Platform поддерживают виртуализированный UEFI для обеспечения безопасной загрузки. [134]

Разработка приложений [ править ]

EDK2 Application Development Kit (EADK) позволяет использовать стандартные функции библиотеки C в приложениях UEFI. EADK можно бесплатно загрузить из проекта Intel TianoCore UDK / EDK2 SourceForge . Например, порт интерпретатора Python становится доступным как приложение UEFI с помощью EADK. [135] Разработка перенесена на GitHub с UDK2015. [136]

Минималистичная « Привет, мир » программа C написано с использованием EADK похожа на свою обычную C коллегу :

#include  <Uefi.h>#include  <Библиотека / UefiLib.h>#include  <Библиотека / ShellCEntryLib.h>EFI_STATUS  EFIAPI  ShellAppMain ( IN  UINTN  Argc ,  IN  CHAR16  ** Argv ) {  Print ( L "привет, мир \ n " );  вернуть  EFI_SUCCESS ; }

Критика [ править ]

Многие активисты цифровых прав протестовали против UEFI. Рональд Г. Миннич , соавтор coreboot , и Кори Доктороу , активист цифровых прав, раскритиковали EFI как попытку лишить пользователя возможности по-настоящему управлять компьютером. [137] [138] Это не решает давних проблем BIOS, связанных с необходимостью двух разных драйверов - одного для микропрограммного обеспечения и одного для операционной системы - для большинства оборудования. [139]

Проект с открытым исходным кодом TianoCore также предоставляет интерфейсы UEFI. [140] TianoCore отсутствуют специализированные драйверы , которые инициализируют чипсета функций, которые вместо того, чтобы предоставляемые Coreboot , из которых TianoCore является одним из многих вариантов полезной нагрузки. Разработка coreboot требует сотрудничества со стороны производителей наборов микросхем для предоставления спецификаций, необходимых для разработки драйверов инициализации.

Безопасная загрузка [ править ]

В 2011 году Microsoft объявила, что компьютеры, сертифицированные для работы с ее операционной системой Windows 8, должны поставляться с зарегистрированным открытым ключом Microsoft и включенной безопасной загрузкой. После этого объявления критики и сторонники свободного программного обеспечения / открытого исходного кода (включая Free Software Foundation ) обвинили компанию в попытке использовать функцию безопасной загрузки UEFI, чтобы помешать или полностью предотвратить установку альтернативных операционных систем, таких как Linux . Microsoft отрицала, что требование безопасной загрузки должно было служить формой блокировки.и пояснил свои требования, указав, что системы на базе x86, сертифицированные для Windows 8, должны разрешать безопасную загрузку для перехода в пользовательский режим или отключения, но не в системах, использующих архитектуру ARM . [62] [141] Windows 10 позволяет OEM-производителям решать, могут ли пользователи их систем x86 управлять безопасной загрузкой. [142]

Другие разработчики выразили озабоченность по поводу юридических и практических вопросов реализации поддержки безопасной загрузки в системах Linux в целом. Бывший разработчик Red Hat Мэтью Гарретт отметил, что условия Стандартной общественной лицензии GNU версии 3 могут препятствовать использованию GNU GRand Unified Bootloader без раскрытия разработчиком дистрибутива закрытого ключа (однако Free Software Foundation с тех пор разъяснил свою позицию, заверив, что ответственность за предоставление ключей лежит на производителе оборудования), [143] [105], и что опытным пользователям также будет сложно создать собственные ядра.это могло работать с включенной безопасной загрузкой без их самоподписывания. [141] Другие разработчики предложили предоставить подписанные сборки Linux с другим ключом, но отметили, что будет сложно убедить OEM-производителей поставлять свои компьютеры с требуемым ключом вместе с ключом Microsoft. [3]

Несколько основных дистрибутивов Linux разработали разные реализации для безопасной загрузки. Сам Гарретт разработал минимальный загрузчик, известный как shim, который представляет собой предварительно скомпилированный подписанный загрузчик, который позволяет пользователю индивидуально доверять ключам, предоставленным дистрибутивами Linux. [144] Ubuntu 12.10 использует старую версию оболочки [ какая? ] предварительно настроен для использования с собственным ключом Canonical, который проверяет только загрузчик и позволяет загружать неподписанные ядра; разработчики считали, что практика подписания только загрузчика более осуществима, поскольку доверенное ядро ​​эффективно защищает только пользовательское пространство., а не состояние перед загрузкой, для которого безопасная загрузка предназначена для дополнительной защиты. Это также позволяет пользователям создавать собственные ядра и использовать собственные модули ядра без необходимости перенастраивать систему. [105] [145] [146] Canonical также поддерживает свой собственный закрытый ключ для подписи установок Ubuntu, предварительно загруженных на сертифицированных OEM-компьютерах, на которых установлена ​​операционная система, а также планирует обеспечить соблюдение требований безопасной загрузки - требуя как Canonical ключ и ключ Microsoft (по соображениям совместимости), которые должны быть включены в их прошивку. Fedora также использует прокладку [ какая? ], но требует, чтобы и ядро, и его модули были подписаны. [145]

Это было оспорено ли ядро и его модули должны быть подписаны , а также; хотя спецификации UEFI этого не требуют, Microsoft заявила, что их договорные требования соответствуют требованиям и что она оставляет за собой право отозвать любые сертификаты, используемые для подписи кода, который может быть использован для нарушения безопасности системы. [146] В феврале 2013 года другой разработчик Red Hat попытался представить исправление для ядра Linux, которое позволило бы ему анализировать подпись аутентификационного кода Microsoft с использованием главного ключа X.509, встроенного в PE- файлы, подписанные Microsoft. Однако это предложение подверглось критике со стороны создателя Linux Линуса Торвальдса , который атаковал Red Hat за поддержку контроля Microsoft над инфраструктурой безопасной загрузки. [147]

26 марта 2013 года испанская группа разработчиков свободного программного обеспечения Hispalinux подала официальную жалобу в Европейскую комиссию , утверждая, что требования Microsoft к безопасной загрузке OEM-систем являются «препятствующими» и антиконкурентными . [148]

На конференции Black Hat в августе 2013 года группа исследователей безопасности представила серию эксплойтов в реализациях UEFI конкретных поставщиков, которые можно использовать для использования безопасной загрузки. [149]

В августе 2016 года сообщалось, что два исследователя безопасности нашли ключ безопасности «золотой ключ», который Microsoft использует для подписи операционных систем. [150] Технически, ключ не был раскрыт, однако был доступен бинарный файл, подписанный этим ключом. Это позволяет любому программному обеспечению работать так, как если бы оно было подлинно подписано Microsoft, и делает возможным атаки руткитов и буткитов . Это также делает невозможным исправление ошибки, поскольку любой патч может быть заменен (понижен) на (подписанный) используемый бинарный файл. Microsoft ответила заявлением, что уязвимость существует только в архитектуре ARM и Windows RT.устройств и выпустила два патча; однако патчи не устраняют (и не могут) устранить уязвимость, для исправления которой потребовалась бы замена ключей в прошивке конечного пользователя. [ необходима цитата ]

Многие дистрибутивы Linux теперь поддерживают безопасную загрузку UEFI, например RHEL (RHEL 7 и новее), CentOS (CentOS 7 и новее [151] ), Ubuntu , Fedora , Debian (Debian 10 и новее [152] ), OpenSUSE , SUSE Linux . [153]

Проблемы с прошивкой [ править ]

Возросшее значение прошивки UEFI в устройствах также привело к ряду технических проблем, связанных с их соответствующими реализациями. [154]

После выпуска Windows 8 в конце 2012 года было обнаружено, что некоторые модели компьютеров Lenovo с безопасной загрузкой имели прошивку, которая была жестко запрограммирована таким образом, чтобы разрешать загрузку только исполняемых файлов с именами « Windows Boot Manager » или « Red Hat Enterprise Linux », независимо от любых других. параметр. [155] С другими проблемами столкнулись несколько моделей ноутбуков Toshiba с безопасной загрузкой, у которых отсутствовали определенные сертификаты, необходимые для правильной работы. [154]

В январе 2013 года была опубликована ошибка, связанная с реализацией UEFI на некоторых ноутбуках Samsung , из-за которой они зависали после установки дистрибутива Linux в режиме UEFI. Хотя изначально обвиняли в потенциальных конфликтах с модулем ядра, предназначенным для доступа к системным функциям на ноутбуках Samsung (что также побуждало специалистов по обслуживанию ядра отключить модуль в системах UEFI в качестве меры безопасности), Мэтью Гарретт обнаружил, что ошибка на самом деле была вызвана хранением слишком большого количества UEFI. переменные в память, и что ошибка также может быть вызвана под Windows при определенных условиях. В заключение он определил, что неисправный модуль ядра привел к тому, что дампы сообщений ядра были записаны в прошивку, тем самым вызвав ошибку. [45] [156] [157]

См. Также [ править ]

  • OpenBIOS
  • Инициализация платформы UEFI (UEFI PI)
  • Расширенная конфигурация и интерфейс питания (ACPI)
  • BIOS управления системой (SMBIOS)
  • Модуль доверенной платформы (TPM)

Заметки [ править ]

  1. ^ Поддержка больших дисков и такие функции, как Advanced Configuration and Power Interface (ACPI) и System Management BIOS (SMBIOS) были впоследствии реализованы в системах на основе BIOS.

Ссылки [ править ]

  1. ^ Выраженная как акроним или как / ¯u ɪ е aɪ / .
  2. ^ Кинни, Майкл (1 сентября 2000). «Решение проблем с загрузкой BIOS с помощью EFI» (PDF) . С. 47–50 . Проверено 14 сентября 2010 года .
  3. ^ a b «MS отрицает безопасную загрузку, исключая Linux» . Реестр. 23 сентября 2011 . Проверено 24 сентября 2011 года .
  4. ^ «30-летнее правление BIOS закончилось: почему UEFI W ... - ввод-вывод» . HP.com . Архивировано из оригинального 26 июня 2013 года . Проверено 6 марта 2012 года .
  5. ^ Часы реального времени IBM PC должны работать в UT . Cl.cam.ac.uk. Проверено 30 октября 2013 г.
  6. ^ a b Гаррет, Мэтью (19 января 2012 г.). «EFI и Linux: будущее уже наступило, и оно ужасно» . linux.conf.au 2012 . Проверено 2 апреля 2012 года .
  7. ^ «Карта памяти (x86) - OSDev Wiki» . wiki.osdev.org . Проверено 11 декабря 2020 .
  8. ^ a b c d «Реализация Emulex UEFI обеспечивает лучшие в отрасли функции для систем IBM» (PDF) . Эмулекс . Проверено 14 сентября 2010 года .
  9. ^ Extensible Firmware Interface (EFI) и Unified EFI (UEFI) , Intel, заархивировано из оригинала 5 января 2010 г.
  10. Wei, Dong (2006), «Предисловие», Beyond BIOS , Intel Press, ISBN 978-0-9743649-0-2
  11. ^ «1.10 Обзор спецификаций» , Extensible Firmware Interface , Intel
  12. ^ About , Unified EFI Forum, Q: Какая связь между EFI и UEFI? О: Спецификация UEFI основана на спецификации EFI 1.10, опубликованной Intel, с исправлениями и изменениями, внесенными в Unified EFI Forum. Intel по-прежнему владеет авторскими правами на спецификацию EFI 1.10, но внесла ее в форум, чтобы Форум мог ее развивать. В будущих версиях спецификации EFI не будет, но заказчики, получившие лицензию, по-прежнему могут использовать ее в соответствии с условиями лицензии от Intel. Лицензия на унифицированную спецификацию EFI исходит от Форума, а не от Intel.
  13. ^ «Спецификация унифицированного расширяемого интерфейса микропрограмм (UEFI)» (PDF) . www.uefi.org . Март 2019 . Проверено 12 декабря 2020 .
  14. ^ "GitHub - tianocore / Edk: Git зеркало EDK" . 19 марта 2019.
  15. ^ "GitHub - tianocore / Tianocore.github.io: веб-сайт Tianocore" . 8 августа 2019.
  16. ^ "Что такое TianoCore?" .
  17. ^ «Microsoft анонсирует Project Mu, выпуск ядра UEFI с открытым исходным кодом» . 20 декабря 2018.
  18. ^ «UEFI и Windows» . Microsoft. 15 сентября 2009 . Проверено 14 сентября 2010 года .
  19. ^ a b c «Установка» . 3.4 Установка BIOS . GNU GRUB . Проверено 25 сентября 2013 года .
  20. ^ Спецификация UEFI 2.4, раздел 2.3
  21. ^ Спецификация UEFI 2.3.1, раздел 1.8.1.
  22. ^ «GitHub - andreiw / ppc64le-edk2: UEFI TianoCore для OPAL / PowerNV (PPC64 / PowerPC64 Little-Endian)» . GitHub .
  23. ^ «Tianocore для OpenPOWER» . Безопасность прошивки . 12 октября 2015 г.
  24. ^ kontais. «EFI-MIPS» . SourceForge .
  25. ^ "lowRISC · lowRISC" .
  26. ^ http://www.uefi.org/sites/default/files/resources/UEFI_Spec_2_7.pdf
  27. ^ Hardwidge, Бен (1 июня 2010). "LBA объяснил - решение проблемы 3 ТБ?" . бит-тек . Проверено 18 июня 2010 года .
  28. Рианна Ричардсон, Брайан (10 мая 2010 г.). «Спросите у BIOS парня:« Почему именно UEFI » » . Блог об архитектуре Intel. Архивировано из оригинала 9 октября 2010 года . Проверено 18 июня 2010 года .
  29. ^ Симпсон, Гэри. «UEFI Momentum - перспектива AMD» . AMD. Архивировано из оригинального (PPTX) 4 января 2014 года . Проверено 20 сентября 2014 года .
  30. ^ a b c d e f g h «Спецификации UEFI (версия 2.4 и более ранние)» (PDF) . Единый EFI, Inc. июня 2013 . Проверено 25 сентября 2013 года .
  31. ^ «Ядро Linux 3.15, раздел 1.3. 64-битные ядра EFI могут быть загружены с 32-битной прошивки» . kernelnewbies.org . 8 июня 2014 . Проверено 15 июня 2014 года .
  32. ^ "x86, efi: протокол передачи обслуживания" . LWN.net . 19 июля 2012 . Проверено 15 июня 2014 года .
  33. ^ "Документация ядра Linux: Documentation / efi-stub.txt" . kernel.org . 1 февраля 2014 . Проверено 15 июня 2014 года .
  34. ^ «Часто задаваемые вопросы: ограничения раздела диска» (PDF) . Форум UEFI . Проверено 5 декабря 2019 .
  35. ^ «Часто задаваемые вопросы: ограничения раздела диска» (PDF) . Форум UEFI . Проверено 9 июня 2010 года .
  36. ^ a b c d Смит, Родерик У. (3 июля 2012 г.). «Максимально используйте большие диски с GPT и Linux» . IBM . Проверено 25 сентября 2013 года .
  37. ^ "блок / разделы / Kconfig (3.11.1)" . CONFIG_EFI_PARTITION (строка № 247) . kernel.org . Проверено 25 сентября 2013 года .
  38. ^ а б в "ГРУБ" . Системы BIOS . Arch Linux . Проверено 25 сентября 2013 года .[ ненадежный источник? ]
  39. ^ «GRUB и процесс загрузки в системах x86 на базе UEFI» . redhat.com . Проверено 14 ноября 2013 года .
  40. ^ «Загрузка UEFI 64-битного Redhat Enterprise Linux 6» . fpmurphy.com . Сентябрь 2010 . Проверено 14 ноября 2013 года .
  41. ^ a b «Загрузчики UEFI» . archlinux.org . Проверено 25 сентября 2013 года .[ ненадежный источник? ]
  42. ^ «Единый расширяемый интерфейс микропрограмм: системный раздел EFI» . archlinux.org . Проверено 25 сентября 2013 года .[ ненадежный источник? ]
  43. ^ a b c d "Загрузка системы UEFI из таблицы разделов MBR и устаревшей версии GRUB" . Форумы Arch Linux. Июнь 2012 . Проверено 6 октября 2013 года .
  44. ^ «Что такое efifb? - Документация ядра Linux» . www.kernel.org . Проверено 24 ноября 2020 года .
  45. ^ a b «Ошибка Samsung UEFI: ноутбук заблокирован из Windows» . Н . Проверено 27 февраля 2013 года .
  46. ^ Спецификация UEFI, раздел 7.3
  47. ^ «Бесплатные драйверы EFI для программного обеспечения» .
  48. ^ Batard, Пит (13 марта 2020). "пбатард / уэфи-нтфс" . GitHub .
  49. ^ «Часто задаваемые вопросы по драйверам встроенного графического адаптера Intel: BIOS и встроенное ПО» . Intel . Проверено 19 мая 2014 .
  50. ^ «Спецификация UEFI версии 2.5, раздел 12.3 Формат файловой системы» (PDF) . uefi.org . Апрель 2015. С. 536, 537 . Дата обращения 29 мая 2015 . Файловая система, поддерживаемая расширяемым интерфейсом микропрограмм, основана на файловой системе FAT. EFI определяет конкретную версию FAT, которая явно документирована и тестируется. Соответствие спецификации EFI и связанным с ней справочным документам - единственное определение FAT, которое необходимо реализовать для поддержки EFI. Чтобы отличить файловую систему EFI от чистой FAT, был определен новый тип файловой системы раздела.
  51. ^ «Техническое примечание TN2166: Секреты GPT» . developer.apple.com . 6 ноября 2006 . Дата обращения 6 мая 2015 .
  52. ^ "UEFI - OSDev Wiki" . wiki.osdev.org . Проверено 26 сентября 2020 .
  53. ^ "EFISTUB - ArchWiki" . wiki.archlinux.org . Проверено 27 октября 2020 года .
  54. ^ a b «Платформа Intel® Innovation Framework для EFI» (PDF) . Спецификация модуля поддержки совместимости (версия 0.97) . Intel. 4 сентября 2007 . Проверено 6 октября 2013 года .
  55. ^ «BIOS ПК будет отключен к 2020 году, поскольку Intel планирует перейти на чистый UEFI» . Ars Technica . Проверено 29 мая 2018 .
  56. ^ «Руководство по установке Red Hat Enterprise Linux 6» . 30.2.2. Настройка загрузки PXE для EFI . Красная шляпа . Проверено 9 октября 2013 года .
  57. Эль-Хадж-Махмуд, Самер (июль 2013 г.). «Достижения в области сетевых технологий до ОС в UEFI 2.4» (PDF) . Hewlett-Packard . Проверено 29 мая 2019 .
  58. ^ «Конвергенция хранилищ и сетей с использованием FCoE и iSCSI» (PDF) . IBM . Июль 2012 . Проверено 9 октября 2013 года .
  59. ^ «Новая поддержка загрузки UEFI HTTP в UEFI 2.5» . firmwaresecurity.com . 9 мая 2015 . Проверено 13 августа 2015 года .
  60. ^ «Обзор безопасной загрузки» . Microsoft . Проверено 18 февраля +2016 .
  61. Edge, Джейк. «UEFI и« безопасная загрузка » » . LWN.net . Проверено 9 сентября 2012 года .
  62. ^ a b «Безопасная загрузка Windows 8: споры продолжаются» . Мир ПК . Проверено 9 сентября 2012 года .
  63. ^ «Безопасная загрузка для ESXi 6.5 - гарантия гипервизора» . Блог VMware vSphere . 4 мая 2017 . Проверено 18 августа 2017 года .
  64. ^ HowTos / UEFI - CentOS Wiki
  65. ^ Larabel, Майкл (30 апреля 2018). «Debian делает успехи в поддержке UEFI SecureBoot в 2018 году» . Фороникс . Phoronix Media . Проверено 23 мая 2018 .
  66. Гаррет, Мэтью (27 декабря 2012 г.). «Поддержка распространения безопасной загрузки» . Mjg59.dreamwidth.org . Проверено 20 марта 2014 .
  67. ^ "SecureBoot" . FreeBSD Wiki . FreeBSD . Проверено 16 июня 2015 года .
  68. ^ a b «Единый расширяемый интерфейс микропрограмм» . Оболочка UEFI . Arch Linux . Проверено 25 сентября 2013 года .[ ненадежный источник? ]
  69. ^ a b «Оболочки EFI и сценарии» . Intel . Проверено 25 сентября 2013 года .
  70. ^ a b «Спецификация оболочки UEFI версии 2.0, исправление A» (PDF) . Единый EFI, Inc. Май 2012 . Проверено 25 сентября 2013 года .
  71. ^ "EDK2: ShellPkg" . GitHub . Дата обращения 18 марта 2020 .
  72. ^ "tianocore / edk2: релизы" . GitHub .
  73. ^ "Архив электронной почты: edk2-devel" . [edk2] Включение оболочки UEFI в iso дистрибутива Linux . SourceForge . 2012 . Проверено 25 сентября 2013 года .
  74. ^ "TianoCore на SourceForge" . Shell FAQ . Intel . Проверено 25 сентября 2013 года .
  75. ^ a b «Единый расширяемый интерфейс микропрограмм» . Запуск оболочки UEFI . Arch Linux . Проверено 25 сентября 2013 года .[ ненадежный источник? ]
  76. ^ «Основные инструкции по использованию EFI для конфигурации сервера на серверных платах Intel® и серверных системах Intel®» (PDF) . Intel . 2008 . Проверено 25 сентября 2013 года .
  77. ^ «Единый расширяемый интерфейс микропрограмм» . bcfg . Arch Linux . Проверено 25 сентября 2013 года .[ ненадежный источник? ]
  78. ^ "Примеры GRUB EFI" . Asus . Arch Linux . Проверено 25 сентября 2013 года .[ ненадежный источник? ]
  79. ^ https://edk2-docs.gitbook.io/understanding-the-uefi-secure-boot-chain/secure_boot_chain_in_uefi/signed-capsule-update
  80. ^ barrygolden. «Платформа обновления прошивки Windows UEFI - драйверы Windows» . docs.microsoft.com . Проверено 25 сентября 2020 года .
  81. ^ «Начало работы | Технология микрочипов» . www.microchip.com . Проверено 24 декабря 2020 года .
  82. ^ Начиная с Intel Core 10-го поколения, Intel больше не предоставляет Legacy Video BIOS для iGPU ( графическая технология Intel ). Для устаревшей загрузки требуется Legacy Video Option ROM.
  83. ^ https://github.com/tianocore/tianocore.github.io/wiki/PI-Boot-Flow
  84. ^ https://ami.com/en/?Aptio_V_Status_Codes.pdf
  85. ^ «Унифицированный расширяемый интерфейс микропрограмм (UEFI) - Документация ядра Linux» . www.kernel.org . Дата обращения 7 ноября 2020 .
  86. ^ "TianoCore - coreboot" . Проверено 25 мая 2012 года .
  87. ^ "SecureCore Tiano ™" . Phoenix Technologies. Архивировано из оригинала 6 сентября 2010 года . Проверено 14 сентября 2010 года .
  88. ^ «Aptio®: полное решение для продуктов UEFI» (PDF) . Американский Megatrends, Inc . Проверено 2 мая 2018 .
  89. ^ "Почему мы?" . Insyde Software Corp . Проверено 2 мая 2018 .
  90. ^ "Microsoft объявляет" Project Mu "для UEFI с открытым исходным кодом, альтернативы TianoCore" . Фороникс . Проверено 20 декабря 2018 года .
  91. ^ «Женитьба U-Boot UEFI и GRUB» (PDF) . Проверено 12 сентября 2018 года .
  92. ^ «UEFI поверх U-Boot» (PDF) . Проверено 12 сентября 2018 года .
  93. ^ "Установка OpenBSD 6.3 на Raspberry 3" . Проверено 12 сентября 2018 года .
  94. ^ «Загрузка iSCSI с U-Boot и iPXE» . Дата обращения 18 мая 2020 .
  95. ^ Apple Computer. « Универсальные инструкции по двоичному программированию, второе издание: расширяемый интерфейс микропрограмм (EFI), архив 24 июля 2008 г. на Wayback Machine »
  96. ^ Переход Apple от открытой прошивки к расширяемому интерфейсу прошивки , mactech, 2007.
  97. ^ a b «Платформа Intel® Innovation Framework для обзора UEFI» . Intel . Проверено 14 сентября 2010 года .
  98. ^ Оценка UEFI с использованием коммерчески доступных платформ и решений (PDF) , UEFI, май 2011 г., заархивировано из исходного (PDF) 22 марта 2012 г.
  99. ^ Предварительный просмотр материнской платы Asus P67 .
  100. ^ «Требования к сертификации оборудования Windows для клиентских и серверных систем» . Microsoft. Январь 2013 г. System.Fundamentals.Firmware.CS.UEFISecureBoot.ConnectedStandby ... Платформы должны быть UEFI класса 3 (определение см. В разделе Отраслевая группа UEFI, Оценка UEFI с использованием коммерчески доступных платформ и решений, версия 0.3) без модуля поддержки совместимости установлен или устанавливается. Эмуляция BIOS и устаревшая загрузка ПК / AT должны быть отключены.
  101. ^ «Microsoft: все, что вам нужно знать о Windows 8 на ARM» . Журнал ПК . Проверено 30 сентября 2013 года .
  102. Рианна Ричардсон, Брайан (30 октября 2017 г.). « » Последней мили «Барьеры на пути Удаление прежних версий BIOS» (PDF) . Проверено 22 ноября 2017 года .
  103. ^ Объявление о выпуске 3.5pre1 по разработчике Бретт Джонсон сделал 27 февраля 2004 года.
  104. ^ Версия Grub EFI , Debian GNU / Linux , получено 1 мая 2008 г.
  105. ^ a b c «Ubuntu будет использовать GRUB 2 для своей реализации безопасной загрузки» . The H Online . Проверено 28 октября 2012 года .
  106. ^ История выпусков OpenVMS , HP, заархивировано из оригинала 5 января 2009 г. , извлечено 16 сентября 2008 г.
  107. ^ «Состояние порта на x86-64» (PDF) . vmssoftware.com . 6 октября 2017 . Дата обращения 9 сентября 2020 .
  108. ^ rEFIt - Windows Vista и EFI , SourceForge
  109. ^ "Extensible Firmware Interface", Windows Server TechCenter , Microsoft, заархивировано из оригинала 30 августа 2006 г.
  110. ^ Рекомендации по внедрению унифицированного расширяемого интерфейса микропрограмм (UEFI)
  111. ^ https://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt
  112. ^ Загрузка в режим UEFI или устаревший режим BIOS
  113. ^ «Поддержка единого расширенного интерфейса микропрограмм в Windows Vista» . Microsoft. 26 октября 2006 . Проверено 12 июня 2010 года . Microsoft определила, что производители не будут заинтересованы в выпуске 32-разрядной прошивки UEFI из-за текущего состояния основных 64-разрядных вычислений и затрат на платформу. Поэтому Microsoft изначально не поставляла поддержку 32-разрядных реализаций UEFI.
  114. ^ Базовый драйвер дисплея Microsoft
  115. ^ «Microsoft рекламирует невероятное время загрузки Windows 8» . Проверено 9 сентября 2011 года .
  116. ^ Brodkin, Джон (21 сентября 2011). «Безопасная загрузка Windows 8 может усложнить установку Linux» . Ars Technica . Проверено 23 сентября 2011 года .
  117. ^ "FreeBSD для получения поддержки UEFI" . Н . Проверено 7 марта 2013 года .
  118. ^ "UEFI - FreeBSD Wiki" . FreeBSD.org . Проверено 19 июня 2014 .
  119. ^ "uefi (8)" . www.freebsd.org . Проверено 11 января 2021 года .
  120. ^ «Oracle Solaris 11.1 - Что нового» (PDF) . oracle.com . Проверено 4 ноября 2013 года .
  121. ^ "OpenBSD 5.9" . www.openbsd.org . Проверено 11 сентября +2016 .
  122. ^ "OpenBSD 6.0" . www.openbsd.org . Проверено 11 сентября +2016 .
  123. Open Virtual Machine Firmware , SourceForge, заархивировано из оригинала 6 октября 2011 г.
  124. ^ "Прошивка EFI для рабочих станций VMWare | Сообщества VMware" . Communities.vmware.com . Проверено 28 февраля 2014 .
  125. ^ «Использование прошивки EFI / UEFI в виртуальной машине VMware | Сообщества VMware» . Communities.vmware.com . Проверено 18 января +2016 .
  126. ^ "Объявление о VMware Workstation 14 - VMware Workstation Zealot" . VMware Workstation Zealot . 22 августа 2017 . Проверено 2 августа 2018 .
  127. ^ «Что нового в vSphere 5.0» . Vmware.com . Проверено 28 февраля 2014 .
  128. ^ «Примечания к выпуску VMware vSphere 6.5» . pubs.vmware.com . Проверено 13 января 2017 года .
  129. ^ 3.1 Журнал изменений , VirtualBox, заархивировано из оригинала 28 сентября 2010 г.
  130. ^ Билет 7702 , VirtualBox
  131. ^ "Заявление старшего инженера-программиста в Oracle", Форум , VirtualBox
  132. ^ «Тестирование безопасной загрузки с помощью KVM» . FedoraProject . Проверено 28 февраля 2014 .
  133. ^ «Что нового в Hyper-V для Windows Server 2012 R2» . MicrosoftTechNet . Проверено 24 июня 2013 года .
  134. ^ «Экранированные виртуальные машины» . Проверено 16 февраля 2019 .
  135. ^ «TianoCore на SourceForge: EDK2 Application Development Kit (EADK)» . Intel . Проверено 25 сентября 2013 года .
  136. ^ "Tianocore: UDK" . GitHub .
  137. ^ «Интервью: Рональд Г. Миннич» . Фосдем. 6 февраля 2007 . Проверено 14 сентября 2010 года .
  138. ^ Доктороу, Кори (27 декабря 2011 г.), The Coming War on General Purpose Computing , получено 25 сентября 2013 г.
  139. ^ "coreboot (также известный как LinuxBIOS): Бесплатная прошивка x86 с открытым исходным кодом" . YouTube. 31 октября 2008 . Проверено 14 сентября 2010 года .
  140. ^ "Добро пожаловать" , TianoCore , SourceForge, архивируются с оригинала на 23 апреля 2012
  141. ^ a b «Блокирует ли Microsoft загрузку Linux на оборудовании ARM?» . Computerworld UK . Проверено 6 марта 2012 года .
  142. ^ «Windows 10, чтобы сделать безопасную загрузку альтернативной ОС блокировкой» . Ars Technica . Проверено 21 марта 2015 года .
  143. ^ «Рекомендации Фонда свободного программного обеспечения для бесплатных дистрибутивов операционных систем с учетом безопасной загрузки - Фонд свободного программного обеспечения - совместная работа над свободным программным обеспечением» . Фонд свободного программного обеспечения . Дата обращения 18 марта 2020 .
  144. ^ «Переход к Linux на ПК с Windows 8» . ZDNet . Проверено 26 февраля 2013 года .
  145. ^ a b «Ubuntu подробно описывает свои планы безопасной загрузки UEFI» . Еженедельные новости Linux . Проверено 11 сентября 2012 года .
  146. ^ a b «Торвальдс говорит, что в ядре Linux нет поддержки сертификатов Microsoft» . Н . Проверено 26 февраля 2013 года .
  147. ^ «Линус Торвальдс: Я не изменю Linux на« глубокомысленную Microsoft » » . Ars Technica . Проверено 26 февраля 2013 года .
  148. ^ «Исключительно: группа открытого программного обеспечения подает жалобу на Microsoft в ЕС» . Рейтер. 26 марта 2013 . Проверено 26 марта 2013 года .
  149. ^ «Исследователи демонстрируют эксплойты, обходящие безопасную загрузку Windows 8» . IT мир . Проверено 5 августа 2013 года .
  150. ^ Мендельсон, Том (12 августа 2016). «Ошибка безопасной загрузки: Microsoft утекает ключ бэкдора, прошивка широко раскрыта [Обновлено]» . Ars Technica . Проверено 12 августа +2016 .
  151. ^ "HowTos / UEFI - CentOS Wiki" . wiki.centos.org . Дата обращения 10 ноября 2020 .
  152. ^ «SecureBoot - Debian Wiki» . wiki.debian.org . Дата обращения 10 ноября 2020 .
  153. ^ «SUSE Linux Enterprise Server 15 SP1: Глава 13. UEFI (Unified Extensible Firmware Interface) (Руководство администратора)» . documentation.suse.com . Дата обращения 10 ноября 2020 .
  154. ^ a b «Linux на ПК с Windows 8: некоторый прогресс, но все же неприятность» . ZDNet . Проверено 26 февраля 2013 года .
  155. ^ «Lenovo UEFI хочет загружать только Windows, RHEL» . Фороникс . Проверено 26 февраля 2013 года .
  156. ^ "Linux оправдан в смерти UEFI ноутбуков Samsung" . Бит-тек . Проверено 26 февраля 2013 года .
  157. ^ «Загрузка Linux с использованием UEFI может привести к блокировке ноутбуков Samsung» . Н . Проверено 26 февраля 2013 года .

Дальнейшее чтение [ править ]

  • Циммер, Винсент; Ротман, Майкл; Хейл, Роберт (10 мая 2007 г.). «Архитектура EFI» . Журнал доктора Добба . УБМ . Проверено 12 октября 2012 года .
  • де Бойн Поллар, Джонатан (11 июля 2011 г.). «Процесс загрузки EFI» . Часто задаваемые ответы . Проверено 12 октября 2012 года .
  • де Бойн Поллар, Джонатан (8 декабря 2011 г.). «Процесс загрузки Windows NT 6» . Часто задаваемые ответы . Проверено 12 октября 2012 года .
  • Смит, Родерик В. (2011). «Преобразование BIOS в UEFI» . Веб-страница Родерика В. Смита . Проверено 12 октября 2012 года .
  • Котари, Раджив (21 сентября 2011 г.). «UEFI - насколько он действительно важен» . Аппаратные секреты . Архивировано из оригинального 25 октября 2012 года . Проверено 12 октября 2012 года .
  • Фишер, Дуг (2011). «UEFI сегодня: начальная загрузка континуума» . Intel Technology Journal . Intel. 15 (1). ISBN 9781934053430. Проверено 24 сентября 2013 года .

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Спецификации UEFI
  • Инициатива EFI Framework с открытым исходным кодом, спонсируемая Intel
  • Портал Intel EFI / UEFI
  • Поддержка Microsoft UEFI и требования для операционных систем Windows
  • Как работает функция гибридного выключения / быстрой загрузки Windows 8
  • Обеспечение безопасности процесса загрузки Windows 10
  • LoJax: первый руткит UEFI, найденный в дикой природе, любезно предоставлен группой Sednit