UEFI
Материал из ALT Linux Wiki
(Синхронизировал с текущим установщиком) |
м (Руслан, там бред какой-то -- EFI не про "/dev/sda4", efibootmgr пишет в NVRAM, grub-install в случае EFI его сам дёргает) |
||
(20 промежуточных версий не показаны.) | |||
Строка 5: | Строка 5: | ||
<div id="goal"></div> | <div id="goal"></div> | ||
== Цель == | == Цель == | ||
- | Обеспечить возможность совместного использования с ОС, установленными в UEFI-режиме, без мороки с переключением BIOS/UEFI; предоставить возможность использования UEFI-«железа» без CSM<ref>2013: такое уже начинает появляться</ref>. | + | Обеспечить возможность совместного использования с ОС, установленными в UEFI-режиме, без мороки с переключением BIOS/UEFI; предоставить возможность использования UEFI-«железа» без CSM<ref>2013: такое уже начинает появляться (CSM -- Compatibility Support Module -- по сути код BIOS, которому передаётся управление в т.н. Legacy Mode; при этом возможно загрузиться с "обычного" загрузочного носителя, не реализующего поддержку UEFI)</ref>. |
{{main|План выпуска бранча p7}} | {{main|План выпуска бранча p7}} | ||
<div id="status"></div> | <div id="status"></div> | ||
+ | |||
== Состояние == | == Состояние == | ||
- | Релиз. Нормально устанавливаемся на bare metal и в мультизагрузку с, например, openSUSE 12.2 и Windows 8. | + | Релиз ('''x86_64'''). Нормально устанавливаемся на bare metal и в мультизагрузку с, например, openSUSE 12.2 и Windows 8. |
<div id="results"></div> | <div id="results"></div> | ||
+ | |||
== Результат == | == Результат == | ||
- | По состоянию на декабрь 2014 года поддержка UEFI включена в выпуски дистрибутивов версий 7.0.2+, [[Regular|регулярные сборки образов]] и [[Starterkits|стартовые наборы]], включая возможность работы без отключения Secure Boot. | + | По состоянию на декабрь 2014 года поддержка UEFI включена в 64-битные выпуски дистрибутивов версий 7.0.2+, [[Regular|регулярные сборки образов]] и [[Starterkits|стартовые наборы]], включая возможность работы без отключения Secure Boot. 32-битного UEFI у нас [http://forum.altlinux.org/index.php?topic=35506.15 нет] и по состоянию на ноябрь 2016 года. |
Реализация поддерживает запись на 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. | ||
- | {{Attention|Для UEFI/GPT ещё не решены вопросы создания программного RAID штатными средствами при установке: | + | == Замечания == |
+ | {{Attention|Для UEFI/GPT ещё '''не решены''' вопросы создания '''программного RAID''' штатными средствами при установке: | ||
* не поддерживается создание RAID на GPT-разделах, {{altbug|28247}} | * не поддерживается создание RAID на GPT-разделах, {{altbug|28247}} | ||
* не поддерживается /boot/efi на программном RAID1, {{altbug|28827#c15}} | * не поддерживается /boot/efi на программном RAID1, {{altbug|28827#c15}} | ||
Для серверов и рабочих станций пока рекомендуется 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].}} | ||
+ | |||
+ | Режим загрузки дистрибутива различается по меню загрузчика с установочного носителя: | ||
+ | * если [http://www.altlinux.org/images/4/45/Centaurus-7.0-bootmenu.png вертикально расположенное текстовое], то BIOS/CSM; | ||
+ | * если [http://www.altlinux.org/images/9/99/Altlinux-rescue-uefi-memtest86.jpg горизонтальное с картинками] — это UEFI. | ||
+ | |||
+ | Если после установки ALT Linux попытка загрузки Windows приводит к сообщению '''«Ошибка: invalid signature»''', значит, установка была выполнена в режиме BIOS/CSM, который придётся отключить в настройках firmware и выполнить установку повторно с задействованием тех же разделов под линукс. | ||
+ | |||
<div id="usage"></div> | <div id="usage"></div> | ||
- | + | = Применение = | |
- | Как обычно; [http://www.rodsbooks.com/efi-bootloaders/principles.html отличия] состоят в разбивке и установке загрузчика: | + | Как обычно; [http://www.rodsbooks.com/efi-bootloaders/principles.html отличия] состоят в [https://bugzilla.altlinux.org/show_bug.cgi?id=28163 разбивке] и установке загрузчика: |
* начальный загрузчик EFI не похож на обычный, надо уметь находить в нём установщик; | * начальный загрузчик EFI не похож на обычный, надо уметь находить в нём установщик; | ||
* язык установщика по умолчанию — английский, иной надо выбирать вручную на первом шаге установки; | * язык установщика по умолчанию — английский, иной надо выбирать вручную на первом шаге установки; | ||
- | * требуется создать новый или подключить существующий 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}}); |
- | * может понадобиться раздел типа <tt>bios boot partition</tt> минимального размера, никуда не подключенный и предназначенный для grub2-efi; | + | * [http://web.archive.org/web/20100502053927/http://grub.enbug.org/BIOS_Boot_Partition может понадобиться] раздел типа <tt>bios boot partition</tt> минимального размера, никуда не подключенный (в установщике при выборе типа файловой системы нажать «отмена») и предназначенный для встраивания grub2-efi; |
* остальные разделы — и файловая система, и своп — имеют GPT-тип <tt>basic data</tt>; актуальный тип раздела задаётся отдельно; | * остальные разделы — и файловая система, и своп — имеют GPT-тип <tt>basic data</tt>; актуальный тип раздела задаётся отдельно; | ||
* модуль установки загрузчика предложит вариант «EFI», с которым стоит согласиться<ref>при установке загрузчика в MBR или раздел, а не ESP, загрузка в EFI mode не пройдёт</ref>. | * модуль установки загрузчика предложит вариант «EFI», с которым стоит согласиться<ref>при установке загрузчика в MBR или раздел, а не ESP, загрузка в EFI mode не пройдёт</ref>. | ||
- | Следует устанавливать 64-битные дистрибутивы; запуск 32-битного дистрибутива возможен в режиме BIOS/CSM (Compatibility Support Module), а в режиме EFI такая установка не будет сочтена загрузочной<ref>OVMF в составе virtualbox обычно загружает EFI Shell, а поведение фирмварей на железе варьирует от представления меню пунктов загрузки до перехода к настройкам</ref>. | + | Следует устанавливать 64-битные дистрибутивы; запуск 32-битного дистрибутива возможен в режиме BIOS/CSM (Compatibility Support Module), а в режиме EFI такая установка не будет сочтена загрузочной<ref>OVMF в составе virtualbox обычно загружает EFI Shell, а поведение фирмварей на железе варьирует от представления меню пунктов загрузки до перехода к настройкам</ref>. При установке 64-битного дистрибутива в режиме BIOS/CSM будет невозможна двойная загрузка с UEFI Windows (обычно 8 и новее). |
При загрузке с образа в EFI-режиме загрузчиком будет графический rEFInd либо совсем текстовое ELILO, в BIOS-режиме — синяя текстовая либо брендированная графическая менюшка SYSLINUX. | При загрузке с образа в EFI-режиме загрузчиком будет графический rEFInd либо совсем текстовое ELILO, в BIOS-режиме — синяя текстовая либо брендированная графическая менюшка SYSLINUX. | ||
Строка 48: | Строка 59: | ||
<div id="bootloaders"></div> | <div id="bootloaders"></div> | ||
- | + | == Загрузчики == | |
Иерархия загрузчиков и их применение таковы: | Иерархия загрузчиков и их применение таковы: | ||
# <tt>shim</tt> применяется как первый бинарник, которому передаёт управление firmware и который обеспечивает проверку дистрибутивной/пользовательской подписи на следующем шаге при включенном UEFI SB; | # <tt>shim</tt> применяется как первый бинарник, которому передаёт управление firmware и который обеспечивает проверку дистрибутивной/пользовательской подписи на следующем шаге при включенном UEFI SB; | ||
Строка 57: | Строка 68: | ||
По состоянию на конец 2014 года в установленной системе всегда получается {{pkg|grub2-efi}} (настройки в {{path|/etc/sysconfig/grub2}}, после изменения надо запустить {{cmd|grub-efi-autoupdate}}); {{pkg|elilo}} и {{pkg|refind}} применяются в загрузочных ISO. | По состоянию на конец 2014 года в установленной системе всегда получается {{pkg|grub2-efi}} (настройки в {{path|/etc/sysconfig/grub2}}, после изменения надо запустить {{cmd|grub-efi-autoupdate}}); {{pkg|elilo}} и {{pkg|refind}} применяются в загрузочных ISO. | ||
+ | |||
+ | <div id="troubleshooting"></div> | ||
+ | == Решение проблем == | ||
+ | При некоторых обстоятельствах возможно «слетание» информации о загрузчике из энергонезависимой памяти 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> | ||
+ | == MD 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"). | ||
<div id="sekirboot"></div> | <div id="sekirboot"></div> | ||
- | + | = Secure Boot = | |
<div id="certs"></div> | <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 отключать SecureBoot] необязательно. | Если нет доверия к 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 отключать SecureBoot] необязательно. | ||
<div id="fastboot"></div> | <div id="fastboot"></div> | ||
- | == | + | == Безусловная загрузка == |
Если попался ноутбук с трудносъёмным диском и неактивированной win8, который не даёт возможности попасть в фирмварь, не приняв EULA — можно попробовать его жёстко выключить либо: | Если попался ноутбук с трудносъёмным диском и неактивированной win8, который не даёт возможности попасть в фирмварь, не приняв EULA — можно попробовать его жёстко выключить либо: | ||
Строка 76: | Строка 99: | ||
<div id="dualboot"></div> | <div id="dualboot"></div> | ||
- | == | + | == Двойная загрузка == |
Если после установки не загружается Windows 8 с ошибкой наподобие | Если после установки не загружается Windows 8 с ошибкой наподобие | ||
Строка 91: | Строка 114: | ||
* выбор Windows в меню загрузки firmware (например, по F12) при необходимости; | * выбор Windows в меню загрузки firmware (например, по F12) при необходимости; | ||
* использование отличающегося от grub2 загрузчика (например, refind на инсталяционном диске в режиме поиска уже установленных ОС). | * использование отличающегося от grub2 загрузчика (например, refind на инсталяционном диске в режиме поиска уже установленных ОС). | ||
- | <div id="troubleshooting"></div> | + | <div id="troubleshooting-sb"></div> |
- | == | + | == Решение проблем == |
Если [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). | Если [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). | ||
Строка 98: | Строка 121: | ||
<div id="vbox"></div> | <div id="vbox"></div> | ||
- | + | == 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, пока промелькивает логотип VirtualBox. | + | Получить доступ к настройкам можно быстрым нажатием F8 (F12), пока промелькивает логотип VirtualBox. |
- | Следует отметить, что NVRAM на виртуальном железе VirtualBox не переживает выключение экземпляра (это известная [http://www.virtualbox.org/ticket/11177 проблема]). Т.е. установщик/efibootmgr не может добавить ссылку на grub, а если добавить её руками, она исчезнет при следующем запуске экземпляра. Объезд упомянут по этой же ссылке: выполнить в ещё загруженной системе | + | Следует отметить, что NVRAM на виртуальном железе VirtualBox не переживает выключение экземпляра (это известная [http://www.virtualbox.org/ticket/11177 проблема]). Т.е. установщик/efibootmgr не может добавить ссылку на grub, а если добавить её руками, она исчезнет при следующем запуске экземпляра. Объезд упомянут по этой же ссылке: |
+ | |||
+ | 1-ый вариант выполнить в ещё загруженной системе | ||
echo "fs0:\EFI\altlinux\grubx64.efi" > /boot/efi/startup.nsh | echo "fs0:\EFI\altlinux\grubx64.efi" > /boot/efi/startup.nsh | ||
+ | Или то же самое сделать потом, из EFI Shell: | ||
+ | echo "fs0:\EFI\altlinux\grubx64.efi" > fs0:\startup.nsh | ||
+ | |||
+ | 2-ой вариант (подсмотрено в [https://wiki.archlinux.org/index.php/VirtualBox_%28Русский%29 | VirtualBox (Русский) на wiki.archlinux.org] | ||
+ | - после установки системы | ||
+ | * Если существует файл /boot/efi/boot/BOOTX64.EFI дать ему другое имя | ||
+ | * Скопировать /EFI/altlinux/grubx64.efi в /boot/efi/boot/BOOTX64.EFI | ||
{{main|VirtualBox}} | {{main|VirtualBox}} | ||
<div id="kvm"></div> | <div id="kvm"></div> | ||
- | + | ||
+ | == 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> | ||
- | == Самостоятельная сборка | + | == Создание загрузочной записи UEFI вручную == |
+ | |||
+ | Хорошая ссылка по работе с efibootmgr можно прочитать https://wiki.gentoo.org/wiki/Efibootmgr/ru | ||
+ | |||
+ | |||
+ | Например, для создания загрузочной записи на /dev/sda4 надо дать команду: | ||
+ | |||
+ | <source lang=bash> | ||
+ | efibootmgr -c -d /dev/sda -p 4 -L "ALTLinx" -l "\EFI\altlinux\grub64.efi" | ||
+ | </source> | ||
+ | |||
+ | = Самостоятельная сборка = | ||
Достаточно хорошая поддержка сборки UEFI-загружаемых гибридных образов добавлена в текущий {{pkg|mkimage}}; в качестве образца можно использовать example4 из документации пакета, а суть требуемых изменений в профиле сводится к: | Достаточно хорошая поддержка сборки UEFI-загружаемых гибридных образов добавлена в текущий {{pkg|mkimage}}; в качестве образца можно использовать example4 из документации пакета, а суть требуемых изменений в профиле сводится к: | ||
Строка 130: | Строка 174: | ||
{{main|m-p|l1=mkimage-profiles}} | {{main|m-p|l1=mkimage-profiles}} | ||
<div id="refs"></div> | <div id="refs"></div> | ||
- | + | = Примечания = | |
<references /> | <references /> | ||
- | + | = Ссылки = | |
Важное: | Важное: | ||
* http://www.rodsbooks.com/efi-bootloaders/index.html | * http://www.rodsbooks.com/efi-bootloaders/index.html | ||
Строка 158: | Строка 202: | ||
* http://lwn.net/Articles/584629/ | * http://lwn.net/Articles/584629/ | ||
* 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 |
Текущая версия на 15:46, 8 апреля 2017
Содержание |
Поддержка UEFI в ALT Linux
Цель
Обеспечить возможность совместного использования с ОС, установленными в 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 у нас нет и по состоянию на ноябрь 2016 года.
Реализация поддерживает запись на CD/DVD-болванку или USB-флэшку и загрузку в EFI mode или Legacy mode. Проверена на ASUS/Gigabyte/Lenovo UEFI и MacBook/MBP EFI.
Замечания
- не поддерживается создание RAID на GPT-разделах, altbug #28247
- не поддерживается /boot/efi на программном RAID1, altbug #28827#c15
Режим загрузки дистрибутива различается по меню загрузчика с установочного носителя:
- если вертикально расположенное текстовое, то BIOS/CSM;
- если горизонтальное с картинками — это UEFI.
Если после установки ALT Linux попытка загрузки Windows приводит к сообщению «Ошибка: invalid signature», значит, установка была выполнена в режиме BIOS/CSM, который придётся отключить в настройках firmware и выполнить установку повторно с задействованием тех же разделов под линукс.
Применение
Как обычно; отличия состоят в разбивке и установке загрузчика:
- начальный загрузчик EFI не похож на обычный, надо уметь находить в нём установщик;
- язык установщика по умолчанию — английский, иной надо выбирать вручную на первом шаге установки;
- требуется создать новый или подключить существующий FAT32-раздел с GPT-типом ESP (efi system partition) размером ~100—500 Мб (смонтируется в /boot/efi);
- может понадобиться раздел типа bios boot partition минимального размера, никуда не подключенный (в установщике при выборе типа файловой системы нажать «отмена») и предназначенный для встраивания grub2-efi;
- остальные разделы — и файловая система, и своп — имеют 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, будьте осторожны и изучите отзывы заранее!
Загрузчики
Иерархия загрузчиков и их применение таковы:
- 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.
Решение проблем
При некоторых обстоятельствах возможно «слетание» информации о загрузчике из энергонезависимой памяти UEFI, что приводит к невозможности загрузки любых ОС или Linux; если это не «аппаратный» случай вроде известных проблем с firmware некоторых производителей, следует произвести повторную установку загрузчика:
- загружаемся со спасательной части дистрибутива или специального образа в режиме EFI;
- выполняем команду mount-system для поиска и монтирования корневых ФС;
- находим нужную, если получилось больше одной, и даём команду chroot /mnt/system1 grub-install[4];
- затем umount -al и reboot
MD RAID
Инсталятор (точнее, alterator-vm) умеет создавать программный массив на GPT-разделах[5], но процесс несколько неочевиден: следует создать разделы типа "basic data" и не создавать на них том, а выбрать строчку "RAID" и воспользоваться появившейся внизу формы кнопкой "Создать RAID" ("Create RAID").
Secure Boot
Сертификаты
Если нет доверия к Microsoft, можно подтвердить (enroll) сертификат ALT Linux, добавленный по пути EFI/enroll/altlinux.cer. Пошаговая процедура описана на rodsbooks.com (потребуются не все шаги). В выпусках 7.0.2 и регулярных сборках с конца ноября используется подписанный shim с этим сертификатом, т.е. отключать SecureBoot необязательно.
Безусловная загрузка
Если попался ноутбук с трудносъёмным диском и неактивированной 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.
Двойная загрузка
Если после установки не загружается 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 на инсталяционном диске в режиме поиска уже установленных ОС).
Решение проблем
Если замечено, что на каком-либо оборудовании загружаются носители Windows и Ubuntu, но не ALT Linux/openSUSE/Ubuntu — это, скорее всего, ошибка в firmware при работе с более чем одной подписью (shim в Ubuntu подписан только Microsoft).
В качестве объезда можно отключить Secure Boot либо воспользоваться специальной флэшкой, содержащей shim с подписью Microsoft, но без подписи ALT Linux, для дальнейшей загрузки с собственно установочной флэшки. Может пригодиться отключалка сообщения «Безопасная загрузка (SecureBoot) настроена неправильно».
VirtualBox
Желательна ветка 4.2 и выше, в 4.1 реализация EFI несколько странная и крайне задумчивая. Требуется 64-битный экземпляр со включенной галкой "EFI" в настройках материнской платы. ISO рекомендуется подключать через SATA-, а не IDE-контроллер (спасибо vsu@ за подсказку). Диск — динамический на 10Gb или больше, чтобы по возможности отрабатывала авторазбивка.
Получить доступ к настройкам можно быстрым нажатием F8 (F12), пока промелькивает логотип VirtualBox.
Следует отметить, что NVRAM на виртуальном железе VirtualBox не переживает выключение экземпляра (это известная проблема). Т.е. установщик/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.
Создание загрузочной записи UEFI вручную
Хорошая ссылка по работе с efibootmgr можно прочитать https://wiki.gentoo.org/wiki/Efibootmgr/ru
Например, для создания загрузочной записи на /dev/sda4 надо дать команду:
efibootmgr -c -d /dev/sda -p 4 -L "ALTLinx" -l "\EFI\altlinux\grub64.efi"
Самостоятельная сборка
Достаточно хорошая поддержка сборки 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[6][7].
Для сборки образов требуется свежий Sisyphus либо p7/branch, в т.ч.:
- mkimage 0.2.5+ (для SB — 0.2.12+)[8]
- xorriso 1.2.4+
- syslinux 4.04-alt5+[9]
- evms 2.5.5-alt30+
- guile-evms 0.4-alt14+
- alterator-vm 0.4.2-alt1+
Примечания
- ↑ 2013: такое уже начинает появляться (CSM -- Compatibility Support Module -- по сути код BIOS, которому передаётся управление в т.н. Legacy Mode; при этом возможно загрузиться с "обычного" загрузочного носителя, не реализующего поддержку UEFI)
- ↑ при установке загрузчика в MBR или раздел, а не ESP, загрузка в EFI mode не пройдёт
- ↑ OVMF в составе virtualbox обычно загружает EFI Shell, а поведение фирмварей на железе варьирует от представления меню пунктов загрузки до перехода к настройкам
- ↑ здесь system1 соответствует случаю единственного обнаруженного линуксового корня
- ↑ GPT и UEFI технически ортогональны, но в силу связанных с Microsoft причин разработчики firmware склонны считать их "парой"
- ↑ другие типы бутлоадеров ещё не реализованы, см. tools/mki-copy-efiboot
- ↑ что автоматически приведёт к добавлению в BOOT_TYPE значения efiboot
- ↑ рекомендуется также mkimage-profiles 1.1.18+ или свежий гит mkimage-profiles-desktop
- ↑ в апстриме syslinux нужное добавлено в 4.06
Ссылки
Важное:
- 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
Разное:
- 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