Internal efi shell: Built-in EFI Shell — что это?

[Решено:] Оболочка EFI Shell при загрузке компьютера

  • О сайте
  • Контакты

войти в систему

Добро пожаловат!Войдите в свой аккаунт

Ваше имя пользователя

Ваш пароль

Вы забыли свой пароль?

завести аккаунт

Зарегистрироваться

Добро пожаловат!Зарегистрируйтесь для создания учетной записи

Ваш адрес электронной почты

Ваше имя пользователя

Пароль будет выслан Вам по электронной почте.

восстановление пароля

Восстановите свой пароль

Ваш адрес электронной почты

Изменена:

В данной статье вы узнаете, что делать если после покупки нового ноутбука (Acer, Asus, Dell, Lenovo и др) который вы берете без предустановленной операционной системы Windows c целью экономии денег, а придя домой втыкаете загрузочную флешку с Windows 10, но на мониторе вместо установочного экрана у вас светится желто-белые надписи :

EFI shell version 2. 60 current running mode 1.1.2  или EFI shell version 2.70 – что делать?

Всем добрый ночи! из-за большой загрузки никак не могу часто обновлять и добавлять на блог новый контент, но сегодня особый случай) Ночью позвонил коллега с работы который купил себе на день рождение ноутбук Acer, но с целью экономии выбрал системы без установленного Windows 10, что я считаю правильным решением ибо нафиг оно там надо)

но статья не об этом, а о том, что производители дабы отбить желание своих покупателей от таких ноутов создают им подлянку в виде UEFI shell которая встречает радостного владельца кучей текста в котором только НЕО из матрицы может быстро считать, что этой системе надо)))

Я если честно с такой штуковиной никогда не сталкивался и сразу полез искать пути решения и прокалупались мы где то мин 20-30 пока я читал хелпы

В итоге данная фигня лечится очень просто!!!

Необходимо просто набрать команду: Exit и нажать энтер

Вот и все) у вас система закроет этот EFI shell и пойдет грузиться дальше)))

Да

33. 19%

Нет

42.38%

Чувак ты бог, спасибо большое! )

24.43%

Проголосовало: 2546

Если Вам не помогла эта статья, читайте мою новую статью актуальную на 2021-2022 год, где я показываю как выйти из EFI Shell

Единственное с чем Вы сталкнетесь когда закроете биос и будете с вожделением ждать установку Windows у вас на экране появится вот такой замок)

но это из-за того, что нужно отключить Security Boot в биосе, но это вы уже можете прочитать в этой статье – Ошибка Security boot fail 

или посмотреть мое видео:

В данной статье мы разобрали вопросы:

  1. Ошибка при первом включении компьютера/ноутбука efi shell version 2.70
  2. UEFI Shell: Что делать если не загружается ОС?
  3. как выйти из оболочки EFI при включении компьютера?
  4. Efi shell как установить виндовс 10 с флешки?
  5. При запуске ПК efi shell version?

Popular

Настройка UEFI-загрузчика. Самое краткое руководство в мире / Хабр

Как устроена загрузка современных ОС? Как при установке системы настроить загрузку посредством UEFI, не утонув в руководствах и ничего не сломав?

Я обещал «самое краткое руководство». Вот оно:

  1. Создаём на диске таблицу разделов GPT
  2. Создаём FAT32-раздел на пару сотен мегабайт
  3. Скачиваем из интернета любой UEFI-загрузчик

    (нам нужен сам загрузчик, это один бинарный файл!)
  4. Переименовываем и кладем этот файл на созданный раздел по адресу /EFI/Boot/bootx64.efi
  5. Создаём текстовый конфиг, кладем его там, где загрузчик ожидает его увидеть

    (настройка и местоположение конфига зависят от конкретной реализации загрузчика, эта информация доступна в интернете)
  6. После перезагрузки видим меню загрузчика
    (Если на диске установлена Windows 8 или 10 — с большой вероятностью это руководство сокращается до пунктов 3 — 5.)

TL;DR не надо прописывать путь к загрузчику в новых загрузочных записях UEFI — надо файл загрузчика расположить по стандартному «пути по-умолчанию», где UEFI его найдет, и вместо загрузочного меню UEFI пользоваться меню загрузчика, которое гораздо проще и безопаснее настраивается

Как делать не надо

Есть, на самом-то деле, несколько способов настроить UEFI-загрузку. Я начну с описания других вариантов — чтобы было понятно, как (и почему) делать не надо. Если вы пришли за руководством — мотайте в самый низ.

Не надо лезть в NVRAM и трогать efivars

Наиболее «популярная» процедура установки загрузчика в систему такова: установщик ОС создаёт специальный раздел, на нём — структуру каталогов и размещает файлы загрузчика. После этого он с помощью особой утилиты (efibootmgr в linux, bcdedit в windows) взаимодействует с прошивкой UEFI-чипа, добавляя в неё загрузочную запись. В этой записи указывается путь к файлу загрузчика (начиная от корня файловой системы) и при необходимости — параметры. После этого в загрузочном меню компьютера появляется опция загрузки ОС. Для linux существует возможность вообще обойтись без загрузчика. В загрузочной записи указывается путь сразу к ядру вместе со всеми параметрами. Ядро должно быть скомпилировано с опцией EFISTUB (что давно является стандартом для большинства дистрибутивов), в этом случае оно содержит в себе заголовок «исполняемого файла EFI», позволяющий прошивке его запускать без внешнего загрузчика.

При старте системы, когда пользователь выбирает нужную ему загрузочную запись, прошивка UEFI сперва ищет на прописанном в этой записи диске особый EFI-раздел, обращается к файловой системе на этом разделе (обязательно FAT или FAT32), и запускает загрузчик. Загрузчик считывает из файла настроек свой конфиг, и либо грузит ОС, либо предоставляет загрузочное меню. Ничего не замечаете? Да, у нас два загрузочных меню — одно на уровне прошивки чипа UEFI, другое — на уровне загрузчика. В реальности о существовании второго пользователи могут даже не догадываться — если в меню всего один пункт, загрузчик Windows начинает его грузить без лишних вопросов. Увидеть экран с этим меню можно, если поставить вторую копию Windows или просто криво её переустановить.

Обычно для управления загрузочными записями руководства в интернете предлагают взаимодействовать с прошивкой UEFI. Есть аж пять основных вариантов, как это можно сделать: efibootmgr под linux, bcdedit в windows, какая-то софтина на «Маках», команда bcfg утилиты uefi shell (запускается из-под UEFI, «на голом железе» и без ОС, поскольку скомпилирована в том самом особом формате) и для особо качественных прошивок — графическими средствами UEFI (говоря популярным языком, «в настройках BIOS»).

За всеми вышенаписанными «многобуков» вы могли легко упустить такую мысль: пользователь, чтобы изменить настройки программной части (например, добавить параметр запуска ОС), вынужден перезаписывать flash-память микросхемы на плате. Есть ли тут подводные камни? О да! Windows иногда способна сделать из ноутбука кирпич, linux тоже, причём разными способами. Качество прошивок часто оставляет желать лучшего — стандарты UEFI либо реализованы криво, либо не реализованы вообще. По логике, прошивка обязана переживать полное удаление всех переменных efivars без последствий, не хранить в них критичных для себя данных и самостоятельно восстанавливать значения по-умолчанию — просто потому что пользователь имеет к ним доступ, и вероятность их полного удаления далека от нуля. Я лично в процессе экспериментов неоднократно (к счастью, обратимо) «кирпичил» свой Lenovo — из загрузочного меню исчезали все пункты, включая опцию «зайти в настройки».

Работа с загрузочными записями UEFI — тоже не сахар. К примеру, утилита efibootmgr не имеет опции «редактировать существующую запись». Если ты хочешь немного изменить параметр ядра — ты удаляешь запись целиком и добавляешь её снова, уже измененную. При этом строка содержит в себе двойные и одинарные кавычки, а также прямые и обратные слеши в не особо очевидном порядке. Когда я наконец заставил эту магию работать — я сохранил её в виде bash-скриптов, которые до сих пор валяются у меня в корневой ФС:

efibootmgr -c -L "Archlinux (debug)" -l '\EFI\archlinux\vmlinuz-linux' -u "root=/dev/mapper/vg1-lvroot rw initrd=\EFI\archlinux\initramfs-linux.img systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M enforcing=0"

Не надо использовать GRUB

Это чёртов мастодонт, 90% функциональности которого предназначено для дисков с MBR. Для настройки необходимо отредактировать ряд файлов, после чего выполнить команду генерации конфига. На выходе получается огромная малопонятная нормальному человеку простыня. В составе — гора исполняемых файлов. Ставится командой, которую просто так из головы не возьмешь — надо обязательно лезть в документацию

grub-install --target=x86_64-efi --efi-directory=esp_mount --bootloader-id=grub

Для сравнения — самый простенький UEFI-bootloader, который есть в составе пакета systemd, ставится командой

bootctl install --path=/boot

Эта команда делает ровно две вещи: копирует исполняемый файл загрузчика на EFI-раздел и добавляет свою загрузочную запись в прошивку. А конфиг для неё занимает ровно СЕМЬ строчек.

«Самое краткое руководство» — чуть более подробно

Загрузочное меню надо реализовывать на уровне загрузчика — править текстовые конфиги гораздо проще и безопасней.

Загрузочная запись нам не нужна — дело в том, что при выставлении в настройках BIOS загрузки с диска прошивка UEFI сначала ищет на нём EFI-раздел, а затем пытается исполнить файл по строго фиксированному адресу на этом разделе: /EFI/Boot/BOOTX64. EFI

Что такое «EFI-раздел»? В теории, он должен иметь особый тип «EFI System» (ef00). На практике, годится первый раздел на GPT-диске, отформатированный в FAT32 и имеющий достаточно места, чтобы разместить загрузчик и вспомогательные файлы (если есть).

Пункт 3: «Скачиваем из интернета любой UEFI-загрузчик». Что это значит? Загрузчик — это просто исполняемый файл определенного формата, к которому в комплекте идет конфиг. К примеру, если у вас есть под рукой установленный пакет с systemd — файл загрузчика можно найти по адресу /usr/lib/systemd/boot/efi/systemd-bootx64.efi, переименовать его в bootx64.efi и скопировать в /EFI/Boot/ на EFI-разделе. Нет под рукой systemd? Скачайте архив с сайта Archlinux. Или с репозитария Ubuntu. Или Debian. Есть под рукой система с Windows? Возьмите виндовый загрузчик оттуда, тоже сгодится )) Если сумеете настроить, я честно говоря не пробовал.

Пункт 4: «Настроить конфиг». Как и обычная программа, когда загрузчик запускается — он ожидает найти по определенным путям файлы конфигурации. Обычно эту информацию легко найти в интернете. Для загрузчика systemd-boot нам необходимо в корне EFI-раздела создать каталог «loader», а в нём файл «loader.conf» с тремя строчками (привожу свои):

default     archlinux
timeout     10
editor      1

Параметр editor отвечает за возможность отредактировать пункт загрузочного меню перед запуском.

Рядом с loader.conf необходимо создать каталог entries — один файл в нём будет отвечать за одну загрузочную запись в boot-меню. У меня там один файл arch.conf с таким содержанием:

title          Arch Linux
linux          /efi/archlinux/vmlinuz-linux
initrd         /efi/archlinux/initramfs-linux.img
options        root=/dev/mapper/vg1-lvroot rw initrd=\EFI\archlinux\intel-ucode.img

Я не упомянул, но довольно очевидно — ядро и initramfs должны лежать в одной файловой системе с загрузчиком, то есть на EFI-разделе. Пути к ним в конфигах отсчитываются от корня этой ФС.

Другие загрузчики

systemd-boot очень простой и предоставляет спартанского вида чёрно-белое меню. Есть варианты красивей, если душа просит красоты.

rEFind — очень красивый загрузчик. Скачать можно тут в виде deb-пакета. Использую на своём ноуте. Умеет создавать загрузочное меню автоматически, без конфига — просто сканируя файлы.

Clover. Позволяет выставлять нативное разрешение экрана, имеет поддержку мыши на экране загрузки, разные темы оформления. Дефолтная тема ужасна, конфиг в виде xml нечитаем, настроить не смог.

Различные неочевидные последствия

Вы можете легко попробовать эту схему в работе. Берёте USB-флешку, форматируете в таблицу разделов GPT, создаете FAT-раздел и копируете туда загрузчик. Комп сможет с неё стартовать.

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

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

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

x64 среда UEFI:

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

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

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

Моя ОС: Windows Server 2012 R2

  • загрузка
  • оболочка
  • биос
  • uefi
  • windows-server-2012-r2

9

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

Вам следует обратиться к руководству по вашей материнской плате, чтобы узнать путь, который она будет искать (хотя инструкции часто расплывчаты). Обычно ищут файл с именем Shell. efi в корневой папке ESP.

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

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

  • Версия 2

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

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

P.S.: Возможно, вам потребуется отключить безопасную загрузку.

5

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

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

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

bios — Использование оболочки UEFI для восстановления конфигурации загрузки

спросил

Изменено
9 лет, 10 месяцев назад

Просмотрено
33 тысячи раз

Я использую встроенную плату, поддерживающую UEFI. Это новомодная плата, в которой используется BIOS American Megatrends и оболочка UEFI (я больше привык иметь дело с загрузчиком, а не с BIOS ПК на встроенной плате).

Детали доски не так важны.

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

Так как это оборудование будет УДАЛЕННЫМ, нет возможности уйти в никуда, воткнуть USB и перепрошить эту штуку.

Я хотел бы написать сценарий, чтобы оболочка BIOS делала это. Если машина повреждена и мы повредили загрузочный сектор в развернутой системе, я хотел бы автоматически запустить последовательность восстановления. Возможно ли подобное? Могу ли я сделать это с оболочкой UEFI? Это вообще выполнимо?

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

  • биос
  • загрузчик
  • uefi

5

EFI не использует загрузочный сектор диска. Таким образом, я подозреваю, что вы неправильно понимаете, что происходит с вашей системой. Мое предположение заключается в том, что вы фактически повреждаете записи NVRAM, которые содержат порядок загрузки устройства. Самый простой способ решить эту проблему — не использовать эти записи, а вместо этого назвать свой загрузчик EFI 9.0125 EFI/BOOT/bootx64. efi (или, в более общем смысле, boot{arch}.efi , где {arch} — код архитектуры; x64 — код архитектуры для x86-64). Если вы по какой-то причине не хотите этого делать, и , если ваша оболочка EFI является оболочкой версии 2 , вы можете использовать команду bcfg в сценарии оболочки EFI для выполнения задания. Эта команда документирована в различной степени в разных местах, например, на вики Arch Linux и на сайте Intel. К сожалению, старая оболочка EFI версии 1 не поддерживает bcfg , поэтому этот параметр не будет работать с ним, хотя можно извлечь соответствующий код из исходного кода TianoCore и создать отдельную команду bcfg , которую можно использовать с более старой оболочкой.

Если вам действительно нужно записать в MBR, лучше написать приложение EFI на C, чем пытаться сделать это в оболочке EFI. Существует много документации по программированию EFI, но большая ее часть похожа на справочные страницы Unix — предполагается, что вы уже знаете тему и вам просто нужно проверить детали.

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