Разделы

Новое

Беседы про BIOS и UEFI

Утилиты

Реклама

Обзоры компьютерных гаджетов, которые должны быть всегда под рукой

Новости

23.11.2016

Инициативы компании Apple по отказу от классических ...

  • Все новости (32)
  • Спонсоры



        Яндекс.Метрика
    Главная » Статьи » Как пользоваться UEFI?

    Как пользоваться UEFI?

    Теоретически, UEFI-приложение можно встроить в UEFI BIOS как пользовательский модуль, что позволит не задумываться о способе его запуска. Практика не столь оптимистична. Причиной тому производственные секреты ведущих производителей BIOS: American Megatrends, Insyde Software, Phoenix Technologies. Их деятельность направлена на извлечение прибыли, что так часто входит в противоречие с идеализмом теории. Но если вдруг пользователь знает, как встроить собственный UEFI-модуль в системный BIOS, всё ниже сказанное ему будет неинтересно.

    Использование Internal EFI Shell

    Есть еще один способ познакомится с UEFI: ряд системных плат оснащены таким чипом BIOS, в составе которого есть Shell. При выборе в CMOS Setup опции «EFI Shell & EFI Boot Path», выполнение POST-процедур завершится запуском встроенной в firmware оболочки.

    На серверной платформе Intel S1200BT запуск оболочки связан с выбором пункта Internal EFI Shell в меню Boot Manager

    Рис 1. На серверной платформе Intel S1200BT запуск оболочки
    связан с выбором пункта Internal EFI Shell в меню Boot Manager

    Остается открытым вопрос о том, как задействовать UEFI Shell, если в установках CMOS Setup нет возможности использовать встроенную оболочку? Сразу оговоримся, если BIOS в принципе не поддерживает UEFI, то читатель зря пришел на эту страницу: все его старания будут напрасны.

    Загрузка UEFI Shell

    BIOS с поддержкой UEFI содержит в CMOS Setup пункт меню, похожий на Boot Device Control, в задачи которого входит выбор метода. UEFI Only позволяет завершить выполнение POST вызовом загрузчика UEFI-совместимой операционной системы.

    В этом месте нашего рассказа полезно вспомнить, что у расширяемого интерфейса фирменного программного обеспечения есть одна важная особенность. Спецификация UEFI акцентирует внимание на том, что загрузчик операционной системы является обычным UEFI-приложением. Пользуясь этим, мы можем поместить на внешнем носителе вместо него UEFI Shell, который формально продолжает оставаться в статусе загрузчика ОС. Работая в Shell, мы пользуемся встроенными в него утилитами (редактор, генератор списка GUID и т.п.) и запускаем наши программы. Благо дело, что 64-битное программное обеспечение UEFI при старте операционной системы ищет файл загрузчика по фиксированному пути:

    /efi/boot/bootx64.efi

    или

    /efi/boot/bootia32.efi

    О старте UEFI-оболочки информирует приглашение Shell>.

    Теперь для работы с приложениями нам нужно указать носитель, на котором они находятся. Для этого в ответ на приглашение Shell> выбираем файловое устройство, например fs0: (file system 0). Со списоком файловых и блоковых устройств или Device Mapping Table можно ознакомиться, воспользовавшись командой map. Содержимое текущего каталога доступно по команде ls, используемой также и в UNIX-подобных операционных системах.

    Подготовка накопителя для UEFI Shell

    Общеизвестно, что для запуска оболочки UEFI Shell необходимо стартовый раздел внешнего носителя (жесткого диска, USB-накопителя) отформатировать в FAT32. Файловая система NTFS не поддерживается и доступ к ней из среды UEFI без дополнительных трюков невозможен.

    Три метода запуска UEFI Shell

    Вызов программной оболочки для работы в среде UEFI на различных платформах выполняется по-разному. Если систематизировать все доселе известные методы, то окажется, что все сводится к трем моделям реализации:

    1. UEFI Shell присутствует в составе firmware системной платы. В списке загрузочных устройств, наряду с перечислением дисковых накопителей, присутствует строка UEFI Shell. Его и запускаем, выбрав в качестве загрузочного устройства, как на выше приведенном скриншоте.
    2. В составе firmware системной платы программная UEFI-оболочка отсутствует. Запустить внешний UEFI Shell нам поможет безобидная хитрость — располагаем его в нужном месте на загрузочном устройстве. При старте используем те пункты Boot Menu, которые обеспечивают UEFI-запуск оболочки с заданного носителя.
      Boot Menu обеспечивает запуск с носителя оболочки UEFI Shell
    3. В составе firmware системной платы UEFI Shell отсутствует. Запуск внешней программной оболочки возможен, если используются путь и имя файла, уникальные для данного семейства персональных платформ. В некоторых реализациях AMI BIOS, например, завершение CMOS Setup сопровождается выводом на экран меню, один из пунктов которого — запуск оболочки UEFI (функция Launch EFI Shell from filesystem device). Если разместить в корневом каталоге загрузочного диска файл UEFI Shell под именем shellx64.efi, это и решит поставленную задачу.

    Запуск UEFI-приложений

    Ничто не мешает вместо выполняемого файла оболочки разместить по выше указанному пути любое другое UEFI-приложение, переименовав его в bootx64.efi. По аналогии с shell-файлом, оно будет запущено в статусе загрузчика операционной системы. Но в этом случае, родительской задачей для этого приложения будет не отсутствующая оболочка, а UEFI BIOS. Следовательно, все сервисы и протоколы, используемые UEFI-приложениями, обрабатывает firmware системной платы, поэтому все они остаются доступными при загрузке без Shell. UEFI Shell, как и наше приложение, является клиентом, а не провайдером этих программных сервисов.

    Завершение работы UEFI-приложения

    Завершение работы UEFI-приложения предполагает возврат управления родительской задаче, которая приступает к Legacy-загрузке. В нашем эксперименте происходит старт с жесткого диска операционной системы MS-DOS. Но такой вид реакции на возврат в родительскую задачу не описан в UEFI-спецификации и, возможно, на других платформах приведет к другим результатам.



    24.06.2017