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

Положение 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 без раскрытия разработчиком дистрибутива закрытого ключа (однако Фонд свободного программного обеспечения с тех пор разъяснил свою позицию, заверив, что ответственность за предоставление ключей лежит на производителе оборудования), [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] В Windows разрешен только драйвер ядра WHQL, если включена безопасная загрузка. В феврале 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. ^ Kinney, Michael (1 September 2000). "Solving BIOS Boot Issues with EFI" (PDF). pp. 47–50. Retrieved 14 September 2010.
  3. ^ a b "MS denies secure boot will exclude Linux". The Register. 23 September 2011. Retrieved 24 September 2011.
  4. ^ "The 30-year-long Reign of BIOS is Over: Why UEFI W... - Input Output". HP.com. Archived from the original on 26 June 2013. Retrieved 6 March 2012.
  5. ^ IBM PC Real Time Clock should run in UT. Cl.cam.ac.uk. Retrieved on 30 October 2013.
  6. ^ a b Garrett, Matthew (19 January 2012). "EFI and Linux: The Future Is Here, and It's Awful". linux.conf.au 2012. Retrieved 2 April 2012.
  7. ^ "Memory Map (x86) - OSDev Wiki". wiki.osdev.org. Retrieved 11 December 2020.
  8. ^ a b c d "Emulex UEFI Implementation Delivers Industry-leading Features for IBM Systems" (PDF). Emulex. Retrieved 14 September 2010.
  9. ^ Extensible Firmware Interface (EFI) and Unified EFI (UEFI), Intel, archived from the original on 5 January 2010
  10. ^ Wei, Dong (2006), "foreword", Beyond BIOS, Intel Press, ISBN 978-0-9743649-0-2
  11. ^ "1.10 Specification overview", Extensible Firmware Interface, Intel
  12. ^ About, Unified EFI Forum, Q: What is the relationship between EFI and UEFI? A: The UEFI specification is based on the EFI 1.10 specification published by Intel with corrections and changes managed by the Unified EFI Forum. Intel still holds the copyright on the EFI 1.10 specification, but has contributed it to the Forum so that the Forum can evolve it. There will be no future versions of the EFI specification, but customers who license it can still use it under the terms of their license from Intel. The license to the Unified EFI Specification comes from the Forum, not from Intel
  13. ^ "Unified Extensible Firmware Interface (UEFI) Specification" (PDF). www.uefi.org. March 2019. Retrieved 12 December 2020.
  14. ^ "GitHub - tianocore/Edk: Git mirror of EDK". 19 March 2019.
  15. ^ "GitHub - tianocore/Tianocore.github.io: Tianocore website". 8 August 2019.
  16. ^ "What is TianoCore?".
  17. ^ "Microsoft announces Project Mu, an open-source release of the UEFI core". 20 December 2018.
  18. ^ "UEFI and Windows". Microsoft. 15 September 2009. Retrieved 14 September 2010.
  19. ^ a b c "Installation". 3.4 BIOS installation. GNU GRUB. Retrieved 25 September 2013.
  20. ^ UEFI Specification 2.4, section 2.3
  21. ^ UEFI specification 2.3.1, section 1.8.1.
  22. ^ "GitHub - andreiw/ppc64le-edk2: TianoCore UEFI for OPAL/PowerNV (PPC64/PowerPC64 Little-Endian)". GitHub.
  23. ^ "Tianocore for OpenPOWER". Firmware Security. 12 October 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, Ben (1 June 2010). "LBA explained — Solving the 3TB Problem?". bit-tech. Retrieved 18 June 2010.
  28. ^ Richardson, Brian (10 May 2010). "Ask a BIOS Guy: "Why UEFI"". Intel Architecture Blog. Archived from the original on 9 October 2010. Retrieved 18 June 2010.
  29. ^ Simpson, Gary. "UEFI Momentum — The AMD perspective". AMD. Archived from the original (PPTX) on 4 January 2014. Retrieved 20 September 2014.
  30. ^ a b c d e f g h "UEFI Specifications (version 2.4 and older)" (PDF). Unified EFI, Inc. June 2013. Retrieved 25 September 2013.
  31. ^ "Linux kernel 3.15, Section 1.3. EFI 64-bit kernels can be booted from 32-bit firmware". kernelnewbies.org. 8 June 2014. Retrieved 15 June 2014.
  32. ^ "x86, efi: Handover Protocol". LWN.net. 19 July 2012. Retrieved 15 June 2014.
  33. ^ "Linux kernel documentation: Documentation/efi-stub.txt". kernel.org. 1 February 2014. Retrieved 15 June 2014.
  34. ^ "FAQ: Drive Partition Limits" (PDF). UEFI Forum. Retrieved 5 December 2019.
  35. ^ "FAQ: Drive Partition Limits" (PDF). UEFI Forum. Retrieved 9 June 2010.
  36. ^ a b c d Smith, Roderick W. (3 July 2012). "Make the most of large drives with GPT and Linux". IBM. Retrieved 25 September 2013.
  37. ^ "block/partitions/Kconfig (3.11.1)". CONFIG_EFI_PARTITION (line #247). kernel.org. Retrieved 25 September 2013.
  38. ^ a b c "GRUB". BIOS systems. Arch Linux. Retrieved 25 September 2013.[unreliable source?]
  39. ^ "GRUB and the boot process on UEFI-based x86 systems". redhat.com. Retrieved 14 November 2013.
  40. ^ "UEFI Booting 64-bit Redhat Enterprise Linux 6". fpmurphy.com. September 2010. Retrieved 14 November 2013.
  41. ^ a b "UEFI Bootloaders". archlinux.org. Retrieved 25 September 2013.[unreliable source?]
  42. ^ "Unified Extensible Firmware Interface: EFI System Partition". archlinux.org. Retrieved 25 September 2013.[unreliable source?]
  43. ^ a b c d "UEFI system booting from MBR partition table and GRUB legacy". Arch Linux Forums. June 2012. Retrieved 6 October 2013.
  44. ^ "What is efifb? — The Linux Kernel documentation". www.kernel.org. Retrieved 24 November 2020.
  45. ^ a b "Samsung UEFI bug: Notebook bricked from Windows". The H. Retrieved 27 February 2013.
  46. ^ UEFI specification, section 7.3
  47. ^ "Free Software EFI Drivers".
  48. ^ Batard, Pete (13 March 2020). "pbatard/uefi-ntfs". GitHub.
  49. ^ "Intel Embedded Graphics Drivers FAQ: BIOS and firmware". Intel. Retrieved 19 May 2014.
  50. ^ "UEFI Specification Version 2.5, Section 12.3 File System Format" (PDF). uefi.org. April 2015. pp. 536, 537. Retrieved 29 May 2015. The file system supported by the Extensible Firmware Interface is based on the FAT file system. EFI defines a specific version of FAT that is explicitly documented and testable. Conformance to the EFI specification and its associate reference documents is the only definition of FAT that needs to be implemented to support EFI. To differentiate the EFI file system from pure FAT, a new partition file system type has been defined.
  51. ^ "Technical Note TN2166: Secrets of the GPT". developer.apple.com. 6 November 2006. Retrieved 6 May 2015.
  52. ^ "UEFI - OSDev Wiki". wiki.osdev.org. Retrieved 26 September 2020.
  53. ^ "EFISTUB - ArchWiki". wiki.archlinux.org. Retrieved 27 October 2020.
  54. ^ a b "Intel® Platform Innovation Framework for EFI" (PDF). Compatibility Support Module Specification (revision 0.97). Intel. 4 September 2007. Retrieved 6 October 2013.
  55. ^ "The PC BIOS will be killed off by 2020 as Intel plans move to pure UEFI". Ars Technica. Retrieved 29 May 2018.
  56. ^ "Red Hat Enterprise Linux 6 Installation Guide". 30.2.2. Configuring PXE boot for EFI. Red Hat. Retrieved 9 October 2013.
  57. ^ El-Haj-Mahmoud, Samer (July 2013). "Advances in Pre-OS Networking in UEFI 2.4" (PDF). Hewlett-Packard. Retrieved 29 May 2019.
  58. ^ "Storage and Network Convergence Using FCoE and iSCSI" (PDF). IBM. July 2012. Retrieved 9 October 2013.
  59. ^ "New UEFI HTTP Boot support in UEFI 2.5". firmwaresecurity.com. 9 May 2015. Retrieved 13 August 2015.
  60. ^ "Secure Boot Overview". Microsoft. Retrieved 18 February 2016.
  61. ^ Edge, Jake. "UEFI and "secure boot"". LWN.net. Retrieved 9 September 2012.
  62. ^ a b "Windows 8 Secure Boot: The Controversy Continues". PC World. Retrieved 9 September 2012.
  63. ^ "Secure Boot for ESXi 6.5 - Hypervisor Assurance". VMware vSphere Blog. 4 May 2017. Retrieved 18 August 2017.
  64. ^ HowTos/UEFI - CentOS Wiki
  65. ^ Larabel, Michael (30 April 2018). "Debian Making Progress on UEFI SecureBoot Support in 2018". Phoronix. Phoronix Media. Retrieved 23 May 2018.
  66. ^ Garrett, Matthew (27 December 2012). "Secure Boot distribution support". Mjg59.dreamwidth.org. Retrieved 20 March 2014.
  67. ^ "SecureBoot". FreeBSD Wiki. FreeBSD. Retrieved 16 June 2015.
  68. ^ a b "Unified Extensible Firmware Interface". UEFI Shell. Arch Linux. Retrieved 25 September 2013.[unreliable source?]
  69. ^ a b "EFI Shells and Scripting". Intel. Retrieved 25 September 2013.
  70. ^ a b "UEFI Shell Specification Version 2.0, Errata A" (PDF). Unified EFI, Inc. May 2012. Retrieved 25 September 2013.
  71. ^ "EDK2: ShellPkg". GitHub. Retrieved 18 March 2020.
  72. ^ "tianocore/edk2: releases". GitHub.
  73. ^ "Email Archive: edk2-devel". [edk2] Inclusion of UEFI shell in Linux distro iso. SourceForge. 2012. Retrieved 25 September 2013.
  74. ^ "TianoCore on SourceForge". Shell FAQ. Intel. Retrieved 25 September 2013.
  75. ^ a b "Unified Extensible Firmware Interface". Launching UEFI Shell. Arch Linux. Retrieved 25 September 2013.[unreliable source?]
  76. ^ "Basic Instructions for Using EFI for Server Configuration on Intel® Server Boards and Intel® Server Systems" (PDF). Intel. 2008. Retrieved 25 September 2013.
  77. ^ "Unified Extensible Firmware Interface". bcfg. Arch Linux. Retrieved 25 September 2013.[unreliable source?]
  78. ^ "GRUB EFI Examples". Asus. Arch Linux. Retrieved 25 September 2013.[unreliable source?]
  79. ^ https://edk2-docs.gitbook.io/understanding-the-uefi-secure-boot-chain/secure_boot_chain_in_uefi/signed-capsule-update
  80. ^ barrygolden. "Windows UEFI firmware update platform - Windows drivers". docs.microsoft.com. Retrieved 25 September 2020.
  81. ^ "Getting Started | Microchip Technology". www.microchip.com. Retrieved 24 December 2020.
  82. ^ Start from 10th Gen Intel Core, Intel no longer provides Legacy Video BIOS for the iGPU (Intel Graphics Technology). Legacy boot requires 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. ^ "The Unified Extensible Firmware Interface (UEFI) — The Linux Kernel documentation". www.kernel.org. Retrieved 7 November 2020.
  86. ^ "TianoCore - coreboot". Retrieved 25 May 2012.
  87. ^ "SecureCore Tiano™". Phoenix Technologies. Archived from the original on 6 September 2010. Retrieved 14 September 2010.
  88. ^ "Aptio®: The Complete UEFI Product Solution" (PDF). American Megatrends, Inc. Retrieved 2 May 2018.
  89. ^ "Why US?". Insyde Software Corp. Retrieved 2 May 2018.
  90. ^ "Microsoft Announces "Project Mu" For Open-Source UEFI Alternative To TianoCore". Phoronix. Retrieved 20 December 2018.
  91. ^ "Marrying U-Boot UEFI and GRUB" (PDF). Retrieved 12 September 2018.
  92. ^ "UEFI on Top of U-Boot" (PDF). Retrieved 12 September 2018.
  93. ^ "Installing OpenBSD 6.3 on Raspberry 3". Retrieved 12 September 2018.
  94. ^ "iSCSI booting with U-Boot and iPXE". Retrieved 18 May 2020.
  95. ^ Apple Computer. "Universal Binary Programming Guidelines, Second Edition: Extensible Firmware Interface (EFI) Archived 24 July 2008 at the Wayback Machine"
  96. ^ Apple's Transition from Open Firmware to Extensible Firmware Interface, mactech, 2007.
  97. ^ a b "Intel® Platform Innovation Framework for UEFI Overview". Intel. Retrieved 14 September 2010.
  98. ^ Evaluating UEFI using Commercially Available Platforms and Solutions (PDF), UEFI, May 2011, archived from the original (PDF) on 22 March 2012
  99. ^ Asus P67 Motherboard Preview.
  100. ^ "Windows Hardware Certification Requirements for Client and Server Systems". Microsoft. January 2013. System.Fundamentals.Firmware.CS.UEFISecureBoot.ConnectedStandby ... Platforms shall be UEFI Class Three (see UEFI Industry Group, Evaluating UEFI using Commercially Available Platforms and Solutions, version 0.3, for a definition) with no Compatibility Support Module installed or installable. BIOS emulation and legacy PC/AT boot must be disabled.
  101. ^ "Microsoft: All You Need to Know About Windows 8 on ARM". PC Magazine. Retrieved 30 September 2013.
  102. ^ Richardson, Brian (30 October 2017). ""Last Mile" Barriers to Removing Legacy BIOS" (PDF). Retrieved 22 November 2017.
  103. ^ Announcement of release 3.5pre1 by maintainer Brett Johnson made on 27 February 2004.
  104. ^ EFI version of Grub, Debian GNU/Linux, retrieved 1 May 2008
  105. ^ a b c "Ubuntu will use GRUB 2 for its Secure Boot implementation". The H Online. Retrieved 28 October 2012.
  106. ^ OpenVMS Release History, HP, archived from the original on 5 January 2009, retrieved 16 September 2008
  107. ^ "State of the Port to x86-64" (PDF). vmssoftware.com. 6 October 2017. Retrieved 9 September 2020.
  108. ^ rEFIt — Windows Vista and EFI, SourceForge
  109. ^ "Extensible Firmware Interface", Windows Server TechCenter, Microsoft, archived from the original on 30 August 2006
  110. ^ Unified Extensible Firmware Interface (UEFI) Implementation Guidelines
  111. ^ https://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt
  112. ^ Boot to UEFI Mode or legacy BIOS mode
  113. ^ "Unified Extended Firmware Interface support in Windows Vista". Microsoft. 26 October 2006. Retrieved 12 June 2010. Microsoft determined that vendors would not have any interest in producing native UEFI 32-bit firmware because of the current status of mainstream 64-bit computing and platform costs. Therefore, Microsoft originally did not to ship support for 32-bit UEFI implementations.
  114. ^ Microsoft Basic Display Driver
  115. ^ "Microsoft Touts Incredible Windows 8 Boot Times". Retrieved 9 September 2011.
  116. ^ Brodkin, Jon (21 September 2011). "Windows 8 secure boot could complicate Linux installs". Ars Technica. Retrieved 23 September 2011.
  117. ^ "FreeBSD to get UEFI support". The H. Retrieved 7 March 2013.
  118. ^ "UEFI - FreeBSD Wiki". FreeBSD.org. Retrieved 19 June 2014.
  119. ^ "uefi(8)". www.freebsd.org. Retrieved 11 January 2021.
  120. ^ "Oracle Solaris 11.1 — What's New" (PDF). oracle.com. Retrieved 4 November 2013.
  121. ^ "OpenBSD 5.9". www.openbsd.org. Retrieved 11 September 2016.
  122. ^ "OpenBSD 6.0". www.openbsd.org. Retrieved 11 September 2016.
  123. ^ Open Virtual Machine Firmware, SourceForge, archived from the original on 6 October 2011
  124. ^ "VMWare Workstation EFI firmware | VMware Communities". Communities.vmware.com. Retrieved 28 February 2014.
  125. ^ "Using EFI/UEFI firmware in a VMware Virtual Machine | VMware Communities". Communities.vmware.com. Retrieved 18 January 2016.
  126. ^ "Announcing VMware Workstation 14 - VMware Workstation Zealot". VMware Workstation Zealot. 22 August 2017. Retrieved 2 August 2018.
  127. ^ "What's New in vSphere 5.0". Vmware.com. Retrieved 28 February 2014.
  128. ^ "VMware vSphere 6.5 Release Notes". pubs.vmware.com. Retrieved 13 January 2017.
  129. ^ 3.1 Changelog, VirtualBox, archived from the original on 28 September 2010
  130. ^ Ticket 7702, VirtualBox
  131. ^ "Statement by sr. software engineer at Oracle", Forum, VirtualBox
  132. ^ "Testing secureboot with KVM". FedoraProject. Retrieved 28 February 2014.
  133. ^ "What's New in Hyper-V for Windows Server 2012 R2". MicrosoftTechNet. Retrieved 24 June 2013.
  134. ^ "Shielded VMs". Retrieved 16 February 2019.
  135. ^ "TianoCore on SourceForge: EDK2 Application Development Kit (EADK)". Intel. Retrieved 25 September 2013.
  136. ^ "Tianocore: UDK". GitHub.
  137. ^ "Interview: Ronald G Minnich". Fosdem. 6 February 2007. Retrieved 14 September 2010.
  138. ^ Doctorow, Cory (27 December 2011), The Coming War on General Purpose Computation, retrieved 25 September 2013
  139. ^ "coreboot (aka LinuxBIOS): The Free/Open-Source x86 Firmware". YouTube. 31 October 2008. Retrieved 14 September 2010.
  140. ^ "Welcome", TianoCore, SourceForge, archived from the original on 23 April 2012
  141. ^ a b "Is Microsoft Blocking Linux Booting on ARM Hardware?". Computerworld UK. Retrieved 6 March 2012.
  142. ^ "Windows 10 to make the Secure Boot alt-OS lock out a reality". Ars Technica. Retrieved 21 March 2015.
  143. ^ "Free Software Foundation recommendations for free operating system distributions considering Secure Boot — Free Software Foundation — working together for free software". Free Software Foundation. Retrieved 18 March 2020.
  144. ^ "Shimming your way to Linux on Windows 8 PCs". ZDNet. Retrieved 26 February 2013.
  145. ^ a b "Ubuntu details its UEFI secure boot plans". Linux Weekly News. Retrieved 11 September 2012.
  146. ^ a b "No Microsoft certificate support in Linux kernel says Torvalds". The H. Retrieved 26 February 2013.
  147. ^ "Linus Torvalds: I will not change Linux to "deep-throat Microsoft"". Ars Technica. Retrieved 26 February 2013.
  148. ^ "Exclusive: Open software group files complaint against Microsoft to EU". Reuters. 26 March 2013. Retrieved 26 March 2013.
  149. ^ "Researchers demo exploits that bypass Windows 8 Secure Boot". IT World. Retrieved 5 August 2013.
  150. ^ MENDELSOHN, Tom (12 August 2016). "Secure Boot snafu: Microsoft leaks backdoor key, firmware flung wide open [Updated]". Ars Technica. Retrieved 12 August 2016.
  151. ^ "HowTos/UEFI - CentOS Wiki". wiki.centos.org. Retrieved 10 November 2020.
  152. ^ "SecureBoot - Debian Wiki". wiki.debian.org. Retrieved 10 November 2020.
  153. ^ "SUSE Linux Enterprise Server 15 SP1: Chapter 13. UEFI (Unified Extensible Firmware Interface) (Administration Guide)". documentation.suse.com. Retrieved 10 November 2020.
  154. ^ a b "Linux on Windows 8 PCs: Some progress, but still a nuisance". ZDNet. Retrieved 26 February 2013.
  155. ^ "Lenovo UEFI Only Wants To Boot Windows, RHEL". Phoronix. Retrieved 26 February 2013.
  156. ^ "Linux acquitted in Samsung laptop UEFI deaths". Bit-tech. Retrieved 26 February 2013.
  157. ^ "Booting Linux using UEFI can brick Samsung laptops". The H. Retrieved 26 February 2013.

Further reading[edit]

  • Zimmer, Vincent; Rothman, Michael; Hale, Robert (10 May 2007). "EFI Architecture". Dr. Dobb's Journal. UBM. Retrieved 12 October 2012.
  • de Boyne Pollard, Jonathan (11 July 2011). "The EFI boot process". Frequently Given Answers. Retrieved 12 October 2012.
  • de Boyne Pollard, Jonathan (8 December 2011). "The Windows NT 6 boot process". Frequently Given Answers. Retrieved 12 October 2012.
  • Smith, Roderick W. (2011). "A BIOS to UEFI Transformation". Roderick W. Smith's Web Page. Retrieved 12 October 2012.
  • Kothari, Rajiv (21 September 2011). "UEFI – Just How Important It Really Is". Hardware Secrets. Archived from the original on 25 October 2012. Retrieved 12 October 2012.
  • Fisher, Doug (2011). "UEFI Today: Bootstrapping the Continuum". Intel Technology Journal. Intel. 15 (1). ISBN 9781934053430. Retrieved 24 September 2013.

External links[edit]

  • Official website
  • UEFI Specifications
  • Intel-sponsored open-source EFI Framework initiative
  • Intel EFI/UEFI portal
  • Microsoft UEFI Support and Requirements for Windows Operating Systems
  • How Windows 8 Hybrid Shutdown / Fast Boot feature works
  • Securing the Windows 10 Boot Process
  • LoJax: First UEFI rootkit found in the wild, courtesy of the Sednit group