UEFI: различия между версиями

Материал из ALT Linux Wiki
м (поправил якорёк #troubleshooting, относящийся к sb)
м (→‎Применение: grub.efi, core.img и BIOS Boot Partition)
Строка 27: Строка 27:
* язык установщика по умолчанию — английский, иной надо выбирать вручную на первом шаге установки;
* язык установщика по умолчанию — английский, иной надо выбирать вручную на первом шаге установки;
* требуется создать новый или подключить существующий FAT32-раздел с GPT-типом ESP (<tt>efi system partition</tt>) размером ~100—500 Мб (смонтируется в {{path|/boot/efi}});
* требуется создать новый или подключить существующий 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>.

Версия от 23:40, 13 марта 2015


Поддержка UEFI в ALT Linux

Цель

Обеспечить возможность совместного использования с ОС, установленными в UEFI-режиме, без мороки с переключением BIOS/UEFI; предоставить возможность использования UEFI-«железа» без CSM[1].

Основная статья: План выпуска бранча p7

Состояние

Релиз. Нормально устанавливаемся на bare metal и в мультизагрузку с, например, openSUSE 12.2 и Windows 8.

Результат

По состоянию на декабрь 2014 года поддержка UEFI включена в выпуски дистрибутивов версий 7.0.2+, регулярные сборки образов и стартовые наборы, включая возможность работы без отключения Secure Boot.

Реализация поддерживает запись на CD/DVD-болванку или USB-флэшку и загрузку в EFI mode или Legacy mode. Проверена на ASUS/Gigabyte/Lenovo UEFI и MacBook/MBP EFI.

Внимание! Для UEFI/GPT ещё не решены вопросы создания программного RAID штатными средствами при установке:
  • не поддерживается создание RAID на GPT-разделах, altbug #28247
  • не поддерживается /boot/efi на программном RAID1, altbug #28827#c15
Для серверов и рабочих станций пока рекомендуется BIOS-режим (CSM).

Применение

Как обычно; отличия состоят в разбивке и установке загрузчика:

  • начальный загрузчик 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].

При загрузке с образа в 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.

Внимание! Не пытайтесь запускать efibootmgr на оборудовании Apple,
известны случаи повреждения его firmware таким образом.
Внимание! Известны аналогичные случаи для некоторых ноутбуков Samsung
и Lenovo с Phoenix UEFI, будьте осторожны и изучите отзывы заранее!


Загрузчики

Иерархия загрузчиков и их применение таковы:

  1. shim применяется как первый бинарник, которому передаёт управление firmware и который обеспечивает проверку дистрибутивной/пользовательской подписи на следующем шаге при включенном UEFI SB;
  2. следующим бинарником могут быть elilo, refind, grub (efilinux у нас пока не собран) — от них требуется уметь передать ядру параметры;
    • если всё нужное, начиная с расположения rootfs, забито в ядро при сборке — можно воспользоваться и тем, что у нас оно является самодостаточным EFI-бинарником;
    • обратите внимание: elilo умеет загружать только Linux, поэтому также применяется как своего рода «фильтр» между подписанными загрузчиками и неподписанным ядром при реализации сценария hardware enablement (то есть когда сквозная проверка подписи не требуется по постановке задачи);
  3. в итоге загружается либо ядро, либо что-нибудь вспомогательное вроде EFI shell.

По состоянию на конец 2014 года в установленной системе всегда получается grub2-efi (настройки в /etc/sysconfig/grub2, после изменения надо запустить grub-efi-autoupdate); elilo и refind применяются в загрузочных ISO.

Решение проблем

При некоторых обстоятельствах возможно «слетание» информации о загрузчике из энергонезависимой памяти UEFI, что приводит к невозможности загрузки любых ОС или Linux; если это не «аппаратный» случай вроде известных проблем с firmware некоторых производителей, следует произвести повторную установку загрузчика:

  1. загружаемся со спасательной части дистрибутива или специального образа в режиме EFI;
  2. выполняем команду mount-system для поиска и монтирования корневых ФС;
  3. находим нужную, если получилось больше одной, и даём команду chroot /mnt/system1 grub-install[4];
  4. затем umount -al и reboot

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, пока промелькивает логотип VirtualBox.

Следует отметить, что NVRAM на виртуальном железе VirtualBox не переживает выключение экземпляра (это известная проблема). Т.е. установщик/efibootmgr не может добавить ссылку на grub, а если добавить её руками, она исчезнет при следующем запуске экземпляра. Объезд упомянут по этой же ссылке: выполнить в ещё загруженной системе

echo "fs0:\EFI\altlinux\grubx64.efi" > /boot/efi/startup.nsh

Другой вариант: то же самое сделать потом, из EFI Shell:

echo "fs0:\EFI\altlinux\grubx64.efi" > fs0:\startup.nsh
Основная статья: VirtualBox

KVM

Нужно загрузить экземпляр qemu-system-x86_64 с TianoCore firmware, уложенным как файл bios.bin в каталоге, путь к которому передан посредством опции -L.

Основная статья: KVM

Самостоятельная сборка

Достаточно хорошая поддержка сборки 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+
Основная статья: mkimage-profiles

Примечания

  1. 2013: такое уже начинает появляться
  2. при установке загрузчика в MBR или раздел, а не ESP, загрузка в EFI mode не пройдёт
  3. OVMF в составе virtualbox обычно загружает EFI Shell, а поведение фирмварей на железе варьирует от представления меню пунктов загрузки до перехода к настройкам
  4. здесь system1 соответствует случаю единственного обнаруженного линуксового корня
  5. другие типы бутлоадеров ещё не реализованы, см. tools/mki-copy-efiboot
  6. что автоматически приведёт к добавлению в BOOT_TYPE значения efiboot
  7. рекомендуется также mkimage-profiles 1.1.18+ или свежий гит mkimage-profiles-desktop
  8. в апстриме syslinux нужное добавлено в 4.06

Ссылки

Важное:

Разное: