Boot from file efi: Восстановление EFI загрузчика в Windows 10 и 11
Содержание
Как создать диск для установки Windows в режиме UEFI?
- На компьютерах поддерживающих UEFI интерфейс для улучшения работоспособности операционной системы, рекомендуется устанавливать Windows в режиме EFI.
- Для установки Windows в режиме EFI Вам понадобиться образ 64-битной операционной системы Windows 7 SP1 или новее.
- Системный диск на который будет установлена Windows в режиме EFI, должен быть размечен в 64-битной версии Windows утилите Diskpart (не Acronis!!!) и отконвертирован в формат GPT.
Вариант 1. Создание USB флеш-диска для установки Windows в режиме EFI
- Создайте стандартный флеш-накопитель (флешку) для установки Windows 7.
Ваш загрузочный флеш-диск должен быть отформатирован в файловую систему FAT32, чтобы быть распознанным как загрузочное устройство UEFI.
Для создания флеш-диска Windows 7 в режиме EFI не используйте утилиту Microsoft — Windows 7 USB/DVD Download Tool. Данная утилита форматирует установочный флеш-диск в NTFS.
- Подключите USB флеш-накопитель (флешку) не менее 4 Гб к USB-порту.
- В строке поиска меню Пуск введите cmd.exe, щелкните на найденном правой кнопкой мыши и нажмите Запуск от имени администратора
- Введите поочередно команды, нажимая после ввода каждой из них клавишу Enter ↵.
diskpart
list disk
select disk #где # – это номер Вашего USB-драйва, полученного в предыдущей команде.
Указанные далее команды приведут к полной очистке всего содержимого на выбранном диске.clean
create partition primary
select partition 1
active
format fs=FAT32
assign
exit - Распакуйте ISO-файл образа установочного диска во временную папку и скопируйте все его содержимое на созданный Вами флеш-диск.
- Откройте на Вашем установочном флеш-диске папку *:\efi (* — буква Вашего флеш-диска с установочными файлами Windows 7).
- Создайте новую папку внутри данной папки с именем boot. (*:\efi\boot).
- Скопируйте все содержимое папки *:\efi\microsoft\boot в созданную Вами папку *:\efi\boot .
- Используя архиватор 7-zip откройте файл *:\sources\boot.wim или *:\sources\install.wim .
- Перейдите в архиве в папку *:\sources\boot.wim\1\Windows\Boot\EFI\ .
- Скопируйте из данной папки в архиве файл bootmgfw.efi в созданную Вами папку *:\efi\boot на флеш-диске.
- Переименуйте скопированный файл bootmgfw.efi (*:\efi\boot\bootmgfw.efi) в bootx64.efi (*:\efi\boot\bootx64.efi)
Теперь в созданной Вами папке *:\efi\boot\ должно быть все содержимое, скопированное из папки *:\efi\microsoft\boot и файл bootx64.efi полученный из boot.wim или install.wim.
Для некоторых материнских плат дополнительно требуется скопировать файл bootx64.efi в корень флеш-диска либо с идентичным именем файла, либо с именем shellx64. efi.
Вариант 2. Создание DVD диска для установки Windows в режиме EFI
- Скачайте архив с программой Microsoft CD/DVD Premastering Utility и распакуйте его в любую папку.
- Скопируйте файл oscdimg.exe в папку C:\Windows\System32.
- Распакуйте ISO-файл образа установочного диска во временную папку. (Например, в папку D:\Win_7_x64)
- В строке поиска меню Пуск введите cmd.exe, щелкните на найденном правой кнопкой мыши и нажмите Запуск от имени администратора
- Введите указанную ниже команду для создания ISO-файла образа установочного диска и нажмите клавишу Enter ↵.
oscdimg -lWin_7_x64_UEFI -m -o -u1 -pEF -e -bD:\Win_7_x64\efi\microsoft\boot\efisys.bin D:\Win_7_x64 D:\Win_7_x64_UEFI.iso
где:
-l — Задает метку тома. Не используйте пробелы.
-m — Игнорирует ограничение максимального размера образа.
-o — Оптимизирует хранилище используя алгоритм хэширования MD5 для сравнения файлов.
-u1 — Создает образ, который имеет как файловую систему UDF, так и файловую систему ISO 9660. Файловая система ISO 9660 записывается с использованием имен файлов 8.3, совместимых с DOS. Файловая система UDF записывается с использованием имен файлов в Юникоде.
-p — Указывает значение для идентификатора платформы в каталоге El Torito. Для представления системы UEFI используется идентификатор EF. Не используйте пробелы.
-e — Отключает эмуляцию дискеты в каталоге El Torito.
-b — Указывает файл загрузочного сектора El Torito, который будет записан в загрузочном секторе или секторах диска. Не используйте пробелы.
D:\Win_7_x64 – Указывает расположение исходных файлов.
D:\Win_7_x64_UEFI.iso – Указывает путь к создаваемому ISO-файлу.
Особенности установки Windows в режиме EFI
- Если Вы разгоняли какое-либо аппаратное обеспечение, то восстановите настройки в стандартные значения.
- В UEFI/BIOS установите в значение AHCI для SATA режима и включите ACPI 2. 0, если отключено.
- Если загрузка с устройства не происходит, то в UEFI/BIOS установите Ваш флеш-диск первым в очереди загрузки.
- Если у Вас имеются как USB 3.0 порты, так и USB 2.0, то для успешной установки рекомендуется подключить флеш-диск в USB 3.0 порт.
(Флеш-диски USB 2.0 можно успешно подключить к порту USB 3.0.) Скопируйте на Ваш флеш-диск папку с драйверами для порта USB 3.0.
- Подсоедините флеш-диск и перезагрузите компьютер.
- Нажмите при загрузке клавишу для вызова Boot Menu. (В зависимости от производителя материнской платы F8, F11 или F12)
- Выберите в списке «UEFI:[имя Вашего устройства]«.
При установке на чистый неразмеченный диск перейдите к седьмому пункту.
При установке на диск уже имеющий какие-либо разделы и использующий MBR, вместо GPT, продолжите со следующего пункта. - После загрузки в установочный экран Windows нажмите ⇑ Shift + F10.
- Введите поочередно команды, нажимая после ввода каждой из них клавишу Enter ↵.
diskpart
list disk
select disk #где # – это номер Вашего жесткого диска, на который будет установлена Windows, полученный в предыдущей команде.
Указанные далее команды приведут к полной очистке всего содержимого на выбранном диске.clean
сonvert GPT
exit - Закройте окно команд и продолжите установку Windows.
- Укажите драйвера для порта USB 3.0, если Вы подключали флеш-диск к нему вместо порта USB 2.0.
- В окне выбора диска для установки Windows, выделите пункт Неразмеченное место на диске и нажмите кнопку Создать у Вас автоматически будет создано 3 раздела (системный раздел EFI (ESP), резервный раздел Майкрософт (MSR) и основной раздел Windows.)
- Выберите основной раздел и продолжите установку Windows в режиме EFI, как обычную установку.
Примечание: Если установка завершилась успешно, а система не загружается, то в UEFI/BIOS установите «Windows Boot Manager» первым в очереди загрузки. Наверх
Создание загрузочной системы EFI — Linux для себя
Предупреждение
Отключите secure boot
! На данный момент эта технология не поддерживается. Чтобы настроить процесс загрузки с помощью GRUB для UEFI, необходимо отключить её в интерфейсе конфигурации прошивки. Прочтите документацию, предоставленную производителем вашей системы, чтобы узнать, как это сделать.
Убедитесь, что вы не пропустили раздел по настройке ядра, для поддержки EFI.
Поиск, или создание системного раздела EFI
В системе на основе EFI загрузчики устанавливаются в специальный раздел FAT32, называемый системным разделом EFI (ESP). Если ваша система поддерживает EFI и предустановлен дистрибутив Linux и (или) Windows, скорее всего, ESP уже создан. Посмотрите все разделы на вашем жёстком диске (замените sda
на нужное устройство):
fdisk -l /dev/sda
Столбец ESP type
должен быть EFI System
.
Например:
Устр-во начало Конец Секторы Размер Тип /dev/sda1 4096 618495 614400 300M EFI /dev/sda2 618496 268430084 267811589 127,7G Файловая система Linux
Если система или жёсткий диск новые, или если вы впервые устанавливаете ОС, загружаемую через UEFI
, ESP
может не существовать. В этом случае создайте новый раздел, создайте на нем файловую систему vfat
и установите тип раздела EFI system
.
Bug
Некоторые (старые) реализации UEFI
могут требовать, чтобы ESP был первым разделом на диске.
Создайте точку монтирования для ESP
и смонтируйте ее (замените sda1
на соответствующий ESP
):
mkdir -pv /boot/efi && mount -v -t vfat /dev/sda1 /boot/efi
Добавьте запись для ESP
в /etc/fstab
, чтобы он автоматически монтировался во время загрузки системы:
cat >> /etc/fstab << EOF /dev/sda1 /boot/efi vfat defaults 0 1 EOF
Монтирование EFI Variable File System
Для установки GRUB на UEFI необходимо смонтировать файловую систему EFI Variable, efivarfs
. Если она еще не была смонтирована ранее, выполните команду:
mountpoint /sys/firmware/efi/efivars || mount -v -t efivarfs efivarfs /sys/firmware/efi/efivars
Добавьте запись для efivarfs
в /etc/fstab
, чтобы она автоматически монтировалась во время загрузки системы:
cat >> /etc/fstab << EOF efivarfs /sys/firmware/efi/efivars efivarfs defaults 0 0 EOF
Обратите внимание
Если система не загружается с UEFI, каталог /sys/firmware/efi
будет отсутствовать. В этом случае вы должны загрузить систему в режиме UEFI
с аварийным загрузочным диском.
Настройка
В системах на основе UEFI GRUB работает устанавливая приложение EFI (особый вид исполняемого файла) в /boot/efi/EFI/[id sizes/grubx64.efi
, где /boot/efi
— точка монтирования ESP
, а [id]
заменяется идентификатором, указанным в командной строке grub-install
. GRUB
создаст запись в переменных EFI
, содержащую путь EFI/[id]/grubx64. efi
, чтобы прошивка EFI
могла найти grubx64.efi
и загрузить его.
grubx64.efi
очень легкий (136 Кб), поэтому он не будет занимать много места в ESP. Типичный размер ESP составляет 100 Мб (для диспетчера загрузки Windows, который использует около 50 Мб в ESP). Как только grubx64.efi загружен прошивкой, он загрузит модули GRUB в загрузочный раздел. Расположение по умолчанию — /boot/grub
.
Установите файлы GRUB в /boot/efi/EFI/LFS/grubx64.efi
и /boot/grub
. Затем настройте загрузочную запись в переменных EFI:
grub-install --bootloader-id=LIN --recheck
Если установка прошла успешно, вывод должен быть:
Installing for x86_64-efi platform. Installation finished. No error reported.
Запустите efibootmgr
, чтобы ещё раз проверить конфигурацию загрузки EFI.
efibootmgr
Пример вывода:
BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0005,0000,0002,0001,0003,0004 Boot0000* ARCH Boot0001* UEFI:CD/DVD Drive Boot0002* Windows Boot Manager Boot0003* UEFI:Removable Device Boot0004* UEFI:Network Device Boot0005* LIN
Обратите внимание, что 0005
является первым в BootOrder
, а Boot0005
— это LIN
. Это означает, что при следующей загрузке системы будет использоваться версия GRUB
, установленная в LIN
.
Создайте /boot/grub/grub.cfg
для настройки меню загрузки GRUB:
cat > /boot/grub/grub.cfg << EOF # Begin /boot/grub/grub.cfg set default=0 set timeout=5 insmod part_gpt insmod ext2 set root=(hd0,2) if loadfont /boot/grub/fonts/unicode.pf2; then set gfxmode=auto insmod all_video terminal_output gfxterm fi menuentry "GNU/Linux, Linux 5.10.17-lfs-10.1" { linux /boot/vmlinuz root=/dev/sda2 ro } menuentry "Firmware Setup" { fwsetup } EOF
(hd0,2)
, sda2
следует заменить в соответствии с вашей конфигурацией.
Обратите внимание
Для GRUB файлы используются относительно раздела. Если вы использовали отдельный раздел /boot
, удалите /boot
из указанных выше путей (к ядру и к unicode.pf2). Вам также нужно будет изменить строку корневого раздела, чтобы она указывала на загрузочный раздел.
Загрузка вместе с Windows
Добавьте запись в файл конфигурации grub.cfg
:
cat >> /boot/grub/grub.cfg << EOF # Begin Windows addition menuentry "Windows 10" { insmod fat insmod chain set root=(hd0,1) chainloader /EFI/Microsoft/Boot/bootmgfw.efi } EOF
(hd0,1) следует заменить назначенным GRUB именем для ESP. Директива chainloader
может использоваться, чтобы указать GRUB запустить другой исполняемый файл EFI, в данном случае диспетчер загрузки Windows. вы можете поместить больше используемых инструментов в исполняемом формате EFI (например, оболочку EFI) в ESP и создать для них записи GRUB.
Загрузка из оболочки EFI
Сегодня, когда я загружал несколько старых виртуальных машин в своем кластере PVE, это произошло:
Ошибка гласит: BdsDxe: не удалось загрузить Boot0001 «UEFI QEMU QEMU HARDDISK» из PciRoot(0x0/Pci(0x1E,0x0)/Pci(0x1,0x0)/Pci(0x5,0x0)/Scsi(0x0,0x0): Не найдено
.
Затем виртуальная машина пытается загрузиться с использованием PXE, терпит неудачу и в конечном итоге переходит в оболочку EFI:
Эта конкретная виртуальная машина настроена для загрузки с использованием VirtIO SCSI
контроллер. Ошибка, вероятно, была вызвана изменением топологии шины PCI или карты памяти (виртуальной) ( 1 ). Загрузочная запись, хранящаяся в EFI NVRAM (постоянное хранилище, в котором хранится конфигурация UEFI), никуда не указывала, и процесс загрузки завершился неудачно.
TODO: добавьте краткое пошаговое руководство, объясняющее, как устранить ошибку такого рода
Решение (временное)
РЕДАКТИРОВАТЬ: это ручной способ сделать это, вы можете использовать меню UEFI для создания новой записи.
Как и в большинстве оболочек, прокрутка shift
+ pageUp
/ pageDown
.
Можно выйти
(выйти из оболочки и выйти в интерфейс управления EFI) или перезагрузить
.
Чтобы загрузить диск и загрузиться вручную:
Оболочка>FS0: FS0:\> лс Каталог: FS0:\ 22.09.2019 19:434,096 EFI 15.04.2020 20:51 10 668 NvVars 1 файл(ы) 10 668 байт 1 реж. FS0:\> компакт-диск EFI FS0:\EFI\> диск дебиан FS0:\EFI\debian\> grub64.efi
Памятка EFI Shell
Команда map
напечатать сопоставление обнаруженных разделов и устройств (подобно lsblk
), vol
напечатать дополнительные сведения.
Список параметров загрузки:
FS0:\> загрузочный дамп bcfg -b ... Опция: 06. Переменная: Boot0004 Описание — UEFI QEMU HARDDISK QM00001 DevPath — PciRoot(0x0)/Pci(0x1,0x1)/Ata(0x0) Опционально- Y ...
Изменить порядок загрузки (уменьшить все остальные параметры)
# переместить опцию 6 в позицию 0, сдвинув остальные вниз FS0:\> загрузка bcfg mv 6 0
Удалить опцию
FS0:\> bcfg boot rm 4
Добавить опцию
FS0:\> bcfg boot add 1 FS0:\EFI\GRUB\grubx64. efi "GRUB" Цель = 0007. bcfg: добавить Boot0007 как 1
help
вывод, более читаемый, чем на маленькой консоли:
FS0:\> cat help.txt псевдоним — отображает, создает или удаляет псевдонимы UEFI Shell. attrib — отображает или изменяет атрибуты файлов или каталогов. bcfg — управляет параметрами загрузки и драйверов, которые хранятся в NVRAM. cd - Отображает или изменяет текущий каталог. cls — очищает вывод консоли и при необходимости изменяет цвет фона и переднего плана. comp — сравнивает содержимое двух файлов по байтам. connect — привязывает драйвер к определенному устройству и запускает драйвер. cp — копирует один или несколько файлов или каталогов в другое место. date - Отображает и устанавливает текущую дату для системы. dblk — отображает один или несколько блоков с блочного устройства. устройства — отображает список устройств, управляемых драйверами UEFI. devtree — отображает дерево устройств, совместимое с моделью драйвера UEFI. dh — отображает дескрипторы устройства в среде UEFI. отключить - отключает один или несколько драйверов от указанных устройств. dmem — отображает содержимое системной памяти или памяти устройства. dmpstore — управляет всеми переменными UEFI. драйверы — отображает список драйверов UEFI. drvcfg — вызывает конфигурацию драйвера. drvdiag — вызывает протокол диагностики драйверов. echo - Управляет эхом команды файла скрипта или отображает сообщение. edit — предоставляет полноэкранный текстовый редактор для файлов ASCII или UCS-2. eficompress — сжимает файл с помощью алгоритма сжатия UEFI. efidecompress — распаковывает файл с помощью алгоритма декомпрессии UEFI. else — определяет код, выполняемый, когда 'if' имеет значение FALSE. endfor - Завершает цикл for. endif - Завершает блок скрипта, управляемый оператором if. exit — выход из оболочки UEFI или текущего скрипта. for - Запускает цикл на основе синтаксиса for. getmtc — получает MTC от BootServices и отображает его. goto - Перемещает точку выполнения в скрипте. help — отображает список команд UEFI Shell или подробную справку по командам. hexedit — предоставляет полноэкранный шестнадцатеричный редактор для файлов, блочных устройств или памяти. if - Выполняет команды в указанных условиях. ifconfig — изменяет IP-адрес по умолчанию сетевого стека UEFI IPv4. ifconfig6 — отображает или изменяет конфигурацию IPv6 для сетевого интерфейса. load — загружает драйвер UEFI в память. loadpcirom — загружает дополнительное ПЗУ PCI. ls — выводит содержимое каталога или информацию о файле. map — отображает или определяет сопоставления файловой системы. memmap — отображает карту памяти, поддерживаемую средой UEFI. mkdir — создает один или несколько новых каталогов. mm — отображает или изменяет адресное пространство MEM/MMIO/IO/PCI/PCIE. mode — отображает или изменяет режим устройства вывода консоли. mv — перемещает один или несколько файлов в место назначения внутри или между файловыми системами. openinfo — отображает протоколы и агенты, связанные с дескриптором. parse — извлекает значение из выходного файла стандартного формата. pause - приостанавливает выполнение скрипта и ждет, пока оператор нажмет клавишу. pci — отображает список устройств PCI или пространство конфигурации функций PCI и расширение PCIe. пространство конфигурации. ping — пропинговать целевой хост с помощью стека IPv4. ping6 — пропингуйте целевую машину с помощью сетевого стека UEFI IPv6. reconnect — переподключает драйверы к определенному устройству. reset - сбрасывает систему. rm — удаляет один или несколько файлов или каталогов. sermode - устанавливает атрибуты последовательного порта. set — отображает или изменяет переменные среды UEFI Shell. setsize — регулирует размер файла. setvar — отображает или изменяет переменную UEFI. shift - Смещает позиции параметров в скрипте. smbiosview — отображает информацию SMBIOS. останов - останавливает операцию на указанное количество микросекунд. time - Отображает или устанавливает текущее время для системы. часовой пояс — отображает или устанавливает информацию о часовом поясе. touch — обновляет временную метку имени файла текущей системной датой и временем. type - Отправляет содержимое файла на стандартное устройство вывода. unload — выгружает уже загруженный образ драйвера. ver — отображает информацию о версии прошивки UEFI. vol — отображает или изменяет информацию о томе диска. Использование справки:help [cmd|шаблон|специальный] [-usage] [-verbose] [-название раздела][-b]
Ссылка: примеры GRUB/EFI из Archlinux Wiki
Вероятно потому, что изначально использовался другой виртуальный контроллер, и я небрежно изменил конфигурацию на
VirtIO
↩︎
uefi — удалить «EFI File Boot 0» из параметров загрузки / приоритета
У меня есть ноутбук acer (изначально поставляемый с Windows) с утилитой настройки Insydeh30 в качестве меню F2. Будучи новичком в Linux, я установил Ubuntu Desktop и пожалел, что добавил шифрование диска, и я быстро понял, что это было непросто, поэтому я просто стер диск. Я настроил его, и мне пришлось добавить «Надежный файл UEFI для выполнения» с помощью F2, добавив EFI/ubuntu/shimx64.efi
как UbuntuFS
.
Теперь, когда я нажимаю F2 и перехожу к «Загрузке», я вижу запись для моей старой Ubuntu FS как EFI File Boot 0: UbuntuFS
. Я хотел бы удалить это.
Я видел два ответа, которые уже говорили мне использовать USB или CD для использования Терминала и sudo efibootmgr -b x -B
, и это НЕ исчезнет. Я установил Ubuntu во второй раз и попытался установить доверенный файл UEFI (то, что я сделал в первый раз), но он сказал: «Описание загрузки существует». На самом деле он показал два варианта, один из которых назывался 9.0006 ubuntu и UbuntuFS
, поэтому я удалил оба. Использование F12 для загрузки в «UbuntuFS» также говорит о том, что загружаться не с чего.
Итак, , могу ли я сбросить свой BIOS или UEFI, по крайней мере, сбросить или, предпочтительно, удалить приоритет загрузки, чтобы удалить «UbuntuFS» из моего списка загрузки? Режим загрузки — UEFI, а безопасная загрузка включена. Файл EFI отображается как последний вариант в приоритете. В настоящее время ноутбук находится в непригодном для использования состоянии и имеет доступ только к моему загрузочному USB-накопителю, меню BIOS и имеет параметр EFI для ОС, которой больше нет на моем жестком диске.
Я видел:
- https://techlibrary.hpe.com/docs/iss/proliant_uefi/UEFI_Edgeline_103117/s_deleting_boot_option.html (к чему это относится?)
- https://askubuntu.com/a/63613 (пробовал, не удалял опцию из меню F2. Также видел много других ответов, основанных на
efibootmgr
)
Я потратил время на:
- Извлечение CMOS и аккумулятора ноутбука для очистки BIOS (ничего не делает) (Попытка стереть параметры загрузки)
- Запуск между Windows 10 и Linux для установки USB-накопителей для удаления «EFI/ubuntu» (по-прежнему отображается при нажатии клавиши F2)
- Пробовал «bcdedit/enum» и «bcdedit/delete» в Windows 10
- Очистил весь жесткий диск с помощью GParted на USB-накопителе Linux, включая раздел EFI
- Собираюсь попробовать.