Команды для работы в командной строке windows

Представим ситуацию, что по какой то причине, вместо обычной загрузки операционной системы, перед вами появилась командная строка 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.

Boot\bootx64.efi

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

ls ubuntu
ls Microsoft

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

ls Microsoft\Boot -b

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

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

ubuntu\mmx64.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 Boot\bootx64.efi Boot\bootx64.efi_

# копирование файла bootmgfw.efi в bootx64.efi
cp Microsoft\Boot\bootmgfw.efi Boot\bootx64.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 \EFI\Microsoft\Boot\bootmgfw.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.

bootia32-efi

EFI boot blob and build scripts for devices using IA32 UEFI

Help, I’ve fallen into UEFI and I can’t get out!

I made this because, perhaps like you, I was trying to install Linux on an older x86_64-based tablet and found myself unable to boot and dropping into UEFI…

Devices supported

Pretty much anything using Intel Silvermont -based «Bay Trail» CPUs:

  • Intel Atom® Processor E3800 and Z3700 Series
  • Intel® Pentium® and Celeron® Processor N- and J-Series.

Known to work:

  • Acer NP15A
  • Multilaser M8W tablet
  • Asus T100
  • Lenovo Tab2

How-Tos

How-To: Create a bootable USB stick from a Lubuntu ISO

This How-To will walk you through installing Lubuntu. Why Lubuntu? I tested several Ubuntu distributions with these chips and found Lubuntu to be the most performant and lightweight with the Silvermont (see methodology below).

  1. Fetch the Lubuntu ISO from https://lubuntu.me/downloads/
  2. Get a copy of bootia32.efi either by downloading it from this repo or building it yourself.
  3. Back up any valuable files from your USB stick because they’ll be deleted in the next step.
  4. Create a new GPT partition table on the USB stick with Gnome Disks, parted, Windows Disk Manager, or any other partition management utility that supports GPT.
  5. Create a new FAT32 partition and format it.
  6. Mount the ISO so you can access the files within it. Windows 10 and most Linux distributions can do this without additional software.
  7. Make «hidden» files visible on the ISO. Hidden files begin with a single ‘.’ character and are also known as «dot files» for this reason. Windows Explorer and Gnome Files both have this capability in their view menus.
  8. Copy all files from the ISO onto your USB stick’s FAT32 partition.
  9. Ignore any errors about unsupported symlinks. Those symlinks are not required for a successful installation.
  10. Copy the bootia32.efi file into /EFI/boot on your USB stick. You should see other .efi files in there already.
  11. Unmount the USB stick and boot from it.

Other distros

I know this works with other Debian derivatives. I’m sure there’s a way to use it with RedHat derivatives, but you’ll have to figure that out on your own. The RedHat process is probably quite similar to the Ubuntu process used here.

Test methodology

I booted each in «live CD» mode, so none of the systems had access to swap. With Lubuntu I could simultaneously open all the default sponsored tabs in Firefox (Facebook, Reddit, other heavy sites), run LibreOffice Write and Calc, load a 4k image into GIMP, and have a YouTube video running full screen in just under 1.5GB RAM. The other Ubuntu distros OOM’d and died long before I could get to YouTube. I figure that’s good enough for practical purposes.

How-To: Build from Sources

If you don’t trust boot blobs from random strangers on the internet (understandable) you might want to build from sources. In that case you have two choices with regard to this repo:

  1. Read the contents of bootstrap.sh and build.sh (in this repo) and run the same commands yourself; or
  2. Just run the included scripts. If you run the scripts, run boostrap.sh first to install dependencies, then run build.sh to build the EFI file.

Due Credit

I relied on these sources to help me figure out this issue:

  • https://wiki.debian.org/UEFI#Support_for_mixed-mode_systems:_64-bit_system_with_32-bit_UEFI
  • https://sturmflut.github.io/linux/ubuntu/2015/02/04/installing-ubuntu-on-baytrail-tablets-version-2/
  • https://github.com/hirotakaster/baytail-bootia32.efi
  • In particular I used the build instructions from John Wells’s repo: https://github.com/jfwells/linux-asus-t100ta
  • https://unix.stackexchange.com/questions/257363/create-a-uefi-bootable-usb-stick-from-an-iso-image-with-gparted
  • https://askubuntu.com/questions/395879/how-to-create-uefi-only-bootable-usb-live-media

If you have just set up your new PC build or updating your old PC to a newer Windows version, you may need a bootable Pendrive which has got the Windows Operating System on it. A USB boot is a process in which computer hardware can be enabled to get all essential system booting information and files instead of a hard disk or a CD drive.

📖 Table of Contents

How does USB Boot work?

USB Boot works the same way a floppy disk was earlier used to boot a computer up. It is mostly used to repair, recover, or install an operating system from scratch. To perform a USB boot, first, you would have to create a bootable USB device.

This can be done using your own PC or other third-party utilities. Then the software will copy all the operating system files and boot the sequence into the USB drive/pen drive to enable the USB boot. In order to create a bootable USB, you would need a USB drive/pen drive with a minimum of 8 GB of storage.

The Pendrive first needs to be completely formatted before the procedure.

Formatting the USB Drive (using diskpart)

  1. First, you have to run cmd (Command Prompt) as an Administrator. This is an important step because you are going to edit disks that require admin privileges. There are several ways to open a command prompt with admin rights:
  1. Press Windows + X and select Command Prompt (Admin).
  2. Open start menu, search cmd, right-click, and click run as administrator.
  3. Open task manager, click on File > New Task, tick on Create this task with Administrator privileges, type cmd and hit Enter.
  1. Connect your USB drive to your computer.
  2. Type “diskpart” and press enter. Doing this will open the windows inbuilt disk part utility which is used to manage the storage on your computer. Now you have to wait until the DiskPart utility starts running.
diskpart

  1. In the new diskpart window, type “list disk” and hit Enter. It will display all the active disks present on your computer. Here, you will see several disks.
diskpart list disk

  1. Select the appropriate one based on the size of the disk. In our case, it is Disk 2.

    Type “select disk 2” in the same window and hit Enter. You will now get a prompt “Disk 2 is now the selected disk” That means any commands now will operate on Disk 2 directly.

diskpart select disk

  1. Now, type “clean” and hit Enter to remove all of the data present in your USB drive. This command will completely format your USB drive. Now, you will get a prompt “Diskpart succeeded in cleaning the disk”.
diskpart clean

  1. To convert the disk to MBR, type “convert mbr”, otherwise for GPT, type “convert gpt”. Use the recommendations provided below:
  1. For Windows 7 or earlier: Prefer MBR
  2. For Windows 8 or later: Prefer GPT
  3. For any other OS: Refer to the official guidelines

Note: The latest devices support UEFI non-CSM, however, if you are running it on an older device then your best bet will be to use MBR.

Creating MBR Bootable USB Drive (The Easiest Way)

diskpart convert mbr

  1. Type “create partition primary” and hit Enter. You will now get a prompt “DiskPart succeeded in creating the specified partition.”
diskpart create partition primary

  1. Type “select partition 1” and hit Enter. It will choose partition 1 for setting up it as an active partition.
diskpart select partition

  1. Now, type “active” and hit Enter. It will activate the current partition for you to work on.
  2. Now you have to type “format fs=ntfs quick” and hit Enter. This command will finally format your current partition as an NTFS file system.
diskpart ntfs quick format

  1. To exit, simply type “exit” and hit Enter. The command will close the DiskPart utility but not the CMD window.
diskpart exit

  1. Now that you have successfully formatted your USB Drive, It’s time to copy the data from the ISO Image present on your PC or a DVD to your USB drive. Doing this will successfully turn your USB flash drive into a bootable Windows USB drive.
Windows 10 Copy Files

Creating GPT Bootable USB Drive (The Advanced Way)

diskpart convert gpt

  1. Instead of a single partition to make an MBR bootable USB drive, here, you will need to create two partitions because natively without supplying the NTFS drivers UEFI will not be able to use the NTFS partition. It can only recognize FAT32 natively.
  1. EFI Partition: “create partition primary size=64”
  2. Data Partition: “create partition primary”
diskpart GPT partitions

  1. Select first partition using “select partition 1” and format is as FAT32 file system using “format fs=fat32 quick”.
diskpart GPT format fat32 EFI partition

  1. Select second partition using “select partition 2” and format is as FAT32 file system using “format fs=ntfs quick”.
diskpart GPT format NTFS data partition

  1. Download the latest NTFS EFI Drivers from https://github.com/pbatard/rufus/tree/master/res/uefi. Download the file named “uefi-ntfs.img”. Extract the content of the file using 7zip and copy it to the partition 1 (64MB).
EFI Drivers Rufus

OR

Download the latest NTFS EFI Drivers from https://efi.akeo.ie/downloads/efifs-latest/. You will find four folders there namely “aa64”, “arm”, “ia32” & “x64”. From each folder download the file starting with ntfs. We have downloaded the following files:

  1. ntfs_x64.efi
  2. ntfs_ia32.efi
  3. ntfs_aa64.efi
  4. ntfs_arm.efi

In the partition 1 (64 MB), create a folder named “EFI” on the 64MB partition and inside that folder create another folder named “Boot”. Copy the above-downloaded file in the folder.

EFI Drivers Download

  1. To exit, simply type “exit” and hit Enter. The command will close the DiskPart utility but not the CMD window.
  2. Now, copy all the content of the ISO image or DVD in the partition 2. You now have a GPT + UEFI (non-CSM) bootable USB drive.
Windows 10 Copy Files

Installing Windows

Windows 10 Installation Screen

Note: If you chose the GPT option in step 7, then make sure that secure boot is disabled. You can enable it once the installation of windows is complete.

You have successfully copied the file contents of DVD into the USB drive and it is now bootable. In order to boot up a new computer, follow these steps –

  1. When your computer starts after powered on. Some function key (Generally F8/F12) is used to go into boot device selection. Just make sure to insert the USB drive before powering on the computer and select your drive.
  2. The other method which was traditionally used was to change the boot device order from the BIOS menu. For this, you will have to go to bios settings and change the boot order. (See motherboard manufacturer website for more information.)

Final Words

Having a bootable USB drive for Windows is super convenient as these days, we don’t really opt for DVD and other options. And if your PC doesn’t come with Windows preinstalled, or perhaps if you have set up your own system, setting up Windows shouldn’t be a problem if you have got the bootable USB drive ready.

We hope our instructions are well stated and clear enough for you to follow. But in case any problem persists, please comment down below and we’ll surely rectify it.

Mehul Boricha

Mehul Boricha is the driving force behind Tech Arrival. He is a computer and smartphone geek from Junagadh, Gujarat, India. He is a Software Engineer by Education & a Blogger by Passion. Apart from technology geek, his free time is dedicated to cybersecurity research, server optimization, and contributing to open-source projects.

Table of Contents

INTRODUCTION

Using such tools as WinBuilder (e.g. ChrisR’s Win8.1SE project) we can make a 32-bit WinPE ISO that will boot from a UEFI system or from a traditional BIOS via MBR\CSM.

We can also make a 64-bit WinPE ISO which will boot on 64-bit MBR and 64-bit UEFI systems.

ChrisR’s Win10PESE project is here.

In this Tutorial, I will describe how to combine and transfer these OS’s to a FAT32 USB drive so that the USB drive will boot on any x86 system (i.e. 32-bit or 64-bit UEFI systems or 32-bit or 64-bit MBR BIOS systems).

ChrisR’s Win8.1SE WinBuilder Desktop

Note that Win8.1/10 PESE 64-bit includes WoW64 (sysWoW) and so can can run 32-bit applications from 64-bit WinPE!

Make a universal Windows Install USB disk

If you used a Fixed-Disk type of USB disk (one that appears as fixed/local disk in Windows Explorer), then you could create a second NTFS partition containing multiple Windows Installer ISOs and WinNTSetup.exe. You can then boot to WinPE, and use WinNTSetup to install from any ISO. This gives you a universal (MBR and UEFI) way to install Windows to any type of system!

REQUIREMENTS

1. 64-bit WinPE ISO (or USB drive) – e.g. from the Win8.1SE WinBuilder project – e.g. Win8.1SE_x64.ISO

2. 32-bit WinPE ISO (or USB drive) – e.g. from the Win8.1SE WinBuilder project – e.g. Win8.1SE_x86.ISO

3. BootIce from Pauly (see bottom of this page for a download if you have problems with the link)

4. 1GB+ FAT32 USB drive (preferably prepared using RMPrepUSB+ Boot as HDD + BOOTMGR + FAT32)

METHOD

1. Partition and Format your FAT32 USB drive using RMPrepUSB or any other means you normally use (Windows format is OK). Note that if you format it using linux or Windows XP, you may also need to install grub4dos and a menu.lst so that it boots in MBR\CSM mode (see end of this page),

2. Open the 64-bit WinPE ISO using 7zip or any other means (if Win8 then just double-click on the ISO) – extract the entire contents onto your USB Flash drive

Note: If using RMPrepUSB (recommended) this can be done in one go: Tick the Boot as HDD (C:) option to ensure that it will MBR-boot on most systems (adding a 2nd partition ensures it is booted as a hard disk and not a floppy disk!).

3. Open the 32-bit ISO using 7zip or any other means (if Win8 then just double-click on the ISO) – copy the \sources\boot.wim to somewhere – rename it to bootx86.wim and then copy it to the USB drive \sources folder (so you should have boot.wim and bootx86.wim in the \sources folder now)

4. Copy the \efi\boot\bootia32.efi file from the 32-bit ISO to the \efi\boot folder on the USB drive

5. Run BootIce and click on the BCD Edit tab

6. Click on the Other BCD file radio button (as shown) and then the box and select the file \efi\microsoft\boot\bcd that is on your USB drive (as shown) – now click the Easy mode button.

In the left-hand pane you should see the entry for the 64-bit boot,wim file already present – now use the Add button to add a new entry for your bootx86.wim file (see second screen below)

Note: A solid black checkbox indicates ‘not defined in BCD’.

Check that the File, SDI file, OS title and Detect HAL and Boot into WinPE selections are correct and then click on Save current system. Then click Close (tip: you may have trouble testing if you don’t click Close as the file may not be properly updated!)

For 32-bit booting, you need to point it at the \sources\bootx86.wim file, for 64-bit booting it should already be set to \sources\boot.wim.

7. Now use the button to select the \boot\bcd file on the USB drive and again click Easy mode

Now add in a new entry for the bootx86.wim file

You can change the default by using the Set as default button.

Check that the File, SDI file, OS title and Detect HAL and Boot into WinPE selections are correct and then click on Save current system. Then click Close

8. You should now find that you can boot to WinPE on any normal BIOS system or a UEFI system. You should get the bootmgr menu as shown below:

You can test this using VirtualBox for 32-bit UEFI, 64-bit UEFI or MBR booting.

Note: If you did not use RMPrepUSB to format the USB drive, you may find that it does not MBR boot (UEFI booting should work as long as WinPE is on the FIRST FAT32 partition on the drive).

In this case, you can either run Windows Bootsect from the Windows admin command line (e.g. bootsect /nt60 E: /MBR)

or

install grub4dos using RMPrepUSB – Install grub4dos and copy over the grldr file when prompted.

Now press F4 in RMPrepUSB to create a \menu.lst file and edit the contents to boot to bootmgr as follows:

title Boot to WinPE\n This should boot to WinPE in MBR mode

chainloader /bootmgr

Tip: If testing using Virtual Box – ensure you set 65MB or more for the graphics display memory setting – otherwise UEFI-booting may just show a black screen!

ADDING THE WINPE FILES TO EASY2BOOT

If your E2B USB drive is formatted as FAT32, you can simply copy all the files to the root of your E2B USB drive (preserve the folder structure). To boot in MBR mode, you will need to create a .mnu file to boot to \bootmgr (as in the menu.lst above).

e.g. \_ISO\MAINMENU\bootmgr.mnu

title Boot to WinPE\n This should boot to WinPE in MBR mode
chainloader /bootmgr

I do not recommend this however, because some systems will always UEFI-boot from the E2B drive if it contains valid EFI boot files – it will never boot to the E2B menu system!

I recommend you make a .imgPTN file from the dual-boot USB drive…

Drag-and-drop the drive icon\letter onto the MPI_FAT32 Desktop shortcut (after installing the MPI Tool Kit) to make a .imgPTN file and then add this file to your E2B USB drive.

e.g.

\_ISO\MAINMENU\WinPE32_64.imgPTN

If required, you can rename the file extension to .imgPTNLBAa23 so that partition 2 (and 3 if present) of your E2B USB disk will be accessible to Windows PE.

ADDING OTHER UEFI (.EFI) PAYLOADS

The easiest way to add other .EFI files such as KonBoot or Memtest86 is to add rEFInd to the USB drive and boot to rEFInd first. rEFInd will then find all .efi files and allow you to boot from any of them.

Note that this will ‘break’ Secure Booting however!

Unlike KonBoot or MemTest86, some EFI payloads comprise of many files and folders – you can add these to the USB drive but you must preserve the original folder structure (i.e. you cannot copy the files to different sub-folders under the root). In effect, this means you are limited to using payloads which use different files/folder names. If you use E2B and .imgPTN files however, you circumvent this limitation.

rEFInd will auto-detect any bootia32.efi and bootx64.efi files in any folder under the \EFI folder, so once we have added rEFInd, we just need to copy over any .efi files we want and rename them if required.

1. Move the existing Windows bootia32.efi and bootx64.efi files to the \EFI\microsoft folder

2. Download the rEFInd zip file from here and extract the contents of the refind folder to your USB drives’ \EFI\boot folder (i.e. U:\EFI\boot should now contain drivers_aaa, tools_aaa and icons folders)

3. Rename the \EFI\boot\refind_ia32.efi and refind_x64.efi files to \EFI\boot\bootia32.efi and \EFI\boot\bootx64.efi

You should now have:

  • \efi\boot\ – contains refind files bootx64.efi and bootia32.efi (approx 157KB and 198KB) and drivers_aaa folders, icons and tools_aaa folders
  • \efi\microsoft\ – contains Windows files bootx64.efi and bootia32.efi (approx 1.3MB and 1.6MB) as well as the boot folder

4. Now you can add any .efi payload files such as PassMark Memtest86 or KonBoot – keep the efi file names as bootx64.efi and bootia32.efi but just place them in a new folder – e.g.

  • \efi\KONBOOT\bootx64.efi
  • \efi\KONBOOT\bootia32,efi
  • \efi\MEMTEST86\bootx64.efi
  • \efi\MEMTEST86\bootia32.efi

5. If you prefer a text menu, simply delete or rename the \efi\boot\icons folder:

A text-mode rEFInd menu will be used when the Icons folder is not available.

Tweaks

The default timeout is 20 seconds. To change this, rename \efi\boot\refind.conf-sample to \efi\boot\refind.conf. Then edit it to change the timeout value.

The drivers_aaa and tools_aaa folders are not used on a FAT32 USB drive – you can save space by deleting them.

If you have other UEFI-enabled OS’s on the USB drive (e.g. Ubuntu on a separate partition), you can add a menu entry into the refind.conf file (see the bottom of the file for examples). You will need to delete the ‘disabled’ line for the menu option to be visible.

You could also add nicer menu entries for your Windows\memtest\KonBoot payloads and disable rEFInd from auto-detecting them.

This also allows you to choose which icon you want for each entry.

For more information on rEFInd – see here.

Example refind.conf

Note that both 32-bit and 64-bit options are shown – the user must pick the correct one or it won’t boot correctly!

  • # set default timeout
  • timeout 5
  • # Use smaller icons for the first row
  • big_icon_size 48
  • # Uncomment the next line if you want a text menu instead of icons
  • #textonly
  • # show only these tools on 2nd line
  • showtools exit, reboot, shutdown
  • # Do not auto-detect .efi files
  • scanfor manual
  • # here are the menus
  • menuentry “Windows UEFI 32-bit” {
  • ostype windows
  • icon \EFI\boot\icons\os_win.png
  • loader \efi\microsoft\BOOTIA32.EFI
  • }
  • menuentry “Windows UEFI 64-bit” {
  • ostype windows
  • icon \EFI\boot\icons\os_win.png
  • loader \efi\microsoft\BOOTx64.EFI
  • }
  • menuentry “Passmark MemTest86 32-bit” {
  • icon \EFI\boot\icons\tool_memtest.png
  • loader \efi\memtest86\BOOTIA32.EFI
  • }
  • menuentry “Passmark MemTest86 64-bit” {
  • icon \EFI\boot\icons\tool_memtest.png
  • loader \efi\memtest86\BOOTx64.EFI
  • }
  • menuentry “KonBoot 32-bit” {
  • icon \EFI\boot\icons\tool_mok_tool.png
  • loader \efi\konboot\BOOTIA32.EFI
  • }
  • menuentry “KonBoot 64-bit” {
  • icon \EFI\boot\icons\tool_mok_tool.png
  • loader \efi\konboot\BOOTx64.EFI
  • }

Click here (OneDrive folder) if you cannot find any file mentioned in the articles on this site or Contact Me.

Представим ситуацию, что по какой то причине, вместо обычной загрузки операционной системы, перед вами появилась командная строка 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. Добавление Загрузочных Записей

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.

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». Что делать?

Содержание

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

Загрузка в 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

Последний шаг, это проверка вручную возможность загрузки с указанного 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, так же присутствует, но не используется.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обратите внимание на файлы shimx64.efi и bootx64.efi, а точнее на их размер. Думаю вы догадались, что данные файлы идентичны. А это означает что, файлу bootx64.efi нет смысла запускать свою копию. Остается два варианта, либо это файл grubx64.efi, что более очевидно исходя из имени файла, либо mmx64.efi. Запустим файл mmx64.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. Попробуем провести такую подмену.

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

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

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

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

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

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

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

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

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

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

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

Важным нюансом является нумерация. Учтите что она начинается с нуля. То есть если речь идет о третей записи по списку, ее номер будет 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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как включить дефрагментацию диска на windows 10
  • Git kraken windows download
  • Очистка всех журналов windows 10
  • Настройка контроллера unifi windows
  • Hp pavilion dv7 6153er драйвера windows 10