Немного про UEFI и Secure Boot
UEFI (Unified Extensible Firmware Interface) — замена устаревшему BIOS. Эта спецификация была придумана Intel для Itanium, тогда она еще называлась EFI (Extensible Firmware Interface), а потом была портирована на x86, x64 и ARM. Она разительно отличается от BIOS как самой процедурой загрузки, так и способами взаимодействия с ОС. Если вы купили компьютер в 2010 году и позже, то, вероятнее всего, у вас UEFI.
Основные отличия UEFI от BIOS:
Как происходит загрузка в UEFI?
С GPT-раздела с идентификатором EF00 и файловой системой FAT32, по умолчанию грузится и запускается файл \efi\boot\boot[название архитектуры].efi, например \efi\boot\bootx64.efi
Т.е. чтобы, например, создать загрузочную флешку с Windows, достаточно просто разметить флешку в GPT, создать на ней FAT32-раздел и просто-напросто скопировать все файлы с ISO-образа. Boot-секторов больше нет, забудьте про них.
Загрузка в UEFI происходит гораздо быстрее, например, загрузка моего лаптопа с ArchLinux с нажатия кнопки питания до полностью работоспособного состояния составляет всего 30 секунд. Насколько я знаю, у Windows 8 тоже очень хорошие оптимизации скорости загрузки в UEFI-режиме.
Secure Boot
«Я слышал, что Microsoft реализовывает Secure Boot в Windows 8. Эта технология не позволяет неавторизированному коду выполняться, например, бутлоадерам, чтобы защитить пользователя от malware. И есть кампания от Free Software Foundation против Secure Boot, и многие люди были против него. Если я куплю компьютер с Windows 8, смогу ли я установить Linux или другую ОС? Или эта технология позволяет запускать только Windows?»
Начнем с того, что эту технологию придумали не в Microsoft, а она входит в спецификацию UEFI 2.2. Включенный Secure Boot не означает, что вы не сможете запустить ОС, отличную от Windows. На самом деле, сертифицированные для запуска Windows 8 компьютеры и лаптопы обязаны иметь возможность отключения Secure Boot и возможность управления ключами, так что беспокоится тут не о чем. Неотключаемый Secure Boot есть только на планшетах на ARM с предустановленной Windows!
Что дает Secure Boot? Он защищает от выполнения неподписанного кода не только на этапе загрузки, но и на этапе выполнения ОС, например, как в Windows, так и в Linux проверяются подписи драйверов/модулей ядра, таким образом, вредоносный код в режиме ядра выполнить будет нельзя. Но это справедливо только, если нет физического доступа к компьютеру, т.к., в большинстве случаев, при физическом доступе ключи можно заменить на свои.
Для Linux есть 2 пре-загрузчика, которые поддерживают Secure Boot: Shim и PRELoader. Они похожи, но есть небольшие нюансы.
В Shim есть 3 типа ключей: Secure Boot keys (те, которые в UEFI), Shim keys (которые можно сгенерировать самому и указать при компиляции), и MOKи (Machine Owner Key, хранятся в NVRAM). Shim не использует механизм загрузки через UEFI, поэтому загрузчик, который не поддерживает Shim и ничего не знает про MOK, не сможет выполнить код (таким образом, загрузчик gummiboot не будет работать). PRELoader, напротив, встраивает свои механизмы аутентификации в UEFI, и никаких проблем нет.
Shim зависит от MOK, т.е. бинарники должны быть изменены (подписаны) перед тем, как их выполнять. PRELoader же «запоминает» правильные бинарники, вы ему сообщаете, доверяете вы им, или нет.
Оба пре-загрузчика есть в скомпилированном виде с валидной подписью от Microsoft, поэтому менять UEFI-ключи не обязательно.
Secure Boot призван защитить от буткитов, от атак типа Evil Maid, и, по моему мнению, делает это эффективно.
Спасибо за внимание!
Загрузка в режим UEFI или устаревший режим BIOS
в общем случае установите Windows с использованием более нового режима UEFI, так как он включает больше функций безопасности, чем устаревший режим BIOS. При загрузке с сети, которая поддерживает только BIOS, необходимо загрузить устаревший режим BIOS.
после установки Windows устройство загружается автоматически, используя тот же режим, с которым он был установлен.
Для загрузки с UEFI или BIOS:
Откройте меню встроенного по. Можно использовать любой из следующих методов.
Загрузите компьютер и нажмите клавишу изготовителя, чтобы открыть меню. Используются общие ключи: ESC, DELETE, F1, F2, F10, F11 или F12. На планшетных ПК распространенные кнопки — это громкое уменьшение или громкость (Поиск более общих ключей и кнопок). Во время запуска часто возникает экран, в котором упоминается ключ. Если это не так или если экран слишком быстро отображается, проверьте сайт изготовителя.
если Windows уже установлен, на экране входа или меню выберите Power ( 
В меню встроенного по выполните загрузку на диск или сеть в режиме UEFI или BIOS:
В меню загрузочное устройство выберите команду, определяющую режим микропрограммы и устройство. Например, выберите UEFI: USB-диск или BIOS: сеть/сеть.
Для одного устройства могут отображаться отдельные команды. Например, вы можете увидеть USB-накопитель UEFI и USB-накопитель в BIOS. Каждая команда использует одно и то же устройство и носитель, но загружает компьютер в другом режиме микропрограммы.
Некоторые устройства поддерживают только один режим (UEFI или BIOS). Другие устройства позволяют загружаться в режиме BIOS только путем отключения функций безопасности UEFI вручную. Чтобы отключить функции безопасности, перейдите в раздел безопасность > безопасная загрузка и отключите эту функцию.
некоторые старые пк (Windows 7-эры или более ранней версии) поддерживают UEFI, но для этого требуется перейти к файлу загрузки. В меню встроенного по найдите параметр: «Загрузка из файла», а затем перейдите к \EFI\BOOT\BOOTX64.. EFI на Windows PE или программа установки Windows носителе.
Режимы UEFI и BIOS в WinPE
Обнаружение загрузки WinPE в режиме BIOS или UEFI
Запросите реестр, чтобы определить, в каком режиме находится устройство. Это можно сделать в командной строке:
| Код возврата | Режим встроенного по |
|---|---|
| 0x1 | BIOS |
| 0x2 | UEFI |
Используйте его в скрипте:
Обратите внимание, что между delims= и » %%A находится вкладка, за которой следует пробел.
Вы всегда должны загружаться в нужный режим каждый раз.
Вот несколько способов, которые можно использовать для загрузки в правильном режиме микропрограммы при каждом запуске компьютера.
Используйте предварительно отформатированные жесткие диски и используйте метод, который не форматирует диск автоматически.
Если вы хотите убедиться, что диск загружается в определенный режим, используйте диски, предварительно форматированные с помощью формата GPT для режима UEFI, или формат файла MBR для режима BIOS. при запуске установки, если компьютер загружен в неправильном режиме, Windows установка завершится сбоем. Чтобы устранить эту проблему, перезапустите компьютер в правильном режиме микропрограммы.
Удаление загрузочных файлов UEFI или BIOS
если требуется, чтобы компьютер загружался только в определенный режим, можно удалить файлы, которые Windows PE или программа установки Windows использовать для загрузки в режиме UEFI или BIOS. Удалите следующие файлы в зависимости от режима, в котором требуется выполнить загрузку.
Загрузка только в режиме UEFI
удалите файл bootmgr из корневого каталога Windows PE или программа установки Windows носителя. Это предотвращает запуск устройства в режиме BIOS.
Загрузка только в режиме BIOS
удалите папку efi из корня Windows PE или программа установки Windows носителя. Это предотвращает запуск устройства в режиме UEFI.
Настройка UEFI-загрузчика. Самое краткое руководство в мире
Как устроена загрузка современных ОС? Как при установке системы настроить загрузку посредством UEFI, не утонув в руководствах и ничего не сломав?
Я обещал «самое краткое руководство». Вот оно:
TL;DR не надо прописывать путь к загрузчику в новых загрузочных записях UEFI — надо файл загрузчика расположить по стандартному «пути по-умолчанию», где UEFI его найдет, и вместо загрузочного меню UEFI пользоваться меню загрузчика, которое гораздо проще и безопаснее настраивается
Как делать не надо
Есть, на самом-то деле, несколько способов настроить UEFI-загрузку. Я начну с описания других вариантов — чтобы было понятно, как (и почему) делать не надо. Если вы пришли за руководством — мотайте в самый низ.
Не надо лезть в NVRAM и трогать efivars
Наиболее «популярная» процедура установки загрузчика в систему такова: установщик ОС создаёт специальный раздел, на нём — структуру каталогов и размещает файлы загрузчика. После этого он с помощью особой утилиты (efibootmgr в linux, bcdedit в windows) взаимодействует с прошивкой UEFI-чипа, добавляя в неё загрузочную запись. В этой записи указывается путь к файлу загрузчика (начиная от корня файловой системы) и при необходимости — параметры. После этого в загрузочном меню компьютера появляется опция загрузки ОС. Для linux существует возможность вообще обойтись без загрузчика. В загрузочной записи указывается путь сразу к ядру вместе со всеми параметрами. Ядро должно быть скомпилировано с опцией EFISTUB (что давно является стандартом для большинства дистрибутивов), в этом случае оно содержит в себе заголовок «исполняемого файла EFI», позволяющий прошивке его запускать без внешнего загрузчика.
При старте системы, когда пользователь выбирает нужную ему загрузочную запись, прошивка UEFI сперва ищет на прописанном в этой записи диске особый EFI-раздел, обращается к файловой системе на этом разделе (обязательно FAT или FAT32), и запускает загрузчик. Загрузчик считывает из файла настроек свой конфиг, и либо грузит ОС, либо предоставляет загрузочное меню. Ничего не замечаете? Да, у нас два загрузочных меню — одно на уровне прошивки чипа UEFI, другое — на уровне загрузчика. В реальности о существовании второго пользователи могут даже не догадываться — если в меню всего один пункт, загрузчик Windows начинает его грузить без лишних вопросов. Увидеть экран с этим меню можно, если поставить вторую копию Windows или просто криво её переустановить.
Обычно для управления загрузочными записями руководства в интернете предлагают взаимодействовать с прошивкой UEFI. Есть аж пять основных вариантов, как это можно сделать: efibootmgr под linux, bcdedit в windows, какая-то софтина на «Маках», команда bcfg утилиты uefi shell (запускается из-под UEFI, «на голом железе» и без ОС, поскольку скомпилирована в том самом особом формате) и для особо качественных прошивок — графическими средствами UEFI (говоря популярным языком, «в настройках BIOS»).
За всеми вышенаписанными «многобуков» вы могли легко упустить такую мысль: пользователь, чтобы изменить настройки программной части (например, добавить параметр запуска ОС), вынужден перезаписывать flash-память микросхемы на плате. Есть ли тут подводные камни? О да! Windows иногда способна сделать из ноутбука кирпич, linux тоже, причём разными способами. Качество прошивок часто оставляет желать лучшего — стандарты UEFI либо реализованы криво, либо не реализованы вообще. По логике, прошивка обязана переживать полное удаление всех переменных efivars без последствий, не хранить в них критичных для себя данных и самостоятельно восстанавливать значения по-умолчанию — просто потому что пользователь имеет к ним доступ, и вероятность их полного удаления далека от нуля. Я лично в процессе экспериментов неоднократно (к счастью, обратимо) «кирпичил» свой Lenovo — из загрузочного меню исчезали все пункты, включая опцию «зайти в настройки».
Работа с загрузочными записями UEFI — тоже не сахар. К примеру, утилита efibootmgr не имеет опции «редактировать существующую запись». Если ты хочешь немного изменить параметр ядра — ты удаляешь запись целиком и добавляешь её снова, уже измененную. При этом строка содержит в себе двойные и одинарные кавычки, а также прямые и обратные слеши в не особо очевидном порядке. Когда я наконец заставил эту магию работать — я сохранил её в виде bash-скриптов, которые до сих пор валяются у меня в корневой ФС:
Не надо использовать GRUB
Это чёртов мастодонт, 90% функциональности которого предназначено для дисков с MBR. Для настройки необходимо отредактировать ряд файлов, после чего выполнить команду генерации конфига. На выходе получается огромная малопонятная нормальному человеку простыня. В составе — гора исполняемых файлов. Ставится командой, которую просто так из головы не возьмешь — надо обязательно лезть в документацию
Для сравнения — самый простенький UEFI-bootloader, который есть в составе пакета systemd, ставится командой
Эта команда делает ровно две вещи: копирует исполняемый файл загрузчика на EFI-раздел и добавляет свою загрузочную запись в прошивку. А конфиг для неё занимает ровно СЕМЬ строчек.
«Самое краткое руководство» — чуть более подробно
Загрузочное меню надо реализовывать на уровне загрузчика — править текстовые конфиги гораздо проще и безопасней.
Загрузочная запись нам не нужна — дело в том, что при выставлении в настройках BIOS загрузки с диска прошивка UEFI сначала ищет на нём EFI-раздел, а затем пытается исполнить файл по строго фиксированному адресу на этом разделе: /EFI/Boot/BOOTX64.EFI
Что такое «EFI-раздел»? В теории, он должен иметь особый тип «EFI System» (ef00). На практике, годится первый раздел на GPT-диске, отформатированный в FAT32 и имеющий достаточно места, чтобы разместить загрузчик и вспомогательные файлы (если есть).
Пункт 3: «Скачиваем из интернета любой UEFI-загрузчик». Что это значит? Загрузчик — это просто исполняемый файл определенного формата, к которому в комплекте идет конфиг. К примеру, если у вас есть под рукой установленный пакет с systemd — файл загрузчика можно найти по адресу /usr/lib/systemd/boot/efi/systemd-bootx64.efi, переименовать его в bootx64.efi и скопировать в /EFI/Boot/ на EFI-разделе. Нет под рукой systemd? Скачайте архив с сайта Archlinux. Или с репозитария Ubuntu. Или Debian. Есть под рукой система с Windows? Возьмите виндовый загрузчик оттуда, тоже сгодится )) Если сумеете настроить, я честно говоря не пробовал.
Пункт 4: «Настроить конфиг». Как и обычная программа, когда загрузчик запускается — он ожидает найти по определенным путям файлы конфигурации. Обычно эту информацию легко найти в интернете. Для загрузчика systemd-boot нам необходимо в корне EFI-раздела создать каталог «loader», а в нём файл «loader.conf» с тремя строчками (привожу свои):
Параметр editor отвечает за возможность отредактировать пункт загрузочного меню перед запуском.
Рядом с loader.conf необходимо создать каталог entries — один файл в нём будет отвечать за одну загрузочную запись в boot-меню. У меня там один файл arch.conf с таким содержанием:
Я не упомянул, но довольно очевидно — ядро и initramfs должны лежать в одной файловой системе с загрузчиком, то есть на EFI-разделе. Пути к ним в конфигах отсчитываются от корня этой ФС.
Другие загрузчики
systemd-boot очень простой и предоставляет спартанского вида чёрно-белое меню. Есть варианты красивей, если душа просит красоты.
rEFind — очень красивый загрузчик. Скачать можно тут в виде deb-пакета. Использую на своём ноуте. Умеет создавать загрузочное меню автоматически, без конфига — просто сканируя файлы.
Clover. Позволяет выставлять нативное разрешение экрана, имеет поддержку мыши на экране загрузки, разные темы оформления. Дефолтная тема ужасна, конфиг в виде xml нечитаем, настроить не смог.
Различные неочевидные последствия
Вы можете легко попробовать эту схему в работе. Берёте USB-флешку, форматируете в таблицу разделов GPT, создаете FAT-раздел и копируете туда загрузчик. Комп сможет с неё стартовать.
Если просто скопировать на такую флешку boot-раздел установленного linux — система будет спокойно загружаться с флешки, не видя разницы.
Что такое UEFI и чем он отличается от привычного BIOS
B IOS скоро умрет: Intel хочет полностью заменить его на UEFI на всех своих чипсетах к 2020 году. Но что такое UEFI и чем он отличается от BIOS, с которым мы все знакомы?
И UEFI, и BIOS представляют собой низкоуровневое программное обеспечение, которое запускается при загрузке ПК перед загрузкой операционной системы, но UEFI — это более современное решение, поддерживающее большие жесткие диски, более быструю загрузку, больше функций безопасности и, что удобно, графику и мышь.
Мы видели, что новые ПК, поставляемые с UEFI, по-прежнему называют его «BIOS», чтобы не вводить в заблуждение людей, привыкших к традиционному BIOS для ПК. Даже если Ваш ПК использует термин «BIOS», современные ПК, которые можно купить сегодня, почти наверняка поставляются с прошивкой UEFI вместо BIOS. Вот почему.
Что такое BIOS
BIOS — это сокращение от базовой системы ввода-вывода (Basic Input-Output system). Это низкоуровневое программное обеспечение, которое находится в чипе на материнской плате Вашего компьютера. BIOS загружается при запуске компьютера, и BIOS отвечает за пробуждение аппаратных компонентов компьютера, обеспечивает их правильную работу, а затем запускает загрузчик, который загружает Windows или любую другую установленную Вами операционную систему.
Вы можете настроить различные параметры на экране настройки BIOS. Такие настройки, как аппаратная конфигурация Вашего компьютера, системное время и порядок загрузки, находятся здесь. Вы можете получить доступ к этому экрану, нажав определенную клавишу — различную на разных компьютерах, но часто Esc, F2, F10 или Delete — во время загрузки компьютера. Когда Вы сохраняете настройки, они сохраняются в памяти самой материнской платы. При загрузке компьютера BIOS запустит Ваш компьютер с сохраненными настройками.
BIOS проходит POST (Power-On Self Test) или самотестирование при включении питания перед загрузкой операционной системы. Он проверяет правильность конфигурации Вашего оборудования и его правильную работу. Если что-то не так, Вы увидите сообщение об ошибке или услышите загадочную последовательность звуковых кодов. Вам нужно посмотреть, что означают различные последовательности звуковых сигналов в руководстве к компьютеру.
Когда Ваш компьютер загружается — и после завершения POST — BIOS ищет основную загрузочную запись, или MBR, сохраненную на загрузочном устройстве, и использует ее для запуска загрузчика.
Вы также можете увидеть аббревиатуру CMOS, что означает дополнительный металл-оксид-полупроводник. Это относится к памяти с батарейным питанием, где BIOS хранит различные настройки на материнской плате. Это на самом деле уже не точно, так как этот метод был заменен флэш-памятью (также называемой EEPROM) в современных системах.
Почему BIOS устарел
BIOS существует уже долгое время и практически не развивался. Даже компьютеры MS-DOS, выпущенные в 1980-х годах, имели BIOS!
Конечно, BIOS развивался и улучшался с течением времени. Были разработаны некоторые расширения, в том числе ACPI, Advanced Configuration и Power Interface. Это позволяет BIOS проще конфигурировать устройства и выполнять расширенные функции управления питанием, например, режим сна. Но BIOS не продвинулся и не улучшился почти так же, как другие технологии ПК со времен MS-DOS.
Традиционный BIOS все еще имеет серьезные ограничения. Он может загружаться только с дисков объемом 2.1 ТБ или меньше. Это ограничение связано с тем, как работает система Master Boot Record в BIOS.
BIOS должен работать в режиме 16-разрядного процессора и иметь только 1 МБ свободного места для выполнения. Он имеет проблемы с инициализацией нескольких аппаратных устройств одновременно, что приводит к более медленному процессу загрузки при инициализации всех аппаратных интерфейсов и устройств на современном ПК.
BIOS давно нуждается в замене. Intel начала работу над спецификацией интерфейса расширяемого микропрограммного обеспечения (EFI) еще в 1998 году. Apple выбрала EFI, когда в 2006 году переключилась на архитектуру Intel на своих компьютерах Mac, но другие производители ПК этого не сделали.
В 2007 году производители Intel, AMD, Microsoft и производители ПК согласовали новую спецификацию Unified Extensible Firmware Interface (UEFI). Это общеотраслевой стандарт, управляемый форумом Unified Extended Firmware Interface, и не управляется исключительно Intel. Поддержка UEFI была введена в Windows с Windows Vista с пакетом обновления 1 (SP1) и Windows 7. Подавляющее большинство компьютеров, которые Вы можете купить сегодня, теперь используют UEFI, а не традиционный BIOS.
Как UEFI заменяет и улучшает BIOS
UEFI заменяет традиционный BIOS на ПК. На существующем ПК невозможно переключиться с BIOS на UEFI. Вам необходимо купить новое оборудование, которое поддерживает и включает UEFI, как это делают большинство новых компьютеров. Большинство реализаций UEFI обеспечивают эмуляцию BIOS, поэтому Вы можете выбрать установку и загрузку старых операционных систем, которые ожидают BIOS вместо UEFI, чтобы они были обратно совместимы.
Этот новый стандарт позволяет избежать ограничений BIOS. Встроенное ПО UEFI может загружаться с дисков емкостью 2.2 ТБ или более — теоретический предел составляет 9.4 зетабайта. Это примерно в три раза больше предполагаемого размера всех данных в Интернете. Это потому, что UEFI использует схему разбиения GPT вместо MBR. Он также загружается более стандартизированным способом, запуская исполняемые файлы EFI вместо запуска кода из основной загрузочной записи диска.
UEFI может работать в 32-битном или 64-битном режиме и имеет более адресуемое адресное пространство, чем BIOS, что означает, что Ваш процесс загрузки происходит быстрее. Это также означает, что экраны настройки UEFI могут быть более плавными, чем экраны настроек BIOS, включая поддержку графики и курсора мыши. Однако это не обязательно. Многие ПК по-прежнему поставляются с интерфейсами настроек UEFI в текстовом режиме, которые выглядят и работают как старый экран настройки BIOS.
UEFI имеет и другие функции. Он поддерживает безопасную загрузку, что означает, что операционная система может быть проверена на достоверность, чтобы убедиться, что вредоносное ПО не вмешивалось в процесс загрузки. Он может поддерживать сетевые функции прямо в самой прошивке UEFI, что может помочь в удаленном устранении неполадок и настройке. С традиционным BIOS Вы должны сидеть перед физическим компьютером, чтобы настроить его.
Это не просто замена BIOS. UEFI — это, по сути, крошечная операционная система, которая работает поверх прошивки ПК и может делать гораздо больше, чем BIOS. Он может храниться во флэш-памяти на материнской плате или загружаться с жесткого диска или общего сетевого ресурса при загрузке.
Разные ПК с UEFI будут иметь разные интерфейсы и функции. Все зависит от производителя Вашего ПК, но основы будут одинаковыми на каждом ПК.
Как получить доступ к настройкам UEFI на современных ПК
Если Вы обычный пользователь ПК, переход на компьютер с UEFI не будет заметным изменением. Ваш новый компьютер будет загружаться и выключаться быстрее, чем с BIOS, и Вы можете использовать диски емкостью 2.2 ТБ или более.
Если Вам нужен доступ к низкоуровневым настройкам, может быть небольшая разница. Возможно, Вам потребуется получить доступ к экрану настроек UEFI через меню параметров загрузки Windows, а не нажимать клавишу во время загрузки компьютера. Теперь, когда компьютеры загружаются быстро, производители ПК не хотят замедлять процесс загрузки, ожидая, нажмете ли Вы клавишу. Тем не менее, есть также ПК с UEFI, которые позволяют Вам получить доступ к BIOS таким же образом, нажав клавишу во время процесса загрузки.
Хотя UEFI — это большое обновление, оно в основном находится на заднем плане. Большинство пользователей ПК никогда не заметят — или не будут беспокоиться — что их новые ПК используют UEFI вместо традиционного BIOS. Они будут работать лучше и будут поддерживать более современное оборудование и функции.
Для получения более подробной информации прочтите объяснение Адама Уильямсона из Red Hat о том, как отличается процесс загрузки UEFI. Вы также можете прочитать официальный FAQ UEFI.



