Uefi shell что это
Перейти к содержимому

Uefi shell что это

  • автор:

Uefi shell что это

Что такое 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 -схема разметки

Name already in use

arch-wiki-md-repo / wiki / _content / russian / Unified Extensible Firmware Interface (russian).md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink
  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Unified Extensible Firmware Interface (или UEFI для краткости) представляет из себя новый тип прошивки, который изначально был разработан Intel (известно было тогда как просто EFI) в основном для систем на базе Itanium. Он вводит новый способ загрузки операционных систем, который отличается от обычного «загрузочного кода MBR» использующийся в BIOS системах. Она началась как Intel EFI в версии 1.x и после группы компании UEFI Forum взяла на себя её дальнейшее развитие и начиная с версии 2.x стала именоваться как Unified EFI. По состоянию на 23 мая 2012 года, спецификация UEFI 2.3.1 является самой последней.

Примечание: Если явно не указана спецификация EFI 1.x то термины EFI и UEFI используются как взаимозаменяемые для обозначения прошивок UEFI 2.x. Также, если не указано явно, эти указания являются общими и не Mac специфичными. Часть из них может не работать и может быть быть различными в Mac. Кроме того, реализация EFI компании Apple является ни EFI версии 1.x, ни UEFI версии 2.x, она смешивает обе версии. Такая прошивка не попадает ни под одну из версий спецификаций UEFI и поэтому она не является стандартной прошивкой UEFI.

Загрузка ОС с помощью BIOS

BIOS или Базовая Система Ввода-Вывода — это первая программа, которая выполняется после включения компьютера. После инициализации всего оборудования и завершения самотестирования, BIOS выполняет первый загрузочный код на первом устройстве в списке загрузочных устройств.

Если список начнается с устройства CD/DVD, выполняется запись El-Torito на CD/DVD. Так работают загрузочные CD/DVD. Если список начинается с HDD, BIOS выполняет загрузочный код MBR, находящийся на первых 440байтах. Загрузочный код в свою очередь загружает(chainloads or bootstraps) гораздо более большой и сложный загрузчик, а тот уже загружает ОС

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

Мультизагрузка с помощью BIOS

Since very little can be achieved by a program which fits into the 440-byte boot code area, multi-booting using BIOS requires a multi-boot capable bootloader (multi-boot refers to booting multiple operating systems, not to booting a kernel in the Multiboot format specified by the GRUB developers). So usually a common bootloader like GRUB or GRUB2 or Syslinux or LILO would be loaded by the BIOS, and it would load an operating system by either chain-loading or directly loading the kernel.

Загрузка ОС с помощью UEFI

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

Стандартно используемые версии UEFI имеют поддержку таблиц разделов MBR и GPT. EFI в компьютерах Apple на базе процессоров Intel поддерживают кроме того ещё и Apple Partition Map(Таблицу разделов Apple). Большинство прошивок UEFI поддерживают работу с файловыми системами FAT12(флоппи диски), FAT16 FAT32 на жестких дисках и с файловой системой ISO9660 на CD/DVD дисках. EFI на компьютерах Apple имеют возможность работать кроме описанных ещё и с HFS/HFS+.

UEFI не выполняет никакой код из MBR даже если он есть. Вместо этого используется специальный раздел на жестком диске называемый «EFI SYSTEM PARTITION», на которой и располагаются файлы, которые необходимо запустить для загрузки. Каждый, кому необходимо может хранить необходимые ему загрузочные файлы по следующему пути: /EFI/<ИМЯ ВЛАДЕЛЬЦА>/. Если Вы имеете вот такую вот директорию, то у Вас появляется уникальная возможность загрузить свои файлы из консоли(UEFI shell). Среди таких файлов может быть Вам приятный загрузчик операционных систем. Обычно UEFI system partition отформатирована с файловой системой 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.

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.

Мультизагрузка с помощью UEFI

Так как каждая операционная система или поставщик, никому не мешая, может сохранять свои собственные файлы в системный раздел EFI, мульти-загрузка с использованием UEFI является лишь вопросом запуска приложения UEFI, соответствующего загрузчику конкретной ОС. Это избавляет от необходимости полагаться на механизм цепочной загрузки (chainloading), заключающейся в передаче управления от boot-менеджера к boot-сектору диска с загружаемой ОС, для переключения операционных систем.

Linux Windows x86_64 UEFI-GPT мультизагрузка

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. See http://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.

Процесс загрузки в UEFI

  1. Система включена — POST проверка.
  2. Прошивка UEFI загружена.
  3. Прошивка запускает диспетчер загрузки чтобы определить, какие приложения UEFI будут запущены и откуда (т.е., с каких дисков и разделов).
  4. Прошивка запускает UEFI приложение с файловой системой FAT32 раздела UEFISYS как это определено в загрузочной записи менеджера загрузки микропрограммы.
  5. UEFI приложение может запустить другое приложение (в случае UEFI консоли или менеджера загрузки, как rEFInd) или ядро и initramfs (в случае загрузчика как GRUB2) в зависимости от того, как приложение UEFI было настроено.

Определение разрядности прошивки UEFI

Если каталог /sys/firmware/efi существует, то ядро загружено в режиме EFI. В этом случае UEFI имеет такую же разрядность, как у ядра. (т.е. i686 или x86_64)

Примечание: Системы с SoC (System-on-a-Chip) Intel Atom поставляются с 32-битным UEFI (по состоянию на 2 ноября 2013). Дополнительную информацию можно получить на этой странице.

Mac, выпущенные до 2008 года, в основном имеют прошивку i386-efi, а выпущенные в 2008 или позднее — x86_64-efi. Все Mac, способные работать с 64-битным ядром Mac OS X Snow Leopard имеют прошивку x86_64 EFI 1.x.

Чтобы узнать разрядность прошивки EFI в Mac, введите следующую команду в терминале Mac OS X:

Если команда возвращает значение EFI32, то прошивка IA32 EFI (32-битная), а если значение EFI64 — прошивка x86_64 EFI (64-битная). Большинство Mac не имеют прошивку UEFI 2.x, так как реализация EFI от Apple не полностью совместима со спецификацией UEFI 2.x.

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

Параметры конфигурации ядра Linux для UEFI

The required Linux Kernel configuration options for UEFI systems are :

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

Примечание: This option is compiled as module in Arch core/testing kernel.

Примечание: 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.

Примечание: 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

Примечание: All of the above options are required to boot Linux via UEFI, and are enabled in Archlinux kernels in official repos.

Переменные для поддержки UEFI

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 setting sof the firmware like the UEFI Boot Manager or managing the keys for UEFI Secure Boot Protocol etc.

Примечание: 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 + ix86 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/grub. ) 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/firnware/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/firnware/efi/vars directory with contents similar to :

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.

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

Не-Mac UEFI системы

Важно: 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.

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).

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:

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 https://gitorious.org/tianocore_uefi_duet_builds/pages/Linux_Windows_BIOS_UEFI_boot_USB.

Примечание: The below commands use grub2-efi-x86_64 boot-loader as example.

Assume the boot-loader file to be launched is /boot/efi/efi/arch_grub/grubx64.efi . /boot/efi/efi/arch_grub/grubx64.efi can be split up as /boot/efi and /efi/arch_grub/grubx64.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, try :

Then create the boot entry using efibootmgr as follows :

In the above command /boot/efi/efi/arch_grub/grubx64.efi translates to /boot/efi and /efi/arch_grub/grubx64.efi which in turn translate to drive /dev/sdX -> partition Y -> file /EFI/arch_grub/grubx64.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 using \EFI\arch_grub\grubx64.efi or \efi\arch_grub\grubx64.efi does not matter (this will change if the filesystem encoding is UTF-8).

Загрузчики Linux для UEFI

Создание UEFI раздела в Linux

Примечание: Раздел UEFISYS может быть любого размера, который поддерживается файловой системой FAT32. В соответствии с документацией пресловутой Microsoft, минимальный размер раздела с FAT32 — 512Мб. В соответствии с вышесказанным рекомендуется устанавливать размер UEFISYS раздела больше 512Мб. Особенно, если Вы используете несколько UEFI загрузчиков или несколько ОС, загружаемых с помощью UEFI. В общем, места должно быть достаточно, чтобы хранить сопутствующие файлы всех загружаемых операционных систем. Если в качестве загрузчика Вы решили использовать Linux Kernel EFISTUB то Вы должны выделить достаточно места, чтобы в разделе хранились файлы Kernel и Initramfs.

Для GPT разметки диска

  • 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>

Примечание: 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».

Важно: 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).

Для MBR разметки диска

  • 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 using mkfs.vfat -F32 /dev/<THAT_PARTITION>

Примечание: It is recommended to use always GPT for UEFI boot as some UEFI firmwares do not allow UEFI-MBR boot.

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 консоли

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

Запуск UEFI консоли

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.

Примечание: 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.

Важные команды UEFI консоли

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.

To dump a list of current boot entries —

To add a boot menu entry for grub2’s grubx64.efi (for example) as 4th (numbeering starts from zero) option in the boot menu

where fs0: is the mapping corresponding to the UEFI System Partition and \EFI\arch\grubx64.efi is the file to be launched.

To remove the 4th boot option

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

For bcfg help text

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 grub2’s grub.cfg in the UEFI System Partition (fs0: in the firmware)

Windows изменяет порядок загрузки

Допустим, если вы обновились с Windows 8 до Windows 8.1 и вы больше не видите загрузочного меню после этого обновления, (то есть сразу грузится Windows):

  • Убедитесь, что как Secure Boot (настраивается в UEFI), так и Fast Startup (настраивается в опциях питания в Windows) отключены.
  • Убедитесь, что в вашем UEFI Linux Boot Manager первичнее, чем Windows Boot Manager (настраивается в UEFI настройках, таких как Hard Disk Drive Priority).

Примечание: Windows 8.x+, включая Windows 10, будут перезаписывать любой выбор порядка загрузки, который вы делаете и устанавливать себя в качестве приоритетной загрузки после каждого запуска. Изменение порядка загрузки в прошивке UEFI продлится только до следующей Windows 10 загрузки. Вы должны знать Change Boot Option ключ для вашей материнской платы.

Для того, чтобы Windows 8.X не изменяли порядок загрузки, вы должны настроить групповые политики для Windows и выполнить скрипт (.bat) при запуске. В Windows:

Unified Extensible Firmware Interface (Русский)

Unified Extensible Firmware Interface (UEFI или EFI для краткости) — модель интерфейса между операционной системой и прошивкой устройства. Он обеспечивает стандартную среду для загрузки операционной системы и запуска предзагрузочных приложений.

Он вводит новый способ загрузки операционных систем, который отличается от обычного «загрузочного кода MBR», который использовался в системах BIOS. Различия в процессе загрузки описаны в статье Процесс загрузки Arch.

Версии UEFI

  • UEFI начинался как EFI от Intel в версиях 1.x.
  • Позже группа компаний под названием UEFI Forum взяла на себя его разработку и переименовала в Unified EFI, начиная с версии 2.0.
  • Если не указано, что имеется в виду EFI 1.x, термины EFI и UEFI используются как взаимозаменяемые для обозначения прошивки UEFI 2.x.
  • Реализация EFI от Apple не является ни версией EFI 1.x, ни версией UEFI 2.x, а смешивает оба варианта. Этот вид прошивок не подпадает ни под одну из спецификаций (U)EFI и поэтому не является стандартной прошивкой UEFI. Если не указано явно, эти инструкции являются общими, и некоторые из них могут не работать или отличаться в MacBook.

Спецификацию последней версии UEFI можно найти на https://uefi.org/specifications.

Разрядность прошивки UEFI

В UEFI каждая программа, будь то загрузчик ОС или утилита (например, приложение для тестирования памяти или средство восстановления), должна быть EFI-приложением, архитектура в котором должна совпадать с архитектурой прошивки UEFI.

Подавляющее большинство прошивок UEFI, включая последние модели Apple Mac, используют прошивку UEFI x86_64. Единственными известными устройствами, использующими IA32 (32-битный) UEFI, являются старые (до 2008 года) Apple Mac, системы Intel Atom System-on-Chip (по состоянию на 2 ноября 2013 года)[1] и некоторые старые серверные платы Intel, которые, как известно, работают на прошивке Intel EFI 1.10.

Прошивки x86_64 UEFI не имеют поддержки запуска 32-битных EFI-приложений (в отличие от x86_64 версий Linux и Windows, которые имеют такую поддержку). Поэтому EFI-приложение должно быть скомпилировано для конкретной разрядности/архитектуры процессора, на котором работает прошивка.

Проверка разрядности прошивки

Разрядность прошивки можно проверить из загруженной операционной системы.

Из Linux

В дистрибутивах с ядром Linux версии 4.0 или новее разрядность прошивки UEFI можно узнать через интерфейс sysfs. Выполните:

Это вернёт 64 для 64-битного (x86_64) UEFI или 32 для 32-битного (IA32) UEFI. Если файл не существует, значит, вы загрузились не в режиме UEFI.

Из macOS

Mac, выпущенные до 2008 года, в основном имеют прошивку i386-efi, а выпущенные в 2008 или позднее — x86_64-efi. Все Mac, способные работать с 64-битным ядром Mac OS X Snow Leopard имеют прошивку x86_64 EFI 1.x.

Чтобы узнать разрядность прошивки EFI в Mac, введите следующую команду в терминале Mac OS X:

Если команда возвращает значение EFI32 , то прошивка IA32 EFI (32-битная), а если значение EFI64 — прошивка x86_64 EFI (64-битная). Большинство Mac не имеют прошивку UEFI 2.x, так как реализация EFI от Apple не полностью совместима со спецификацией UEFI 2.x.

Из Microsoft Windows

64-битные версии Windows не поддерживают загрузку на 32-битном UEFI. Поэтому, если у вас 32-битная версия Windows, загруженная в режиме UEFI, у вас 32-битный UEFI.

Для проверки разрядности запустите msinfo32.exe . В разделе Сведения о системе смотрите значения записей «Тип» и «Режим BIOS».

Для 64-битного Windows и 64-битного UEFI будет Тип: Компьютер на базе x64 и Режим BIOS: UEFI . Для 32-битного Windows и 32-битного UEFI — Тип: Компьютер на базе x86 и Режим BIOS: UEFI . Если «Режим BIOS» имеет значение не UEFI , значит, Windows загружен не в режиме UEFI.

Конфигурация ядра Linux для UEFI

Необходимая конфигурация для ядра Linux[2] такова:

Поддержка UEFI Runtime Variables (файловая система efivarfs — /sys/firmware/efi/efivars ). Эта опция важна, так как нужна для работы с переменными времени выполнения UEFI с помощью инструментов вроде /usr/bin/efibootmgr . Эта опция появилась в ядре 3.10.

Поддержка UEFI Runtime Variables (старый интерфейс efivars sysfs — /sys/firmware/efi/vars ). Эта опция должна быть отключена, чтобы предотвратить возможные проблемы при одновременно включенных efivarfs и sysfs-efivars.

Таблица разделов GUID (GPT) — необходима для поддержки UEFI

Поддержка EFI mixed-mode — для загрузки 64-битного ядра на 32-битной прошивке UEFI.

Переменные UEFI

UEFI определяет переменные, через которые операционная система может взаимодействовать с прошивкой. Переменные загрузки UEFI используются загрузчиком и применяются ОС только для раннего запуска системы. Переменные времени выполнения (runtime variables) позволяют ОС управлять опредёленными настройками прошивки, такими как менеджер загрузки UEFI или управление ключами для протокола UEFI Secure Boot и т.д. Вы можете получить список с помощью команды:

Поддержка переменных UEFI в ядре Linux

Ядро Linux даёт пользовательскому пространству доступ к переменным UEFI через интерфейс efivarfs (EFI VARiable FileSystem) ( CONFIG_EFIVAR_FS ) — монтируется с помощью модуля ядра efivarfs в /sys/firmware/efi/efivars — не имеет ограничений на максимальный размер переменной и поддерживает переменные UEFI Secure Boot. Появилось в ядре 3.8.

Требования для поддержки переменных UEFI

  1. Ядро должно быть загружено в режиме UEFI через EFISTUB (опционально с использованием менеджера загрузки) или загрузчиком UEFI, а не через BIOS или CSM, или Apple Boot Camp, который также является CSM.
  2. Ядро должно иметь поддержку EFI Runtime Services ( CONFIG_EFI=y , проверить наличие можно командой zgrep CONFIG_EFI /proc/config.gz ).
  3. EFI Runtime Services в ядре не должны быть отключены через командную строку ядра, то есть параметр noefi должен отсутствовать.
  4. Файловая система efivarfs должна быть смонтирована в /sys/firmware/efi/efivars , иначе следуйте разделу #Монтирование efivars ниже.
  5. efivar должен отобразить список переменных UEFI (опция -l / —list ) без ошибок.

Если поддержка переменных UEFI не работает даже после выполнения вышеуказанных условий, попробуйте следующие обходные пути:

  1. Если просмотр списка переменных UEFI ( efivar -l ) приводит к ошибке efivar: error listing variables: Function not implemented и система загружена в ядро реального времени, добавьте efi=runtime в параметры ядра и перезагрузитесь (efivarfs отключен по умолчанию на таких ядрах).
  2. Дополнительные шаги по устранению неполадок смотрите в разделе #Пользовательские инструменты не могут изменить переменные UEFI
Монтирование efivars

Если systemd не смонтировал efivarfs в /sys/firmware/efi/efivars автоматически, смонтируйте его вручную:

Документация ядра доступна здесь: efivarfs.html.

Пользовательские инструменты

Существует несколько инструментов, работающих в пространстве пользователя (userspace), которые могут взаимодействовать с переменными UEFI:

  • efivar — Библиотека и инструмент для работы с переменными UEFI (используется в efibootmgr)
  • efibootmgr — Инструмент для работы с настройками менеджера загрузки прошивки UEFI
  • uefivars — Выгружает список переменных UEFI с некоторой дополнительной информацией, связанной с PCI (использует код efibootmgr).
  • efitools — Инструменты для манипулирования платформами UEFI secure boot
  • Ubuntu’s Firmware Test Suite — Набор тестов, выполняющий проверку исправности прошивок ПК Intel/AMD
efibootmgr
  • Если efibootmgr не работает в вашей системе, вы можете перезагрузиться в #UEFI Shell и использовать bcfg для создания загрузочной записи для загрузчика.
  • Если вы не можете использовать efibootmgr , некоторые прошивки UEFI позволяют пользователям напрямую управлять загрузочными записями UEFI из интерфейса времени загрузки. Например, некоторые прошивки имеют опцию «Add New Boot Option», которая позволяет выбрать локальный системный раздел EFI и вручную ввести расположение приложения EFI, например, \EFI\refind\refind_x64.efi .
  • В приведённых ниже командах в качестве примера используется менеджер загрузки rEFInd.

Чтобы добавить новую загрузочную запись с помощью efibootmgr, необходимо знать три вещи:

  • Диск, содержащий системный раздел EFI (ESP). Например: /dev/sda , /dev/nvme0n1 .
  • Номер раздела ESP на этом диске. Y в /dev/sdaY /dev/sdaY или /dev/nvme0n1pY .
  • Путь к приложению EFI (относительно корня ESP).

Например, если вы хотите добавить запись для /efi/EFI/refind/refind_x64.efi , где /efi — это точка монтирования ESP, выполните

В данном примере это означает, что ESP находится на диске /dev/sda и имеет номер раздела 1. Путь к EFI-приложению относительно корня ESP /EFI/refind/refind_x64.efi . Соответственно, можно загрузочную запись так:

Смотрите efibootmgr(8) или efibootmgr README для более подробной информации.

Отключение доступа к переменным UEFI

Доступ к UEFI потенциально может нанести вред не только на уровне ОС. Иногда возможно даже «окирпичивание» устройства на некоторых забагованных реализациях UEFI. [3]

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

  • Монтирование efivars в режиме только для чтения через fstab. Например:
  • Использование параметра ядра noefi , который полностью отключит доступ к UEFI из ОС.

UEFI Shell

Командная оболочка UEFI (UEFI Shell) — это оболочка/терминал для прошивки, позволяющий запускать EFI-приложения, в том числе загрузчики UEFI. Кроме того, оболочка может использоваться для получения различной информации о системе или прошивке, например, распределение памяти (memmap), изменение переменных менеджера загрузки (bcfg), запуск программ разметки (diskpart), загрузки драйверов UEFI, редактирование текстовых файлов (edit), hexedit и т.д.

Получение UEFI Shell

Можно получить UEFI Shell из проекта TianoCore EDK2 (лицензия BSD):

  • Shell v2:
    • На установочном носителе Arch: /shellx64.efi — это копия файла /usr/share/edk2-shell/x64/Shell_Full.efi , доступного на момент сборки ISO.
    • edk2-shell предоставляет x86_64 Shell для x86_64 (64-bit) UEFI и IA32 Shell для IA32 (32-bit) UEFI — скомпилировано непосредственно из последнего выпуска TianoCore EDK2.
    • uefi-shell-gitAUR предоставляет x86_64 Shell для x86_64 (64-bit) UEFI и IA32 Shell для IA32 (32-bit) UEFI — компилируется непосредственно из последнего выпуска TianoCore EDK2.
      от TianoCore (больше не обновляется).
      — из загрузчика Clover EFI. — из загрузчика OpenCore. В архиве: EFI/OC/Tools/OpenShell.efi .

    Shell v2 лучше всего работает в системах UEFI 2.3+ и рекомендуется вместо Shell v1. Shell v1 должен работать во всех системах UEFI независимо от версии спецификации, которой соответствует прошивка. Дополнительная информация доступна на ShellPkg и в теме из списка рассылки EDK2 — Inclusion of UEFI shell in Linux distro iso.

    Запуск UEFI Shell

    Некоторые материнские платы Asus и другие материнские платы, использующие AMI Aptio x86_64 UEFI (начиная с Sandy Bridge и далее), имеют опцию под названием Launch EFI Shell from filesystem device. Для этих материнских плат скопируйте x86_64 UEFI Shell в корень системного раздела EFI с именем shellx64.efi .

    • Установочный носитель Arch Linux имеет shellx64.efi в корне тома. и systemd-boot автоматически добавляют пункт меню для UEFI Shell, если находят shellx64.efi в корне системного раздела EFI.

    Системы с прошивкой Phoenix SecureCore Tiano UEFI имеют встроенный UEFI Shell, которую можно запустить с помощью клавиши F6 , F11 или F12 .

    Важные команды UEFI Shell

    Команды UEFI Shell обычно поддерживают опцию -b , которая приостанавливает вывод после каждой страницы. Выполните команду help -b , чтобы получить список доступных внутренних команд. Доступные команды либо встроены в оболочку, либо являются отдельными приложениями EFI.

    bcfg изменяет записи UEFI NVRAM, что позволяет пользователю изменить загрузочные записи или опции драйвера. Эта команда подробно описана на странице 96 (раздел 5.3) документа UEFI Shell Specification 2.2.

    • Пробуйте bcfg только если efibootmgr не смог создать рабочие загрузочные записи в вашей системе.
    • Официальный бинарный файл UEFI Shell v1 не поддерживает команду bcfg . В разделе #Получение UEFI Shell есть модифицированный бинарный файл UEFI Shell v2, который может работать в прошивках UEFI pre-2.3.

    Список текущих загрузочных записей:

    Добавление пункта загрузки для rEFInd (например) как четвёртый (нумерация начинается с нуля) пункт в меню загрузки:

    где FS0: соответствует системному разделу EFI, а FS0:\EFI\refind\refind_x64.efi — запускаемый файл.

    Чтобы добавить запись для загрузки непосредственно в систему без загрузчика, настройте пункт загрузки, используя ваше ядро в качестве EFISTUB:

    где N — приоритет, V — номер тома системного раздела EFI, а /dev/sdX# — корневой раздел.

    Удаление четвёртого пункта загрузки:

    Перемещение четвёртого пункта на место первого пункта:

    Справка команды bcfg:

    map отображает список сопоставлений устройств, то есть имена доступных файловых систем ( FS0 ) и устройств хранения ( blk0 ).

    Перед выполнением команд, связанных с файловой системой, таких как cd или ls , нужно переключить оболочку на соответствующую файловую систему, набрав её имя:

    edit предоставляет базовый текстовый редактор с интерфейсом, похожим на nano, но немного менее функциональный. Он обрабатывает кодировку UTF-8 и поддерживает окончания строк LF и CRLF.

    Например, для редактирования файла refind.conf в системном разделе EFI (доступен в прошивке как FS0: ):

    Нажмите Ctrl+e для справки.

    Загрузочные носители UEFI

    Создание загрузочного UEFI USB из ISO

    Удаление поддержки UEFI с оптического носителя

    • Этот раздел описывает удаление поддержки загрузки UEFI только с CD/DVD (загрузка с оптического носителя через EL Torito), но не с USB-накопителя.
    • Чтобы скрыть оборудование UEFI на USB-накопителе, используйте редактор разделов после копирования ISO на флэш-накопитель. Удалите раздел типа EF . Не принимайте предложение сконвертировать таблицу разделов в GPT.

    Большинство 32-битных компьютеров Mac с EFI и некоторые 64-битные компьютеры Mac с EFI отказываются загружаться с загрузочного CD/DVD с UEFI(X64)+BIOS. Если вы хотите продолжить установку с оптического носителя, возможно, придётся сначала удалить поддержку UEFI.

    Распакуйте ISO, пропуская каталоги, специфичные для UEFI:

    Затем пересоберите ISO, исключив поддержку загрузки оптических носителей UEFI, используя xorriso(1) из пакета libisoburn . Обязательно установите правильную метку тома, например ARCH_202103 ; её можно получить с помощью file(1) на исходном ISO.

    Запишите archlinux-версия-x86_64-noUEFI.iso на оптический носитель, и установка с него должна пройти нормально.

    Тестирование UEFI на системах без его поддержки

    OVMF для виртуальных машин

    OVMF — это проект TianoCore для поддержки UEFI в виртуальных машинах. OVMF содержит образец прошивки UEFI и отдельное энергонезависимое хранилище переменных для QEMU.

    Его можно установить с помощью пакета edk2-ovmf .

    Рекомендуется сделать локальную копию хранилища энергонезависимых переменных для вашей виртуальной машины:

    Чтобы использовать прошивку OVMF и это хранилище переменных, используйте следующие опции QEMU:

    DUET для BIOS-систем

    DUET был проектом TianoCore, который позволял сделать chainloading полного окружения UEFI из системы BIOS, способом, аналогичным загрузке ОС BIOS. Этот метод подробно обсуждается на сайте https://www.insanelymac.com/forum/topic/186440-linux-and-windows-uefi-boot-using-tianocore-duet-firmware/. Образы DUET можно загрузить из одного из репозиториев по адресу https://gitlab.com/tianocore_uefi_duet_builds/tianocore_uefi_duet_installer. Конкретные инструкции по настройке DUET доступны на https://gitlab.com/tianocore_uefi_duet_builds/tianocore_uefi_duet_installer/blob/master/Migle_BootDuet_INSTALL.txt. Однако по состоянию на ноябрь 2018 года код DUET был удалён из git-репозитория TianoCore.

    Вы также можете попробовать https://sourceforge.net/projects/cloverefiboot/ , который предоставляет модифицированные образы DUET, которые могут содержать некоторые специфические для системы исправления и чаще обновляются по сравнению с репозиториями gitlab.

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

    Загрузка в Arch Linux после застревания в Windows

    Если вы застряли в Windows, то для возвращения в Arch Linux зайдите в расширенные параметры запуска в Windows с помощью команды Windows PowerShell shutdown /r /o или через Параметры > Обновление и безопасность > Восстановление > Расширенные параметры запуска и выберите Перезагрузить сейчас. Когда вы достигнете меню выбора действия, выберите Использовать устройство, которое фактически содержит ваши варианты загрузки UEFI (не ограничивается USB или CD, но может также загружать операционную систему на жёстком диске), и выберите «Arch Linux».

    Открытие настроек прошивки без функциональных клавиш

    На некоторых ноутбуках, например Lenovo XiaoXin 15are 2020, использование клавиш вроде F2 или F12 ничего не даёт. Возможно, это можно исправить, вернув ноутбуки OEM-производителю для восстановления информации на материнской плате, но иногда это невозможно или нежелательно. Однако есть и другие способы войти в настройки прошивки:

    • Через systemctl: команда перезагрузит компьютер в настройки прошивки.
    • Через GRUB: нажмите c для открытия командной строки и введите fwsetup .
    • Через Windows: через расширенные параметры запуска, как описано в разделе #Загрузка в Arch Linux после застревания в Windows.

    Пользовательские инструменты не могут изменить переменные UEFI

    Если никакой инструмент пользовательского пространства не может изменить данные переменных UEFI, проверьте существование файлов /sys/firmware/efi/efivars/dump-* . Если они существуют, удалите их, перезагрузитесь и попробуйте ещё раз. Если это не помогло, попробуйте загрузиться с параметром ядра efi_no_storage_paranoia , чтобы отключить проверку пространства хранения переменных UEFI ядра, которая может препятствовать изменению переменных UEFI.

    Не удаётся создать загрузочные записи с помощью efibootmgr

    Некоторые комбинации версий ядра и efibootmgr могут не работать. Это может быть связано с нехваткой свободного места в NVRAM. Проверьте способы, описанные в разделе #Пользовательские инструменты не могут изменить переменные UEFI.

    Вы также можете попробовать откатить efibootmgr до версии 0.11.0. Она работает с Linux 4.0.6. Смотрите обсуждение FS#34641, в частности закрывающий комментарий.

    Windows 7 не загружается в режиме UEFI

    Если вы установили Windows на другой жёсткий диск с разметкой GPT, а в компьютере все еще есть жёсткий диск с разметкой MBR, то возможно, что прошивка (UEFI) включает поддержку CSM (для загрузки MBR-разделов), и поэтому Windows не загружается. Чтобы решить эту проблему, измените разметку жёсткого диска MBR на GPT или отключите порт SATA, в который вставлен жёсткий диск MBR, или отсоедините SATA-кабель от этого жёсткого диска.

    Материнские платы с подобной проблемой:

    • Gigabyte Z77X-UD3H rev. 1.1 (UEFI version F19e)
      • Опция загрузки «UEFI Only» не предотвращает запуск CSM.

      Windows изменяет порядок загрузки

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

      • Убедитесь, что в настройках Windows отключен быстрый запуск (Fast Startup).
      • Убедитесь, что Secure Boot в настройках прошивки отключен (если у вас неподписанный загрузчик).
      • Убедитесь, что Windows Boot Manager не прописывается прошивкой на первое место: например, сравните вывод efibootmgr с тем, что вы видите в настройках UEFI. Некоторые материнские платы автоматически ставят Windows на первое место, если обнаруживают его. В частности, это наблюдалось на ноутбуке Packard Bell.
      • Если ваша материнская плата загружается по пути загрузки по умолчанию ( \EFI\BOOT\BOOTx64.EFI ), этот файл может быть перезаписан загрузчиком Windows. Попробуйте установить правильный путь загрузки, например, с помощью efibootmgr.
      • Если предыдущие шаги не сработали, можно указать загрузчику Windows запустить другое приложение EFI. В командной строке, запущенной от имени администратора, выполните: bcdedit /set «» path «\EFI\путь\к\app.efi«
      • Как вариант, отключите Windows Boot Manager, выполнив efibootmgr -A -b bootnumber от имени root. Замените bootnumber на фактический номер записи Windows Boot Manager; вы можете узнать его, запустив efibootmgr без опций.
      • Ещё можно установить скрипт запуска в Windows, который обеспечивает правильную установку порядка загрузки при каждой загрузке Windows.
        1. Запустите командную строку от имени администратора. Выполните bcdedit /enum firmware и найдите нужную загрузочную запись.
        2. Скопируйте его идентификатор вместе с фигурными скобками, например
        3. Создайте bat-файл с командой bcdedit /set «» DEFAULT » «
        4. Откройте gpedit.msc и в разделе Политика «Локальный компьютер» > Конфигурация компьютера > Конфигурация Windows > Сценарии (запуск/завершение) выберите пункт Автозагрузка.
        5. На вкладке Сценарии нажмите кнопку Добавить и выберите ваш bat-файл.
      • В качестве альтернативы можно воспользоваться планировщиком заданий:
        1. Повторите шаги 1-3, описанные выше, для создания bat-файла.
        2. Запустите taskschd.msc и выберите пункт меню Действие > Создать задачу.
        3. На вкладке Общие: Введите подходящие Имя и Описание. Убедитесь, что выбранная учётная запись является администратором, а не обычным пользователем. Выберите пункт «Выполнять для всех пользователей«. Поставьте галочку «Выполнить с наивысшими правами«.
        4. На вкладке Триггеры создайте триггер При входе в систему.
        5. На вкладке Действия нажмите Создать, затем Обзор и выберите ваш bat-файл, созданный в первом шаге.
        6. На вкладке Условия снимите галочки в секции Питание, чтобы скрипт запускался при работе от батареи (для ноутбуков).
        7. Нажмите OK и по необходимости введите пароль от учётной записи администратора, выбранного в шаге 3.

      Чёрный экран при загузке с USB

      Возможно, это проблемы с KMS. Попробуйте отключить KMS при загрузке с USB.

      Загрузчик UEFI не отображается в меню прошивки

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

      Типичное решение — не полагаться на загрузочные записи в NVRAM и установить загрузчик на один из распространённых путей в системном разделе EFI.

      В следующих разделах описаны варианты.

      Стандартные пути загрузки для съёмных носителей

      Спецификация UEFI определяет стандартные пути к файлам EFI для загрузки со съёмных носителей:

      • esp/EFI/BOOT/BOOTx64.EFI для x86_64 UEFI
      • esp/EFI/BOOT/BOOTIA.EFI для IA32 UEFI.

      Хотя спецификация определяет их только для съёмных дисков, большинство прошивок поддерживают их загрузку с любого диска.

      Как установить или перенести загрузчик на нужный путь, смотрите в соответствующей статье Загрузчик.

      Расположение загрузчика Microsoft Windows

      На некоторых материнских платах с UEFI, например, на платах с чипсетом Intel Z77, добавление записей с помощью efibootmgr или bcfg из UEFI Shell не работает, поскольку они не отображаются в списке меню загрузки после добавления в NVRAM.

      Эта проблема вызвана тем, что материнские платы умеют загружать только Microsoft Windows. Чтобы решить эту проблему, необходимо поместить файл .efi в то место, которое использует Windows.

      Скопируйте файл BOOTx64.EFI с установочного носителя Arch Linux ( FS0: ) в каталог Microsoft вашего раздела ESP на жёстком диске ( FS1: ). Для этого загрузитесь в UEFI Shell и введите:

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

      Загрузочные записи, созданные с помощью efibootmgr, не отображаются в UEFI

      efibootmgr может не обнаружить EDD 3.0 и в результате создать непригодные для использования загрузочные записи в NVRAM. Смотрите efibootmgr issue 86 для подробностей.

      Чтобы обойти эту проблему, при создании загрузочных записей вручную добавьте опцию -e 3 к команде efibootmgr. Например:

      Для исправления программ установки загрузчиков, таких как grub-install и refind-install , создайте скрипт-обёртку /usr/local/bin/efibootmgr и сделайте его исполняемым:

      Загрузочная запись UEFI исчезает после удаления диска, на который она ссылается

      Некоторые прошивки удаляют загрузочные записи, относящиеся к дискам, которые недоступны во время загрузки. Это может быть проблемой при частом отсоединении/присоединении дисков или при загрузке со съёмного диска.

      How to effectively deal with bots on your site? The best protection against click fraud.

      Материнские платы UEFI нового поколения поставляются с UEFI Interactive Shell. Интерактивная оболочка UEFI — это простая программа-оболочка (например, bash), отвечающая за загрузку вашей операционной системы. Вы также можете использовать интерактивную оболочку UEFI для выполнения команд и сценариев оболочки EFI. Его также можно использовать для обновления системной прошивки материнской платы.

      В этой статье показано, как получить доступ к интерактивной оболочке UEFI на материнских платах UEFI и использовать некоторые из распространенных команд EFI в интерактивной оболочке UEFI. Итак, приступим.

      Оглавление:

      1. Что вам нужно знать
      2. Чтение USB-накопителей из оболочки UEFI
      3. Запуск интерактивной оболочки UEFI
      4. Команда cls
      5. Команда echo
      6. Псевдоним Command
      7. Команда помощи
      8. Команда набора
      9. Команда карты
      10. Команды cd и ls
      11. Команда cp
      12. Команда mv
      13. Команда rm
      14. Команда редактирования
      15. Команда выхода
      16. Команда сброса
      17. Другие команды оболочки EFI
      18. Перенаправление вывода
      19. Вывод
      20. использованная литература

      Что вам нужно знать:

      Я использовал 2 разных приглашения для написания команд оболочки EFI в этой статье.

      Оболочка> — Я использовал это приглашение для команд, которые можно запускать откуда угодно.

      fs1: \ *> — Я использовал это приглашение, чтобы уточнить, что вам нужно выбрать определенное устройство хранения (в данном случае fs1) ​​или находиться в определенном каталоге перед запуском команд.

      Обязательно помните об этом, пока читаете эту статью.

      Чтение USB-накопителей из оболочки UEFI:

      Интерактивная оболочка UEFI может читать флэш-накопители USB, если вы отформатируете их как FAT16 или FAT32. Итак, предположим, что вы написали несколько сценариев EFI или загрузили какие-либо сценарии EFI с официального сайта производителя вашей материнской платы. В этом случае вам придется поместить их на флэш-накопитель USB в формате FAT16 или FAT32, чтобы получить доступ и запустить их из интерактивной оболочки UEFI.

      Запуск интерактивной оболочки UEFI:

      Сначала выключите компьютер. Затем включите компьютер. Сразу после нажатия кнопки питания продолжайте нажимать или клавишу клавиатуры, чтобы войти в прошивку BIOS / UEFI материнской платы.

      Затем в разделе выбора загрузки прошивки BIOS / UEFI вашей материнской платы вы должны найти возможность войти в интерактивную оболочку UEFI.

      На моем одноплатном компьютере Odyssey X86 эта опция находится в Сохранить и выйти> UEFI: встроенная оболочка EFI, как вы можете видеть на изображении ниже.

      На моей виртуальной машине VMware можно использовать внутреннюю оболочку EFI, как вы можете видеть на снимке экрана ниже.

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

      После того, как вы нажмете любую клавишу, кроме или подождите 5 секунд, оболочка EFI должна быть готова к выполнению команд.

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

      Команда cls:

      Команда cls в основном используется для очистки выходных данных на экране.

      У вас может быть много текстов на экране, как вы можете видеть на скриншоте ниже.

      Чтобы очистить тексты на экране, выполните команду cls следующим образом:

      Тексты на вашем экране должны быть очищены.

      Вы также можете изменить цвет фона оболочки EFI с помощью команды cls.

      Чтобы изменить цвет фона оболочки EFI, выполните команду cls следующим образом:

      Оболочка > cls < цветовой код >

      На момент написания этой статьи команда cls поддерживает следующие .

      0 — Чернить

      1 — Синий

      2 — Зеленый

      3 — голубой

      4 — Красный

      5 — пурпурный

      6 — Желтый

      7 — Светло-серый

      Например, чтобы изменить цвет фона на Синий (1), выполните команду cls следующим образом:

      Оболочка > cls 2

      Цвет фона должен быть изменен на Синий (1), как вы можете видеть на скриншоте ниже.

      Чтобы изменить цвет фона на черный, выполните команду cls следующим образом:

      Оболочка > cls 0

      Цвет фона должен быть изменен на Черный (0), как вы можете видеть на скриншоте ниже.

      Команда эха:

      Команда echo используется для печати строки текста в оболочке EFI Shell.

      Например, чтобы напечатать текст Hello World, выполните команду echo следующим образом:

      Оболочка > эхо «Привет мир»

      Как видите, текст Hello World напечатан на оболочке EFI Shell.

      При желании вы также можете отказаться от использования кавычек.

      Команда псевдонима:

      Вы можете перечислить все псевдонимы команд оболочки EFI с помощью команды alias.

      Чтобы вывести список всех псевдонимов команд оболочки EFI, выполните команду псевдонима следующим образом:

      Как видите, перечислены все псевдонимы команд оболочки EFI.

      Вы также можете использовать команду alias для создания или удаления псевдонимов.

      Чтобы создать псевдоним команды print_hello, который запускает команду echo Hello World, вы можете запустить команду псевдонима следующим образом:

      Оболочка > псевдоним print_hello «эхо, привет мир»

      Как видите, создается новый псевдоним print_hello.

      Теперь вы можете запустить команду print_hello следующим образом:

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

      Вы можете создать тот же псевдоним print_hello, что и изменчивый псевдоним, используя параметр -v следующим образом:

      Оболочка > псевдоним -v print_hello «эхо, привет мир»

      Вы можете удалить псевдоним, используя параметр -d команды псевдонима.

      Чтобы удалить псевдоним print_hello, запустите команду alias с параметром -d следующим образом:

      Оболочка > псевдоним -d print_hello

      Как видите, псевдоним print_hello удален из списка псевдонимов.

      Команда помощи:

      Команда help используется для поиска команд оболочки EFI с использованием шаблонов.

      Например, чтобы найти все команды оболочки EFI, начинающиеся с m, вы можете запустить команду help следующим образом:

      Оболочка > помощь м *

      Все команды оболочки EFI, начинающиеся с m, перечислены в списке, как вы можете видеть на снимке экрана ниже.

      Таким же образом вы можете найти все команды оболочки EFI, заканчивающиеся на m, следующим образом:

      Оболочка > помощь * м

      В списке перечислены все команды оболочки EFI, заканчивающиеся на m, как вы можете видеть на снимке экрана ниже.

      Вы также можете узнать, как использовать команду EFI Shell, какие параметры они поддерживают и для каких параметров используется команда справки. Наконец, вы можете сравнить это с командой Linux man.

      Например, чтобы узнать, как использовать команду псевдонима, запустите команду справки следующим образом:

      Оболочка > помощь псевдоним

      Должно отображаться много информации о команде справки.

      Если справочная информация по определенной команде очень длинная, вы можете нажать кнопку

      клавиши клавиатуры для прокрутки вверх и вниз соответственно.

      Если вывод слишком длинный, вам понадобится пейджер, чтобы прочитать его. Опять же, вы можете сравнить это с программой Linux less. Но в отличие от программы Linux less, пейджер EFI Shell прокручивает страницу за страницей, а не по строкам.

      Чтобы использовать пейджер для команды справки, используйте параметр -b команды справки следующим образом:

      Оболочка > помощь -b псевдоним

      Информация об использовании команды псевдонима отображается на пейджере, как вы можете видеть на снимке экрана ниже.

      Вы можете нажать чтобы перейти на следующую страницу.

      Чтобы закрыть пейджер, нажмите q, а затем нажмите .

      Команда набора:

      Команда set используется для вывода списка всех доступных переменных среды EFI Shell.

      Чтобы вывести список всех доступных переменных среды оболочки EFI, выполните команду set следующим образом:

      В списке перечислены все переменные среды EFI Shell, как вы можете видеть на снимке экрана ниже.

      Вы также можете создать свои собственные переменные среды EFI Shell.

      Чтобы создать файл переменной среды EFI Shell с содержимым boot.img, выполните команду set следующим образом:

      Оболочка > задавать файл boot.img

      Файл переменных среды установлен, как вы можете видеть на скриншоте ниже.

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

      Например, чтобы создать ту же переменную среды файла, что и переменная среды volatile, выполните команду set следующим образом:

      Оболочка > задавать -v файл image.boot

      Вы также можете удалить переменные среды EFI Shell.

      Чтобы удалить файл переменной среды EFI Shell, выполните команду set следующим образом:

      Оболочка > задавать -d файл

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

      Команда карты:

      Команда map распечатывает таблицу сопоставления всех запоминающих устройств вашего компьютера. В таблице сопоставления вы можете найти имена устройств хранения вашего компьютера. Чтобы получить доступ к устройству хранения из EFI Shell, вам потребуется имя устройства этого устройства хранения.

      Чтобы вывести список всех запоминающих устройств вашего компьютера из оболочки EFI, выполните команду map следующим образом:

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

      Если вы вставите в компьютер новое запоминающее устройство, например флэш-накопитель USB, оно не будет автоматически отображаться в таблице сопоставления. Вместо этого вам придется обновить таблицу сопоставления вручную.

      Вы можете обновить таблицу сопоставления оболочки EFI, используя параметр -r команды map следующим образом:

      Оболочка > карта -р

      Таблица сопоставления EFI Shell должна быть обновлена, и ваше новое устройство хранения должно быть указано в новой таблице сопоставления, как вы можете видеть на снимке экрана ниже.

      Команды cd и ls:

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

      Например, чтобы выбрать запоминающее устройство fs1, вы можете выполнить следующую команду:

      Приглашение следует изменить на fs1: \>, как вы можете видеть на скриншоте ниже.

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

      Как видите, перечислены все файлы и каталоги запоминающего устройства fs1.

      Вы также можете использовать относительные пути к каталогам с командой ls для вывода списка файлов и каталогов этого каталога.

      Например, чтобы вывести список файлов и каталогов каталога scripts \ (относительно вашего текущего рабочего каталога), вы можете запустить команду ls следующим образом:

      fs1: \ > ls скрипты

      Должны быть перечислены файлы и каталоги каталога scripts \.

      В моем случае каталог scripts \ пуст.

      Вы также можете использовать абсолютные пути с командой ls.

      Например, чтобы вывести список всех файлов и каталогов на устройстве хранения fs0, выполните команду ls следующим образом:

      Оболочка > ls fs0:

      Все файлы и каталоги устройства хранения fs0 должны быть перечислены, как вы можете видеть на скриншоте ниже.

      Вы можете рекурсивно выводить список файлов и каталогов, используя параметр -r команды ls.

      Например, чтобы рекурсивно вывести список всех файлов и каталогов устройства хранения fs0, выполните команду ls следующим образом:

      Оболочка > ls -р fs0:

      Все файлы и каталоги устройства хранения fs0 должны быть перечислены рекурсивно, как вы можете видеть на скриншоте ниже.

      Если список файлов и каталогов слишком длинный и не помещается на экране, вы можете использовать параметр -b команды ls, чтобы использовать пейджер.

      Вы можете рекурсивно перечислить все файлы и каталоги устройства хранения fs0 и использовать пейджер для вывода следующим образом:

      Оболочка > ls -р -b fs0:

      Команда ls должна использовать пейджер для отображения вывода, как показано на снимке экрана ниже.

      Вы можете использовать команду cd для перехода в другой каталог выбранного вами устройства хранения. Это сделает ваши команды короче, так как вам не придется вводить длинные пути к каталогам.

      Например, чтобы перейти в каталог scripts \ выбранного запоминающего устройства fs1, вы можете запустить команду cd следующим образом:

      fs1: \ > компакт диск скрипты

      Текущий рабочий каталог следует изменить на fs1: \ scripts \, как вы можете видеть на скриншоте ниже.

      Чтобы вернуться на один каталог — в родительский каталог, вы можете запустить команду cd следующим образом:

      fs1: \ scripts > компакт диск ..

      Вы должны быть на один каталог вверх, как вы можете видеть на скриншоте ниже.

      Команда cp:

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

      У меня есть файл hello.txt на устройстве хранения fs1, как вы можете видеть на скриншоте ниже.

      Чтобы создать новую копию hello.txt, выполните команду cp следующим образом:

      fs1: \ > cp hello.txt hello2.txt

      Необходимо создать новый файл hello2.txt, а содержимое файла hello.txt скопировать в файл hello2.txt.

      Если вы хотите скопировать файл hello.txt в каталог scripts \ на том же устройстве хранения, используя относительный путь к каталогу, выполните команду cp следующим образом:

      fs1: \ > cp скрипты hello.txt

      Как видите, файл hello.txt скопирован в каталог scripts \.

      fs1: \ > ls скрипты

      Вы также можете использовать абсолютный путь для копирования файла hello.txt в каталог \ scripts следующим образом:

      fs1: \ > cp \ hello.txt \ scripts

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

      Если вы хотите перезаписать файл, нажмите y, а затем нажмите .

      Если вы не хотите перезаписывать файл, нажмите n, а затем нажмите .

      Если вы хотите перезаписать все уже существующие файлы, нажмите a, а затем нажмите .

      Если вы не знаете, что делать, нажмите c и нажмите для отмены операции копирования.

      Файл hello.txt нужно скопировать в каталог \ scripts.

      Таким же образом, если вы хотите скопировать файл hello.txt в корневой каталог другого устройства хранения fs0, вы можете запустить команду cp следующим образом:

      fs1: \ > cp hello.txt fs0: \

      Как видите, файл hello.txt копируется в корень устройства хранения fs0.

      Оболочка > ls fs0: \

      Вы также можете рекурсивно скопировать содержимое каталога в другой каталог или устройство хранения, используя параметр -r команды cp.

      Чтобы рекурсивно скопировать содержимое каталога fs0: \ EFI на устройство хранения fs1, выполните команду cp следующим образом:

      Оболочка > cp -р fs0: \ EFI \ fs1: \

      Все файлы и каталоги в каталоге fs0: \ EFI должны быть скопированы на устройство хранения fs1, как вы можете видеть на скриншоте ниже.

      Как видите, каталоги ubuntu \ и BOOT \ из каталога fs0: \ EFI рекурсивно копируются на устройство хранения fs1.

      Оболочка > ls fs0: \ EFI
      Оболочка > ls fs1: \

      Если вы хотите скопировать каталог fs0: \ EFI, а также содержимое этого каталога на устройство хранения fs1, выполните команду cp следующим образом:

      Оболочка > cp -р fs0: \ EFI fs1: \

      Как видите, каталог fs0: \ EFI рекурсивно копируется на устройство хранения fs1.

      Оболочка > ls fs0: \
      Оболочка > ls fs1: \

      Команда mv:

      Команда mv работает так же, как команда cp. Единственное отличие состоит в том, что команда mv перемещает файлы или каталоги из источника в место назначения, а не копирует их.

      Поскольку команда mv и команда cp похожи, я не буду их здесь объяснять. Просто прочтите раздел «Команда cp» и замените команды cp на команду mv. Вам будет хорошо идти.

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

      Например, чтобы переименовать файл hello2.txt в hello3.txt, выполните команду mv следующим образом:

      fs1: \ > мв hello2.txt hello3.txt

      Файл hello2.txt следует переименовать в hello3.txt.

      Как видите, файла hello2.txt больше нет на устройстве хранения fs1, и он был переименован в hello3.txt.

      Таким же образом вы можете переименовать каталог с помощью команды mv.

      Например, чтобы переименовать каталог ubuntu \ в debian \, выполните команду mv следующим образом:

      fs1: \ > мв Ubuntu Debian

      Как видите, каталог ubuntu \ переименован в debian \.

      Команда rm:

      Команда rm используется для удаления файлов и каталогов с ваших устройств хранения.

      Чтобы удалить файл hello3.txt с устройства хранения fs1, выполните команду rm следующим образом:

      fs1: \ > rm hello3.txt

      Файл hello3.txt следует удалить.

      Как видите, файла hello3.txt больше нет на устройстве хранения fs1.

      Таким же образом вы можете удалить каталог debian \ с устройства хранения fs1 следующим образом:

      fs1: \ > rm дебиан

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

      Чтобы подтвердить операцию удаления, нажмите y, а затем нажмите .

      Каталог debian \ и его содержимое следует удалить.

      Как видите, каталог debian \ больше не доступен на устройстве хранения fs1.

      Команда редактирования:

      EFI Shell поставляется с базовой программой текстового редактора под названием EFI Editor. Это очень полезно, так как вы можете очень легко редактировать файлы конфигурации из EFI Shell.

      Вы можете открыть файл hello.txt с запоминающего устройства fs1 с помощью программы EFI Editor следующим образом:

      fs1: \ > редактировать hello.txt

      Файл hello.txt следует открыть с помощью программы EFI Editor. Здесь вы можете редактировать текстовый файл / файл конфигурации.

      После редактирования файла hello.txt нажмите с последующим чтобы сохранить файл.

      Файл hello.txt следует сохранить.

      Чтобы закрыть программу EFI Editor, нажмите .

      Если у вас есть несохраненные изменения, программа EFI Editor спросит вас, хотите ли вы их сохранить.

      Нажмите y, чтобы сохранить изменения и закрыть программу EFI Editor.

      Нажмите n, чтобы отменить изменения и закрыть программу EFI Editor.

      Нажмите c, если вы передумали и больше не хотите закрывать программу EFI Editor.

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

      Вы можете посмотреть в нижней части программы EFI Editor, и вы должны найти всю информацию, необходимую для использования других функций программы EFI Editor. Кроме того, вы можете сравнить программу EFI Editor с текстовым редактором Nano Linux. Это потрясающе.

      Команда выхода:

      Команда выхода используется для закрытия оболочки EFI и возврата к прошивке BIOS / UEFI вашей материнской платы.

      Чтобы закрыть оболочку EFI, запустите команду выхода следующим образом:

      Было бы лучше, если бы вы вернулись к прошивке BIOS / UEFI своей материнской платы, как вы можете видеть на скриншоте ниже.

      Команда сброса:

      Команда сброса используется для сброса или перезагрузки компьютера.

      Чтобы перезагрузить компьютер из оболочки EFI, выполните команду сброса следующим образом:

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

      Чтобы выключить компьютер из оболочки EFI, выполните команду сброса с параметром -s следующим образом:

      Оболочка > перезагрузить -s

      Другие команды оболочки EFI:

      Есть много других команд оболочки EFI. Все это выходит за рамки данной статьи. Но вы можете прочитать документацию EFI Shell [1], чтобы узнать о них. Вы также можете использовать команду help, чтобы узнать о доступных командах оболочки EFI. Вы также можете использовать команду help, чтобы прочитать документацию по командам EFI Shell. Документация EFI Shell очень обширна и полна информации и примеров. Это также очень просто и легко следовать. У вас не должно возникнуть проблем с его чтением.

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

      Как и bash и другие оболочки Linux, оболочка EFI также поддерживает перенаправление вывода. Таким образом, вы можете перенаправить вывод команды EFI Shell в файл, используя функцию перенаправления вывода EFI Shell.

      Например, вы можете перенаправить вывод команды echo «Hello World» в файл message.txt следующим образом:

      fs1: \ > эхо «Привет мир» > message.txt

      Должен быть создан новый файл message.txt, как вы можете видеть на скриншоте ниже.

      Как видите, в нем есть контент Hello World.

      fs1: \ > редактировать message.txt

      Если вы хотите добавить (добавить в конец файла) вывод другой команды echo «Удачи» (скажем) в файл message.txt, вы можете использовать символ >> вместо символа> следующим образом:

      fs1: \ > эхо «Удачи» >> message.txt

      Как видите, текст Good Luck добавлен в конец файла message.txt.

      fs1: \ > редактировать message.txt

      Таким же образом вы можете перенаправить вывод команды help map в файл map-help.txt следующим образом:

      fs1: \ > помощь карта > map-help.txt

      Как видите, создается новый файл map-help.txt.

      Как видите, вывод команды help map перенаправляется в файл map-help.txt.

      fs1: \ > отредактировать map-help.txt

      ПРИМЕЧАНИЕ: Когда вы выполняете перенаправление вывода, вы должны помнить разницу между символами> и >>. Это очень важно. Если вы недостаточно знакомы с этими символами, вы можете потерять важные данные.

      Допустим, вы выполнили следующую команду в EFI Shell:

      Оболочка > команда > файл

      Здесь символ> перенаправит вывод команды в файл. Если файл не существует, он будет создан. Если файл существует, его содержимое будет заменено выводом команды. Об этом очень важно помнить.

      Теперь предположим, что вы выполнили указанную выше команду оболочки EFI, используя символ >> следующим образом:

      Оболочка > команда >> файл

      Здесь символ >> добавит (добавит в конец файла) вывод команды к файлу, если файл существует. Если файл не существует, он будет создан, и выходные данные команды будут добавлены в файл.

      Итак, если файл не существует, символы> и >> будут делать то же самое — создать файл и добавить в него выходные данные команды.

      Если на вашем устройстве хранения много файлов, несложно ошибиться и потерять важные данные. Поэтому я рекомендую использовать символ >> вместо символа> для перенаправления вывода, если у вас нет особых требований. Затем он сделает то же самое. Таким образом, если вы сделаете ошибку, вы всегда сможете удалить лишние строки, добавленные к файлу, чтобы вернуться в предыдущее состояние.

      Вывод:

      В этой статье показано, как запустить интерактивную оболочку UEFI и использовать общие команды оболочки EFI. Я также показал вам, как использовать функцию перенаправления вывода EFI Shell. Наконец, я показал вам, как получить доступ к устройствам хранения вашего компьютера из оболочки EFI Shell и как создавать, копировать, перемещать, переименовывать и редактировать файлы из оболочки EFI Shell. Эта статья должна помочь вам начать работу с командами UEFI Interactive Shell и EFI Shell.

      Использованная литература:

      [1] Справочное руководство по командам оболочки — Intel

      [2] Основные инструкции по использованию расширяемого интерфейса микропрограмм (EFI)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *