Efi shell команды для запуска windows

Что делать если вместо ОС загрузилась UEFI Shell.

Представим ситуацию, что по какой то причине, вместо обычной загрузки операционной системы, перед вами появилась командная строка UEFI Shell, с сообщением «Press ESC in 1 in seconds to skip staurtup.nsh or any other key to continue». Что делать?

Содержание

  • Возможные Причины
  • Что Делать в UEFI Shell
  • Вводим Команды
    • Настройка Консоли
    • Вывод Загрузочных Записей
    • Проверка Наличия EFI-раздела
    • Проверка Наличия EFI-приложения
    • Добавление Загрузочных Записей
  • Резюме

Возможные Причины

Загрузка в UEFI происходит согласно загрузочным записям. Если в BIOS данные записи представляли просто список имеющихся жестких дисков, то UEFI в данном плане действует по другой схеме. По умолчанию UEFI определяет все диски с таблицей разделов MBR и GPT, с последующим поиском на них разделов отформатированных в поддерживаемую файловую систему. Таковой является FAT(12, 16, 32). Данные диски попадают в загрузочный список. Приоритет загрузки данного списка можно конфигурировать через интерфейс UEFI, или с помощью командной оболочки UEFI Shell.

Каждая загрузочная запись может указывать либо просто на диск, в котором содержится соответствующий FAT-раздел, либо на конкретный *.efi файл. В первом случае UEFI будет искать загрузочный файл по умолчанию. Таковыми, к примеру, являются /EFI/boot/bootx64.efi, /EFI/boot/bootia32.efi, /EFI/boot/bootarm.efi или /EFI/boot/bootaa64.efi. В данном случае указаны файлы boot*.efi предназначены для разных архитектур ПК.

Исполняемые файлы boot*.efi выполняют запуск основного загрузчика операционной системы, таких как Windows Boot Manager, GRUB2, rEFInd, Clover, Xorboot и других. Загрузчик в свою очередь, уже выполняет запуск ядра операционной системы.

Учитывая все сказанное, можно сделать вывод. Раз перед нами красуется UEFI Shell, то значит подсистеме UEFI по какой то причине не удалось найти необходимый загрузочный *.efi файл. Он может быть поврежденным, или просто отсутствовать. Или как говорилось немного выше, может быть просто изменен приоритет загрузочных записей. И последний вариант, просто отсутствует необходимая загрузочная запись.

UEFI Shell — это инструмент управления загрузкой вручную. Если вы не инициировали запуск данной командной оболочки, то это означает, что нужно проверить загрузочную конфигурацию. И не обязательно делать это именно через командную строку. Сперва разбираемся с конфигурацией в меню UEFI. И если результатов нет, то переходим к следующему разделу.

Что Делать в UEFI Shell

Оказавшись в UEFI Shell, первым делом необходимо будет, на удивление, настроить цвета консоли и ее размер. Делается это для того, чтобы избавиться от нечитаемого синего текста на черном фоне. Изменение размера консоли, позволит отображать больше информации. Подправить внешний вид помогут команды cls и mode.

После настройки внешнего вида, необходимо будет просмотреть информацию о загрузочных записях. Эта информация позволит определить, какие загрузочные EFI-приложения должны грузиться, в какой последовательности, и на каких разделах они должны располагаться. Команда bcfg.

Последний шаг, это проверка вручную возможность загрузки с указанного EFI-приложения или диска.

Важным нюансом данного шага, является то, что необходимое EFI-приложение может присутствовать. Но может отсутствовать приложение которое запускается этим приложением. Или оно может быть повреждено.

К примеру, приложение /EFI/Boot/bootx64.efi, указанное в загрузочной записи, запускает /EFI/Microsoft/Boot/bootmgfw.efi, которое запускает приложение выполняющее запуск операционной системы с другого раздела /Windows/System32/Boot/winload.efi.

Если же загрузочная запись указывает просто на диск, то при загрузке с такой записи, на указанном накопителе будет производиться поиск загрузочного EFI-раздела, и в случае его нахождения, поиск на нем загрузочного EFI-приложения по умолчанию (

/efi/boot/boot*.efi

).

Для такой записи необходимо проверить наличие на диске EFI-раздела, и EFI-приложения расположенного в папке /EFI/boot/. В этом помогут команды map, cd и dir.

Вводим Команды

Все последующие операции будут производиться на виртуальной машине VirtualBox. На виртуальный диск которой, установлено две операционные системы, Windows 10 и Ubuntu 18.10. В качестве основного загрузчика используется GRUB2. Загрузчик Windows Boot Manager, так же присутствует, но не используется.

Не лишним будет, перед началом работы с UEFI Shell, ознакомиться с описанием данной командной оболочки, доступным по этой ссылке https://www.bootdev.ru/2018/05/EFI-Shell.html.

Настройка Консоли

Зададим параметры цвета фона и текста оболочки UEFI Shell. Оптимальными для читабельности, на мой взгляд, являются цвета — серый для фона, и черный для текста.

cls 7 0

Доступные варианты цветов можно посмотреть в справке по команде.

cls -? -b

Размер консоли задается командой mode. Сперва вводим данную команду без каких либо аргументов, чтобы определить доступные разрешения консоли.

А уже после, с указанием нужного разрешения.

mode 128 40

Вывод Загрузочных Записей

Любую проблему загрузки, нужно начинать с анализа загрузочных записей. Выведем список текущих записей.

bcfg boot dump

Текущая загрузочная конфигурация состоит из трех записей.

Запись 0 — загрузка с дисковода.
Запись 1 — загрузка с жесткого диска.
Запись 2 — загрузка встроенной командной оболочки UEFI Shell.

Из присутствующих записей, только одна может осуществлять загрузку операционной системы, это запись под номером 1 (по факту вторая). Запоминаем номер диска и его тип из параметра DevPath.

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

Проверка Наличия EFI-раздела

Все распознанные дисковые (или блочные) устройства можно просмотреть командой map.

Вывод команды, представляет список точек монтирования FSx: и BLKx:, где x это номер.

Точки монтирования начинающиеся с префикса FS (File System), указывают на разделы или диски (в данном случае имеются в виду CD-диски) файловую систему которых подсистема UEFI смогла определить. То есть, с таким разделом/диском можно полноценно работать. Чтение, редактирование, создание, копирование, удаление, перемещение файлов и каталогов.

Точки монтирования начинающиеся с префикса BLK, это разделы или диски (в этом случае, подразумеваются любые диски), файловая система которых неизвестна UEFI. Или это точка монтирования многотомного диска, то есть она указывает на сам диск, а не на его разделы. Каждый раздел этого диска так же будет иметь свою точку монтирования.

Для понимания, ниже, на снимке экрана, отмечены все точки монтирования указывающие на диски (то есть доступ к данным начинается с первого сектора диска).

Все что не отмечено, это разделы отмеченных дисков.

Исключением из правила, что точки монтирования BLK не определяются, так же возможны. А возможны они если к примеру есть точка монтирования FS и BLK указывающие на один и тот же раздел/диск. Ниже, на снимке, отмечены таковые.

Теперь собственно ответ на вопрос, какой из указанных разделов или дисков может являться для подсистемы UEFI загрузочным, то есть может быть EFI-разделом. Таким может быть любая FSx: точка монтирования. Здесь логика проста, если UEFI может прочитать содержимое указанной точки монтирования, то значит возможен поиск загрузчика по умолчанию (тот что располагается в папке /efi/boot/).

В предыдущем разделе, при просмотре загрузочных записей, мы выяснили что загрузочным диском является диск

Sata(0x0, 0x0, 0x0)

. К данному диску относятся следующие записи, отмеченные на снимке ниже.

Понятной в плане файлового доступа, на уровне UEFI, является лишь запись — FS0:. Эта точка монтирования в данном случае, является загрузочным EFI-разделом (по крайней мере для подсистемы UEFI).

Что было бы, если доступных разделов было бы больше одного. При условии что загрузочная запись указывает на диск в целом. В этом случае, загрузка проходила бы в порядке очереди следования разделов. До момента, пока не будет обнаружено *.efi приложение запускаемое по умолчанию. Нам, в этом случае, пришлось бы проверять каждый на наличие соответствующих загрузочных файлов.

Проверка Наличия EFI-приложения

Определившись с разделом, который может выступать в качестве загрузочного, необходимо проверить наличие на нем соответствующих загрузочных файлов. Из прошлого раздела, мы выяснили, что в качестве такого может выступать раздел смонтированный под меткой FS0.

Для удобства восприятия, далее по тексту, метки точек монтирования, я буду называть дисками. По аналогии с дисками операционной системы Windows, буква после которой идет знак двоеточия. UEFI Shell в этом плане, как раз копирует, по своим повадкам в большей степени, именно командную оболочку Windows CMD.

Выполним переход на диск FS0.

FS0:

Приглашение ввода команд изменится, и будет отображать текущее ваше местоположение в файловой системе. На данный момент это корень диска FS0. Просмотрим его содержимое.

ls

В корне диска, присутствует только каталог EFI. Перейдем в данный каталог и посмотрим что в нем находится.

cd EFI
ls

Внутри каталога EFI находится три подкаталога Boot, Microsoft и ubuntu. Каталог Boot является в данном случае загрузочным по умолчанию. В нем располагаются загрузочные приложения boot*.efi, которые запускаются подсистемой UEFI автоматически. Просмотрим содержимое данного каталога.

ls Boot

Вывод команды показывает, что в каталоге Boot содержится три файла, один из которых bootx64.efi. Данный файл запускается подсистемой UEFI автоматически. Хочу обратить ваше внимание на цвета данных файлов, в выводе команды ls, они зеленые. Это говорит о том, что данные файлы являются исполняемыми, и их можно запустить вручную.

Если сейчас выполнить запуск файла bootx64.efi, то загрузится загрузчик GRUB2.

Bootbootx64.efi

Каталоги Microsoft и ubuntu, содержат файлы загрузчиков Windows Boot Manager и GRUB2 соответственно.

ls ubuntu
ls Microsoft

Для каталога Microsoft, основные файлы загрузчика располагаются в подкаталоге Boot.

ls MicrosoftBoot -b

Основной загрузчик на данный момент GRUB2. Это означает, что файл /EFI/Boot/bootx64.efi как то использует содержимое каталога /EFI/ubuntu/. Будь то запуск исполняемого файла, либо чтение файла конфигурации. Взглянем внимательно содержимое папок /EFI/Boot/ и /EFI/ubuntu/.

Обратите внимание на файлы shimx64.efi и bootx64.efi, а точнее на их размер. Думаю вы догадались, что данные файлы идентичны. А это означает что, файлу bootx64.efi нет смысла запускать свою копию. Остается два варианта, либо это файл grubx64.efi, что более очевидно исходя из имени файла, либо mmx64.efi. Запустим файл mmx64.efi, чтобы убедиться что это не то приложение.

ubuntummx64.efi

Ожидания подтвердились, открылся явно не загрузчик GRUB2.

Подведем промежуточный итог. Файл /EFI/Boot/bootx64.efi на само деле является файлом /EFI/ubuntu/shimx64.efi. Приложение /EFI/Boot/bootx64.efi при запуске, вызывает другое приложение, а именно /EFI/ubuntu/grubx64.efi. В последнем можно убедиться, просто переименовав файл /EFI/ubuntu/grubx64.efi, с последующей попыткой загрузки с данного диска.

Что полезного можно извлечь из этой информации? Самое важное, это то, что папка /EFI/ubuntu/ содержит полный набор файлов. Если вдруг по какой либо причине, оригинальный файл /EFI/Boot/bootx64.efi будет удален или поврежден, то его можно будет лего восстановить, простым копированием файла /EFI/ubuntu/shimx64.efi с последующим переименованием в bootx64.efi.

Такое поведение, характерно и для директории /EFI/Microsoft/Boot/. В ней так же содержится все необходимое. Роль файла /EFI/Boot/bootx64.efi будет исполнять /EFI/Microsoft/Boot/bootmgfw.efi. Который в свою очередь будет запускать файл /EFI/Microsoft/Boot/bootmgr.efi. То есть, выполнив такую подмену, вместо загрузчика GRUB2 будет запускаться Windows Boot Manager. Попробуем провести такую подмену.

# переименование текущего bootx64.efi
mv Bootbootx64.efi Bootbootx64.efi_

# копирование файла bootmgfw.efi в bootx64.efi
cp MicrosoftBootbootmgfw.efi Bootbootx64.efi

# просмотр полученного результата
ls Boot

Пробуем загрузиться.

Windows Boot Manager успешно запустился, и загрузил операционную систему Windows 10.

Чтобы вернуть на место загрузчик GRUB2, достаточно просто удалить (или переименовать) текущий файл /EFI/Boot/bootx64.efi, и переименовать /EFI/Boot/bootx64.efi_ к своему прежнему имени bootx64.efi.

# переходим в каталог Boot
cd Boot

# смотрим список файлов
ls

# удаляем текущий файл bootx64.efi (стартер загрузчика Windows)
rm bootx64.efi

# переименовываем обратно, то есть возвращаем на место файл загруpчика GRUB2
mv bootx64.efi_ bootx64.efi

# смотрим что получилось
ls

Добавление Загрузочных Записей

При обычных условиях, в моем примере с виртуальной машиной, происходит загрузка исполняемого файла по умолчанию /EFI/Boot/bootx64.efi. Этому способствует загрузочная запись указывающая на диск в целом.

bcfg boot dump

В прошлой главе, для того чтобы вернуть вместо загрузчика GRUB2 загрузчик Windows Boot Manager, приходилось производить файловые манипуляции. Переименование и подмена файла bootx64.efi. Точно такого же результата можно добиться просто добавив загрузочную запись, указывающей на нужный исполняемый файл необходимого загрузчика. Добавим ее.

# добавляем загрузочную запись в позицию 0, то есть на первое место
bcfg boot add 0 EFIMicrosoftBootbootmgfw.efi "Start Windows 10"

# смотрим текущую загрузочную конфигурацию
bcfg boot dump

Посмотрим на загрузочное меню, после добавление новой записи.

Аналогичным образом можно добавить запуск любой исполняемой программы *.efi. Теперь попробуем переместить добавленную запись. Или иначе говоря, изменить приоритет загрузки. Передвинем нашу запись на третье место.

# установка для записи 0 нового порядкового номера 2
bcfg boot mv 0 2

# вывод загрузочной конфигурации
bcfg boot dump

Взглянем на загрузочное меню.

И последнее что осталось сделать, это удалить добавленную запись.

# удаление записи под номером 2
bcfg boot rm 2

# вывод загрузочной конфигурации
bcfg boot dump

Смотрим загрузочное меню.

Загрузочная запись полностью удалена.

Важным нюансом является нумерация. Учтите что она начинается с нуля. То есть если речь идет о третей записи по списку, ее номер будет 2.

Итог

В данном материале были затронуты следующие вопросы: Что делать если вместо операционной системы загрузилась UEFI Shell? Как работать с UEFI Shell? Как работать с файлами в UEFI Shell? Как восстановить,  вернуть прежний загрузчик через UEFI Shell? Как определить загрузочный EFI-раздел? Как работать с загрузочными записями через UEFI Shell? Как добавить загрузочную запись UEFI Shell? Как изменить приоритет загрузочной записи через UEFI Shell? Как удалить загрузочную запись в UEFI Shell? Как выполнить запуск приложений EFI? Как загрузить операционную систему через UEFI Shell?

Думаю это не последняя статья на тему UEFI Shell. В следующих, мы поговорим о загрузке драйверов в UEFI Shell. И установке дополнительного загрузчика через UEFI Shell.

P.S. Некоторые цветовые схемы которые могу вам приглянуться cls 3 11, cls 7 0, cls 5 15.

Содержание

  1. Efi shell команды для запуска windows
  2. К омандн ая строк а Intel OS command prompt
  3. BootDev
  4. Страницы
  5. 2018-10-29
  6. UEFI Shell: Что делать если не загружается ОС
  7. Содержание
  8. Возможные Причины
  9. Что Делать в UEFI Shell
  10. Вводим Команды
  11. Настройка Консоли
  12. Вывод Загрузочных Записей
  13. Проверка Наличия EFI-раздела
  14. Проверка Наличия EFI-приложения
  15. Добавление Загрузочных Записей

Efi shell команды для запуска windows

UEFI (Unified Extensible Firmware Interface) is a standard interface for PCs between the computer’s firmware, hardware, and the operating system, designed to replace BIOS (basic input/output system).

32-bit UEFI: The tablets usually use the 32-bit version of UEFI.

32-битный UEFI: На планшетах обычно используется 32-битная версия UEFI.

Bootstrapping on EFI involves a boot manager that is built in to the firmware. The most common way to display the UEFI menu is to press ESC at boot
Начальная загрузка на EFI включает в себя менеджер загрузки, который встроен в прошивку. Самый распространенный способ для отображения меню UEFI это нажать ESC при загрузке.

DUET can boot from USB Flash Drive & HDD or CD drive on BIOS-based computer
DUET может загрузиться с USB Flash Drive & HDD или с CD диска на компьютере на основе BIOS

DUET

DUET can boot UEFI Shell, OS bootloader etc.
By default DUET boot EFI application named bootx64.efi stored in EFIBOOT folder.(Boot Manager menu item). If this file not present
From Boot Maintenance Manager menu item ==>> Boot Efi file you can browse media for run any apllication e.g. diskpart.efi.

DUET может загрузить оболочку UEFI, загрузчик ОС и т.д.
По умолчанию DUET загру жает EFI приложение с именем bootx64.efi, наход ящ е еся в папке EFIBOOT.(Пункт меню Boot Manager). Если этот файл отсутствует
и з пункта меню Boot Maintenance Manager (поддержка диспетчера загрузки) ==>> Boot Efi файл, вы можете просматривать носитель для запуска любого приложения например diskpart.efi.

instDUET

Copy EFI folder with renamed Shell to bootx64.efi and startup.nsh file to USB Flash Drive & boot from it.

Скопируйте папку EFI с переименованным Shell в bootx64.efi и файлом startup.nsh на флэшку и загрузитесь с нее.

• dir (or ls): lists directory contents

• Other commands for managing files & directories: cd, mkdir, move, rm (remove)

• exit: leaves the EFI shell and returns to DUET.

• map: Displays or defines mappings

• Screen commands: cls, echo

Startup script startup.nsh (analogue «Autoexec.bat»)
For the UEFI shell, if a file named startup.nsh is found in the efiboot path, it is automatically executed after the shell is loaded.

• dir (или ls): перечисляет содержимое каталога

• Другие команды для управления файлами и папками : cd, mkdir, move, rm (remove)

• help или?: Список команд Shell

• exit: покидает оболочку EFI и возвращается в DUET.

• map: отображает или определяет сопоставления

• Экран ные команды: echo cls

Стартовый сценарий startup.nsh (аналог “Autoexec.bat”)
Для UEFI shell, если файл с именем startup.nsh находится в папке efiboot, он автоматически выполняется после загрузки оболочки.

К омандн ая строк а Intel OS command prompt

To start Windows from the command line of efi shell, enter the external win command that runs the win.efi file. which is located in the efi boot tools folder
Для запуска Windows из командной строки efi shell введите внешнюю команду win, запускающую файл win.efi. который находится в папке efiboottool

UEFI Shell Features

• A UEFI 64-bit native Application Родное 64 бит Приложение UEFI
• Interactive Console Interface Интерактивный консольный интерфейс
• Programs Launch Запуск про грамм
• Load UEFI Drivers Загрузка UEFI драйверов
• Scripting Capability Возможность создания сценариев
• Automatic execution of startup script file Автоматическое выполнение файла сценария запуска (startup.nsh)
• Console redirection to files Перенаправление консоли в файлы

Доступ к разделам NTFS из UEFI можно получить несколькими способами :

автозагрузка драйвера в rEFInd autoload EFI drivers

UEFI B oot M anager s

Startup Menu:
rEFInd by Roderick W. Smithis a boot manager, meaning that it presents a menu of options to the user when the computer first starts up.
rEFInd load EFI drivers from drivers_x64 folder for filesystems or hardware devices not supported natively by your firmware.

Меню Загрузки :
rEFInd (автор: Родерик Смит) это менеджер загрузки, представля ющий меню для пользователя при запуске компьютера
rEFInd загружает драйверы из папки drivers_x64 для файловых систем или аппаратных устройств, изначально не поддерживаемых вашей прошивкой.

Источник

BootDev

Создание загрузочных дисков и прочие полезные мелочи

Страницы

2018-10-29

UEFI Shell: Что делать если не загружается ОС

Представим ситуацию, что по какой то причине, вместо обычной загрузки операционной системы, перед вами появилась командная строка UEFI Shell, с сообщением «Press ESC in 1 in seconds to skip staurtup.nsh or any other key to continue». Что делать?

scr 2018 10 29 011

Содержание

Возможные Причины

Загрузка в UEFI происходит согласно загрузочным записям. Если в BIOS данные записи представляли просто список имеющихся жестких дисков, то UEFI в данном плане действует по другой схеме. По умолчанию UEFI определяет все диски с таблицей разделов MBR и GPT, с последующим поиском на них разделов отформатированных в поддерживаемую файловую систему. Таковой является FAT(12, 16, 32). Данные диски попадают в загрузочный список. Приоритет загрузки данного списка можно конфигурировать через интерфейс UEFI, или с помощью командной оболочки UEFI Shell.

scr 2018 10 22 001

Каждая загрузочная запись может указывать либо просто на диск, в котором содержится соответствующий FAT-раздел, либо на конкретный *.efi файл. В первом случае UEFI будет искать загрузочный файл по умолчанию. Таковыми, к примеру, являются /EFI/boot/bootx64.efi, /EFI/boot/bootia32.efi, /EFI/boot/bootarm.efi или /EFI/boot/bootaa64.efi. В данном случае указаны файлы boot*.efi предназначены для разных архитектур ПК.

scr 2018 10 22 002

Исполняемые файлы boot*.efi выполняют запуск основного загрузчика операционной системы, таких как Windows Boot Manager, GRUB2, rEFInd, Clover, Xorboot и других. Загрузчик в свою очередь, уже выполняет запуск ядра операционной системы.

scr 2018 10 22 003

Учитывая все сказанное, можно сделать вывод. Раз перед нами красуется UEFI Shell, то значит подсистеме UEFI по какой то причине не удалось найти необходимый загрузочный *.efi файл. Он может быть поврежденным, или просто отсутствовать. Или как говорилось немного выше, может быть просто изменен приоритет загрузочных записей. И последний вариант, просто отсутствует необходимая загрузочная запись.

scr 2018 10 22 004

Что Делать в UEFI Shell

Последний шаг, это проверка вручную возможность загрузки с указанного EFI-приложения или диска.

Важным нюансом данного шага, является то, что необходимое EFI-приложение может присутствовать. Но может отсутствовать приложение которое запускается этим приложением. Или оно может быть повреждено.

К примеру, приложение /EFI/Boot/bootx64.efi, указанное в загрузочной записи, запускает /EFI/Microsoft/Boot/bootmgfw.efi, которое запускает приложение выполняющее запуск операционной системы с другого раздела /Windows/System32/Boot/winload.efi.

Если же загрузочная запись указывает просто на диск, то при загрузке с такой записи, на указанном накопителе будет производиться поиск загрузочного EFI-раздела, и в случае его нахождения, поиск на нем загрузочного EFI-приложения по умолчанию (/efi/boot/boot*.efi).

Вводим Команды

Все последующие операции будут производиться на виртуальной машине VirtualBox. На виртуальный диск которой, установлено две операционные системы, Windows 10 и Ubuntu 18.10. В качестве основного загрузчика используется GRUB2. Загрузчик Windows Boot Manager, так же присутствует, но не используется.

%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA%2B%25D1%258D%25D0%25BA%25D1%2580%25D0%25B0%25D0%25BD%25D0%25B0%2B%25D0%25BE%25D1%2582%2B2018 10 23%2B22 37 39

Не лишним будет, перед началом работы с UEFI Shell, ознакомиться с описанием данной командной оболочки, доступным по этой ссылке https://www.bootdev.ru/2018/05/EFI-Shell.html.

Настройка Консоли

scr 2018 10 27 005

Доступные варианты цветов можно посмотреть в справке по команде.

scr 2018 10 26 006

6qcBbJAOYScFJcLoVwfegIf

А уже после, с указанием нужного разрешения.

scr 2018 10 26 004

scr 2018 10 26 005

Вывод Загрузочных Записей

Любую проблему загрузки, нужно начинать с анализа загрузочных записей. Выведем список текущих записей.

scr 2018 10 26 007

Текущая загрузочная конфигурация состоит из трех записей.

Из присутствующих записей, только одна может осуществлять загрузку операционной системы, это запись под номером 1 (по факту вторая). Запоминаем номер диска и его тип из параметра DevPath.

scr 2018 10 27 001

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

Проверка Наличия EFI-раздела

scr 2018 10 27 002

Вывод команды, представляет список точек монтирования FS x : и BLK x :, где x это номер.

scr 2018 10 27 008

Точки монтирования начинающиеся с префикса FS (File System), указывают на разделы или диски (в данном случае имеются в виду CD-диски) файловую систему которых подсистема UEFI смогла определить. То есть, с таким разделом/диском можно полноценно работать. Чтение, редактирование, создание, копирование, удаление, перемещение файлов и каталогов.

Точки монтирования начинающиеся с префикса BLK, это разделы или диски (в этом случае, подразумеваются любые диски), файловая система которых неизвестна UEFI. Или это точка монтирования многотомного диска, то есть она указывает на сам диск, а не на его разделы. Каждый раздел этого диска так же будет иметь свою точку монтирования.

Для понимания, ниже, на снимке экрана, отмечены все точки монтирования указывающие на диски (то есть доступ к данным начинается с первого сектора диска).

scr 2018 10 27 009

Все что не отмечено, это разделы отмеченных дисков.

Исключением из правила, что точки монтирования BLK не определяются, так же возможны. А возможны они если к примеру есть точка монтирования FS и BLK указывающие на один и тот же раздел/диск. Ниже, на снимке, отмечены таковые.

scr 2018 10 27 007

Теперь собственно ответ на вопрос, какой из указанных разделов или дисков может являться для подсистемы UEFI загрузочным, то есть может быть EFI-разделом. Таким может быть любая FSx: точка монтирования. Здесь логика проста, если UEFI может прочитать содержимое указанной точки монтирования, то значит возможен поиск загрузчика по умолчанию (тот что располагается в папке /efi/boot/).

В предыдущем разделе, при просмотре загрузочных записей, мы выяснили что загрузочным диском является диск Sata(0x0, 0x0, 0x0). К данному диску относятся следующие записи, отмеченные на снимке ниже.

scr 2018 10 27 010

scr 2018 10 27 011

Что было бы, если доступных разделов было бы больше одного. При условии что загрузочная запись указывает на диск в целом. В этом случае, загрузка проходила бы в порядке очереди следования разделов. До момента, пока не будет обнаружено *.efi приложение запускаемое по умолчанию. Нам, в этом случае, пришлось бы проверять каждый на наличие соответствующих загрузочных файлов.

Проверка Наличия EFI-приложения

Определившись с разделом, который может выступать в качестве загрузочного, необходимо проверить наличие на нем соответствующих загрузочных файлов. Из прошлого раздела, мы выяснили, что в качестве такого может выступать раздел смонтированный под меткой FS0.

scr 2018 10 27 012

Для удобства восприятия, далее по тексту, метки точек монтирования, я буду называть дисками. По аналогии с дисками операционной системы Windows, буква после которой идет знак двоеточия. UEFI Shell в этом плане, как раз копирует, по своим повадкам в большей степени, именно командную оболочку Windows CMD.

Выполним переход на диск FS0.

scr 2018 10 27 013

Приглашение ввода команд изменится, и будет отображать текущее ваше местоположение в файловой системе. На данный момент это корень диска FS0. Просмотрим его содержимое.

scr 2018 10 27 014

В корне диска, присутствует только каталог EFI. Перейдем в данный каталог и посмотрим что в нем находится.

scr 2018 10 27 015

Внутри каталога EFI находится три подкаталога Boot, Microsoft и ubuntu. Каталог Boot является в данном случае загрузочным по умолчанию. В нем располагаются загрузочные приложения boot*.efi, которые запускаются подсистемой UEFI автоматически. Просмотрим содержимое данного каталога.

scr 2018 10 27 016

Вывод команды показывает, что в каталоге Boot содержится три файла, один из которых bootx64.efi. Данный файл запускается подсистемой UEFI автоматически. Хочу обратить ваше внимание на цвета данных файлов, в выводе команды ls, они зеленые. Это говорит о том, что данные файлы являются исполняемыми, и их можно запустить вручную.

Если сейчас выполнить запуск файла bootx64.efi, то загрузится загрузчик GRUB2.

scr 2018 10 27 018

scr 2018 10 27 017

Каталоги Microsoft и ubuntu, содержат файлы загрузчиков Windows Boot Manager и GRUB2 соответственно.

scr 2018 10 27 019

Для каталога Microsoft, основные файлы загрузчика располагаются в подкаталоге Boot.

scr 2018 10 27 020

Основной загрузчик на данный момент GRUB2. Это означает, что файл /EFI/Boot/bootx64.efi как то использует содержимое каталога /EFI/ubuntu/. Будь то запуск исполняемого файла, либо чтение файла конфигурации. Взглянем внимательно содержимое папок /EFI/Boot/ и /EFI/ubuntu/.

scr 2018 10 27 021

Обратите внимание на файлы shimx64.efi и bootx64.efi, а точнее на их размер. Думаю вы догадались, что данные файлы идентичны. А это означает что, файлу bootx64.efi нет смысла запускать свою копию. Остается два варианта, либо это файл grubx64.efi, что более очевидно исходя из имени файла, либо mmx64.efi. Запустим файл mmx64.efi, чтобы убедиться что это не то приложение.

scr 2018 10 28 001

Ожидания подтвердились, открылся явно не загрузчик GRUB2.

Подведем промежуточный итог. Файл /EFI/Boot/bootx64.efi на само деле является файлом /EFI/ubuntu/shimx64.efi. Приложение /EFI/Boot/bootx64.efi при запуске, вызывает другое приложение, а именно /EFI/ubuntu/grubx64.efi. В последнем можно убедиться, просто переименовав файл /EFI/ubuntu/grubx64.efi, с последующей попыткой загрузки с данного диска.

Что полезного можно извлечь из этой информации? Самое важное, это то, что папка /EFI/ubuntu/ содержит полный набор файлов. Если вдруг по какой либо причине, оригинальный файл /EFI/Boot/bootx64.efi будет удален или поврежден, то его можно будет лего восстановить, простым копированием файла /EFI/ubuntu/shimx64.efi с последующим переименованием в bootx64.efi.

Такое поведение, характерно и для директории /EFI/Microsoft/Boot/. В ней так же содержится все необходимое. Роль файла /EFI/Boot/bootx64.efi будет исполнять /EFI/Microsoft/Boot/bootmgfw.efi. Который в свою очередь будет запускать файл /EFI/Microsoft/Boot/bootmgr.efi. То есть, выполнив такую подмену, вместо загрузчика GRUB2 будет запускаться Windows Boot Manager. Попробуем провести такую подмену.

scr 2018 10 28 002

scr 2018 10 28 004

scr 2018 10 28 005

scr 2018 10 28 006

Windows Boot Manager успешно запустился, и загрузил операционную систему Windows 10.

Чтобы вернуть на место загрузчик GRUB2, достаточно просто удалить (или переименовать) текущий файл /EFI/Boot/bootx64.efi, и переименовать /EFI/Boot/bootx64.efi_ к своему прежнему имени bootx64.efi.

scr 2018 10 29 002

Добавление Загрузочных Записей

При обычных условиях, в моем примере с виртуальной машиной, происходит загрузка исполняемого файла по умолчанию /EFI/Boot/bootx64.efi. Этому способствует загрузочная запись указывающая на диск в целом.

scr 2018 10 29 001

В прошлой главе, для того чтобы вернуть вместо загрузчика GRUB2 загрузчик Windows Boot Manager, приходилось производить файловые манипуляции. Переименование и подмена файла bootx64.efi. Точно такого же результата можно добиться просто добавив загрузочную запись, указывающей на нужный исполняемый файл необходимого загрузчика. Добавим ее.

scr 2018 10 29 005

Посмотрим на загрузочное меню, после добавление новой записи.

scr 2018 10 29 006

Аналогичным образом можно добавить запуск любой исполняемой программы *.efi. Теперь попробуем переместить добавленную запись. Или иначе говоря, изменить приоритет загрузки. Передвинем нашу запись на третье место.

scr 2018 10 29 007

Взглянем на загрузочное меню.

scr 2018 10 29 008

И последнее что осталось сделать, это удалить добавленную запись.

scr 2018 10 29 009

Смотрим загрузочное меню.

scr 2018 10 29 010

Загрузочная запись полностью удалена.

Важным нюансом является нумерация. Учтите что она начинается с нуля. То есть если речь идет о третей записи по списку, ее номер будет 2.

В данном материале были затронуты следующие вопросы: Что делать если вместо операционной системы загрузилась UEFI Shell? Как работать с UEFI Shell? Как работать с файлами в UEFI Shell? Как восстановить, вернуть прежний загрузчик через UEFI Shell? Как определить загрузочный EFI-раздел? Как работать с загрузочными записями через UEFI Shell? Как добавить загрузочную запись UEFI Shell? Как изменить приоритет загрузочной записи через UEFI Shell? Как удалить загрузочную запись в UEFI Shell? Как выполнить запуск приложений EFI? Как загрузить операционную систему через UEFI Shell?

Думаю это не последняя статья на тему UEFI Shell. В следующих, мы поговорим о загрузке драйверов в UEFI Shell. И установке дополнительного загрузчика через UEFI Shell.

Источник

Содержание

      • 0.0.1 К омандн ая строк а Intel OS command prompt
  • 1 Intel Tianocore OS:
  • 2 Site map
    • 2.1 Download page

При установке Windows® на компьютер на базе EFI необходимо включить режим EFI в микропрограмме ПК как при ручной, так и при автоматической установке. Необходимо загрузиться в 64-разрядном режиме EFI с предустановочного диска (64-разрядная версия среды предустановки Windows или 64-разрядная версия программы установки Windows в режиме EFI). Windows невозможно установить на компьютеры на базе UEFI, в режиме BIOS. (Дополнительные сведения о переключении режимов см. в документации по микропрограммам EFI.) Шаги, приведенные в данном разделе, служат только для справки и могут не соответствовать определенным командам вашего типа микропрограмм EFI.

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

  1. Установите Windows, запустив установку Windows с записи загрузки EFI на компьютере-образце. Используйте оболочку EFI или меню микропрограммы Boot from file (Загрузка из файла), чтобы запустить загрузчик Windows EFI с установочного диска. Дополнительные сведения см. в документации по микропрограммам.

В оболочке EFI выберите устройство с установочным диском Windows и запустите приложение загрузки EFI. Предполагая, что fs0 — это устройство DVD, используйте следующие команды для компьютеров архитектуры x64:

Для компьютеров с архитектурой Itanium используйте следующую команду:

Если диспетчер загрузки EFI поддерживает загрузку с DVD-диска, то командная оболочка EFI не требуется. Можно загрузить DVD-диск непосредственно из диспетчера загрузки EFI.

При необходимости нажмите любую клавишу для загрузки с DVD-диска Windows. Windows устанавливается на компьютер.

Примечание.

При загрузке среды предустановки Windows с компакт-диска или DVD-диска можно пропустить приглашение «Нажмите любую клавишу для загрузки с компакт-диска или DVD-диска» и загрузиться напрямую в данную среду. Для архитектур x86 и AMD64 удалите файл Bootfix.bin из своего пользовательского образа среды предустановки Windows. Для компьютеров с архитектурой Itanuim при создании образа со средой предустановки Windows для своих клиентов используйте файл Efisys_noprompt.bin вместо файла Efisys.bin.

При выполнении ручной установки, следуйте подсказкам пользовательского интерфейса, чтобы завершить установку Windows.

При необходимости можно выполнить автоматическую установку, используя файл Autounattend.xml, хранящийся на USB-устройстве флэш-памяти или ином устройстве. Требования к файлу ответов для компьютеров на базе EFI см. в разделе Создание разделов жесткого диска на базе UEFI с помощью диспетчера установки Windows.

Примечание.

Некоторые платформы EFI поддерживают как микропрограммы UEFI, так и микропрограммы BIOS. На некоторых из этих систем не всегда ясно, какой вариант загрузки с DVD-диска стоит по умолчанию — EFI или BIOS. В этих системах может потребоваться использование командной оболочки EFI. Можно использовать стандартную запись загрузки микропрограмм для BIOS, если запись загрузки EFI не используются для запуска установки Windows. Если установка Windows запускается в режиме BIOS в комбинированной системе EFI/BIOS, то разделы ESP и MSR не создаются. После завершения установки Windows, используйте команду Diskpart чтобы проверить, что разделы ESP и MSR были созданы.

После того, как Windows установлена на компьютер, завершите остальные задачи по настройке.

Из командной строки запустите sysprep, чтобы подготовить образ Windows для создания образов и развертывания. Например:

После завершения работы программы Sysprep завершается забота компьютера.

UEFI (Unified Extensible Firmware Interface) is a standard interface for PCs between the computer’s firmware, hardware, and the operating system, designed to replace BIOS (basic input/output system).

UEFI ( Унифицированный расширяемый интерфейс микропрограмм ) — стандартный интерфейс между прошивкой ПК , аппаратн ым обеспечени ем и операционной системой, предназначен для замены BIOS (базовая система ввода / вывода).

32-bit UEFI: The tablets usually use the 32-bit version of UEFI.

32-битный UEFI: На планшетах обычно используется 32-битная версия UEFI.

UEFI knows how to read a GPT — GU > & FAT 3 2 filesystem format

UEFI знает как читать GPT — таблица разделов GUID (глобальный уникальный идентификатор) и понимает формат файловой системы FAT & FAT32

Bootstrapping on EFI involves a boot manager that is built in to the firmware. The most common way to display the UEFI menu is to press ESC at boot
Начальная загрузка на EFI включает в себя менеджер загрузки, который встроен в прошивку. Самый распространенный способ для отображения меню UEFI это нажать ESC при загрузке.

Boot loaders for operating systems are stored in the EFI system partition formatted with the FAT32(FAT) filesystem — ESP . For Windows NT6x, the EFI boot loader is EFIMicrosoftBootBootmgfw.efi, which is the Microsoft Boot Manager — another Windows boot manager, configuration file: EFI Microsoft Boot BCD. Bootmgfw.efi like Bootmgr handles the boot.ini file in the root directory and can be run only memtest.efi — Microsoft Windows Memory Diagnostics Tool, unlike Bootmgr.exe runs directly ntldr, windiag & setupldr.bin.

Загрузчики операционных систем хранятся в системном разделе EFI форматированным в FAT32 — ESP. Для Windows NT6x, EFI загрузчик EFIMicrosoftBootBootmgfw.efi, который является диспетчером загрузки Microsoft — менеджер загрузки Windows, файл конфигурации EFIMicrosoftBootB CD. Bootmgfw.efi подобно Bootmgr обрабатывает файл boot.ini расположенный в корневом каталоге и может запустить только memtest.efi — Microsoft Windows Memory Diagnostics Tool, в отличии от Bootmgr запускающий непосредственно ntldr, windiag & setupldr.bin.

DUET — Intel(R) Platform Developer’s UEFI Emulation .
DUET — UEFI эмуляция для разработчиков Intel (R) платформы.

DUET provides an UEFI X64 environment on legacy BIOS.
DUET обеспечивает среду UEFI X64 на BIOS компьютерах, заменяя вс троенный в прошивку UEFI менеджер загрузки .

DUET can boot from USB Flash Drive & HDD or CD drive on BIOS-based computer
DUET может загрузиться с USB Flash Drive & HDD или с CD диска на компьютере на основе BIOS

DUET can boot UEFI Shell, OS bootloader etc.
By default DUET boot EFI application named bootx64.efi stored in EFIBOOT folder.(Boot Manager menu item). If this file not present
From Boot Maintenance Manager menu item ==>> Boot Efi file you can browse media for run any apllication e.g. diskpart.efi.

DUET может загрузить оболочку UEFI, загрузчик ОС и т.д.
По умолчанию DUET загру жает EFI приложение с именем bootx64.efi, наход ящ е еся в папке EFIBOOT.(Пункт меню Boot Manager). Если этот файл отсутствует
и з пункта меню Boot Maintenance Manager (поддержка диспетчера загрузки) ==>> Boot Efi файл, вы можете просматривать носитель для запуска любого приложения например diskpart.efi.

Based on Tianocore UEFI DUET installer (TianoCore — public part of reference UEFI implementation by Intel) and USB_Boot from KolibriOS my DUET installation on USB Flash Drive formated in FAT32 for DOS is very simple. Unpack 7-zip archive in any folder, run instDUET.exe and double click selected drive

Основанная на Tianocore UEFI DUET installer ( TianoCore — Открытая часть реализации UEFI на Intel ) и USB_Boot из KolibriOS моя у становка DUET на отформатированный под DOS в FAT32 USB флэш очень проста.Распакуйте 7-zip-архив в любую папку, запуститите instDUET.exe и дважды щелкните выбранный диск

Copy EFI folder with renamed Shell to bootx64.efi and startup.nsh file to USB Flash Drive & boot from it.

Скопируйте папку EFI с переименованным Shell в bootx64.efi и файлом startup.nsh на флэшку и загрузитесь с нее.

• dir (or ls): lists directory contents

• Other commands for managing files & directories: cd, mkdir, move, rm (remove)

• help or ?: Command List in Shell

• exit: leaves the EFI shell and returns to DUET.

• map: Displays or defines mappings

• Screen commands: cls, echo

UEFI is a new OS, it is the new DOS, the UEFI Shell is the new command.com. UEFI shell is usually installed in the ESP partition, or directly in the firmware UEFI — built-in efi shell.

Note: commands are very similar (often identical) to DOS commands. For most commands, EFI does not care about capitalization. However EFI can be case sensitive for file paths and names.
Many (all?) commands support the option –b for paging output. Use ? command or command -? for obtain a description of command

Startup script startup.nsh (analogue «Autoexec.bat»)
For the UEFI shell, if a file named startup.nsh is found in the efioot path, it is automatically executed after the shell is loaded.

• dir (или ls): перечисляет содержимое каталога

• Другие команды для управления файлами и папками : cd, mkdir, move, rm (remove)

• help или?: Список команд Shell

• exit: покидает оболочку EFI и возвращается в DUET.

• map: отображает или определяет сопоставления

• Экран ные команды: echo cls

UEFI является новой ОСью , это новый DOS , UEFI Shell это новый command.com . UEFI shell обычно установлен в разделе ESP или прямо в прошивке UEFI — built-in efi shell.

Примечание: набор команд efi shell очень похож (часто идентичен) на команд ы для DOS. Для большинства команд shell не за висит о т заглавных букв .
Однако shell может быть чувствителен к регистру букв для файловых путей и имен. Многие команды (все?) поддерживают параметр –b для постраничного вывода.
Используйте ? команда или команда — ? для получения ее описания .

Стартовый сценарий startup.nsh (аналог “Autoexec.bat”)
Для UEFI shell, если файл с именем startup.nsh находится в папке efioot, он автоматически выполняется после загрузки оболочки.

К омандн ая строк а Intel OS command prompt

To start Windows from the command line of efi shell, enter the external win command that runs the win.efi file. which is located in the efi boot tools folder
Для запуска Windows из командной строки efi shell введите внешнюю команду win, запускающую файл win.efi. который находится в папке efioot ool

UEFI Shell Features

• A UEFI 64-bit native Application Родное 64 бит Приложение UEFI
• Interactive Console Interface Интерактивный консольный интерфейс
• Programs Launch Запуск про грамм
• Load UEFI Drivers Загрузка UEFI драйверов
• Scripting Capability Возможность создания сценариев
• Automatic execution of startup script file Автоматическое выполнение файла сценария запуска (startup.nsh)
• Console redirection to files Перенаправление консоли в файлы

UEFI & NTFS access

Доступ к разделам NTFS из UEFI можно получить несколькими способами :

загрузка драйвера с помощью shell — load fs0:efi oolsNTFS.efi

автозагрузка драйвера в rEFInd autoload EFI drivers

загрузка с флешки раздела NTFS из UEFI — UEFI:NTFS — Boot NTFS partitions from EFI — booting an USB Windows NTFS installation media by Pete Batard

External Commands : mode, edit, hexedit, comp, etc. (the binary files of those applications which haven’t been contained in Minimum Shell ) should be placed in the tools folder .
In addition you can put on a USB flash drive Microsoft EFI Utilities : Diskpart (Disk partitioning utility), Efifmt (EFI Format utility) and Efichk (EFI Check Disk utility) or Extras (by Keshav Padram Amburay).
GPT fdisk for EFI by Rod Smith is a program for creation newer Globally Unique Identifier (GUID) Partition Table (GPT)

Внешние команды : mode, edit, hexedit, comp, и т.д. .. (двоичные файлы приложений, которые не были включены в Минимальный Shell) должны быть помещены в папку tools
Кроме того вы можете поместить на USB флэш- диск Microsoft EFI утилиты : Diskpart (Утилита разбиения диска на разделы), Efifmt (EFI формат Утилита) и Efichk (EFI Проверка диска утилита), или Extras (Keshav Padram Amburay),
GPT fdisk для UEFI (автор: Родерик Смит) программа для создания таблицы разделов в новом формате GPT

Startup Menu:
rEFInd by Roderick W. Smithis a boot manager, meaning that it presents a menu of options to the user when the computer first starts up.
rEFInd load EFI drivers from drivers_x64 folder for filesystems or hardware devices not supported natively by your firmware.

Меню Загрузки :
rEFInd (автор: Родерик Смит) это менеджер загрузки, представля ющий меню для пользователя при запуске компьютера
rEFInd загружает драйверы из папки drivers_x64 для файловых систем или аппаратных устройств, изначально не поддерживаемых вашей прошивкой.

rEFInd — Main Menu
Boot Microsoft EFI boot from DUET
Boot Tetris x64 from DUET
Boot UEFImark from DUET
Start EFI Shell
Start Memory test utility at EFI oolsmemtest86.efi on DUET
Reboot Computer
Exit rEFInd
Use arrow keys to move cursor; Enter to boot;
Insert or F2 for more options; Esc to refresh

Another boot manager: gummiboot by Rod Smith is a very simple boot manager, it has no GUI, it’s a text-mode program.
Другой менеджер загрузки: systemd-boot UEFI Boot Manager (ранее назывался gummiboot) Род Смита — это очень простой UEFI менеджер загрузки, он не имеет графического интерфейса, это программа в текстовом режиме.

Windows loader

UEFI Shell

Diagnostics:
You can use HP PC Hardware Diagnostics (UEFI), even if the computer does not open to Windows or «Dell 64 Bit uEFI Diagnostics» , «Lenovo UEFI Diagnostics» (runs only on Lenovo systems and have recover bad sectors tool) — Search by Google , . AMIDiag for UEFI (Supports legacy BIOS with DUET) is available only to OEM/ODM customers.
Special diagnostic tools : CheckUSB 3.0 and UEFImark by Ilya Manusov , measuring speed of record in video memory and inferring information on graphical possibilities of system, James Wang (American Megatrends Inc. Taiwan) develops RU.EFI — Universal Chipset Reading. PassMark Software Memory Diagnostic Tool Microsoft memtest.efi not working in native 64x UEFI Intel Processor Diagnostic Tool for UEFI The purpose of the Intel® Processor Diagnostic Tool (IPDT) is to verify the functionality of an Intel® microprocessor. McAfee UEFI testing tool to verify if your tablet responds to the touch interface — pointertest.efi

Диагностика:
Вы можете использовать HP PC Hardware Diagnostics (UEFI) , даже если ОС Windows не запускается или воспользовавшись Поиск в Google «Dell 64 Bit uEFI Diagnostics» , «Lenovo UEFI Diagnostics » (работает только на системах Lenovo и имеет инструмент восстанавления плохих секторов ) , AMIDiag для UEF I (Поддержка BIOS с DUET) доступна только для клиентов OEM / ODM .
Специальные диагностические утилиты:
CheckUSB 3.0 и UEFImark , Ильи Манусова измеряющая скорость записи в видео память и выводящая информацию о графических возможностях видео системы и сведения об архитектуре процессора представит графические возможности ДОС 64-бит. RU.EFI — Универсальный Считыватель Чипсетов(наборов микросхем) — разрабатывает James Wang (American Megatrends Inc. Taiwan) . PassMark Software MemTest86 — EFI диагностика памяти, Microsoft memtest.efi не работает в родной среде 64x UEFI. Intel Processor Diagnostic Tool for UEFI — Диагностический инструмент Intel процессоров ® (IPDT) предназначен для проверки функциональности микропроцессоров Intel. McAfee UEFI инструмент тестирования для проверки сенсорного интерфейса ваш его планшета

Легендарный Тетрис Алексея Пажитнова 64 бит реализация UEFI Илья Манусов a.k. a icbook. Legendary Tetris b y Alexey Pajitnov 64 bit UEFI implementation by Ilya Manusov a.k.a. icbook.

Other UEFI utilities:

Другие UEFI утилиты:

Получатель ключа Microsoft Windows из UEFI Shell, включенный в персональный проект UEFI Rescue DVD разработчик а Finnbarr P. Murphy
Супер GRUB2 диск EFI x86_64 автономная версия, поможет вам загрузиться в большинство операционных систем (ОС), даже если вы не можете загрузиться в них обычным способом
Отладчик UEFI x64 AMD64

UEFI is a real mini-operating system with kernel embedded in hardware — Firmware or software kernel — DUET.

UEFI — это самая настоящая мини операционная система c ядром встроенным прошивку или программным — DUET

Intel Tianocore OS:

• ядро(kernel) совмещенное с bootmanager = efildr20
• пользовательское меню
• командный процессор shellx64, переименованный minishell для дискет ы Tianocore_UEFI_DUET_Builds автор Keshav Padram Amburay ,
• основные дисковые утилиты
• диагностика

DUET.imz образ дискеты 1.44

• efildr переименован в DUET — renamed efildr
• поддержка SATA support

extracted from Clover EFI bootloader project by Sergey Isakov a.k.a Slice with S ATA & mouse support
DUET.ISO извлеченный из проекта загрузчик EFI клевер цвета хаки разработчик Сергей Исаков (Sergey Slice) с поддержкой SATA и мыши

The EFI boot process by Jonathan de Boyne Pollard

About the Copyright: In accordance with Title 17 U.S.C. Section 107, the material on this page is distributed without profit to those who have expressed a prior interest in receiving the included information for research, criticism, news reporting and comment purposes.

Site map

Download page

ashumov.vagif rambler.ru

MultiBoot.Ru 2007-20 20

Автор: STRIDER · Опубликовано 05.01.2018 · Обновлено 17.03.2018

Добрый день! В этой статье я расскажу о восстановлении UEFI запуска Windows 8/8.1/10, а так же о том что же такое UEFI. Поехали!

Вспомните те времена, когда BIOS был 16-битным с адресным пространством в 1 Мб, а вся информация о загрузчиках писалась в MBR? Это были насколько помню 1990 годы. И все было неизменным, менялись только характеристики оборудования. Но развитие серверов и технологий толкнули Intel к разработке EFI.

Изначально EFI создавалась для первых систем Intel-HP Itanium в середине 1990-х годов. Ограничения PC-BIOS были, очевидно, недопустимы в больших серверных платформах, для использования в которых планировался Itanium. После того как Intel передала разработку UEFI Forum (альянс AMD, American Megatrends, ARM, Apple, Dell, Hewlett Packard Enterprise, HP Inc., IBM, Insyde Software, Intel, Lenovo, Microsoft, Phoenix Technologies). 7 января 2007 года была выпущена первая версия универсальной платформы UEFI 2.1. И впервые на смену пришли более гибкие технологии: UEFI (замена BIOS), и GPT (замена MBR).

Терминология

UEFI (Unified Extensible Firmware Interface, Единый расширяемый интерфейс прошивки). В отличие от 16-битного BIOS’а UEFI работает в 32- или 64-битном режиме, что позволяет использовать намного больше памяти для сложных процессов.

MBR («Master Boot Record» — основная загрузочная запись) использует 32-битные идентификаторы для разделов, которые размещаются в очень маленьком кусочке пространства (64 байта) в самом начале диска (в конце первого сектора диска). Из-за такого маленького объёма поддерживаются только четыре первичных раздела. Поскольку используется 32-битная адресация, то каждый раздел может быть не более 2,2 ТБ. Кроме того, загрузочная запись не имеет никакой запасной MBR, так что если приложение перезапишет основную загрузочную запись, то вся информация о разделах будет потеряна.

GPT («GUID Partition table» — таблица разделов GUID) использует уже 64-битные идентификаторы для разделов, поэтому кусочек пространства, в котором сохраняется информация о разделах, уже больше чем 512 байт, кроме того, не существует ограничения на количество разделов. Заметьте, ограничение на размер раздела в этом случае почти 9,4 ЗБ (да-да, вы всё прочитали правильно — зеттабайт, единичка с двадцатью одним нулём!). А в конце диска имеется копия GPT, которая может использоваться для восстановления повреждённой основной таблицы разделов в начале диска.

Как происходит загрузка в UEFI?

С GPT-раздела с идентификатором EF00 и файловой системой FAT32, по умолчанию загружается и запускается файл efiootoot[название архитектуры].efi, например: efiootootx64.efi.
То есть чтобы, например, создать загрузочную флешку с Windows, достаточно просто разметить флешку в GPT, создать на ней активный FAT32-раздел и скопировать все файлы с компакт-диска с дистрибутивом операционной системы
Пример создания GPT диска в Linux:

  • gdisk: создать раздел, указав тип EFI System (EFI System в fdisk или ef00 в gdisk). Затем отформатировать его в файловую систему FAT32 командой mkfs.fat -F32 /dev/ ;
  • GNU Parted: создать раздел FAT32 и затем установить (активировать) загрузочный флаг (но не флаг legacy_boot) на этот раздел.

Также в большинстве реализаций UEFI возможна загрузка в режиме совместимости с диска с разметкой MBR.

Менеджер загрузки

Менеджер загрузки EFI используется для выбора и загрузки ОС, исключая потребность в специализированном механизме загрузки (загрузчик ОС является приложением EFI). То есть сам загрузчик к которому мы так сильно привыкли, ни куда не делся. Он теперь универсальный для всех операционных систем и находится в ПЗУ основной прошивки системной платы (где раньше был BIOS). И для того что бы загрузить нужную нам операционную систему, нужно всего лишь загрузочный файл с расширением .efi на загрузочном разделе. Теперь нет надобности в загрузочной записи в MBR, вот и все!

Восстанавливаем запуск

Чтобы восстановить конфигурацию загрузчика (BCD), необходимо загрузится с оригинального установочного DVD диска с Windows 8
(или диска восстановления, или специально подготовленной загрузочной флешки)
и открыть окно командной строки: выбрав Восстановление системы -> Диагностика -> Командная строка (System Restore – > Troubleshoot-> Command Prompt ),
или нажав комбинацию клавиш Shift + F10 .

В открывшейся командной строке вводим последовательно:

diskpart

list volume

Выберите загрузочный раздел (100mb, и файловая система у него FAT32)

select volume 3

format fs=fat32 (форматируем загрузочный раздел, перед копированием новых загрузочных файлов).

assign letter=Z (присваиваем букву Z этому разделу).

exit (выходим из Diskpart)

bcdboot C:Windows /s Z: /f ALL (где С: — диск с файлами Windows, Z: — буква, которую мы присвоили скрытому разделу).

Если у вас несколько OC Windows , повторите команду для второй копии (с новым расположением файлов).

diskpart

list volume

select volume N (номер скрытого раздела, которому мы присваивали букву)

remove letter=Z (удаляем букву, чтобы том не отображался в системе, когда мы перезагрузимся).

exit (выходим из diskpart).

Перезагружаемся, извлекаем все носители. И грузимся в обычном режиме. Если все сделано правильно, система начнет загрузку.

Можно ли обновить мой BIOS на UEFI?
Не совсем. UEFI нельзя прошить вместо BIOS, поскольку он занимает гораздо больше памяти. Но существует такая штука, как DUET. Это загружаемая из BIOS посредством отдельного загрузочного раздела среда UEFI, которая может быть полезна, если вы собираетесь использовать диски объемом >2Тб на своем старом железе с BIOS. Подробнее можно ознакомиться здесь: http://www.rodsbooks.com/bios2uefi/

Сообщение отредактировал saintonotole — 16.06.13, 18:52

Что такое GPT?
GUID Partition Table, GPT — стандарт формата размещения таблиц разделов на жестком диске. Он является частью интерфейса EFI. EFI использует GPT там, где BIOS использует MBR.

Сообщение отредактировал saintonotole — 01.06.13, 16:38

В чем преимущества GPT перед MBR?

  • Поддержка носителей объемом >2.2Тб
  • Отсутствие ограничения на 4 основных раздела, и как следствие-отсутствие необходимости в логических разделах
  • Повышенная безопасность-GPT хранит резервную копию таблицы разделов в конце диска, поэтому в случае неполадок существует возможность восстановления разметки при помощи запасной таблицы.
  • Защита от повреждения устаревшими программами посредством Protective MBR
  • Существует возможность использования старых загрузочных секторов.

Сообщение отредактировал saintonotole — 08.06.13, 18:32

Где в GPT хранятся аналоги загрузочных секторов?
EFI использует для хранения загрузчиков папку EFI/boot, находящуюся в корне раздела FAT32. По умолчанию должен загружаться файл /EFI/boot/bootx64.efi
Если загружаемый диск размечен в стиле MBR, то наличие файловой системы FAT32 на первом разделе (если их несколько) и файла с загрузчиком, лежащего по дефолтному пути, являются единственными условиями загрузки с этого носителя (CD/DVD тоже поддерживаются). В случае, если диск размечен в стиле GPT, раздел необязательно должен быть первым, но у него должен присутствовать флаг boot (проверить и выставить можно через gparted)

Сообщение отредактировал saintonotole — 01.06.13, 16:38

Возможно ли сконвертировать диск из MBR в GPT и обратно без потери данных?
Да. Для этого потребуется загрузочный диск/флешка с Gparted http://gparted.sourceforge.net/download.php
После загрузки с загрузочного носителя откроется окно gparted, в котором в верхнем правом углу будет отображен рабочий диск (обычно это /dev/sda). Необходимо запомнить имя диска, который вы хотите сконвертировать, открыть терминал, и набрать там sudo gdisk /dev/sda
где вместо sda, при необходимости, нужно подставить имя вашего диска. Затем нужно ввести команду w и подтвердить запись таблицы GPT на диск. Все, диск преобразован в таблицу GPT. Для обратной конвертации в MBR необходимо таким же образом открыть gdisk для вашего диска, и последовательно набрать команду r, затем g, после чего подтвердить запись новой таблицы при помощи команды w.
Так же в среде Windows вам поможет программа Partition Guru либо аналоги.

Сообщение отредактировал Shoore — 21.05.14, 22:22

Что такое UEFI Shell?
Это среда работы с окружением EFI (терминалоподобная), позволяющая на ходу запускать efi-совместимые загрузчики, выполнять простейшие операции с файлами, а также оперировать встроенным менеджером загрузки. Взять можно тут: https://github.com/tia…/ShellBinPkg/UefiShell
Основные команды тут: http://software.intel.com/en-us/articles/e. -and-scripting/

Сообщение отредактировал AndrewP_1 — 17.12.18, 10:03

Как редактировать/удалить/добавить пункты загрузки в загрузочное меню UEFI?
Качаем UEFI Shell, копируем его в файл /EFI/boot/bootx64.efi на FAT32 флешку, и загружаемся с нее. После удачной загрузки шелла должно появиться приглашение командной строки
Shell>
Выше приглашения должен отобразиться список имеющихся подключенных дисков (fs0:, fs1:, BLK0, и тому подобное). Чтобы еще раз вызвать этот список в случае необходимости, воспользуйтесь командой
map fs*
Из полного имени диска можно почерпнуть некоторую информацию о диске. Например:
PciRoot(0x0)/Pci(0x1,0x1)/ Ata(0x0) / HD ( 1 , MBR ,0x27212721,0x3F,0x13FA6D9)
отсюда
Ata(0x0) -интерфейс подключения диска, а также порт контроллера
HD -это жесткий диск
1 -количество разделов на диске
MBR -схема разметки

Найдя таким образом необходимый диск, нужно перейти в него
fs0:
затем при помощи старых добрых досовских команд dir и cd нужно нащупать и перейти в каталог с загрузочными efi-файлами. Обычно это /EFI/boot/. Затем, находясь в этом каталоге, можно, введя имя файла загрузчика, сразу же загрузиться в него. Чтобы добавить нужный файл в список загрузочных записей, желательно сначала считать уже имеющиеся записи при помощи команды
bcfg boot dump
Затем, чтобы добавить загрузочный файл в этот список, нужно ввести
bcfg boot add N filename.efi » label «
Где N -порядковый номер записи (если на ее месте что-то было-этот пункт перезапишется)
filename.efi -имя файла с загрузчиком
label -имя, под которым эта запись будет отображаться в списке
Можно снова просмотреть список загрузочных записей через
bcfg boot dump
и убедиться, что все на месте. Можно перезагружаться и проверять.
Для удаления записи из списка используется команда
bcfg boot rm N
где N -номер записи

Сообщение отредактировал Shoore — 31.10.14, 16:34

BootDev

Создание загрузочных дисков и прочие полезные мелочи

Страницы

2018-05-23

UEFI Shell: Описание командной оболочки

UEFI Shell, или командная оболочка UEFI — это часть системы UEFI, предназначенная для выполнения запуска исполняемых *.efi файлов и UEFI-загрузчиков. Кроме этого, UEFI Shell позволяет: осуществлять загрузку UEFI-драйверов, выполнять файловые операции на поддерживаемых файловых системах (поддержка которых может быть добавлена загрузкой соответствующих драйверов), управлять загрузочным списком, работать с сетью (есть поддержка TCP/IP), выполнять сценарии *.nsh состоящие из команд данной оболочки.

Содержание

1. Командная оболочка UEFI Shell

Основные возможности похожи на оные у других командных оболочек. Если вам знакомы какие нибудь из них (bash, cmd и т. д.), то многие моменты будут вам знакомы.

1.1 Специальные Cимволы

Представленные далее символы являются специальными — # , > , , | , % , * , ? , ^ , , пробел , [ , ] и символ_новой_строки . То есть, эти символы предназначены для выполнения определенных действий при наличии их в выполняемой команде или скрипте.

# — Начало комментария, можно использовать как в скриптах, так и в интерактивном режиме.
> — Исходящее перенаправление вывода.
— Входящее перенаправление вывода.
| — Используется для организации конвейера команд.
% — Используется для обозначения переменных.
* , ? , [ , ] — Используются для составления файловых масок.
^ — Предназначен для экранирования специальных символов.
« — Предназначены для объединения нескольких слов в одно выражение.
пробел — Используется для отделения аргументов выполняемой команды.
символ_новой_строки — завершает введенную команду.

1.2 Экранирование Символов

Символом выполняющим роль экранирования является ^ . Экранирование позволяет воспринимать введенный символ после символа экранирования, просто как текст. Это может потребоваться когда необходимо ввести один из специальных символов.

1.3 Кавычки

Кавычки ( « ) предназначены для объединение нескольких слов в единую строку. Командная оболочка воспринимает слова разделенные знаком пробел, как отдельные аргументы. Чтобы избежать такого восприятия, необходимую последовательность слов заключат в кавычки. К примеру, это бывает необходимо, когда в качестве аргументов используются полные пути до файла содержащие пробел.

Чтобы в строке заключенной в кавычки вставить сам знак кавычек, его необходимо экранировать . То же самое касается и самого знака экранирования. Для использования его в строке, вводить его нужно так ^^ .

1.4 Перенаправления

1.4.1 Перенаправление Вывода

Вывод любой команды может быть перенаправлен в файл. Например:

command > file.log #перезапись unicode файла
command >> file.log #дозапись unicode файла

В первом случае, результат выполненной команды command будет сохранен в файл file.log, с перезаписью (файл создается заново).
Во втором случае, результат выполненной команды command будет сохранен в конец файла file.log (если файла не существовало, то он создается).

У команды перенаправления существуют два модификатора a (вывод происходит в кодировке ASCII), v (вывод происходит в переменную). Например:

command >a file.log #перезапись ascii файла
command >>a file.log #дозапись ascii файла
command >v variable #перезапись в переменную
command >>v variable #дозапись в переменную


Специальные файлы перенаправлений NUL и NULL предназначены для подавления вывода. То есть, весь вывод направленный в эти файлы будет просто отброшен без сохранения. Пример:

command > NUL
command > NULL

1.4.2 Перенаправление Ввода

Данные из существующего файла или переменной могут быть направлены на входной поток любой команды. Например:

command #получение входящих данных из unicode файла
command #получение входящих данных из ascii файла
command #получение входящих данных из переменной

1.4.3 Конвейер Команд

Данные из выходного потока одной команды можно направить на входящий поток другой, образуя при этом конвейер команд. Например:

command1 | command2
command1 |a command2

В первом случае происходит перенаправление вывода команды command1 во входящий поток команды command2. Во втором случае все тоже самое но в кодировке ASCII.

1.5 Комментарии

Начинается комментарий с символа # . Весь текст который расположен после символа # и до конца строки, является комментарием. Комментарии предназначены просто для информативности. Командная оболочка игнорирует комментарии.

1.6 Переменные

Переменные создаются с помощью команды set либо с помощью перенаправления вывода в переменную. Так же существую переменные окружения, речь о которых пойдет ниже.
Доступ к переменным в командной строке, или скриптах, осуществляется путем заключения ее имени между символами процента % .

1.6.1 Переменные Окружения

Переменные окружения создаются самой командной оболочкой при ее инициализации. Некоторые из них можно изменять а некоторые нет. Каждый новый сеанс командной оболочки содержит свой независимый список переменных окружения. Ниже представлен список переменных окружения UEFI Shell:

cwd — Текущая рабочая директория. Доступна только для чтения.

lasterror — Код ошибки последней выполненной команды. Доступна только для чтения.

path — Содержит пути до директорий, перечисленных через точку с запятой, по которым UEFI Shell производит поиск запрошенных исполняемых файлов. Можно перезаписывать.

profiles — Список профилей UEFI Shell которые поддерживаются командной оболочкой. Доступна только для чтения.

uefishellsupport — Текущий уровень поддержки UEFI Shell. Всего их 4 (0, 1, 2, 3). Доступна только для чтения.

uefishellversion — Версия оболочки UEFI Shell. Доступна только для чтения.

uefiversion — Версия системы UEFI. Доступна только для чтения.

nonesting — Определяет возможность запуска вложенных копий оболочки. Доступна только для чтения.

1.6.2 Позиционные Переменные

Позиционные параметры используются в скирптах. Всего их десять, имеют вид %0%9 . Переменная %0 содержит в себе полный путь и имя исполняемого скрипта. Остальные переменные %1%9 содержат переданные аргументы.

1.6.3 Псевдонимы

Псевдонимы представляют собой дополнительное имя уже имеющейся команды или приложения. Возможны два варианта псевдонимов, на основе переменных, и созданные с помощью команды alias.

Для создания псевдонима с помощью переменной, необходимо создать переменную содержащую текст выполняемой команды. После чего вызвать созданную переменную.

1.6.4 Файловые Маски

Файловые маски в данной оболочке используют следующие символы * , ? , [] .

* — Любые символы в количестве от нуля и более.
? — Любой один символ.
[] — Один из указанных символов в квадратных скобках.

Пример использования файловых масок:

ls *.efi #вывод только файлов заканчивающихся суффиксом .efi
ls . #вывод файлов чьи имена состоят из 5 символов
ls [abc]* #вывод файлов начинающихся с символа a, b или с

1.7 Интерактивные Возможности

1.7.1 Клавиши Истории Команд

Командная оболочка UEFI Shell запоминает последние выполненные команды. Нажатием на клавиши стрелок вверх или вниз, можно выводить в командную строку последние выполненные команды. Нажатием на клавишу F7 можно посмотреть список последних 24 команд, с возможностью повтора необходимой по ее номеру.

1.7.2 Прерывание Выполнения

В UEFI Shell присутствует возможность прерывать выполнение команды, исполняемого файла или скрипта. Осуществляется прерывание выполнения с помощью сочетания клавиш CTRL+C .

1.7.3 Контроль Выходного Потока

UEFI Shell поддерживает возможность останавливать вывод (ставить на паузу), и продолжать его с остановленного места. Остановить вывод можно сочетанием клавиш CTRL+S . Нажатием на любую клавишу исполняемая команда продолжит свое выполнение.

1.7.4 Поддержка Прокрутки Буфера

UEFI Shell позволяет прокручивать буфер вывода на 3 экрана назад. Осуществляется такая прокрутка клавишами PgUp и PgDown .

1.8 Справка Командной Строки

Вызвать общую информацию о командах в UEFI Shell можно выполнив команду help . Так как список не умещается на один экран, вы увидите лишь конец списка. Чтобы избежать такого поведения и выводить информацию постранично, необходимо запустить команду с параметром -b . Выглядеть это будет так help -b . Параметр -b можно использовать в любой ситуации, когда выходная информация не умещается на один экран.

Каждая команда из help списка обладает своей справочной информацией. Вызвать данную информацию можно выполнив необходимую команду с параметром -? , либо передав команде help название команды по которой необходимо получить справку. Пример:

ls -? #вывод справки команды ls
help ls #тоже самое
for -? -b #вывод справки по команде for в постраничном режиме

2. Список команд UEFI Shell

В данном разделе будут кратко описаны стандартные команды оболочки UEFI Shell. Более подробное описание каждой команды на данный момент отсутствует. Если вы считаете, что подробное описание на русском все же необходимо, напишите об этом в комментариях.

Напомню, что справку по каждой команде можно получить запустив ее с ключом -? .

Применение основных команд данной командной оболочки можно посмотреть по этой ссылке. Применение команд загрузки драйверов можно посмотреть тут.


alias — Отображает, создает, или удаляет псевдонимы UEFI Shell.

attrib — Отображает или изменяет атрибуты файлов или директорий.

bcfg — Управляет загрузочными записями и настройками драйверов сохраненных в NVRAM (энергонезависимой памяти).

cd — Отображает или меняет текущий рабочий каталог.

cls — Очищает окно консоли, а так же позволяет задать цвета фона и текста.

comp — Сравнивает содержимое двух файлов побайтово.

connect — Привязывает драйвер к определенному устройству и запускает драйвер.

cp — Копирует один или несколько файлов или каталогов в указанное место.

date — Отображает и устанавливает текущую дату для системы.

dblk — Отображает один или несколько блоков с блочного устройства.

devices — Отображает список устройств, управляемых драйверами UEFI.

devtree — Отображает дерево устройств, совместимых с драйверами модели UEFI.

dh — Отображает дескрипторы устройств в UEFI окружении.

disconnect — Отключает один или несколько драйверов от указанных устройств.

dmem — Отображает содержимое системной памяти или памяти устройства.

dmpstore — Управляет всеми переменными UEFI.

drivers — Отображает список драйверов UEFI.

drvcfg — Настройка драйверов UEFI.

drvdiag — Диагностика драйверов UEFI.

echo — Контролирует режим отображение вывода команд в скриптах, или выводит сообщение.

edit — Вызывает полноэкранный текстовый редактор для файлов ASCII или UCS-2.

eficompress — Архивирует файл с использованием алгоритма сжатия UEFI.

efidecompress — Разархивирует файл сжатый алгоритмом сжатия UEFI.

else — Определяет код, выполняемый, когда if имеет значение FALSE.

endfor — Заканчивает цикл for.

endif — Заканчивает блок кода, управляемый оператором if.

exit — Выход из оболочки UEFI или текущего скрипта.

for — Начинает цикл, основанный на синтаксисе for.

getmtc — Выводит счетчик MTC.

goto — Переходит к указанной точке в выполняемом скрипте.

help — Отображает список команд UEFI Shell или справку по конкретной команде.

hexedit — Вызывает полноэкранный шестнадцатеричный редактор для файлов, блочных устройств или памяти.

if — Выполняет команды в заданных условиях.

ifconfig — Отображает или изменяет настройки протокола IPv4 для указанного сетевого интерфейса.

ifconfig6 — Отображает или изменяет настройки протокола IPv6 для указанного сетевого интерфейса.

load — Загружает драйвер UEFI в память.

loadpcirom — Загружает в память файл образ PCI Option ROM.

ls — Выводит содержимое директории или информацию о файле.

map — Отображает или определяет сопоставления файловой системы.

memmap — Отображает карту памяти, поддерживаемую средой UEFI.

mkdir — Создает одну или несколько новых директорий.

mm — Отображает или изменяет адресное пространство MEM/MMIO/IO/PCI/PCIE.

mode — Отображает или изменяет режим выходного устройства консоли.

mv — Перемещает один или несколько файлов в указанное местоположение или между файловыми системами.

openinfo — Отображает протоколы и агенты, связанные с дескриптором.

parse — Извлекает значение соответствующее заданному условию из указанного текстового файла.

pause — Останавливает выполнение скрипта и ожидает нажатия любой клавиши.

pci — Отображает список устройств PCI или информацию о них.

ping — Пингует указанный хост или IP-адрес по протоколу IPv4.

ping6 — Пингует указанный хост или IP-адрес по протоколу IPv6.

reconnect — Повторное подключение драйверов к определенному устройству.

reset — Перезагружает систему.

rm — Удаляет один или несколько файлов или каталогов.

sermode — Устанавливает атрибуты последовательного порта.

set — Отображает или изменяет переменные среды UEFI Shell.

setsize — Приводит файл к указанному размеру.

setvar — Отображает или изменяет переменную UEFI.

shift — Сдвигает позиции позиционных параметров в скрипте.

smbiosview — Отображает информацию о SMBIOS.

stall — Останавливает выполнение (ожидает) на указанное количество микросекунд (1 сек = 1000000 мксек).

time — Отображает или устанавливает текущее время для системы.

timezone — Отображает или задает информацию о часовом поясе.

touch — Обновляет временную метку указанного файла или файлов до текущей системной даты и времени.

type — Выводит содержимое указанного файла на стандартное устройство вывода (экран).

unload — Выгружает загруженные ранее драйвера.

ver — Отображает информацию о версии встроенного ПО UEFI.

vol — Отображает или изменяет информацию о разделе диска.

Adblock
detector

При установке Windows® на компьютер на базе EFI необходимо включить режим EFI в микропрограмме ПК как при ручной, так и при автоматической установке. Необходимо загрузиться в 64-разрядном режиме EFI с предустановочного диска (64-разрядная версия среды предустановки Windows или 64-разрядная версия программы установки Windows в режиме EFI). Windows невозможно установить на компьютеры на базе UEFI, в режиме BIOS. (Дополнительные сведения о переключении режимов см. в документации по микропрограммам EFI.) Шаги, приведенные в данном разделе, служат только для справки и могут не соответствовать определенным командам вашего типа микропрограмм EFI.

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

В оболочке EFI выберите устройство с установочным диском Windows и запустите приложение загрузки EFI. Предполагая, что fs0 — это устройство DVD, используйте следующие команды для компьютеров архитектуры x64:

Если диспетчер загрузки EFI поддерживает загрузку с DVD-диска, то командная оболочка EFI не требуется. Можно загрузить DVD-диск непосредственно из диспетчера загрузки EFI.

При необходимости нажмите любую клавишу для загрузки с DVD-диска Windows. Windows устанавливается на компьютер.

При загрузке среды предустановки Windows с компакт-диска или DVD-диска можно пропустить приглашение «Нажмите любую клавишу для загрузки с компакт-диска или DVD-диска» и загрузиться напрямую в данную среду. Для архитектур x86 и AMD64 удалите файл Bootfix.bin из своего пользовательского образа среды предустановки Windows. Для компьютеров с архитектурой Itanuim при создании образа со средой предустановки Windows для своих клиентов используйте файл Efisys_noprompt.bin вместо файла Efisys.bin.

Примечание.

При выполнении ручной установки, следуйте подсказкам пользовательского интерфейса, чтобы завершить установку Windows.

При необходимости можно выполнить автоматическую установку, используя файл Autounattend.xml, хранящийся на USB-устройстве флэш-памяти или ином устройстве. Требования к файлу ответов для компьютеров на базе EFI см. в разделе Создание разделов жесткого диска на базе UEFI с помощью диспетчера установки Windows.

Некоторые платформы EFI поддерживают как микропрограммы UEFI, так и микропрограммы BIOS. На некоторых из этих систем не всегда ясно, какой вариант загрузки с DVD-диска стоит по умолчанию — EFI или BIOS. В этих системах может потребоваться использование командной оболочки EFI. Можно использовать стандартную запись загрузки микропрограмм для BIOS, если запись загрузки EFI не используются для запуска установки Windows. Если установка Windows запускается в режиме BIOS в комбинированной системе EFI/BIOS, то разделы ESP и MSR не создаются. После завершения установки Windows, используйте команду Diskpart чтобы проверить, что разделы ESP и MSR были созданы.

Примечание.

После того, как Windows установлена на компьютер, завершите остальные задачи по настройке.

Из командной строки запустите sysprep, чтобы подготовить образ Windows для создания образов и развертывания. Например:

После завершения работы программы Sysprep завершается забота компьютера.

Можно ли обновить мой BIOS на UEFI?
Не совсем. UEFI нельзя прошить вместо BIOS, поскольку он занимает гораздо больше памяти. Но существует такая штука, как DUET. Это загружаемая из BIOS посредством отдельного загрузочного раздела среда UEFI, которая может быть полезна, если вы собираетесь использовать диски объемом >2Тб на своем старом железе с BIOS. Подробнее можно ознакомиться здесь: http://www.rodsbooks.com/bios2uefi/

Сообщение отредактировал saintonotole — 16.06.13, 18:52

Что такое GPT?
GUID Partition Table, GPT — стандарт формата размещения таблиц разделов на жестком диске. Он является частью интерфейса EFI. EFI использует GPT там, где BIOS использует MBR.

Сообщение отредактировал saintonotole — 01.06.13, 16:38

В чем преимущества GPT перед MBR?

  • Поддержка носителей объемом >2.2Тб
  • Отсутствие ограничения на 4 основных раздела, и как следствие-отсутствие необходимости в логических разделах
  • Повышенная безопасность-GPT хранит резервную копию таблицы разделов в конце диска, поэтому в случае неполадок существует возможность восстановления разметки при помощи запасной таблицы.
  • Защита от повреждения устаревшими программами посредством Protective MBR
  • Существует возможность использования старых загрузочных секторов.

Сообщение отредактировал saintonotole — 08.06.13, 18:32

Где в GPT хранятся аналоги загрузочных секторов?
EFI использует для хранения загрузчиков папку EFI/boot, находящуюся в корне раздела FAT32. По умолчанию должен загружаться файл /EFI/boot/bootx64.efi
Если загружаемый диск размечен в стиле MBR, то наличие файловой системы FAT32 на первом разделе (если их несколько) и файла с загрузчиком, лежащего по дефолтному пути, являются единственными условиями загрузки с этого носителя (CD/DVD тоже поддерживаются). В случае, если диск размечен в стиле GPT, раздел необязательно должен быть первым, но у него должен присутствовать флаг boot (проверить и выставить можно через gparted)

Сообщение отредактировал saintonotole — 01.06.13, 16:38

Возможно ли сконвертировать диск из MBR в GPT и обратно без потери данных?
Да. Для этого потребуется загрузочный диск/флешка с Gparted http://gparted.sourceforge.net/download.php
После загрузки с загрузочного носителя откроется окно gparted, в котором в верхнем правом углу будет отображен рабочий диск (обычно это /dev/sda). Необходимо запомнить имя диска, который вы хотите сконвертировать, открыть терминал, и набрать там sudo gdisk /dev/sda
где вместо sda, при необходимости, нужно подставить имя вашего диска. Затем нужно ввести команду w и подтвердить запись таблицы GPT на диск. Все, диск преобразован в таблицу GPT. Для обратной конвертации в MBR необходимо таким же образом открыть gdisk для вашего диска, и последовательно набрать команду r, затем g, после чего подтвердить запись новой таблицы при помощи команды w.
Так же в среде Windows вам поможет программа Partition Guru либо аналоги.

Сообщение отредактировал Shoore — 21.05.14, 22:22

Что такое UEFI Shell?
Это среда работы с окружением EFI (терминалоподобная), позволяющая на ходу запускать efi-совместимые загрузчики, выполнять простейшие операции с файлами, а также оперировать встроенным менеджером загрузки. Взять можно тут: https://github.com/tia…/ShellBinPkg/UefiShell
Основные команды тут: http://software.intel.com/en-us/articles/e. -and-scripting/

Сообщение отредактировал AndrewP_1 — 17.12.18, 10:03

Как редактировать/удалить/добавить пункты загрузки в загрузочное меню UEFI?
Качаем UEFI Shell, копируем его в файл /EFI/boot/bootx64.efi на FAT32 флешку, и загружаемся с нее. После удачной загрузки шелла должно появиться приглашение командной строки
Shell>
Выше приглашения должен отобразиться список имеющихся подключенных дисков (fs0:, fs1:, BLK0, и тому подобное). Чтобы еще раз вызвать этот список в случае необходимости, воспользуйтесь командой
map fs*
Из полного имени диска можно почерпнуть некоторую информацию о диске. Например:
PciRoot(0x0)/Pci(0x1,0x1)/ Ata(0x0) / HD ( 1 , MBR ,0x27212721,0x3F,0x13FA6D9)
отсюда
Ata(0x0) -интерфейс подключения диска, а также порт контроллера
HD -это жесткий диск
1 -количество разделов на диске
MBR -схема разметки

Найдя таким образом необходимый диск, нужно перейти в него
fs0:
затем при помощи старых добрых досовских команд dir и cd нужно нащупать и перейти в каталог с загрузочными efi-файлами. Обычно это /EFI/boot/. Затем, находясь в этом каталоге, можно, введя имя файла загрузчика, сразу же загрузиться в него. Чтобы добавить нужный файл в список загрузочных записей, желательно сначала считать уже имеющиеся записи при помощи команды
bcfg boot dump
Затем, чтобы добавить загрузочный файл в этот список, нужно ввести
bcfg boot add N filename.efi » label «
Где N -порядковый номер записи (если на ее месте что-то было-этот пункт перезапишется)
filename.efi -имя файла с загрузчиком
label -имя, под которым эта запись будет отображаться в списке
Можно снова просмотреть список загрузочных записей через
bcfg boot dump
и убедиться, что все на месте. Можно перезагружаться и проверять.
Для удаления записи из списка используется команда
bcfg boot rm N
где N -номер записи

Сообщение отредактировал Shoore — 31.10.14, 16:34

Источник

BootDev

Создание загрузочных дисков и прочие полезные мелочи

Страницы

2018-05-23

UEFI Shell: Описание командной оболочки

UEFI Shell, или командная оболочка UEFI — это часть системы UEFI, предназначенная для выполнения запуска исполняемых *.efi файлов и UEFI-загрузчиков. Кроме этого, UEFI Shell позволяет: осуществлять загрузку UEFI-драйверов, выполнять файловые операции на поддерживаемых файловых системах (поддержка которых может быть добавлена загрузкой соответствующих драйверов), управлять загрузочным списком, работать с сетью (есть поддержка TCP/IP), выполнять сценарии *.nsh состоящие из команд данной оболочки.

Содержание

1. Командная оболочка UEFI Shell

Основные возможности похожи на оные у других командных оболочек. Если вам знакомы какие нибудь из них (bash, cmd и т. д.), то многие моменты будут вам знакомы.

1.1 Специальные Cимволы

Представленные далее символы являются специальными — # , > , , | , % , * , ? , ^ , , пробел , [ , ] и символ_новой_строки . То есть, эти символы предназначены для выполнения определенных действий при наличии их в выполняемой команде или скрипте.

# — Начало комментария, можно использовать как в скриптах, так и в интерактивном режиме.
> — Исходящее перенаправление вывода.
— Входящее перенаправление вывода.
| — Используется для организации конвейера команд.
% — Используется для обозначения переменных.
* , ? , [ , ] — Используются для составления файловых масок.
^ — Предназначен для экранирования специальных символов.
« — Предназначены для объединения нескольких слов в одно выражение.
пробел — Используется для отделения аргументов выполняемой команды.
символ_новой_строки — завершает введенную команду.

1.2 Экранирование Символов

Символом выполняющим роль экранирования является ^ . Экранирование позволяет воспринимать введенный символ после символа экранирования, просто как текст. Это может потребоваться когда необходимо ввести один из специальных символов.

1.3 Кавычки

Кавычки ( « ) предназначены для объединение нескольких слов в единую строку. Командная оболочка воспринимает слова разделенные знаком пробел, как отдельные аргументы. Чтобы избежать такого восприятия, необходимую последовательность слов заключат в кавычки. К примеру, это бывает необходимо, когда в качестве аргументов используются полные пути до файла содержащие пробел.

Чтобы в строке заключенной в кавычки вставить сам знак кавычек, его необходимо экранировать . То же самое касается и самого знака экранирования. Для использования его в строке, вводить его нужно так ^^ .

1.4 Перенаправления

1.4.1 Перенаправление Вывода

Вывод любой команды может быть перенаправлен в файл. Например:

command > file.log #перезапись unicode файла
command >> file.log #дозапись unicode файла

В первом случае, результат выполненной команды command будет сохранен в файл file.log, с перезаписью (файл создается заново).
Во втором случае, результат выполненной команды command будет сохранен в конец файла file.log (если файла не существовало, то он создается).

У команды перенаправления существуют два модификатора a (вывод происходит в кодировке ASCII), v (вывод происходит в переменную). Например:

command >a file.log #перезапись ascii файла
command >>a file.log #дозапись ascii файла
command >v variable #перезапись в переменную
command >>v variable #дозапись в переменную


Специальные файлы перенаправлений NUL и NULL предназначены для подавления вывода. То есть, весь вывод направленный в эти файлы будет просто отброшен без сохранения. Пример:

command > NUL
command > NULL

1.4.2 Перенаправление Ввода

Данные из существующего файла или переменной могут быть направлены на входной поток любой команды. Например:

command #получение входящих данных из unicode файла
command #получение входящих данных из ascii файла
command #получение входящих данных из переменной

1.4.3 Конвейер Команд

Данные из выходного потока одной команды можно направить на входящий поток другой, образуя при этом конвейер команд. Например:

command1 | command2
command1 |a command2

В первом случае происходит перенаправление вывода команды command1 во входящий поток команды command2. Во втором случае все тоже самое но в кодировке ASCII.

1.5 Комментарии

Начинается комментарий с символа # . Весь текст который расположен после символа # и до конца строки, является комментарием. Комментарии предназначены просто для информативности. Командная оболочка игнорирует комментарии.

1.6 Переменные

Переменные создаются с помощью команды set либо с помощью перенаправления вывода в переменную. Так же существую переменные окружения, речь о которых пойдет ниже.
Доступ к переменным в командной строке, или скриптах, осуществляется путем заключения ее имени между символами процента % .

1.6.1 Переменные Окружения

Переменные окружения создаются самой командной оболочкой при ее инициализации. Некоторые из них можно изменять а некоторые нет. Каждый новый сеанс командной оболочки содержит свой независимый список переменных окружения. Ниже представлен список переменных окружения UEFI Shell:

cwd — Текущая рабочая директория. Доступна только для чтения.

lasterror — Код ошибки последней выполненной команды. Доступна только для чтения.

path — Содержит пути до директорий, перечисленных через точку с запятой, по которым UEFI Shell производит поиск запрошенных исполняемых файлов. Можно перезаписывать.

profiles — Список профилей UEFI Shell которые поддерживаются командной оболочкой. Доступна только для чтения.

uefishellsupport — Текущий уровень поддержки UEFI Shell. Всего их 4 (0, 1, 2, 3). Доступна только для чтения.

uefishellversion — Версия оболочки UEFI Shell. Доступна только для чтения.

uefiversion — Версия системы UEFI. Доступна только для чтения.

nonesting — Определяет возможность запуска вложенных копий оболочки. Доступна только для чтения.

1.6.2 Позиционные Переменные

Позиционные параметры используются в скирптах. Всего их десять, имеют вид %0%9 . Переменная %0 содержит в себе полный путь и имя исполняемого скрипта. Остальные переменные %1%9 содержат переданные аргументы.

1.6.3 Псевдонимы

Псевдонимы представляют собой дополнительное имя уже имеющейся команды или приложения. Возможны два варианта псевдонимов, на основе переменных, и созданные с помощью команды alias.

Для создания псевдонима с помощью переменной, необходимо создать переменную содержащую текст выполняемой команды. После чего вызвать созданную переменную.

1.6.4 Файловые Маски

Файловые маски в данной оболочке используют следующие символы * , ? , [] .

* — Любые символы в количестве от нуля и более.
? — Любой один символ.
[] — Один из указанных символов в квадратных скобках.

Пример использования файловых масок:

ls *.efi #вывод только файлов заканчивающихся суффиксом .efi
ls . #вывод файлов чьи имена состоят из 5 символов
ls [abc]* #вывод файлов начинающихся с символа a, b или с

1.7 Интерактивные Возможности

1.7.1 Клавиши Истории Команд

Командная оболочка UEFI Shell запоминает последние выполненные команды. Нажатием на клавиши стрелок вверх или вниз, можно выводить в командную строку последние выполненные команды. Нажатием на клавишу F7 можно посмотреть список последних 24 команд, с возможностью повтора необходимой по ее номеру.

1.7.2 Прерывание Выполнения

В UEFI Shell присутствует возможность прерывать выполнение команды, исполняемого файла или скрипта. Осуществляется прерывание выполнения с помощью сочетания клавиш CTRL+C .

1.7.3 Контроль Выходного Потока

UEFI Shell поддерживает возможность останавливать вывод (ставить на паузу), и продолжать его с остановленного места. Остановить вывод можно сочетанием клавиш CTRL+S . Нажатием на любую клавишу исполняемая команда продолжит свое выполнение.

1.7.4 Поддержка Прокрутки Буфера

UEFI Shell позволяет прокручивать буфер вывода на 3 экрана назад. Осуществляется такая прокрутка клавишами PgUp и PgDown .

1.8 Справка Командной Строки

Вызвать общую информацию о командах в UEFI Shell можно выполнив команду help . Так как список не умещается на один экран, вы увидите лишь конец списка. Чтобы избежать такого поведения и выводить информацию постранично, необходимо запустить команду с параметром -b . Выглядеть это будет так help -b . Параметр -b можно использовать в любой ситуации, когда выходная информация не умещается на один экран.

Каждая команда из help списка обладает своей справочной информацией. Вызвать данную информацию можно выполнив необходимую команду с параметром -? , либо передав команде help название команды по которой необходимо получить справку. Пример:

ls -? #вывод справки команды ls
help ls #тоже самое
for -? -b #вывод справки по команде for в постраничном режиме

2. Список команд UEFI Shell

В данном разделе будут кратко описаны стандартные команды оболочки UEFI Shell. Более подробное описание каждой команды на данный момент отсутствует. Если вы считаете, что подробное описание на русском все же необходимо, напишите об этом в комментариях.

Напомню, что справку по каждой команде можно получить запустив ее с ключом -? .

Применение основных команд данной командной оболочки можно посмотреть по этой ссылке. Применение команд загрузки драйверов можно посмотреть тут.


alias — Отображает, создает, или удаляет псевдонимы UEFI Shell.

attrib — Отображает или изменяет атрибуты файлов или директорий.

bcfg — Управляет загрузочными записями и настройками драйверов сохраненных в NVRAM (энергонезависимой памяти).

cd — Отображает или меняет текущий рабочий каталог.

cls — Очищает окно консоли, а так же позволяет задать цвета фона и текста.

comp — Сравнивает содержимое двух файлов побайтово.

connect — Привязывает драйвер к определенному устройству и запускает драйвер.

cp — Копирует один или несколько файлов или каталогов в указанное место.

date — Отображает и устанавливает текущую дату для системы.

dblk — Отображает один или несколько блоков с блочного устройства.

devices — Отображает список устройств, управляемых драйверами UEFI.

devtree — Отображает дерево устройств, совместимых с драйверами модели UEFI.

dh — Отображает дескрипторы устройств в UEFI окружении.

disconnect — Отключает один или несколько драйверов от указанных устройств.

dmem — Отображает содержимое системной памяти или памяти устройства.

dmpstore — Управляет всеми переменными UEFI.

drivers — Отображает список драйверов UEFI.

drvcfg — Настройка драйверов UEFI.

drvdiag — Диагностика драйверов UEFI.

echo — Контролирует режим отображение вывода команд в скриптах, или выводит сообщение.

edit — Вызывает полноэкранный текстовый редактор для файлов ASCII или UCS-2.

eficompress — Архивирует файл с использованием алгоритма сжатия UEFI.

efidecompress — Разархивирует файл сжатый алгоритмом сжатия UEFI.

else — Определяет код, выполняемый, когда if имеет значение FALSE.

endfor — Заканчивает цикл for.

endif — Заканчивает блок кода, управляемый оператором if.

exit — Выход из оболочки UEFI или текущего скрипта.

for — Начинает цикл, основанный на синтаксисе for.

getmtc — Выводит счетчик MTC.

goto — Переходит к указанной точке в выполняемом скрипте.

help — Отображает список команд UEFI Shell или справку по конкретной команде.

hexedit — Вызывает полноэкранный шестнадцатеричный редактор для файлов, блочных устройств или памяти.

if — Выполняет команды в заданных условиях.

ifconfig — Отображает или изменяет настройки протокола IPv4 для указанного сетевого интерфейса.

ifconfig6 — Отображает или изменяет настройки протокола IPv6 для указанного сетевого интерфейса.

load — Загружает драйвер UEFI в память.

loadpcirom — Загружает в память файл образ PCI Option ROM.

ls — Выводит содержимое директории или информацию о файле.

map — Отображает или определяет сопоставления файловой системы.

memmap — Отображает карту памяти, поддерживаемую средой UEFI.

mkdir — Создает одну или несколько новых директорий.

mm — Отображает или изменяет адресное пространство MEM/MMIO/IO/PCI/PCIE.

mode — Отображает или изменяет режим выходного устройства консоли.

mv — Перемещает один или несколько файлов в указанное местоположение или между файловыми системами.

openinfo — Отображает протоколы и агенты, связанные с дескриптором.

parse — Извлекает значение соответствующее заданному условию из указанного текстового файла.

pause — Останавливает выполнение скрипта и ожидает нажатия любой клавиши.

pci — Отображает список устройств PCI или информацию о них.

ping — Пингует указанный хост или IP-адрес по протоколу IPv4.

ping6 — Пингует указанный хост или IP-адрес по протоколу IPv6.

reconnect — Повторное подключение драйверов к определенному устройству.

reset — Перезагружает систему.

rm — Удаляет один или несколько файлов или каталогов.

sermode — Устанавливает атрибуты последовательного порта.

set — Отображает или изменяет переменные среды UEFI Shell.

setsize — Приводит файл к указанному размеру.

setvar — Отображает или изменяет переменную UEFI.

shift — Сдвигает позиции позиционных параметров в скрипте.

smbiosview — Отображает информацию о SMBIOS.

stall — Останавливает выполнение (ожидает) на указанное количество микросекунд (1 сек = 1000000 мксек).

time — Отображает или устанавливает текущее время для системы.

timezone — Отображает или задает информацию о часовом поясе.

touch — Обновляет временную метку указанного файла или файлов до текущей системной даты и времени.

type — Выводит содержимое указанного файла на стандартное устройство вывода (экран).

unload — Выгружает загруженные ранее драйвера.

ver — Отображает информацию о версии встроенного ПО UEFI.

vol — Отображает или изменяет информацию о разделе диска.

Источник

Adblock
detector

EFI-Boot-process
http://itman.in/efi-boot/

# EFI boot process

The boot process when using EFI is different from the boot process of the computer with the BIOS

When using EFI, the following happens:

  1. EFI bootloader starts. Its task is to select a device for further loading, similar to the user choosing a device when using BIOS .

  2. After selecting a device, the bootloader finds the system partition on the disk (EFI System partition) and downloads a file from it that is responsible for further loading of the operating system. This file is always located at the same address. For amd64, this is  /efi/boot/bootx64.efi

    .

    ESR is determined by the loader by a specific GUID and formatted in the FAT system.

  3. After transferring control to the OS loader from the ESR system partition, the further process continues as usual and depends on the operating system.

Content [ hide ]

  • Description by Redhat
  • Booting an OS using UEFI
    • Multibooting is UEFI 
      • Linux Windows x86_64 UEFI-GPT Multiboot
  • Boot Process under UEFI
  • Detecting UEFI Firmware Arch
  • UEFI Support in Linux Kernel
    • Linux Kernel config options for UEFI
  • UEFI Variables Support
    • Userspace Tools
    • Non-Mac UEFI systems
      • efibootmgr
  • Linux Bootloaders for UEFI
  • Create an UEFI System Partition in Linux
    • For GPT partitioned disks
    • For MBR partitioned disks
  • UEFI Shell
    • UEFI Shell download links
    • Launching UEFI Shell
    • Important UEFI Shell Commands
  • Hardware Compatibility
  • Create UEFI bootable USB from ISO
  • Remove UEFI boot support from ISO

Description by Redhat

GRUB loads itself into the memory in stages:

  1. UEFI platforms read the partition table and connect an ESP partition (EFI System Partition) — a VFAT partition with a unique GUID (Globally Unique Identifier). ESP contains EFI applications — loaders and utilities. In Red Hat Enterprise Linux 6, this is a section  /boot/efi/
    , and EFI programs are located at  /boot/efi/EFI/redhat/
    .

  2. /boot/efi/EFI/redhat/ содержит grub.efi — версию загрузчика, скомпилированную специально для EFI. В самом простом случае менеджер загрузки EFI выбирает этот файл в качестве загрузчика и загружает его в память.

    Если раздел ESP содержит другие программы EFI, менеджер загрузки предложит выбрать программу для выполнения.

  3. Как только GRUB определит операционную систему или ядро для загрузки, они будут загружены в память и им будет передано управление.

Так как производители оборудования обычно добавляют собственные каталоги в раздел ESP, необходимо создать условия для цепной загрузки. Менеджер загрузки EFI может запустить загрузчики любых операционных систем, если они расположены в ESP.

Booting an OS using UEFI ****

UEFI firmware does not support booting through the above mentioned method which is the only way supported by BIOS**.** UEFI has support for reading both the partition table as well as understanding filesystems.

The commonly used UEFI firmwares support both MBR and GPT partition table**.** EFI in Apple-Intel Macs are known to support Apple Partition Map also apart from MBR and GPT**.** Most of the UEFI firmwares have support for accessing FAT12 (floppy disks) , FAT16 and FAT32 filesystems in HDD and ISO9660 (and UDF) in CD/DVDs**.** EFI in Apple-Intel Macs can access HFS/HFS+ filesystems also apart from the mentioned ones**.**

UEFI does not launch any boot code in the MBR whether it exists or not**.** Instead it uses a special partition in the partition table called «EFI SYSTEM PARTITION» in which files required to be launched by the firmware are stored**.** Each vendor can store its files under /EFI// folder and can use the firmware or its shell (UEFI shell) to launch the boot program**.** An EFI System Partition is usually formatted as FAT32**.**

Under UEFI, every program whether they are OS loaders or some utilities (like memory testing apps) or recovery tools outside the OS, should be a UEFI Application corresponding to the EFI firmware architecture**.** Most of the UEFI firmware in the market, including recent Apple Macs use x86_64 EFI firmware**.** Only some older macs use i386 EFI firmware while no non-Apple UEFI system is known to use i386 EFI firmware**.**

Note: Some older Intel Server boards are known to operate on Intel EFI 1**.**10 firmware, and require i386 EFI applications.

A x86_64 EFI firmware does not include support for launching 32-bit EFI apps unlike the 64-bit Linux and Windows which include such support**.** Therefore the bootloader must be compiled for that architecture correctly**.**

Multibooting on UEFI ****

Since each OS or vendor can maintain its own files within the EFI SYSTEM PARTITION without affecting the other, multi-booting using UEFI is just a matter of launching a different UEFI application corresponding to the particular OS’s bootloader**.** This removes the need for relying on chainloading mechanisms of one bootloader to load another to switch OSes**.**

Linux Windows x86_64 UEFI-GPT Multiboot ****

Windows Vista (SP1+) and 7 pr 8 x86_64 versions support booting natively using UEFI firmware**.** But for this they need GPT partitioning of the disk used for UEFI booting**.Windows x86_64 versions support either UEFI-GPT booting or BIOS-MBR booting.Windows 32-bit versions support only BIOS-MBR booting.** Follow the instructions provided in the forum link given in the references sections as to how to do this**.** Seehttp://support.microsoft.com/default.aspx**?**scid=kb;EN-US;2581408 for more info**.**

This limitation does not exist in Linux Kernel but rather depends on the bootloader used**.For the sake of Windows UEFI booting, the Linux bootloader used should also be installed in UEFI-GPT mode if booting from the same disk.**

Boot Process under UEFI ****

  1. System switched on — Power On Self Test, or POST process**.**
  2. UEFI firmware is loaded**.**
  3. Firmware reads its Boot Manager to determine which UEFI application to be launched and from where (ie**.** from which disk and partition).
  4. Firmware launches the UEFI application from the FAT32 formatted UEFISYS partition as defined in the boot entry in the firmware’s boot manager**.**
  5. UEFI application may launch another application (in case of UEFI Shell or a boot manager like rEFInd) or the kernel and initramfs (in case of a bootloader like GRUB) depending on how the UEFI application was configured**.**

Detecting UEFI Firmware Arch ****

If you have a non-mac UEFI system, then you have a x86_64 (aka 64-bit) UEFI 2**.x firmware.**

Some of the known x86_64 UEFI 2.x firmwares are Phoenix SecureCore Tiano, AMI Aptio, Insyde H2O**.**

Some of the known systems using these firmwares are Asus EZ Mode BIOS (in Sandy Bridge P67 and H67 motherboards), MSI ClickBIOS, HP EliteBooks, Sony Vaio Z series, many Intel Server and Desktop motherboards

Pre-2008 Macs mostly have i386-efi firmware while >=2008 Macs have mostly x86_64-efi**.** All macs capable of running Mac OS X Snow Leopard 64-bit Kernel have x86_64 EFI 1**.**x firmware.

To find out the arch of the efi firmware in a Mac, boot into Mac OS X and type the following command

ioreg -l -p IODeviceTree | grep firmware-abi

If the command returns EFI32 then it is i386 EFI 1**.x firmware. If it returns EFI64 then it is x86_64 EFI 1.x firmware. Macs do not have UEFI 2.x firmware as Apple’s EFI implementation is not fully compliant with UEFI Specification.**

UEFI Support in Linux Kernel ****

Linux Kernel config options for UEFI ****

The required Linux Kernel configuration options for UEFI systems are :

CONFIG_EFI=y


CONFIG_EFI_STUB=y


CONFIG_RELOCATABLE=y


CONFIG_FB_EFI=y


CONFIG_FRAMEBUFFER_CONSOLE=y

UEFI Runtime Variables/Services Support — ‘efivars’ kernel module . This option is important as this is required to manipulate UEFI Runtime Variables using tools likeefibootmgr****.

CONFIG_EFI_VARS=m

Note: This option is compiled as module in Arch core/testing kernel**.**

Note: For Linux to access UEFI Runtime Services, the UEFI Firmware processor architecture and the Linux kernel processor architecture must match**.** This is independent of the bootloader used**.**

Note: If the UEFI Firmware arch and Linux Kernel arch are different, then the «noefi» kernel parameter must be used to avoid the kernel panic and boot successfully**.** The «noefi» option instructs the kernel not to access the UEFI Runtime Services**.**

GUID Partition Table GPT config option — mandatory for UEFI support

CONFIG_EFI_PARTITION=y

Note: All of the above options are required to boot Linux via UEFI, and are enabled in Archlinux kernels in official repos**.**

Retrieved fromhttp://git.kernel.org/**?**p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/x86/x86_64/uefi.txt;hb=HEAD.

UEFI Variables Support ****

UEFI defines variables through which an operating system can interact with the firmware**.UEFI Boot Variables are used by the boot-loader and used by the OS only for early system start-up.** UEFI Runtime Variables allow an OS to manage certain settings of the firmware like the UEFI Boot Manager or managing the keys for UEFI Secure Boot Protocol etc**.**

Note: The below steps will not work if the system has been booted in BIOS mode and will not work if the UEFI processor architecture does not match the kernel one, i.e. x86_64 UEFI + x86 32-bit Kernel and vice-versa config will not work**.** This is true only for efivars kernel module and efibootmgr step**.** The other steps (ie. upto setting up /EFI/arch/refind/{refindx64.efi,refind.conf} ) can be done even in BIOS/Legacy boot mode**.**

Access to UEFI Runtime services is provided by «efivars» kernel module which is enabled through the CONFIG_EFI_VAR=m kernel config option**.** This module once loaded exposes the variables under the directory /sys/firmware/efi/vars. One way to check whether the system has booted in UEFI boot mode is to load the «efivars» kernel module and check for the existence of /sys/firmware/efi/vars directory with contents similar to :

Sample output (x86_64-UEFI 2**.**3.1 in x86_64 Kernel):




# ls -1 /sys/firmware/efi/vars/


Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c/


BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c/


BootOptionSupport-8be4df61-93ca-11d2-aa0d-00e098032b8c/


BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c/


ConIn-8be4df61-93ca-11d2-aa0d-00e098032b8c/


ConInDev-8be4df61-93ca-11d2-aa0d-00e098032b8c/


ConOut-8be4df61-93ca-11d2-aa0d-00e098032b8c/


ConOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c/


ErrOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c/


Lang-8be4df61-93ca-11d2-aa0d-00e098032b8c/


LangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c/


MTC-eb704011-1402-11d3-8e77-00a0c969723b/


MemoryTypeInformation-4c19049f-4137-4dd3-9c10-8b97a83ffdfa/


PlatformLang-8be4df61-93ca-11d2-aa0d-00e098032b8c/


PlatformLangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c/


RTC-378d7b65-8da9-4773-b6e4-a47826a833e1/


del_var


new_var

The UEFI Runtime Variables will not be exposed to the OS if you have used «noefi» kernel parameter in the boot-loader menu**.** This parameter instructs the kernel to completely ignore UEFI Runtime Services**.**

Userspace Tools ****

There are few tools that can access/modify the UEFI variables, namely

  1. efibootmgr — Used to create/modify boot entries in the UEFI Boot Manager —efibootmgr or efibootmgr-git
  2. uefivars — simply dumps the variables — uefivars-git — uses efibootmgr library
  3. Ubuntu’s Firmware Test Suite — fwts — fwts-git — uefidump command — fwts uefidump

Non-Mac UEFI systems ****

efibootmgr ****

Warning: Using efibootmgr in Apple Macs will brick the firmware and may need reflash of the motherboard ROM**.** There have been bug reports regarding this in Ubuntu/Launchpad bug tracker**.** Use bless command alone in case of Macs. Experimental «bless» utility for Linux by Fedora developers — mactel-boot .

Note: efibootmgr command will work only if you have booted the system in UEFI mode itself, since it requires access to UEFI Runtime Variables which are available only in UEFI boot mode (with «noefi» kernel parameter NOT being used). Otherwise the message Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables is shown**.**

Initially the user may be required to manually launch the boot-loader from the firmware itself (using maybe the UEFI Shell) if the UEFI boot-loader was installed when the system is booted in BIOS mode**.** Then efibootmgr should be run to make the UEFI boot-loader entry as the default entry in the UEFI Boot Manager**.**

To use efibootmgr, first load the ‘efivars’ kernel module:

# modprobe efivars

If you get no such device found error for this command, that means you have not booted in UEFI mode or due to some reason the kernel is unable to access UEFI Runtime Variables (noefi**?).**

Verify whether there are files in /sys/firmware/efi/vars/ directory**.** This directory and its contents are created by «efivars» kernel module and it will exist only if you have booted in UEFI mode, without the «noefi» kernel parameter**.**

If /sys/firmware/efi/vars/ directory is empty or does not exist, then efibootmgr command will not work**.** If you are unable to make the ISO/CD/DVD/USB boot in UEFI mode try#Create_UEFI_bootable_USB_from_ISO.

Note: The below commands use gummiboot-efi boot-loader as example**.**

Assume the boot-loader file to be launched is /boot/efi/EFI/gummiboot/gummibootx64.efi./boot/efi/EFI/gummiboot/gummibootx64.efi can be split up as /boot/efi and/EFI/gummiboot/gummibootx64.efi, wherein /boot/efi is the mountpoint of the UEFI System Partition, which is assumed to be /dev/sdXY (here X and Y are just placeholders for the actual values — eg:- in /dev/sda1 , X=a Y=1).

To determine the actual device path for the UEFI System Partition (should be in the form/dev/sdXY), try :

# findmnt /boot/efi


TARGET SOURCE  FSTYPE OPTIONS


/boot/efi  /dev/sdXY  vfat         rw,flush,tz=UTC

Then create the boot entry using efibootmgr as follows :

# efibootmgr -c -g -d /dev/sdX -p Y -w -L "Gummiboot" -l 'EFIgummibootgummibootx64.efi'

In the above command /boot/efi/EFI/gummiboot/gummibootx64.efi translates to /boot/efi and/EFI/gummiboot/gummibootx64.efi which in turn translate to drive /dev/sdX -> partition Y -> file /EFI/gummiboot/gummibootx64.efi.

UEFI uses backward slash as path separator (similar to Windows paths).

The ‘label’ is the name of the menu entry shown in the UEFI boot menu**.** This name is user’s choice and does not affect the booting of the system**.** More info can be obtained from efibootmgr GIT README .

FAT32 filesystem is case-insensitive since it does not use UTF-8 encoding by default**.** In that case the firmware uses capital ‘EFI’ instead of small ‘efi’, therefore usingEFIgummibootgummibootx64.efi or efigummibootgummibootx64.efi does not matter (this will change if the filesystem encoding is UTF-8).

Linux Bootloaders for UEFI ****

See UEFI Bootloaders .

Create an UEFI System Partition in Linux ****

Note: The UEFISYS partition can be of any size supported by FAT32 filesystem**.According to Microsoft Documentation, the minimum partition/volume size for FAT32 is 512 MiB.** Therefore it is recommended for UEFISYS partition to be at least 512 MiB**.Higher partition sizes are fine, especially if you use multiple UEFI bootloaders, or multiple OSes booting via UEFI, so that there is enough space to hold all the related files.If you are using Linux EFISTUB booting, then you need to make sure there is adequate space available for keeping the Kernel and Initramfs files in the UEFISYS partition.**

For GPT partitioned disks ****

Two choices:

  • Using GNU Parted/GParted: Create a FAT32 partition**.** Set «boot» flag on for that partition**.**
  • Using GPT fdisk (aka gdisk): Create a partition with gdisk type code «EF00». Then format that partition as FAT32 using mkfs.vfat -F32 /dev/<THAT_PARTITION>

Note: Setting «boot» flag in parted in a MBR partition marks that partition as active, while the same «boot» flag in a GPT partition marks that partition as «UEFI System Partition».

Warning: Do not use util-linux fdisk, cfdisk or sfdisk to change the type codes in a GPT disk**.** Similarly do not use gptfdisk gdisk, cgdisk or sgdisk on a MBR disk, it will be automatically converted to GPT (no data loss will occur, but the system will fail to boot).

For MBR partitioned disks ****

Two choices:

  • Using GNU Parted/GParted: Create FAT32 partition**.** Change the type code of that partition to 0xEF using fdisk, cfdisk or sfdisk**.**
  • Using fdisk: Create a partition with partition type 0xEF and format it as FAT32 usingmkfs.vfat -F32 /dev/<THAT_PARTITION>

Note: It is recommended to use always GPT for UEFI boot as some UEFI firmwares do not allow UEFI-MBR boot**.**

UEFI Shell ****

The UEFI Shell is a shell/terminal for the firmware which allows launching uefi applications which include uefi bootloaders**.** Apart from that, the shell can also be used to obtain various other information about the system or the firmware like memory map (memmap), modifying boot manager variables (bcfg), running partitioning programs (diskpart), loading uefi drivers, editing text files (edit), hexedit etc**.**

UEFI Shell download links ****

You can download a BSD licensed UEFI Shell from Intel’s Tianocore UDK/EDK2 Sourceforge.net project**.**

Shell 2.0 works only in UEFI 2.3+ systems and is recommended over Shell 1.0 in those systems. Shell 1**.0 should work in all UEFI systems irrespective of the spec.** version the firmware follows**.** More info at ShellPkg and this mail

Launching UEFI Shell ****

Few Asus and other AMI Aptio x86_64 UEFI firmware based motherboards (from Sandy Bridge onwards) provide an option called "Launch EFI Shell from filesystem device" . For those motherboards, download the x86_64 UEFI Shell and copy it to your UEFI SYSTEM PARTITION as <UEFI_SYSTEM_PARTITION>/shellx64.efi (mostly /boot/efi/shellx64.efi) .

Systems with Phoenix SecureCore Tiano UEFI firmware are known to have embedded UEFI Shell which can be launched using either F6, F11 or F12 key**.**

Note: If you are unable to launch UEFI Shell from the firmware directly using any of the above mentioned methods, create a FAT32 USB pen drive with Shell.efi copied as (USB)/efi/boot/bootx64.efi . This USB should come up in the firmware boot menu. Launching this option will launch the UEFI Shell for you**.**

Important UEFI Shell Commands ****

UEFI Shell commands usually support -b option which makes output pause after each page**.** map lists recognized filesystems (fs0, ...) and data storage devices (blk0, ...). Run help -b to list available commands**.**

More info at http://software.intel.com/en-us/articles/efi-shells-and-scripting/

BCFG command is used to modify the UEFI NVRAM entries, which allow the user to change the boot entries or driver options**.** This command is described in detail in page 83 (Section 5**.**3) of «UEFI Shell Specification 2.0» pdf document.

Note: Users are recommended to try bcfg only if efibootmgr fails to create working boot entries in their system**.**

Note: UEFI Shell 1**.0 does not support bcfg command.**

To dump a list of current boot entries —

Shell> bcfg boot dump -v

To add a boot menu entry for rEFInd (for example) as 4th (numbering starts from zero) option in the boot menu

Shell> bcfg boot add 3 fs0:EFIarchrefindrefindx64.efi "Arch Linux (rEFInd)"

where fs0: is the mapping corresponding to the UEFI System Partition and EFIarchrefindrefindx64.efi is the file to be launched**.**

To remove the 4th boot option

Shell> bcfg boot rm 3

To move the boot option #3 to #0 (i**.**e. 1st or the default entry in the UEFI Boot menu)

Shell> bcfg boot mv 3 0

For bcfg help text

Shell> help bcfg -v -b
Shell> bcfg -**?** -v -b

EDIT command provides a basic text editor with an interface similar to nano text editor, but slightly less functional**.** It handles UTF-8 encoding and takes care or LF vs CRLF line endings**.**

To edit, for example rEFInd’s refind.conf in the UEFI System Partition (fs0: in the firmware)

Shell> fs0:


FS0:> cd EFIarchrefind


FS0:EFIarchrefind> edit refind.conf

Type Ctrl-E for help**.**

Hardware Compatibility ****

Main page HCL/Firmwares/UEFI

Create UEFI bootable USB from ISO ****

Note: The instructions below are specifically for Archiso /official media; Archbootpreparation is identical, with this refind.conf instead of the one mentioned below (which is for Archiso) and without the filesystem label requirement**.**

Note: The USB can use either MBR or GPT partition table**.** The filesystem should be either FAT32 (recommended) or FAT16**.** FAT12 is designed for floppy drives and therefore not recommended for USB drives**.**

First create a MBR partition table in the USB using fdisk**.** Mount the USB partition and create a FAT32 filesystem with LABEL as used in the Archiso configuration**.**

# mkdir -p /mnt/{usb,iso}


# mount -o loop archlinux-2012**.**12.01-dual.iso /mnt/iso

Obtain the label from /mnt/iso/loader/entries/archiso-x86_64.conf; this is used by the archisohook in initramfs to identify the udev path to the installation media**.**

# awk 'BEGIN {FS="="} /archisolabel/ {print $3}' /mnt/iso/loader/entries/archiso-x86_64.conf | xargs mkfs.vfat /dev/sdXY -n

Mount the newly created FAT32 USB partition, and copy the contents of the installation media to the USB media**.**

# mount /dev/sdXY /mnt/usb




# cp -r / mnt / iso / * / mnt / usb


# umount /mnt/{usb,iso}


# sync

If you find the error: «No loader found**.** Configuration files in /loader/entries/*.conf are needed**.**« A possible fix is to use a different uefi bootloader to the included one, gummiboot**.**

Download refind-efi pkg and extract the file /usr/lib/refind/refind_x64.efi from within the package to (USB)/EFI/boot/bootx64.efi (overwrite or rename any existing(USB)/EFI/boot/bootx64.efi file).

Then copy this text to EFI/boot/refind.conf. Take care that the label in the Arch menu section (ARCH_201302 here) matches that of your usb’s**.**

refind.conf
timeout 5




textonly




showtools about,reboot,shutdown,exit


# scan_driver_dirs EFI/tools/drivers_x64


scanfor manual,internal,external,optical




scan_delay 1


dont_scan_dirs EFI/boot




max_tags 0


default_selection "Arch Linux Archiso x86_64 UEFI USB"




menuentry "Arch Linux Archiso x86_64 UEFI USB" {


  loader /arch/boot/x86_64/vmlinuz


  initrd /arch/boot/x86_64/archiso.img


  ostype Linux


  graphics off


  options "archisobasedir=arch archisolabel=ARCH_201302 add_efi_memmap"


}




menuentry "UEFI x86_64 Shell v2" {


  loader /EFI/shellx64_v2.efi




  graphics off




}




menuentry "UEFI x86_64 Shell v1" {


  loader /EFI/shellx64_v1.efi




  graphics off




}

You should now be able to successfully boot, and you can choose which EFI you’d like to load**.**

Remove UEFI boot support from ISO ****

Warning: In the event that UEFI+isohybrid El Torito/MBR really causes problems, it would be better to just UEFI boot using the USB stick instructions in the previous section

Most of the 32-bit EFI Macs and some 64-bit EFI Macs refuse to boot from a UEFI(X64)+BIOS bootable CD/DVD**.** If one wishes to proceed with the installation using optical media, it might be necessary to remove UEFI support first**.**

Mount the official installation media and obtain the archisolabel as shown in the previous section**.**

Rebuild the ISO using xorriso from libisoburn :

$ xorriso -as mkisofs -iso-level 3 


    -full-iso9660-filenames


    -volid "ARCH_201212" 


    -appid "Arch Linux CD" 


    -publisher "Arch Linux " 


    -preparer "prepared like a BAWSE" 


    -eltorito-boot isolinux/isolinux.bin 


    -eltorito-catalog isolinux/boot.cat 


    -no-emul-boot -boot-load-size 4 -boot-info-table 


    -isohybrid-mbr "/mnt/iso/isolinux/isohdpfx.bin" 


    -output "~/archiso.iso" "/mnt/iso/"

Burn ~/archiso.iso to optical media and proceed with installation normally**.**

Posted by [20.02.2013

21.02.2013](http://itman.in/efi-boot/)Author Sergey Sharmazanov Categories

Uncategorized

EFI_EFI_SHELL_intro.md

EFI及EFI SHELL简介
http://smilejay.com/2011/05/efi_efi-shell/
05/16/2011MASTER 5 COMMENTS
今天升级Sandy Bridge EP测试机的BIOS,可谓是曲折啊,尝试各种方法、遇到各种软硬件问题问题。其中一种方法是按照Intel的官方BIOS文档中的说明,用在EFI Shell中升级。所以稍微了解了一下EFI和EFI Shell。
大致来说,EFI是Extensible Firmware Interface的缩写,是介于平台固件和操作系统之间的一层软件接口(及其详细规格说明文档)。EFI是Intel在1998年开始的一个项目演变而来,而在2005年Intel将EFI 1.10开源并交由Unified EFI开源社区去维护和开发,Intel自己的EFI也就不单独做了,都和开源社区共用一个。现在也通常用EFI来代指UEFI,二者不再有意区分。
EFI Shell是EFI提供的一个交互式的命令行Shell环境,在这里你可以执行一些efi应用程序,加载efi设备驱动程序,以及引导操作系统,从引导菜单项中选择”efi shell”,回车,待出现”shell]”提示符时即表明你已进入efi shell环境中,下面对一些常用的efi shell环境下的命令作些简要介绍:

[drive_name]: 改变当前驱动器.例如, fs0当前映射到了ls-240 驱动器的话,shell] fs0: [回车]就将提供对ls-240 驱动器的访问.
alias [-bdv] [sname] [value] 设置或获取别名;
attrib [-b] [+/- rhs] [file] 察看或设置文件属性
bcfg -? 配置efi nvram中启动时所加载的驱动选项
botmaint 执行启动维护管理
break 设置执行断点
cd [path] 改变当前目录
cls [background color] 清屏
comp file1 file2 进行文件比较
connect [-r] [-c] handle# .devicehandle# driverhandle# 绑定efi驱动到一个设备并激活该驱动
cp [-r] file [file] … [dest] 拷贝文件和目录
date [mm/dd/yyyy] 获取或设置日期
dblk device [lba] [blocks] 察看块设备的16进制印象
devices [-b] [-1xxx] 列出系统中的所有设备
devtree [-b] [-d] 显示设备树
dh [-b] [-p prot_id] | [handle] 察看文件句柄信息
disconnect devicehandle# [driverhandle# [childhandle#] 卸载设备驱动
dmem {address] [size] [;mmio] 察看指定内存中的内容
dmpstore drivers [-b] [-lxxx] 列出安装的驱动
drvcfg [-c] [-lxxx] [-f] [-v] [-s] 调用驱动配置协议
drvdiag [-c] [-lxxx] [-s] [-e] [-m] 调用驱动诊断协议
echo [[-on | -off] | [text] 回显
edit [filename] 文本编辑
eficompress infile outfile 压缩efi文件
efidecompress infile outfile 解压efi文件
guid [-b] [sname] 察看知名guid ids
help [-b] [internal_command] 显示帮助信息
hexedit [[-f]filename|[-d diskname offset size]|[-m offset size]] 16进制编
load driver_name 加载驱动
loadbmp [-c] [-t] [-i[uga instance]] file 在屏幕上显示一个位图文件
loadpcirom romfile 加载pci option rom
ls [-b] [dir] [dir] … 获得目录列表
map [-bdvr] [sname[:]] [handle] 映射驱动器路径
mem [address] [size] [;mmio] 察看内存或内存映射i/o
memmap [-b] 察看内存映射表
mkdir dir [dir] 创建目录项
mm address [width] [;type] [n] 内存编辑
mode [col row] 设置当前图形显示模式
mount blkdevice [sname[:]] 在一个块设备上加载文件系统
mv [src…] [dst] 移动文件或目录
pci [bus_dev] [func] 显示pci设备信息
rconnect devicehandle# [driverhandle# [childhandle#]] | [-r] 驱动重载
reset [reset_string] 冷启动
rm file/dir [file/dir] 删除文件或目录
setsize file 设置文件大小
stall microseconds 延时
time [hh:mm:ss] 获取或设置时间
type [-a] [-u] [-b] file 察看文件内容
ver 显示版本信息
vol fs [volume_label] 设置卷标
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[drive_name]: 改变当前驱动器.例如, fs0当前映射到了ls-240 驱动器的话,shell] fs0: [回车]就将提供对ls-240 驱动器的访问.
alias [-bdv] [sname] [value] 设置或获取别名;
attrib [-b] [+/- rhs] [file] 察看或设置文件属性
bcfg -? 配置efi nvram中启动时所加载的驱动选项
botmaint 执行启动维护管理
break 设置执行断点
cd [path] 改变当前目录
cls [background color] 清屏
comp file1 file2 进行文件比较
connect [-r] [-c] handle# .devicehandle# driverhandle# 绑定efi驱动到一个设备并激活该驱动
cp [-r] file [file] … [dest] 拷贝文件和目录
date [mm/dd/yyyy] 获取或设置日期
dblk device [lba] [blocks] 察看块设备的16进制印象
devices [-b] [-1xxx] 列出系统中的所有设备
devtree [-b] [-d] 显示设备树
dh [-b] [-p prot_id] | [handle] 察看文件句柄信息
disconnect devicehandle# [driverhandle# [childhandle#] 卸载设备驱动
dmem {address] [size] [;mmio] 察看指定内存中的内容
dmpstore drivers [-b] [-lxxx] 列出安装的驱动
drvcfg [-c] [-lxxx] [-f] [-v] [-s] 调用驱动配置协议
drvdiag [-c] [-lxxx] [-s] [-e] [-m] 调用驱动诊断协议
echo [[-on | -off] | [text] 回显
edit [filename] 文本编辑
eficompress infile outfile 压缩efi文件
efidecompress infile outfile 解压efi文件
guid [-b] [sname] 察看知名guid ids
help [-b] [internal_command] 显示帮助信息
hexedit [[-f]filename|[-d diskname offset size]|[-m offset size]] 16进制编
load driver_name 加载驱动
loadbmp [-c] [-t] [-i[uga instance]] file 在屏幕上显示一个位图文件
loadpcirom romfile 加载pci option rom
ls [-b] [dir] [dir] … 获得目录列表
map [-bdvr] [sname[:]] [handle] 映射驱动器路径
mem [address] [size] [;mmio] 察看内存或内存映射i/o
memmap [-b] 察看内存映射表
mkdir dir [dir] 创建目录项
mm address [width] [;type] [n] 内存编辑
mode [col row] 设置当前图形显示模式
mount blkdevice [sname[:]] 在一个块设备上加载文件系统
mv [src…] [dst] 移动文件或目录
pci [bus_dev] [func] 显示pci设备信息
rconnect devicehandle# [driverhandle# [childhandle#]] | [-r] 驱动重载
reset [reset_string] 冷启动
rm file/dir [file/dir] 删除文件或目录
setsize file 设置文件大小
stall microseconds 延时
time [hh:mm:ss] 获取或设置时间
type [-a] [-u] [-b] file 察看文件内容
ver 显示版本信息
vol fs [volume_label] 设置卷标
参考资料:
http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#The_EFI_shell
http://www.intel.com/technology/efi/ (Intel对EFI的技术)
http://software.intel.com/en-us/articles/efi-shells-and-scripting/ (Intel的EFI Shell介绍及脚本编写)
http://blog.sina.com.cn/s/blog_4a44ac500100g6rh.html

EFI_Shells_and_Scripting_by_Intel.md

EFI Shells and Scripting
https://software.intel.com/en-us/articles/efi-shells-and-scripting/
Published on October 22, 2008

Translate

Introduction
Extensible firmware interface (EFI) brings new flexibility and opportunities to users by allowing them to work in the layer between their OS and BIOS, without altering either one. This paper explains how to use EFI shell commands, create a script file and set up the boot menu with shells and scripts. In addition, this paper demonstrates dual boot selection for the 64-bit Red Hat Linux* 7.1 and 64-bit Microsoft Windows* XP Professional operating systems.

EFI Shell Commands
The following is the list of the EFI 0.99[12.29] shell commands:

Commands Descriptions
help [-b] [internal command] Displays this help
guid [-b] [sname] Lists known GUID (Global Unique Identifiers)
set [-bdv] [sname] [value] Gets or sets environment variable
alias [-bdv] [sname] [value] Gets or sets alias settings
dh [-b] [-p prot_id] | [handle] Dumps handle information
unload [-nv] HandleIndex Unloads a protocol image
map [-bdvr] [sname[:]] [handle] Maps shortname to device path
mount BlkDevice [sname[:]] Mounts a file system on a block device
cd [path] Updates the current directory
echo [[-on | -off] | [text] Echoes text to stdout or toggle script echo
if [not] condition then Script-only: IF THEN construct
endif Script-only: Delimiter for IF THEN construct
goto label Script-only: Jump to label location in script
for var in < /td> Script-only: Loop construct
endfor Script-only: Delimiter for loop construct
pause Script-only: Prompt to quit or continue
ls [-b] [dir] [dir] … Obtains directory listing
mkdir dir [dir] … Makes directory
mode [col row] Gets or sets current text mode
cp [-r] file [file] … [dest] Copies files/directories
comp file1 file2 Compares two files
rm file/dir [file/dir] Remove files/directories
memmap [-b] Dumps memory map
type [-a] [-u] [-b] file Types file
dmpstore Dumps variable store
load driver_name Loads a driver
ver Displays version information
err [level] Sets or displays error level
time [hh:mm:ss] Gets or sets time
date [mm/dd/yyyy] Gets or sets date
stall microseconds Delay for x microseconds
reset [/warm] [reset string] Cold or warm reset
vol fs [Volume Label] Sets or displays volume label
attrib [-b] [+/- rhs] [file] Sets or displays file attributes
cls [background color] Clears screen
bcfg -? Configures boot driver and load options
edit [file name] Edits a file
Edd30 [On | Off] Enables or disables EDD 3.0 device paths
dblk device [Lba] [Blocks] Hex dump of BlkIo devices
pci [bus dev] [func] Displays PCI device(s) information
mm Address [Width] [;Type] Modifies memory: Mem, MMIO, IO, PCI
mem [Address] [size] [;MMIO] Dumps memory or memory mapped IO
EddDebug [BlockDeviceName] Dumps EDD information from adapter card
Table 1: EFI 0.99[12.29] shell commands

This list appears when you type the command «help» at the shell prompt. However, it does not contain all of the EFI shell commands; the commands «attrib» and «exit» are absent. Not all commands can be used in script files. For example, the command «exit» missing from the list cannot be used in a script file. To exit out of a script, simply jump to the end of the file. Conversely, some of the commands like «if…then,» «for…in,» «goto» can only be used inside the script file.

To execute a command, type it at the shell prompt, which can be as follows:

Shell>

fs0:> (If there is a disk in the floppydrive before the PC is turned on, then the current media defaults to the floppy disk. If not, then the current media is the first hard disk partition.)
fs1:> (The first hard disk partition if fs0 is the floppy disk.)
fs2:> (Indicates the CD-ROM drive.)

This environment is similar to Microsoft DOS* (MS-DOS) in that the user types in commands and presses «Enter» to execute the commands. As demonstrated below, changing to another drive is easy: type the name of the drive and then press «Enter». («» is a «carriage return» which translates to «press Enter.»)

Shell> fs0:
Fs0:> fs2:

Fs2:>

If the user is unfamiliar with the use of a command, they simply type it at the shell prompt and the computer displays the correct syntax and meaning of each of the switches.

EFI Shell Scripts
In basic terms, a script file is one that contains a sequence of shell commands that the user would like the computer to execute. Rather than entering them at the shell prompt, the user places the appropriate shell commands into a file and names the file «filename.nsh» to create a script file. This is extremely useful for repetitive tasks.

The script file resembles a batch file in MS-DOS; in EFI, a file called «startup.nsh» automatically runs every time a shell environment is opened. You can create the script using any ASCII or Unicode text editor. The following are shell commands frequently used in a script:

3.1 Echo:
Syntax:echo [-on |

-off]

echo [text]

The first line in a script is usually «echo -off.» This prevents subsequent batch file commands from displaying on the screen so that only results display.

For example, in a script file, there are such commands:

Batch commands:echo -on

echo This is a test

When you run that script, you see the following lines on the screen:

Result:echo -on

echo This is a test

This is a test

The first two lines in bold are batch commands from the script, and the third line is the result of the second batch command. Note the display when the echo command is turned off:

Batch commands:echo -off

echo This is a test

Result:echo -off

This is a test

The batch command «echo This is a test» no longer displays onscreen because the echo has been turned off. You always see the batch command «echo -off» because the echo does not disable after this line has been executed.

3.2 If
Syntax:if [not] exist filename then…endifif [not] string1 == string2

then


endif
The first form checks for file existence. Type either just the file name or the path and the file name. For example:

set test "startup.nsh" # Assign "startup.nsh" to the

environment

 # variable named test

if exist %test% then # Check to see if the file

"startup.nsh"

 # exists in the current directory

type %test% # Displays the contents of "startup.nsh"

 # if found.

endif # End of if ... then statement

The second form is the comparison between strings:

set env1 "world"

set env2 "map"

if %env1% == %env2% then # Compare the value of 2

variables

echo %env1% is equal to %env2%

endif

Note: Spaces need to be inserted at both ends of the «==» sign. Otherwise, the shell generates an error.

%env1% == %env2% correct

%env1%==%env2% incorrect

3.3 For
Syntax:for %index in

group

...

endfor

This is a «for» loop. The index here is any single character, like a, b, c and so on, but it can’t be a digit like 1, 2 or 3 because they can be misinterpreted as «argument» variables. Groups can be made up of strings or file names separated by the use of spaces. Consider the following examples:

Batch commands:for %b in 1

2 3 4

type %b

**

endfor

Result:1

**

2

**

3

**

4

**

Batch commands:for %m in

*.nsh

type

%m

 endfor

Result: The list of all files with extension «nsh» in the current directory.

Note: Spaces need to be inserted at both ends of the %index. Otherwise, the shell generates an error.

Type %b ** correct

Type %b** incorrect

Dual Boot Selection
Consider the procedure for setting up dual boot on an Intel Itanium processor-based system. If Windows* 9x and Windows NT* or Windows* 2000 is installed on an Intel® Itanium® platform, you can set up a dual boot under Windows NT or Windows 2000. If Windows 9x and Linux are installed, you can set up a dual boot under Linux.

On the Intel Itanium platform, there is a layer between the firmware and the OS—that layer is the EFI. You can boot to any installed OS from the EFI layer as long as the OS is EFI-compliant.

Below is a demonstration of dual booting 64-bit versions of Red Hat Linux* and Microsoft Windows* 2000.

Before starting to build the boot menu:

A) You must disable the file «startup.nsh.» This script runs automatically when you turn on the system and select the «Boot OS» option. When you install Windows 2000, it creates the «startup.nsh» file. This file executes a file called «launcher.efi,» which boots directly to Windows 2000. Perform the following steps to disable the startup.nsh file:

  1. During the Windows booting process, press any key to interrupt it.

  2. Change the access right of the startup.nsh file to modify or delete it. From the shell prompt, «Shell>,» go to the main partition:

Shell> fs0:

 or 

Shell> fs1:
The choice between «fs0» and «fs1» depends on whether a disk is in the floppy drive.

Note: To use the floppy drive, a floppy disk must be inserted. Otherwise, the floppy drive is not recognized; the same caution applies to the CD-ROM drive.

fs0:> attrib -r startup.nshfs0:> edit startup.nsh
In edit mode, type a # sign at the beginning of the line containing the word «launcher» to comment it out.

B) Make sure the BIOS build 89B is flashed. One way to establish the correct build number is to look at the EFI version when you first turn on the PC; if it’s correct, you see something like:

EFI Version 0.99[12.31]…

There are instances in which an incorrect BIOS version has been preloaded to the Software Development Vehicle (SDV). If you see «EFI Version 1.0[12.25]…» displayed on the screen, reflash the BIOS with build 89B or 99.

Assume you want the following multiple boot menu:

Windows XP* Professional
Red Hat Linux*
EFI Shell
You can create it using any of these methods:

boot maintenance menu
BCFG command
script
4.1 Using Boot Maintenance Menu:
Follow these steps to create a boot menu:

  1. Turn on the system.

  2. Select «Boot OS.»

  3. At the shell prompt, type «exit» and press Enter.

Shell> exit
4) The screen displays a boot menu similar to the following:

EFI Boot Manager ver. 0.99[12.29]

Select boot option

EFI Shell [built in]

Boot option maintenance menu
5) Select the boot option maintenance menu.

  1. Select «Add a boot option.»

  2. Select the partition containing the OS loader. In this case, it is the first hard disk partition. Something similar to the following appears onscreen:

NO VOLUME LABEL [VenHw(Unknown D evice:80)/HD(Part1, Sig948939)]

Removable Media [VenHw(Unknown Device:01)]

Removable Media [VenHw(Unknown Device:FF)]

Load File [Acpi(PNP0A03,0)/Pci(4|0)/mac(009027E4A0F4)]

Load File [EFI Shell [Built-in]]

Legacy Boot A:

Legacy Boot C:

Exit

  1. Select the first item, «NO VOLUME LABEL…»

  2. The screen displays the files of the directory of the selected partition.

Select the file «eli.efi.» This is the Linux loader file.

  1. Type the title you wish to display on the boot menu when asked for the description: «Red Hat Linux*.»

  2. When prompted with:

«New boot option data: ASCII/Unicode string only Enter Boot option Data type[A- SCII U- Unicode N- No BootOption],» select «N.»

  1. Next, select the option «Save Changes to NVRAM[Y-yes N-No]:» and type «Y.»

  2. When you have no other OS to set, select «exit» to return to the previous menu.

  3. Select «Cold Reset» to reboot the system.

  4. To create an EFI shell prompt, select option «EFI Shell[built in]» from step 7 and type «EFI Shell» at step 10.

  5. Type «exit» at the shell prompt «Shell>» to go to the boot menu.

4.2 Using the BCFG Command
The «Bcfg» is the boot configuration shell command. Assuming that «fs0» is the main partition, type the following statement to create the boot menu:

fs0:> bcfg boot add 2 eli.efi «Red Hat Linux*»

Note: You cannot create an EFI shell prompt using this method; you must use the previous method.

4.3 Using Script
Since there is no user-prompt command under the EFI shell to accept users’ selected input, you must use an alternative method:

a) If the file startup.nsh does not exist,

create it or modify it to

contain strictly the following line:

Menu
b) Create a file and name it menu.nsh with the following:

Echo -off

Dblk3:

Echo 2- Red Hat Linux

Echo Enter choice and press Enter

Note:

  1. There is no option for the shell prompt since the command «nshell» is not on the list.

  2. The current partition is set to «dblk3» instead of «fs0» or «fs1.» This is because if there is a floppy disk in the floppy drive, then «fs0» is the floppy disk and «fs1» is the first hard disk partition. Otherwise, «fs0» is the first hard disk partition
    .

c) Create a file and name it «2.nsh» with the following contents:

eli
Note: The «2.nsh» script is used to boot to Red Hat Linux*.
Conclusion
This represents only the beginning of the uses and benefits of EFI shell commands and scripts. Not only can EFI be used similarly to a MS-DOS device driver, its capabilities also remove the hassle of modifying the OS. Disk utility vendors can use EFI to craft powerful tools like platform-independent disk partitioning. Another of EFI’s benefits is that the same device drivers can be used by many EFI-compliant platforms, thus providing a good return on investment. EFI allows users to create device drivers to access hardware directly without having to go through the OS, making the process both simpler and faster.

For more complete information about compiler optimizations, see our Optimization Notice.
4 commentsTop
BADAR S. said on May 19,2017

BADAR S.’s picture
This is first time learning about EFI Shel. So, I was wondering how can I create a bootable EFI shell USB key?

murala s. said on Nov 14,2016

murala s.’s picture
Hi,

I need small help,

I want to run following content using EFI shell script file like script.nsh.

MyApp.efi «BootOption #»

But when i run script.nsh it is treating as like below,

MyApp.efi «BootOption

Please help me how to pass # also ,

thanks,

Shi Hao C. (Intel) said on Jun 3,2015

Shi Hao C. (Intel)’s picture
It would be most helpful if there’s a link to further describe/expand on the commands in the table at the end of this page here. Or where/how to access the user manuals of EFI shell itself. All in all this documentation does provide basic functionality of EFI shell. Thanks.

Henry L. said on Oct 21,2014

Henry L.’s picture
Good tool

Intel-UEFI-Shell-2011

https://software.intel.com/en-us/articles/uefi-shell
By wolfgang-rosenbergsr (Intel), published on March 21, 2011
Translate

Home >> | Back to Courseware Access page >> | Back to Other Courseware Content page >> |

UEFI Curriculum

About UEFI

UEFI-Framework Course Contents

Introduction to PC Architecture

Beyond BIOS

UEFI Introduction

UEFI Architecture and Technical Overview

UEFI Application

UEFI Shell

UEFI Boot Manager

UEFI Services

UEFI Drivers

Framework Architecture and Technical Overview

Labs

References

Potential research topics

UEFI Shell Users’ Guide

Contents
1UEFI Shell Overview
2EFI Shell Open Source
3Analogy to Old DOS: BIOS
4Shell Usage
5EFI File System
6Device Path
7Executing UEFI Applications
8Execute a UEFI Shell
9Wild Card Expansion
10Output Redirection
11EFI Shell Commands
12Internal EFI Shell Commands
13External Shell Commands
14EFI Shell Commands
15Unix-like Shell Commands
16Script File Example
17Help or ?: Command List in Shell
18DH – Dump Handle

launch-efi-shell-from-filesystem-device-warning-not-found.md

  • motherboard

    • Intel Atom D2550
    • x86/x86_64 (BIOS reverse engineering hack to support EMT64)
    • Support EFI Shell
  • This MB support 64-bit OS but only support 32-bit EFI shell, so download EFI Shell ia32 and put in USB and get EFI shell.
    USB-ROOT/Shell.efi
    https://svn.code.sf.net/p/edk2/code/trunk/edk2/ShellBinPkg/UefiShell/

    • AArch64
    • Arm
    • Ia32
    • x64

https://wiki.debian.org/UEFI#A32-bit_x86_PC_.28i386.29_support_for_UEFI

  • Support for mixed-mode systems: 64-bit system with 32-bit UEFI

Some systems have been released containing 64-bit Intel Atom CPUs (such as the Bay Trail), but unfortunately use 32-bit UEFI firmware with no BIOS compatibility mode. Using the 32-bit UEFI x86 support, an i386 installation should be possible on these machines but it won’t make the most of the 64-bit hardware.

Debian Jessie (8.0) was the first Linux distribution to include full support for mixed-mode UEFI installation on these machines. The multi-arch installation media (available in netinst and DVD form) include the UEFI boot loaders necessary for both i386 and amd64 boot. By selecting «64-bit install» from the initial boot menu, debian-installer will install a 64-bit (amd64) version of Debian. The system will automatically detect that the underlying UEFI firmware is 32-bit and will install the appropriate version of grub-efi to work with it.

  • Next, EFI shell can boot GRUBx32.efi bootloader
  • Ref: Arch forum
  • https://bbs.archlinux.org/viewtopic.php?id=162189
My Asrock H67m motherboard has an option to "Launch EFI Shell from filesystem device," but when I try to run it I receive an error, "NOT FOUND". I've found the section of the Wiki article on UEFI where it talks about motherboards with that option, but the fix involves downloading and coping the shell. I haven't been able to boot yet, and I don't know how to download the shell. Any ideas?
  • Ref:
    https://forums.tweaktown.com/asus/52327-launch-efi-shell-filesystem-device.html

    • where to get UEFI Shell Bin pkg
  • Ref:
    http://prhsie-bios.blogspot.com/2016/02/usb-boot-with-uefi-shell-environment.html

2016年2月29日 星期一
USB Boot with UEFI Shell Environment.
如何在 UEFI-aware platform 上讓 USB 直接開機進 shell




在 UEFI platform 上(若不考慮 CSM 時), BDS phase 在開機時會主動搜尋 media 上的 /efi/boot/bootx64.efi 或 bootia32.efi 做為開機的起點. 而這檔案就分別是 X64 或 IA32 版的 shell.efi .

有 EDK II/UDK2010 的人, 可以把 EdkShellBinPkg 裡的 shell 複製到 UFD (請確定 UFD 是FAT 格式)裡:
    FullShellIa32Shell_Full.efi to efibootbootia32.efi
    FullShellX64Shell_Full.efi to efibootbootx64.efi

    or

    MinimumShellIa32Shell.efi to efibootbootia32.efi
    MinimumShellX64Shell.efi to efibootbootx64.efi

Ps.可以只複製 bootx64.efi 就夠了

順帶一提,手上有 AMI Aptio code 的人可以找一下 addon 裡面, 依樣劃葫蘆:

addonshell.efi to efibootbootx64.efi

如此一來,就可以在 Aptio Setup Utility 的 Boot 裡選用 "UEFI:" 開頭的 USB device 開機了. (當然了, 直接選用 Save & Exit 裡的 Boot Override 也可以). 這樣當你在沒包 shell UEFI-aware platform 上, 就可以不必用 Launch EFI Shell from filesystem device 的方法來手動 boot to shell 了. (這方法得把 shell.efi 複製到根目錄,並改為 shellx64.efi)

Reference: UEFI 2.5 - Chapter 12.3.1.3 Directory Structure 
張貼者: Hsie 於 上午6:52 
以電子郵件傳送這篇文章
BlogThis!
分享至 Twitter
分享至 Facebook
分享到 Pinterest

標籤: [UEFI][Shell] USB Boot

How to launch vmlinuz-linux from efi shell?
https://superuser.com/questions/1034894/how-to-launch-vmlinuz-linux-from-efi-shell

Ask Question
up vote
2
down vote
favorite
How to start vmlinuz-linux from efi shell ? I jump into the ESP and type vmlinuz-linux (vmlinuz-linux is in the ESP) but it says vmlinuz-linux isn’t recognized as an internal or external command, operable program, or batch file, why do I have to start a boot loader first I don’t get it.

linux-kernel efi
shareimprove this question
asked Feb 3 ’16 at 1:19

ChiseledAbs
360923
add a comment
3 Answers
active oldest votes
up vote
2
down vote
Just had to type /vmlinuz-linux root=PARTUUID=3518bb68-d01e-45c9-b973-0b5d918aae96 initrd=/initramfs-linux.img from this https://wiki.archlinux.org/index.php/EFISTUB#Booting_EFISTUB but had to remove the forward slash / before vmlinuz-linux to get it to work.

shareimprove this answer
answered Feb 4 ’16 at 9:29

ChiseledAbs
360923
add a comment
up vote
1
down vote
Whether you need a boot loader or not depends on whether your particular version of the Linux kernel supports EFI BOOT STUB.

See the following for more information: https://www.kernel.org/doc/Documentation/efi-stub.txt

shareimprove this answer
answered Feb 3 ’16 at 4:46

fpmurphy1
1,024511
add a comment
up vote
1
down vote
IIRC, the EFI shell won’t launch files as programs if their names don’t end in .efi. Thus, you must first rename the kernel file so that its name ends in .efi.

If you can’t rename the kernel file, you can still launch a kernel using the EFI stub loader via another boot manager program, such as gummiboot/systemd-boot or rEFInd. These tools don’t care about the filename extension — at least, not as much as the shell does. (rEFInd’s auto-scanning feature matches to .efi, vmlinuz, bzImage*, and kernel*, but manual boot configuration for both programs will work with any filename.)

Also, as fpmurphy1 says, the kernel must be compiled with EFI stub support. Most distributions have included this support in their 3.3.0 and later kernels, but this may not be 100% universal, particularly if you compile your kernel yourself. (The last I checked, EFI stub support was not part of the default kernel configuration for kernel source obtained from kernel.org.)

shareimprove this answer
answered Feb 3 ’16 at 14:10

Rod Smith
16.7k21942

Like this post? Please share to your friends:
  • Easybcd как восстановить загрузчик windows 10
  • Efi shell загрузка с флешки windows 10
  • Easybcd для windows xp не работает
  • Easyanticheat ошибка please run windows update
  • Easyanticheat untrusted system file c windows system32 shell32 dll