Efi internal shell: Built-in EFI Shell — что это?

Я застрял в оболочке EFI при включении компьютера [ИСПРАВЛЕНО]

Автор Белов Олег На чтение 3 мин. Просмотров 27.7k. Опубликовано

Bootloops и BSOD – это то, с чем сталкивается каждый пользователь ПК. Важно не паниковать и не пытаться определить причину проблемы. В этом случае некоторые пользователи застряли в EFI Shell после перезагрузки компьютера.

Для некоторых ошибка предшествовала внезапному отключению, в то время как другие не испытывали ничего необычного до ошибки EFI Shell. Мы нашли 3 возможных решения этой проблемы и поместили их ниже.

Содержание

  1. Как исправить ошибки EFI Shell при загрузке ПК
  2. Решение 1. Подключите жесткий диск к другому порту
  3. Решение 2. Отключите MSI Fast Boot или UEFI Boot в BIOS
  4. Решение 3 – Удалить батарею CMOS
  1. Подключите жесткий диск в другой порт
  2. Отключить MSI Fast Boot или UEFI Boot в BIOS
  3. Удалить CMOS аккумулятор

Решение 1.

Подключите жесткий диск к другому порту

Первый шаг, с которым мы сталкиваемся как возможное решение, – это изменение порта жесткого диска. По-видимому, переключая порты SATA, некоторым пользователям удалось получить EFI (Extensible Firmware Interface). Это, конечно, указывает на некоторые аппаратные проблемы, поэтому, даже если ваш компьютер может загрузиться в систему, всегда есть страх перед HDD или, что менее вероятно, проблемами с материнской платой.

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

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

Решение 2. Отключите MSI Fast Boot или UEFI Boot в BIOS

Каждый OEM материнской платы имеет несколько конкретных настроек. Хотя некоторые из них являются уловками, такие функции, как MSI Fast Boot, часто используются для ускорения загрузки в систему.

Однако, похоже, что эта функция не работает должным образом с Windows 10. Некоторые пользователи смогли выйти из оболочки EFI, отключив эту функцию.

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

  • ОТНОСИТЕЛЬНО: 5 лучших программ для восстановления загрузки Windows 10, чтобы оживить ваш компьютер в 2019 году

Решение 3 – Удалить батарею CMOS

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

Таким образом, вся кэшированная конфигурация будет сброшена, и вы сможете загрузить систему. Конечно, это означает, что все жесткие диски работоспособны.

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

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

Замена тапок на ходу. Точнее замена системного диска с загрузчиком без перезагрузки сервера.

Всякий раз, проводя миграцию системного диска под AIX, я задумывался, а можно ли на linux  поменять загрузочный диск на лету. Можно, когда понадобилось.
Условимся по исходным данным, должно быть:

  1. Два диска, примем что sda — старый диск а sdb — новый диск. Понятно что sdb не должен быть меньше sda. 
  2. Сервер с загрузчиком UEFI
  3. Использование LVM для системных разделов.
Таблица разделов

Смотрим таблицу разделов на старом диске:

# parted —script /dev/sda unit s \ print
Model: ATA ST1000DM010-2EP1
Disk /dev/sda: 314572800s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 2048s 411647s 409600s fat16 EFI System Partition boot
2 411648s 2508799s 2097152s xfs
3 2508800s 115505151s 112996352s lvm

Видим три партиции: первая — это UEFI, вторая — boot, и третья это lvm партиция, в которой находятся root и swap.
Создаем партиции на новом диске, задавая границы в секторах:
# parted —script /dev/sdb mklabel gpt
# parted —script /dev/sdb mkpart primary fat16 2048s 411647s \ toggle 1 boot
# parted —script /dev/sdb mkpart primary xfs 411648s 2508799s
# parted —script /dev/sdb mkpart primary 2508800s 115505151s

Проверяем, что получилось:

# parted —script /dev/sdb unit s \ print
Model: ATA ST1000DM010-2EP1
Disk /dev/sdb: 314572800s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number Start End Size File system Name Flags
1 2048s 411647s 409600s primary boot
2 411648s 2508799s 2097152s primary
3 2508800s 115505151s 112996352s primary

Перенос разделов

Переносим разделы UEFI и boot:

# umount /boot/efi/
# umount /boot/
# dd if=/dev/sda1 of=/dev/sdb1
409600+0 records in
409600+0 records out
209715200 bytes (210 MB) copied, 12. 0039 s, 17.5 MB/s
# dd if=/dev/sda2 of=/dev/sdb2
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 17.7454 s, 60.5 MB/s

Поправим fstab в соответствии с новыми разделами и примонтируем их. В fstab, в данном случае, используется UUID:

# blkid /dev/sdb1
/dev/sdb1: SEC_TYPE=»msdos» UUID=»DDB7-FB03″ TYPE=»vfat» PARTLABEL=»primary» PARTUUID=»e5120b6d-2f2b-4f22-ac60-0c323c0ea290″
# blkid /dev/sdb2
/dev/sdb2: UUID=»554bd0c3-c9a9-42a3-a860-2ede07f3a9f4″ TYPE=»xfs» PARTLABEL=»primary» PARTUUID=»1a9e1cb5-96b1-4435-a9a6-b75f3f15dea3″
# grep boot /etc/fstab
UUID=554bd0c3-c9a9-42a3-a860-2ede07f3a9f4 /boot xfs defaults 0 0
UUID=DDB7-FB03 /boot/efi vfat umask=0077,shortname=winnt 0 0
# mount -a

Проводим мигацию lvm разделов. Точнее, увеличиваем группу томов (VG) за счет sdb3,  перемещаем экстенты с данными и выводим sda3 из группы:

# vgextend rhel /dev/sdb3

# pvmove -i 3 /dev/sda3

# vgreduce rhel /dev/sda3

Настройка загрузчика UEFFI

Текущее конфигурация:

# efibootmgr -v

BootCurrent: 0000

BootOrder: 0000,0001,0002,0003,0004

Boot0000* Red Hat Enterprise Linux HD(1,GPT,4cedfdcd-b8c3-490b-98ca-3ad3cf915259,0x800,0x64000)/File(\EFI\redhat\shimx64. efi)

Boot0001* EFI Floppy /Pci(0x7,0x0)/

Boot0002* EFI IDE CDROM Drive (IDE 1:0) /Pci(0x7,0x1)/Ata(1,0,0)

Boot0003* EFI Network /Pci(0x16,0x0)/Pci(0x0,0x0)/MAC(005056b748e1,1)

Boot0004* EFI Internal Shell (Unsupported option) MemoryMapped(11,0xe1a2000,0xe42ffff)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37)

Первым в списке загрузки используется вариант 0000. Кратенько по формату:

  1. Заголовок, в нашем случае — Red Hat Enterprise Linux
  2. Источник загрузки — HD, т.е. жесткий диск и его определение в скобках. 

Что в скобках: 

  • 1 — номер раздела,
  • GPT — формат таблицы разделов, 
  • 4cedfdcd-b8c3-490b-98ca-3ad3cf915259 — это PARTUUID раздела
  • 0x800 и 0x64000 — начало и размер раздела в LBA адресации.

Добавляем новый вариант загрузки и ставим его первым в списке:

# efibootmgr —create —disk /dev/sdb —part 1 —loader /EFI/redhat/shimx64. efi —label «RHEL» —verbose

BootCurrent: 0000

BootOrder: 0005,0000,0001,0002,0003,0004

Boot0000* Red Hat Enterprise Linux HD(1,GPT,4cedfdcd-b8c3-490b-98ca-3ad3cf915259,0x800,0x64000)/File(\EFI\redhat\shimx64.efi)

Boot0001* EFI Floppy /Pci(0x7,0x0)/

Boot0002* EFI VMware Virtual IDE CDROM Drive (IDE 1:0) /Pci(0x7,0x1)/Ata(1,0,0)

Boot0003* EFI Network /Pci(0x16,0x0)/Pci(0x0,0x0)/MAC(005056b748e1,1)

Boot0004* EFI Internal Shell (Unsupported option) MemoryMapped(11,0xe1a2000,0xe42ffff)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37)

Boot0005* RHEL HD(1,GPT,e5120b6d-2f2b-4f22-ac60-0c323c0ea290,0x800,0x64000)/File(\EFI\redhat\shimx64.efi)

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

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

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

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

Содержание:

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

Вещи, которые вам нужно знать:

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

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

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

Помните об этом, пока будете читать эту статью.

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

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

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

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

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

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

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

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

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

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

Команда cls:

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

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

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

Shell> cls

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

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

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

Shell> cls

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

0 – Black

1 – Blue

2 – Green

3 – Cyan

4 – Red

5 – Magenta

6 – Yellow

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

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

Shell> cls 2

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

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

Shell> cls 0

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

Команда echo:

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

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

Shell> echo «Hello World»

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

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

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

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

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

Shell> псевдоним

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

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

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

Shell> alias print_hello «echo Hello World»

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

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

Shell> print_hello

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

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

Shell> псевдоним -v print_hello «echo Hello World»

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

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

Shell> псевдоним -d print_hello

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

Shell> псевдоним

Команда справки:

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

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

Shell> help m*

вы можете видеть на скриншоте ниже.

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

Shell> help *m

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

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

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

Shell> псевдоним справки

Необходимо отобразить много информации о команде справки.

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

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

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

Shell> help -b псевдоним

можете видеть на скриншоте ниже.

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

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

Команда set:

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

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

Shell> set

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

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

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

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

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

Shell> set -v file image.boot

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

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

Shell> set -d file

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

Shell> set

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

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

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

Shell> map

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

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

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

Shell> map -r

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

Команды cd и ls:

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

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

Shell> fs1:

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

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

fs1:\> ls

Как видите, все файлы и перечислены каталоги устройства хранения fs1.

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

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

fs1:\> ls scripts

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

Каталог scripts\ в моем случае пуст.

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

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

Shell> ls fs0:

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

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

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

Shell> ls -r fs0:

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

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

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

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

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

fs1:\> cd scripts

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

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

fs1:\scripts> cd ..

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

Команда cp:

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

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

fs1:\> ls

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

fs1:\> cp hello.txt hello2.txt

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

fs1:\> ls

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

fs1:\> cp hello.txt scripts

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

fs1:\> ls scripts

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

Shell> ls fs0:\

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

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

Shell> cp -r fs0:\EFI\ fs1:\ каталоги в каталоге fs0:\EFI должны быть скопированы на устройство хранения fs1, как вы можете видеть на снимке экрана ниже.

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

Shell> ls fs0:\EFI

Shell> ls fs1:\

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

Shell> cp -r 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:\> mv hello2.txt hello3.txt

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

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

fs1:\> ls

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

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

fs1:\> mv ubuntu debian

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

fs1:\> ls

Команда rm:

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

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

fs1:\> rm hello3. txt

Файл hello3.txt должен быть удален.

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

fs1:\> ls

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

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

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

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

fs1:\> ls

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

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

Вы можете открыть файл 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, выполните команду выхода следующим образом:

Shell> exit

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

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

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

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

Shell> reset

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

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

Shell> reset -s

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

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

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

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

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

fs1:\> echo «Hello World» > message.txt

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

fs1:\> ls

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

fs1:\> edit message.txt

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

fs1:\> echo «Удачи» >> message.txt

Как видите, текст «Удачи» добавляется в конец файл сообщение.txt.

fs1:\> edit message.txt

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

fs1:\> help map > map -help.txt

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

fs1:\> ls

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

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

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

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

Shell> команда > файл

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

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

Команда Shell> >> файл

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

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

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

Заключение:

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

Ссылки:

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

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

Как выполнить «загрузку в оболочке UEFI»?

Спросил

Изменено
2 года, 1 месяц назад

Просмотрено
73k раз

Я пытаюсь выполнить несколько инструкций по обновлению прошивки:

x64 среда UEFI:

  • Загрузка оболочки UEFI
  • Запустить update. nsh

Я не знаю, как это сделать. Когда я загружаюсь, есть ли у меня возможность загрузиться в UEFI Shell?

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

Моя ОС: Server 2012 R2

  • boot
  • оболочка
  • bios
  • uefi
  • windows-server-2012-r2

9

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

Другой способ — запустить его так же, как вы запускаете любой другой двоичный файл EFI (например, загрузчик). Поскольку на самом деле невозможно зарегистрировать двоичный файл EFI в вашем UEFI или поместить двоичный файл оболочки в ваш ESP в Windows, поэтому, вероятно, проще всего указать его как \EFI\Boot\bootx64.efi (также поместите update.nsh , который вам нужно запустить, и файлы, которые он требует, в \EFI\Boot\ ) на USB-накопителе в формате FAT (32) (не имеет значения, MBR или GPT, если ваш UEFI достаточно соответствует стандарту). Затем перезагрузитесь и загрузите USB в режиме UEFI из меню загрузки UEFI.

Вы можете получить бинарный файл оболочки EFI из репозитория проекта EDK2:

  • версия 2

  • версия 1 (больше не обновляется, только для старого UEFI, который не работает с v2)

    ( Примечание: некоторые старые инструменты EFI, такие как sas2flash.efi, работают только с такой старой оболочкой EFI (которая работает на текущих материнских платах с текущим UEFI))

П.

Читайте также: