UEFI: различия между версиями
Нет описания правки |
|||
(не показано 55 промежуточных версий 13 участников) | |||
Строка 1: | Строка 1: | ||
[[Category:Devel]] | [[Category:Devel]] | ||
[[Category:Distributions]] | [[Category:Distributions]] | ||
{{w|Extensible_Firmware_Interface}} | |||
= Поддержка UEFI в ALT Linux = | = Поддержка UEFI в ALT Linux = | ||
<div id="goal"></div> | <div id="goal"></div> | ||
== Кратко об UEFI == | |||
Extensible Firmware Interface (EFI) (с англ. — «интерфейс расширяемой прошивки») — интерфейс между операционной системой и микропрограммами, управляющими низкоуровневыми функциями оборудования, его основное предназначение: корректно инициализировать оборудование при включении системы и передать управление загрузчику или непосредственно ядру операционной системы. EFI предназначен для замены BIOS — интерфейса, который традиционно используется всеми IBM PC-совместимыми персональными компьютерами. Первая спецификация EFI была разработана Intel, позднее от первого названия отказались и последняя версия стандарта носит название Unified Extensible Firmware Interface (UEFI). В настоящее время разработкой UEFI занимается Unified EFI Forum. | |||
Стандартно у Intel в дисковой разметке GPT системный раздел EFI (англ. ESP) с идентификатором EF00 и файловой системой FAT32 содержит файл /efi/boot/boot[название архитектуры].efi, например: /efi/boot/bootx64.efi. Загрузчик EFI BIOS загружает и запускает соответствующий архитектуре компьютерной системы такой файл. | |||
Помимо этого NVRAM хранит адреса файлов возможной ззагрузки. | |||
Apple не использует ESP для загрузки, bootstrap передаёт управление по адресу, записанному в NVRAM (BootRom): /System/Library/CoreServices/boot.efi с помощью утилиты bless | |||
Также в большинстве реализаций UEFI возможна загрузка в режиме совместимости с диска с разметкой MBR. | |||
== Цель == | == Цель == | ||
Обеспечить возможность совместного использования с ОС, установленными в UEFI-режиме, без мороки с переключением BIOS/UEFI; предоставить возможность использования UEFI-«железа» без CSM<ref>2013: такое уже начинает появляться (CSM -- Compatibility Support Module -- по сути код BIOS, которому передаётся управление в т.н. Legacy Mode; при этом возможно загрузиться с "обычного" загрузочного носителя, не реализующего поддержку UEFI)</ref>. | Обеспечить возможность совместного использования с ОС, установленными в UEFI-режиме, без мороки с переключением BIOS/UEFI; предоставить возможность использования UEFI-«железа» без CSM<ref>2013: такое уже начинает появляться (CSM -- Compatibility Support Module -- по сути код BIOS, которому передаётся управление в т.н. Legacy Mode; при этом возможно загрузиться с "обычного" загрузочного носителя, не реализующего поддержку UEFI)</ref>. | ||
Строка 14: | Строка 28: | ||
== Результат == | == Результат == | ||
По состоянию на декабрь 2014 года поддержка UEFI включена в 64-битные выпуски дистрибутивов версий 7.0.2+, [[Regular|регулярные сборки образов]] и [[Starterkits|стартовые наборы]], включая возможность работы без отключения Secure Boot. 32- | По состоянию на декабрь 2014 года поддержка UEFI включена в 64-битные выпуски дистрибутивов версий 7.0.2+, [[Regular|регулярные сборки образов]] и [[Starterkits|стартовые наборы]], включая возможность работы без отключения Secure Boot. 32-битный UEFI у нас <s>[http://forum.altlinux.org/index.php?topic=35506.15 нет]</s> есть в позднем p8 и сразу в p9. | ||
Реализация поддерживает запись на CD/DVD-болванку или USB-флэшку и загрузку в EFI mode или Legacy mode. Проверена на ASUS/Gigabyte/Lenovo UEFI и MacBook/MBP EFI. | Реализация поддерживает запись на CD/DVD-болванку или USB-флэшку и загрузку в EFI mode или Legacy mode. Проверена на ASUS/Gigabyte/Lenovo UEFI и MacBook/MBP EFI. | ||
Строка 20: | Строка 34: | ||
== Замечания == | == Замечания == | ||
{{Attention|Для UEFI/GPT ещё '''не решены''' вопросы создания '''программного RAID''' штатными средствами при установке: | {{Attention|Для UEFI/GPT ещё '''не решены''' вопросы создания '''программного RAID''' штатными средствами при установке: | ||
* не поддерживается создание RAID на GPT-разделах, {{altbug|28247}} | * не поддерживается создание RAID на GPT-разделах, {{altbug|28247}} — закрыт 2014-02-03 | ||
* не поддерживается /boot/efi на программном RAID1, {{altbug|28827#c15}} | * не поддерживается /boot/efi на программном RAID1, {{altbug|28827#c15}} — закрыт 2013-04-16 | ||
Для серверов и рабочих станций пока рекомендуется BIOS-режим (CSM).}} | Для серверов и рабочих станций пока рекомендуется BIOS-режим (CSM).}} | ||
{{Attention|Не следует устанавливать '''32-битные''' дистрибутивы в '''dualboot с Windows 8''' и далее, предсказуемы и известны проблемы. Также '''не стоит''' пытаться установить таким образом линукс в '''BIOS/CSM-режиме''', а [https://ask.fedoraproject.org/en/question/69675/grub2-windows-entry-throws-invalid-signature/ только в UEFI].}} | {{Attention|Не следует устанавливать '''32-битные''' дистрибутивы в '''dualboot с Windows 8''' и далее, предсказуемы и известны проблемы. Также '''не стоит''' пытаться установить таким образом линукс в '''BIOS/CSM-режиме''', а [https://ask.fedoraproject.org/en/question/69675/grub2-windows-entry-throws-invalid-signature/ только в UEFI].}} | ||
Определить какой режим загрузки используется можно, выполнив команду {{cmd|efibootmgr}}: | |||
*BIOS/Legacy — команда возвращает сообщение о том, что переменные EFI не поддерживаются: | |||
*:<syntaxhighlight lang="bash"># efibootmgr | |||
EFI variables are not supported on this system.</syntaxhighlight> | |||
*UEFI — вывод примерно такой: | |||
*:<syntaxhighlight lang="bash"># efibootmgr | |||
BootCurrent: 0005 | |||
Timeout: 0 seconds | |||
BootOrder: 0005,0000,0001,0003,0004,0002 | |||
Boot0000* UiApp | |||
Boot0001* UEFI VBOX CD-ROM VB2-01700376 | |||
Boot0002* UEFI VBOX HARDDISK VB972dfeed-bac982c9 | |||
Boot0003* UEFI VBOX HARDDISK VB23e1ea2e-e6c099cc | |||
Boot0004 EFI Internal Shell | |||
Boot0005* altlinux</syntaxhighlight> | |||
Режим загрузки дистрибутива различается по меню загрузчика с установочного носителя: | Режим загрузки дистрибутива различается по меню загрузчика с установочного носителя: | ||
Строка 34: | Строка 64: | ||
= Специфика работы с UEFI = | = Специфика работы с UEFI = | ||
Установка Altlinux в режиме UEFI возможна только если диски размечены в GPT. В случае разметки MBR при загрузке под UEFI GRUB не устанавливается. | |||
Чтобы установить GRUB на диск с GPT, для размещения stage2 требуется раздел с типом (флагом) bios_grub, в документации к GRUB2 рекомендуется создавать такой раздел размером 1 Мб. | |||
== Особенность разбиения диска == | == Особенность разбиения диска == | ||
Для того, чтобы система правильно работала (в частности могла загрузиться) с UEFI, при ручном разбиении диска надо обязательно сделать точку монтирования /boot/efi, в которую нужно смонтировать vfat раздел с загрузочными записями. Если такого раздела нет, то его надо создать вручную. При разбивке жёсткого диска в автоматическом режиме такой раздел создаёт сам установщик. | Для того, чтобы система правильно работала (в частности могла загрузиться) с UEFI, при ручном разбиении диска надо обязательно сделать точку монтирования /boot/efi, в которую нужно смонтировать vfat раздел с загрузочными записями. Если такого раздела нет, то его надо создать вручную. При разбивке жёсткого диска в автоматическом режиме такой раздел создаёт сам установщик. | ||
[[Файл:Screenshot 20220513 163743.png||1000px|мини|центр|Пример разбиения диска с UEFI]] | |||
== Особенности установки == | == Особенности установки == | ||
Как обычно; [http://www.rodsbooks.com/efi-bootloaders/principles.html отличия] состоят в [https://bugzilla.altlinux.org/show_bug.cgi?id=28163 разбивке] и установке загрузчика: | Как обычно; [http://www.rodsbooks.com/efi-bootloaders/principles.html отличия] состоят в [https://bugzilla.altlinux.org/show_bug.cgi?id=28163 разбивке] и установке загрузчика: | ||
Строка 41: | Строка 78: | ||
* язык установщика по умолчанию — английский, иной надо выбирать вручную на первом шаге установки; | * язык установщика по умолчанию — английский, иной надо выбирать вручную на первом шаге установки; | ||
* требуется [https://bugzilla.altlinux.org/show_bug.cgi?id=28163 создать новый или подключить существующий FAT32-раздел с GPT-типом ESP] (<tt>efi system partition</tt>) размером ~100—500 Мб (смонтируется в {{path|/boot/efi}}); | * требуется [https://bugzilla.altlinux.org/show_bug.cgi?id=28163 создать новый или подключить существующий FAT32-раздел с GPT-типом ESP] (<tt>efi system partition</tt>) размером ~100—500 Мб (смонтируется в {{path|/boot/efi}}); | ||
* [http://web.archive.org/web/20100502053927/http://grub.enbug.org/BIOS_Boot_Partition может понадобиться] раздел типа <tt>bios boot partition</tt> минимального размера, никуда не подключенный (в установщике при выборе типа файловой системы нажать «отмена») и предназначенный для встраивания grub2- | * [http://web.archive.org/web/20100502053927/http://grub.enbug.org/BIOS_Boot_Partition может понадобиться] раздел типа <tt>bios boot partition</tt> минимального размера, никуда не подключенный (в установщике при выборе типа файловой системы нажать «отмена») и предназначенный для встраивания grub2-pc, для установки в режиме Legacy; | ||
* остальные разделы — и файловая система, и своп — имеют GPT-тип <tt>basic data</tt>; актуальный тип раздела задаётся отдельно; | * остальные разделы — и файловая система, и своп — имеют GPT-тип <tt>basic data</tt>; актуальный тип раздела задаётся отдельно; | ||
* модуль установки загрузчика предложит вариант «EFI», с которым стоит согласиться<ref>при установке загрузчика в MBR или раздел, а не ESP, загрузка в EFI mode не пройдёт</ref>. | * модуль установки загрузчика предложит вариант «EFI», с которым стоит согласиться<ref>при установке загрузчика в MBR или раздел, а не ESP, загрузка в EFI mode не пройдёт</ref>. | ||
Строка 61: | Строка 98: | ||
{{attention|Известны аналогичные случаи для некоторых ноутбуков '''[http://www.opennet.ru/opennews/art.shtml?num=35973 Samsung]'''<br />и '''[http://www.opennet.ru/opennews/art.shtml?num=39018 Lenovo]''' с [http://www.opennet.ru/openforum/vsluhforumID3/93887.html#60 Phoenix UEFI], будьте осторожны и изучите отзывы заранее!}} | {{attention|Известны аналогичные случаи для некоторых ноутбуков '''[http://www.opennet.ru/opennews/art.shtml?num=35973 Samsung]'''<br />и '''[http://www.opennet.ru/opennews/art.shtml?num=39018 Lenovo]''' с [http://www.opennet.ru/openforum/vsluhforumID3/93887.html#60 Phoenix UEFI], будьте осторожны и изучите отзывы заранее!}} | ||
== Загрузчики, поддерживающие UEFI == | == Загрузчики, поддерживающие UEFI == | ||
Иерархия загрузчиков и их применение таковы: | Иерархия загрузчиков и их применение таковы: | ||
Строка 73: | Строка 109: | ||
<div id="troubleshooting"></div> | <div id="troubleshooting"></div> | ||
<div id="sekirboot"></div> | |||
== | == Создание MD RAID на GPT-разделах == | ||
Инсталятор (точнее, {{pkg|alterator-vm}}) ''[https://bugzilla.altlinux.org/show_bug.cgi?id=28247#c7 умеет]'' создавать программный массив на GPT-разделах<ref>GPT и UEFI технически ортогональны, но в силу связанных с Microsoft причин разработчики firmware склонны считать их "парой"</ref>, но процесс несколько неочевиден: следует создать разделы типа "basic data" и ''не'' создавать на них том, а выбрать строчку "RAID" и воспользоваться появившейся внизу формы кнопкой "Создать RAID" ("Create RAID"). | Инсталятор (точнее, {{pkg|alterator-vm}}) ''[https://bugzilla.altlinux.org/show_bug.cgi?id=28247#c7 умеет]'' создавать программный массив на GPT-разделах<ref>GPT и UEFI технически ортогональны, но в силу связанных с Microsoft причин разработчики firmware склонны считать их "парой"</ref>, но процесс несколько неочевиден: следует создать разделы типа "basic data" и ''не'' создавать на них том, а выбрать строчку "RAID" и воспользоваться появившейся внизу формы кнопкой "Создать RAID" ("Create RAID"). | ||
=== Установка системы на MDRAID в системе с UEFI === | |||
Загрузчик UEFI GRUB поддерживает загрузку ядра, расположенного на MD RAID. Проверена загрузка с MD RAID level 1, другие варианты массива не проверены. LVM RAID и LVM Mirror также не проверены. | |||
Чтобы сервер загрузился при поломке одного из дисков, необходимо установить загрузчик на каждый диск массива. По умолчанию при загрузке UEFI загрузчик устанавливается только на первый диск. Поэтому приходится делать ручную установку. Будьте готовы к тому, что на вашей платформе такая установка не получится. | |||
Недостатки описанной конфигурации: | |||
* | * при глобальном изменении GRUB может не загрузить систему, придётся загружаться с LiveUSB и устанавливать GRUB: {{cmd|mount корень-с-диска-сервера; chroot в него ; mount -A ; for s in /dev/sd?; do grub-install $d; done ; reboot}}; | ||
* в BIOS нужно вручную добавить загрузку с ESP-раздела каждого физического диска. | |||
* | |||
В | <br>1. В инсталляторе или LiveUSB переключитесь на свободную консоль и сделайте ручную разметку на каждом физическом диске: | ||
< | :# Разметьте диск в GPT. | ||
:# Создайте раздел типа <tt>ESP</tt> (он же <tt>EFI</tt>, в {{cmd|parted}} флаг <tt>boot</tt>), создайте на нём файловую систему fat16 ({{cmd|mkfs.vfat -F 16 /dev/sda}}) размером 100 Мб или больше, например, 256 Мб. | |||
:# <s>Создайте раздел типа <tt>bios_grub</tt> размером 31 Кб или больше (разработчики GRUB рекомендуют 1Мб).</s> | |||
:# Создайте раздел типа <tt>msdata (basic data)</tt> для объединения их в RAID корневого тома (для Altlinux P9 подойдёт размер 40 Гб). | |||
:# Создайте массив RAID из этих разделов. | |||
:# В массиве RAID создайте файловую систему и назначьте точку монтирования "/". | |||
:# Создайте раздел(ы) для остальных томов файловой системы и объедините их в RAID или LVM. | |||
2. Установите систему | |||
<br>3. Установите grub на каждый диск, на котором есть зеркало (член массива) RAID | |||
<br>4. Программой {{cmd|efibootmgr}} добавьте в список загрузки элементы для каждого диска с разделом в составе RAID и с установленным GRUB. | |||
== VirtualBox == | == Установка внутри VirtualBox == | ||
Желательна ветка 4.2 и выше, в 4.1 реализация EFI несколько странная и крайне задумчивая. Требуется 64-битный экземпляр со включенной галкой "EFI" в настройках материнской платы. ISO рекомендуется подключать через SATA-, а не IDE-контроллер (спасибо vsu@ за подсказку). Диск — динамический на 10Gb или больше, чтобы по возможности отрабатывала авторазбивка. | Желательна ветка 4.2 и выше, в 4.1 реализация EFI несколько странная и крайне задумчивая. Требуется 64-битный экземпляр со включенной галкой "EFI" в настройках материнской платы. ISO рекомендуется подключать через SATA-, а не IDE-контроллер (спасибо vsu@ за подсказку). Диск — динамический на 10Gb или больше, чтобы по возможности отрабатывала авторазбивка. | ||
Получить доступ к настройкам можно быстрым нажатием F8 (F12), пока промелькивает логотип VirtualBox. | Получить доступ к настройкам можно быстрым нажатием F8 (F12), пока промелькивает логотип VirtualBox. | ||
Следует отметить, что NVRAM на виртуальном железе VirtualBox не переживает выключение экземпляра (это известная [http://www.virtualbox.org/ticket/11177 проблема]). Т.е. установщик/efibootmgr не может добавить ссылку на grub, а если добавить её руками, она исчезнет при следующем запуске экземпляра. Объезд упомянут по этой же ссылке: | Следует отметить, что NVRAM на виртуальном железе VirtualBox, '''младше версии 6.1''' не переживает выключение экземпляра (это известная [http://www.virtualbox.org/ticket/11177 проблема]). Т.е. установщик/efibootmgr не может добавить ссылку на grub, а если добавить её руками, она исчезнет при следующем запуске экземпляра. Объезд упомянут по этой же ссылке: | ||
1-ый вариант выполнить в ещё загруженной системе | 1-ый вариант выполнить в ещё загруженной системе | ||
Строка 137: | Строка 147: | ||
echo "fs0:\EFI\altlinux\grubx64.efi" > fs0:\startup.nsh | echo "fs0:\EFI\altlinux\grubx64.efi" > fs0:\startup.nsh | ||
2-ой вариант (подсмотрено в [https://wiki.archlinux.org/index.php/VirtualBox_%28Русский%29 | VirtualBox (Русский) на wiki.archlinux.org] | 2-ой вариант (подсмотрено в [https://wiki.archlinux.org/index.php/VirtualBox_%28Русский%29 | VirtualBox (Русский) на wiki.archlinux.org] — после установки системы | ||
* Если существует файл /boot/efi/boot/BOOTX64.EFI дать ему другое имя | * Если существует файл /boot/efi/boot/BOOTX64.EFI дать ему другое имя | ||
* Скопировать /EFI/altlinux/grubx64.efi в /boot/efi/boot/BOOTX64.EFI | * Скопировать /EFI/altlinux/grubx64.efi в /boot/efi/boot/BOOTX64.EFI | ||
Строка 144: | Строка 153: | ||
<div id="kvm"></div> | <div id="kvm"></div> | ||
== KVM == | == Установка внутри KVM == | ||
Нужно загрузить экземпляр {{cmd|qemu-system-x86_64}} с [http://sourceforge.net/projects/edk2/files/OVMF/ TianoCore firmware], уложенным как файл {{path|bios.bin}} в каталоге, путь к которому передан посредством опции <tt>-L</tt>. | Нужно загрузить экземпляр {{cmd|qemu-system-x86_64}} с [http://sourceforge.net/projects/edk2/files/OVMF/ TianoCore firmware], уложенным как файл {{path|bios.bin}} в каталоге, путь к которому передан посредством опции <tt>-L</tt>. | ||
{{main|KVM}} | {{main|KVM}} | ||
<div id="HOWTO"></div> | <div id="HOWTO"></div> | ||
== | = Установка с Secure Boot = | ||
<div id="certs"></div> | |||
== Работа с сертификатами == | |||
Если нет доверия к Microsoft, можно подтвердить (enroll) сертификат ALT Linux, добавленный по пути {{path|EFI/enroll/altlinux.cer}}. Пошаговая процедура описана на [http://www.rodsbooks.com/efi-bootloaders/secureboot.html rodsbooks.com] (потребуются не все шаги). В выпусках 7.0.2 и регулярных сборках с конца ноября используется подписанный shim с этим сертификатом, т.е. [http://www.rodsbooks.com/efi-bootloaders/secureboot.html#disable отключать] [http://neosmart.net/wiki/disabling-secure-boot/ SecureBoot] необязательно. | |||
<div id="fastboot"></div> | |||
== Windows не даёт возможности попасть в фирмварь, не приняв EULA == | |||
Если попался ноутбук с трудносъёмным диском и неактивированной win8, который не даёт возможности попасть в фирмварь, не приняв EULA — можно попробовать его жёстко выключить либо: | |||
* возможно, переключиться на ENG комбинацией при помощи Alt-Shift; | |||
* нажать Shift-F10; | |||
* в полученном приглашении cmd.exe сказать shutdown /s; | |||
* при включении, не теряя времени, «топтаться» по F12/F2/Del или какие ещё клавиши могут быть на этой модели. | |||
Если уже активирована — см. [http://www.eightforums.com/tutorials/20256-uefi-firmware-settings-boot-inside-windows-8-a.html How to Boot to UEFI Firmware Settings from inside Windows 8 and 8.1]. | |||
<div id="dualboot"></div> | |||
= Создание загрузочной записи UEFI вручную = | |||
Например, для создания загрузочной записи на /dev/sda4 надо дать команду: | Например, для создания загрузочной записи на /dev/sda4 надо дать команду: | ||
<source lang=bash> | <source lang=bash> | ||
efibootmgr -c -d /dev/sda -p 4 -L " | efibootmgr -c -d /dev/sda -p 4 -L "ALTLinux" -l "\EFI\altlinux\grub64.efi" | ||
</source> | </source> | ||
= Самостоятельная сборка = | = Самостоятельная сборка установочного образа для установки c UEFI = | ||
Достаточно хорошая поддержка сборки UEFI-загружаемых гибридных образов добавлена в текущий {{pkg|mkimage}}; в качестве образца можно использовать example4 из документации пакета, а суть требуемых изменений в профиле сводится к: | Достаточно хорошая поддержка сборки UEFI-загружаемых гибридных образов добавлена в текущий {{pkg|mkimage}}; в качестве образца можно использовать example4 из документации пакета, а суть требуемых изменений в профиле сводится к: | ||
Строка 176: | Строка 200: | ||
* {{pkg|alterator-vm}} 0.4.2-alt1+ | * {{pkg|alterator-vm}} 0.4.2-alt1+ | ||
{{main| | {{main|Mkimage-profiles}} | ||
<div id="refs"></div> | <div id="refs"></div> | ||
= Решение проблем = | |||
== «Cлетание» информации о загрузчике из энергонезависимой памяти UEFI == | |||
При некоторых обстоятельствах возможно «слетание» информации о загрузчике из энергонезависимой памяти UEFI, что приводит к невозможности загрузки любых ОС или Linux; если это не «аппаратный» случай вроде [http://www.opennet.ru/opennews/art.shtml?num=36489 известных проблем] с firmware некоторых производителей, следует произвести повторную установку загрузчика: | |||
# загружаемся со спасательной части дистрибутива или [[rescue|специального образа]] в режиме EFI; | |||
# выполняем команду {{cmd|mount-system}} для поиска и монтирования корневых ФС; | |||
# находим нужную, если получилось больше одной, и даём команду {{cmd|chroot /mnt/system1 grub-install}}<ref>здесь <tt>system<b>1</b></tt> соответствует случаю единственного обнаруженного линуксового корня</ref>; | |||
# затем {{cmd|umount -al}} и {{cmd|reboot}} | |||
<div id="raid"></div> | |||
== Ошибка в firmware при работе с более чем одной подписью == | |||
Если [http://lists.altlinux.org/pipermail/community/2014-January/681485.html замечено], что на каком-либо оборудовании загружаются носители Windows и Ubuntu, но не ALT Linux/openSUSE/Ubuntu — это, скорее всего, [http://lists.altlinux.org/pipermail/community/2014-January/681306.html ошибка в firmware] [https://bugzilla.redhat.com/show_bug.cgi?id=1049749#c8 при работе с более чем одной подписью] (shim в Ubuntu подписан только Microsoft). | |||
В качестве объезда можно '''отключить Secure Boot либо воспользоваться [http://ftp.altlinux.org/pub/people/mike/secureboot/ специальной флэшкой]''', содержащей shim с подписью Microsoft, но без подписи ALT Linux, для дальнейшей загрузки с собственно установочной флэшки. Может пригодиться [http://support.microsoft.com/kb/2902864 отключалка] сообщения «Безопасная загрузка (SecureBoot) настроена неправильно». | |||
<div id="vbox"></div> | |||
== После установки не загружается Windows == | |||
Если после установки не загружается Windows 8 с ошибкой наподобие | |||
Booting a command list | |||
/EndEntire | |||
file path: /ACPI(a0341d0,0)/PCI(2,1f)/UnknownMessaging(12) | |||
/HD(1,800,96000,fed12b717a32444e,81,b5)/File(\efi\Microsoft\Boot) | |||
/File(bootmgfw.efi)/EndEntire | |||
error: cannot load image. | |||
— известны следующие объезды: | |||
* отключение SecureBoot; | |||
* выбор Windows в меню загрузки firmware (например, по F12) при необходимости; | |||
* использование отличающегося от grub2 загрузчика (например, refind на инсталяционном диске в режиме поиска уже установленных ОС). | |||
<div id="troubleshooting-sb"></div> | |||
== Ноутбуки Acer == | |||
Если после установки на ноутбук Acer система не загружается, необходимо | |||
зайти в BIOS и либо отключить secure boot, либо вручную занести grub2 загрузчик | |||
в список доверенных. | |||
Однако по умолчанию данные опции в BIOS не активны. | |||
Чтобы их разблокировать, нужно задать непустой пароль для входа в BIOS | |||
("Supervisor Password" вкладки "Security") [ к примеру - "1" ]. | |||
{{attention|пароль тут же запишите!.}}. | |||
После этого | |||
эти настройки для UEFI становятся активными и можно либо | |||
отключить secure boot (Secure Boot [Disabled]), (эта опция есть не во всех моделях Acer), | |||
либо же вручную занести grub2 загрузчик в список доверенных с помощью опции | |||
"Select an UEFI file as trusted" (обычно \EFI\altlinux\grubx64.efi). | |||
После того, как настройки сохранены, | |||
если пароль для входа в BIOS ("Supervisor Password") | |||
больше не нужен, то его нужно сбросить (ввести пустое значение) | |||
пока текущий пароль не утерян/не забылся. | |||
== "Empty security header" == | |||
Во время загрузки по [[UEFI]], в меню GRUB появляется | |||
сообщение "Empty security header". Это сообщение от | |||
efi модуля shim (- trivial UEFI first-stage bootloader), используемого | |||
при загрузке по [[UEFI]]. | |||
У меня появилось после dist-upgrade c p8 до p9 на ноутбуке acer | |||
с активной secure boot в настройках. Причина - скорее всего, изменился после | |||
обновления \EFI\altlinux\grubx64.efi, который был указан в настройке BIOS | |||
"Select an UEFI file as trusted". | |||
Вылечилось - выключил secure boot (в этой модели можно). | |||
В других моделях надо было бы перевыбрать новый grubx64.efi. | |||
==материнская плата ASUS MA597 (LE R2.0)== | |||
Чтобы выключить UEFI secure boot, | |||
в пункте "OS type" ниже вместо "Windows UEFI mode" надо выбрать "Other OS". | |||
(Надпись "Secure boot Enabled" чисто декоративная). | |||
При включенном UEFI secure boot установка grub проходит некорректно | |||
([https://bugzilla.altlinux.org/show_bug.cgi?id=37136 ALT bug #37136]). | |||
Для корректной работы grub с UEFI secure boot воспользуйтесь рецептом с | |||
[https://wiki.archlinux.org/index.php/GRUB/EFI_examples#M5A97 archlinux wiki]. | |||
= Примечания = | = Примечания = | ||
<references /> | <references /> | ||
Строка 186: | Строка 288: | ||
* https://wiki.archlinux.org/index.php/UEFI | * https://wiki.archlinux.org/index.php/UEFI | ||
* http://en.opensuse.org/KVM/UEFI_Secure_boot_using_qemu-kvm | * http://en.opensuse.org/KVM/UEFI_Secure_boot_using_qemu-kvm | ||
* https://habr.com/ru/post/273497/ | |||
* https://habr.com/ru/post/308032/ | |||
Разное: | Разное: | ||
* http://www.opennet.ru/opennews/art.shtml?num=36068 | * http://www.opennet.ru/opennews/art.shtml?num=36068 | ||
Строка 207: | Строка 311: | ||
* https://ask.fedoraproject.org/en/question/8264/after-installing-fedora-i-cant-open-biosefi-setup/ | * https://ask.fedoraproject.org/en/question/8264/after-installing-fedora-i-cant-open-biosefi-setup/ | ||
* http://www.rodsbooks.com/efi-bootloaders/controlling-sb.html | * http://www.rodsbooks.com/efi-bootloaders/controlling-sb.html | ||
* https://wiki.gentoo.org/wiki/Efibootmgr/ru |
Текущая версия от 02:25, 25 сентября 2023
Поддержка UEFI в ALT Linux
Кратко об UEFI
Extensible Firmware Interface (EFI) (с англ. — «интерфейс расширяемой прошивки») — интерфейс между операционной системой и микропрограммами, управляющими низкоуровневыми функциями оборудования, его основное предназначение: корректно инициализировать оборудование при включении системы и передать управление загрузчику или непосредственно ядру операционной системы. EFI предназначен для замены BIOS — интерфейса, который традиционно используется всеми IBM PC-совместимыми персональными компьютерами. Первая спецификация EFI была разработана Intel, позднее от первого названия отказались и последняя версия стандарта носит название Unified Extensible Firmware Interface (UEFI). В настоящее время разработкой UEFI занимается Unified EFI Forum.
Стандартно у Intel в дисковой разметке GPT системный раздел EFI (англ. ESP) с идентификатором EF00 и файловой системой FAT32 содержит файл /efi/boot/boot[название архитектуры].efi, например: /efi/boot/bootx64.efi. Загрузчик EFI BIOS загружает и запускает соответствующий архитектуре компьютерной системы такой файл.
Помимо этого NVRAM хранит адреса файлов возможной ззагрузки.
Apple не использует ESP для загрузки, bootstrap передаёт управление по адресу, записанному в NVRAM (BootRom): /System/Library/CoreServices/boot.efi с помощью утилиты bless
Также в большинстве реализаций UEFI возможна загрузка в режиме совместимости с диска с разметкой MBR.
Цель
Обеспечить возможность совместного использования с ОС, установленными в UEFI-режиме, без мороки с переключением BIOS/UEFI; предоставить возможность использования UEFI-«железа» без CSM[1].
Состояние
Релиз (x86_64). Нормально устанавливаемся на bare metal и в мультизагрузку с, например, openSUSE 12.2 и Windows 8.
Результат
По состоянию на декабрь 2014 года поддержка UEFI включена в 64-битные выпуски дистрибутивов версий 7.0.2+, регулярные сборки образов и стартовые наборы, включая возможность работы без отключения Secure Boot. 32-битный UEFI у нас нет есть в позднем p8 и сразу в p9.
Реализация поддерживает запись на CD/DVD-болванку или USB-флэшку и загрузку в EFI mode или Legacy mode. Проверена на ASUS/Gigabyte/Lenovo UEFI и MacBook/MBP EFI.
Замечания
- не поддерживается создание RAID на GPT-разделах, altbug #28247 — закрыт 2014-02-03
- не поддерживается /boot/efi на программном RAID1, altbug #28827#c15 — закрыт 2013-04-16
Определить какой режим загрузки используется можно, выполнив команду efibootmgr:
- BIOS/Legacy — команда возвращает сообщение о том, что переменные EFI не поддерживаются:
# efibootmgr EFI variables are not supported on this system.
- UEFI — вывод примерно такой:
# efibootmgr BootCurrent: 0005 Timeout: 0 seconds BootOrder: 0005,0000,0001,0003,0004,0002 Boot0000* UiApp Boot0001* UEFI VBOX CD-ROM VB2-01700376 Boot0002* UEFI VBOX HARDDISK VB972dfeed-bac982c9 Boot0003* UEFI VBOX HARDDISK VB23e1ea2e-e6c099cc Boot0004 EFI Internal Shell Boot0005* altlinux
Режим загрузки дистрибутива различается по меню загрузчика с установочного носителя:
- если вертикально расположенное текстовое, то BIOS/CSM;
- если горизонтальное с картинками — это UEFI.
Если после установки ALT Linux попытка загрузки Windows приводит к сообщению «Ошибка: invalid signature», значит, установка была выполнена в режиме BIOS/CSM, который придётся отключить в настройках firmware и выполнить установку повторно с задействованием тех же разделов под линукс.
Специфика работы с UEFI
Установка Altlinux в режиме UEFI возможна только если диски размечены в GPT. В случае разметки MBR при загрузке под UEFI GRUB не устанавливается.
Чтобы установить GRUB на диск с GPT, для размещения stage2 требуется раздел с типом (флагом) bios_grub, в документации к GRUB2 рекомендуется создавать такой раздел размером 1 Мб.
Особенность разбиения диска
Для того, чтобы система правильно работала (в частности могла загрузиться) с UEFI, при ручном разбиении диска надо обязательно сделать точку монтирования /boot/efi, в которую нужно смонтировать vfat раздел с загрузочными записями. Если такого раздела нет, то его надо создать вручную. При разбивке жёсткого диска в автоматическом режиме такой раздел создаёт сам установщик.
Особенности установки
Как обычно; отличия состоят в разбивке и установке загрузчика:
- начальный загрузчик EFI не похож на обычный, надо уметь находить в нём установщик;
- язык установщика по умолчанию — английский, иной надо выбирать вручную на первом шаге установки;
- требуется создать новый или подключить существующий FAT32-раздел с GPT-типом ESP (efi system partition) размером ~100—500 Мб (смонтируется в /boot/efi);
- может понадобиться раздел типа bios boot partition минимального размера, никуда не подключенный (в установщике при выборе типа файловой системы нажать «отмена») и предназначенный для встраивания grub2-pc, для установки в режиме Legacy;
- остальные разделы — и файловая система, и своп — имеют GPT-тип basic data; актуальный тип раздела задаётся отдельно;
- модуль установки загрузчика предложит вариант «EFI», с которым стоит согласиться[2].
Следует устанавливать 64-битные дистрибутивы; запуск 32-битного дистрибутива возможен в режиме BIOS/CSM (Compatibility Support Module), а в режиме EFI такая установка не будет сочтена загрузочной[3]. При установке 64-битного дистрибутива в режиме BIOS/CSM будет невозможна двойная загрузка с UEFI Windows (обычно 8 и новее).
При загрузке с образа в EFI-режиме загрузчиком будет графический rEFInd либо совсем текстовое ELILO, в BIOS-режиме — синяя текстовая либо брендированная графическая менюшка SYSLINUX.
После собственно загрузки и логина именем root в EFI-режиме должны отработать команды
modprobe efivars efibootmgr
— в BIOS-режиме вторая из них скажет
Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables. Try 'modprobe efivars' as root.
При загрузке установленной системы типичным на сегодня будет почти обычный grub2-efi.
известны случаи повреждения его firmware таким образом.
и Lenovo с Phoenix UEFI, будьте осторожны и изучите отзывы заранее!
Загрузчики, поддерживающие UEFI
Иерархия загрузчиков и их применение таковы:
- shim применяется как первый бинарник, которому передаёт управление firmware и который обеспечивает проверку дистрибутивной/пользовательской подписи на следующем шаге при включенном UEFI SB;
- следующим бинарником могут быть elilo, refind, grub (efilinux у нас пока не собран) — от них требуется уметь передать ядру параметры;
- если всё нужное, начиная с расположения rootfs, забито в ядро при сборке — можно воспользоваться и тем, что у нас оно является самодостаточным EFI-бинарником;
- обратите внимание: elilo умеет загружать только Linux, поэтому также применяется как своего рода «фильтр» между подписанными загрузчиками и неподписанным ядром при реализации сценария hardware enablement (то есть когда сквозная проверка подписи не требуется по постановке задачи);
- в итоге загружается либо ядро, либо что-нибудь вспомогательное вроде EFI shell.
По состоянию на конец 2014 года в установленной системе всегда получается grub2-efi (настройки в /etc/sysconfig/grub2, после изменения надо запустить grub-efi-autoupdate); elilo и refind применяются в загрузочных ISO.
Создание MD RAID на GPT-разделах
Инсталятор (точнее, alterator-vm) умеет создавать программный массив на GPT-разделах[4], но процесс несколько неочевиден: следует создать разделы типа "basic data" и не создавать на них том, а выбрать строчку "RAID" и воспользоваться появившейся внизу формы кнопкой "Создать RAID" ("Create RAID").
Установка системы на MDRAID в системе с UEFI
Загрузчик UEFI GRUB поддерживает загрузку ядра, расположенного на MD RAID. Проверена загрузка с MD RAID level 1, другие варианты массива не проверены. LVM RAID и LVM Mirror также не проверены.
Чтобы сервер загрузился при поломке одного из дисков, необходимо установить загрузчик на каждый диск массива. По умолчанию при загрузке UEFI загрузчик устанавливается только на первый диск. Поэтому приходится делать ручную установку. Будьте готовы к тому, что на вашей платформе такая установка не получится.
Недостатки описанной конфигурации:
- при глобальном изменении GRUB может не загрузить систему, придётся загружаться с LiveUSB и устанавливать GRUB: mount корень-с-диска-сервера; chroot в него ; mount -A ; for s in /dev/sd?; do grub-install $d; done ; reboot;
- в BIOS нужно вручную добавить загрузку с ESP-раздела каждого физического диска.
1. В инсталляторе или LiveUSB переключитесь на свободную консоль и сделайте ручную разметку на каждом физическом диске:
- Разметьте диск в GPT.
- Создайте раздел типа ESP (он же EFI, в parted флаг boot), создайте на нём файловую систему fat16 (mkfs.vfat -F 16 /dev/sda) размером 100 Мб или больше, например, 256 Мб.
Создайте раздел типа bios_grub размером 31 Кб или больше (разработчики GRUB рекомендуют 1Мб).- Создайте раздел типа msdata (basic data) для объединения их в RAID корневого тома (для Altlinux P9 подойдёт размер 40 Гб).
- Создайте массив RAID из этих разделов.
- В массиве RAID создайте файловую систему и назначьте точку монтирования "/".
- Создайте раздел(ы) для остальных томов файловой системы и объедините их в RAID или LVM.
2. Установите систему
3. Установите grub на каждый диск, на котором есть зеркало (член массива) RAID
4. Программой efibootmgr добавьте в список загрузки элементы для каждого диска с разделом в составе RAID и с установленным GRUB.
Установка внутри VirtualBox
Желательна ветка 4.2 и выше, в 4.1 реализация EFI несколько странная и крайне задумчивая. Требуется 64-битный экземпляр со включенной галкой "EFI" в настройках материнской платы. ISO рекомендуется подключать через SATA-, а не IDE-контроллер (спасибо vsu@ за подсказку). Диск — динамический на 10Gb или больше, чтобы по возможности отрабатывала авторазбивка.
Получить доступ к настройкам можно быстрым нажатием F8 (F12), пока промелькивает логотип VirtualBox.
Следует отметить, что NVRAM на виртуальном железе VirtualBox, младше версии 6.1 не переживает выключение экземпляра (это известная проблема). Т.е. установщик/efibootmgr не может добавить ссылку на grub, а если добавить её руками, она исчезнет при следующем запуске экземпляра. Объезд упомянут по этой же ссылке:
1-ый вариант выполнить в ещё загруженной системе
echo "fs0:\EFI\altlinux\grubx64.efi" > /boot/efi/startup.nsh
Или то же самое сделать потом, из EFI Shell:
echo "fs0:\EFI\altlinux\grubx64.efi" > fs0:\startup.nsh
2-ой вариант (подсмотрено в | VirtualBox (Русский) на wiki.archlinux.org — после установки системы
- Если существует файл /boot/efi/boot/BOOTX64.EFI дать ему другое имя
- Скопировать /EFI/altlinux/grubx64.efi в /boot/efi/boot/BOOTX64.EFI
Установка внутри KVM
Нужно загрузить экземпляр qemu-system-x86_64 с TianoCore firmware, уложенным как файл bios.bin в каталоге, путь к которому передан посредством опции -L.
Установка с Secure Boot
Работа с сертификатами
Если нет доверия к Microsoft, можно подтвердить (enroll) сертификат ALT Linux, добавленный по пути EFI/enroll/altlinux.cer. Пошаговая процедура описана на rodsbooks.com (потребуются не все шаги). В выпусках 7.0.2 и регулярных сборках с конца ноября используется подписанный shim с этим сертификатом, т.е. отключать SecureBoot необязательно.
Windows не даёт возможности попасть в фирмварь, не приняв EULA
Если попался ноутбук с трудносъёмным диском и неактивированной win8, который не даёт возможности попасть в фирмварь, не приняв EULA — можно попробовать его жёстко выключить либо:
- возможно, переключиться на ENG комбинацией при помощи Alt-Shift;
- нажать Shift-F10;
- в полученном приглашении cmd.exe сказать shutdown /s;
- при включении, не теряя времени, «топтаться» по F12/F2/Del или какие ещё клавиши могут быть на этой модели.
Если уже активирована — см. How to Boot to UEFI Firmware Settings from inside Windows 8 and 8.1.
Создание загрузочной записи UEFI вручную
Например, для создания загрузочной записи на /dev/sda4 надо дать команду:
efibootmgr -c -d /dev/sda -p 4 -L "ALTLinux" -l "\EFI\altlinux\grub64.efi"
Самостоятельная сборка установочного образа для установки c UEFI
Достаточно хорошая поддержка сборки UEFI-загружаемых гибридных образов добавлена в текущий mkimage; в качестве образца можно использовать example4 из документации пакета, а суть требуемых изменений в профиле сводится к:
- добавлению в инсталер dosfstools (efibootmgr будет вытянут текущим alterator-grub);
- добавлению в базовую устанавливаемую систему grub2-efi и installer-feature-efi-stage3;
- добавлению в modules для propagator kernel/drivers/firmware ради efivars.ko;
- передаче mkimage переменной EFI_BOOTLOADER со значением elilo либо refind[5][6].
Для сборки образов требуется свежий Sisyphus либо p7/branch, в т.ч.:
- mkimage 0.2.5+ (для SB — 0.2.12+)[7]
- xorriso 1.2.4+
- syslinux 4.04-alt5+[8]
- evms 2.5.5-alt30+
- guile-evms 0.4-alt14+
- alterator-vm 0.4.2-alt1+
Решение проблем
«Cлетание» информации о загрузчике из энергонезависимой памяти UEFI
При некоторых обстоятельствах возможно «слетание» информации о загрузчике из энергонезависимой памяти UEFI, что приводит к невозможности загрузки любых ОС или Linux; если это не «аппаратный» случай вроде известных проблем с firmware некоторых производителей, следует произвести повторную установку загрузчика:
- загружаемся со спасательной части дистрибутива или специального образа в режиме EFI;
- выполняем команду mount-system для поиска и монтирования корневых ФС;
- находим нужную, если получилось больше одной, и даём команду chroot /mnt/system1 grub-install[9];
- затем umount -al и reboot
Ошибка в firmware при работе с более чем одной подписью
Если замечено, что на каком-либо оборудовании загружаются носители Windows и Ubuntu, но не ALT Linux/openSUSE/Ubuntu — это, скорее всего, ошибка в firmware при работе с более чем одной подписью (shim в Ubuntu подписан только Microsoft).
В качестве объезда можно отключить Secure Boot либо воспользоваться специальной флэшкой, содержащей shim с подписью Microsoft, но без подписи ALT Linux, для дальнейшей загрузки с собственно установочной флэшки. Может пригодиться отключалка сообщения «Безопасная загрузка (SecureBoot) настроена неправильно».
После установки не загружается Windows
Если после установки не загружается Windows 8 с ошибкой наподобие
Booting a command list /EndEntire file path: /ACPI(a0341d0,0)/PCI(2,1f)/UnknownMessaging(12) /HD(1,800,96000,fed12b717a32444e,81,b5)/File(\efi\Microsoft\Boot) /File(bootmgfw.efi)/EndEntire error: cannot load image.
— известны следующие объезды:
- отключение SecureBoot;
- выбор Windows в меню загрузки firmware (например, по F12) при необходимости;
- использование отличающегося от grub2 загрузчика (например, refind на инсталяционном диске в режиме поиска уже установленных ОС).
Ноутбуки Acer
Если после установки на ноутбук Acer система не загружается, необходимо зайти в BIOS и либо отключить secure boot, либо вручную занести grub2 загрузчик в список доверенных. Однако по умолчанию данные опции в BIOS не активны. Чтобы их разблокировать, нужно задать непустой пароль для входа в BIOS ("Supervisor Password" вкладки "Security") [ к примеру - "1" ].
. После этого эти настройки для UEFI становятся активными и можно либо отключить secure boot (Secure Boot [Disabled]), (эта опция есть не во всех моделях Acer), либо же вручную занести grub2 загрузчик в список доверенных с помощью опции "Select an UEFI file as trusted" (обычно \EFI\altlinux\grubx64.efi). После того, как настройки сохранены, если пароль для входа в BIOS ("Supervisor Password") больше не нужен, то его нужно сбросить (ввести пустое значение) пока текущий пароль не утерян/не забылся.
"Empty security header"
Во время загрузки по UEFI, в меню GRUB появляется сообщение "Empty security header". Это сообщение от efi модуля shim (- trivial UEFI first-stage bootloader), используемого при загрузке по UEFI.
У меня появилось после dist-upgrade c p8 до p9 на ноутбуке acer с активной secure boot в настройках. Причина - скорее всего, изменился после обновления \EFI\altlinux\grubx64.efi, который был указан в настройке BIOS "Select an UEFI file as trusted".
Вылечилось - выключил secure boot (в этой модели можно). В других моделях надо было бы перевыбрать новый grubx64.efi.
материнская плата ASUS MA597 (LE R2.0)
Чтобы выключить UEFI secure boot, в пункте "OS type" ниже вместо "Windows UEFI mode" надо выбрать "Other OS". (Надпись "Secure boot Enabled" чисто декоративная). При включенном UEFI secure boot установка grub проходит некорректно (ALT bug #37136). Для корректной работы grub с UEFI secure boot воспользуйтесь рецептом с archlinux wiki.
Примечания
- ↑ 2013: такое уже начинает появляться (CSM -- Compatibility Support Module -- по сути код BIOS, которому передаётся управление в т.н. Legacy Mode; при этом возможно загрузиться с "обычного" загрузочного носителя, не реализующего поддержку UEFI)
- ↑ при установке загрузчика в MBR или раздел, а не ESP, загрузка в EFI mode не пройдёт
- ↑ OVMF в составе virtualbox обычно загружает EFI Shell, а поведение фирмварей на железе варьирует от представления меню пунктов загрузки до перехода к настройкам
- ↑ GPT и UEFI технически ортогональны, но в силу связанных с Microsoft причин разработчики firmware склонны считать их "парой"
- ↑ другие типы бутлоадеров ещё не реализованы, см. tools/mki-copy-efiboot
- ↑ что автоматически приведёт к добавлению в BOOT_TYPE значения efiboot
- ↑ рекомендуется также mkimage-profiles 1.1.18+ или свежий гит mkimage-profiles-desktop
- ↑ в апстриме syslinux нужное добавлено в 4.06
- ↑ здесь system1 соответствует случаю единственного обнаруженного линуксового корня
Ссылки
Важное:
- http://www.rodsbooks.com/efi-bootloaders/index.html
- https://wiki.archlinux.org/index.php/UEFI
- http://en.opensuse.org/KVM/UEFI_Secure_boot_using_qemu-kvm
- https://habr.com/ru/post/273497/
- https://habr.com/ru/post/308032/
Разное:
- http://www.opennet.ru/opennews/art.shtml?num=36068
- http://www.suse.com/blogs/uefi-secure-boot-overview/
- http://www.suse.com/blogs/uefi-secure-boot-plan/
- http://www.suse.com/blogs/uefi-secure-boot-details/
- http://cdimage.debian.org/cdimage/unofficial/efi-development/upload4/
- https://help.ubuntu.com/community/UEFI
- https://wiki.archlinux.org/index.php/UEFI_Bootloaders
- https://felipec.wordpress.com/2012/01/18/efi-adventures/
- http://mjg59.dreamwidth.org/4957.html
- http://mjg59.dreamwidth.org/20303.html
- про EULA и shift-reboot в windows 8
- http://jwboyer.livejournal.com/46149.html
- http://download.intel.com/support/motherboards/server/sr9000mk4u/sb/d71474002_sr9000mk4u_efi_userguide.pdf
- MacBookPro
- en:UEFI SecureBoot mini-HOWTO
- http://lwn.net/Articles/584629/
- https://ask.fedoraproject.org/en/question/8264/after-installing-fedora-i-cant-open-biosefi-setup/
- http://www.rodsbooks.com/efi-bootloaders/controlling-sb.html
- https://wiki.gentoo.org/wiki/Efibootmgr/ru