Я застрял в оболочке efi при включении компьютера [исправлено]

Как запускается сервер: uefi

Проблемы с установкой ОС или в биосе или еще чем-то. Требуются рекомендации

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

ASUS N56VZ, 64 bit под управлением Win7. Решил обновить в конце весны до WIN 10. Скачал образ с офф.сайта на флешку и сделал чистую установку без каких либо проблем (этот момент важен). Спустя время решил обратно вернуться на WIN 7, но оказалось не возможно сделать (раздел RECOVERY не абонент), а образ заводской системы (по глупости, видимо) в свое время не сделал. В микрософте отфутболили к производителю, а ASUS несмотря на долгую переписку отфутболил в сервис, где просят от 3 000р. и почти неделю времени за восстановление раздела (хотя данные на нем есть, но нет к нему доступа, что именно восстанавливать так и не объяснили). Психанув, скачал сборку Win7, через Rufus сделал загрузочную флешку (отформатировав для BIOS или UEFI c файловой системой NTFS), поставил нормально, но на следующий день решил сделать чистую установку. И вот тут столкнулся с проблемой:

1. Система отказывается вставать выдавая ошибку, что выбранный диск имеет стиль разделов GPT. Это при том, что системный логический диск уже форматнулся и аппарат стоит без ОС (это самое прискорбное). 2. Заходя в биос (стоит Аptio setup utility (с) 2012) не вижу никаких настроек по UEFI. Везде пишут что необходимо изменить Launch CSM. Но у меня в том месте Launch PXE OpROM. И в меню нету Secure Boot Control, в том месте у меня только I\O Interface Security. Там везде стоит «UnLock» на против каждой строки. 3. Почти везде пишут, что можно решить вопрос переформатированием жесткого диска в MBR, но такой вариант не подходит, так как на другом логическом диске будут потеряны 300 Гб информации, и моя девушка, которая возвращается завтра, просто будет съедать мне мозг чайной ложкой. ). 4. Пробовал скачать образ Win 10, но упираюсь при установке в ту же ошибку по разделам GPT.

В биосе, кстати, во вкладке «Save&Exit» есть строка «launch EFI Shell from filesystem devices», но при нажатии на нее выпадает окно «Warning. Not found».

Помогите пожалуйста поставить систему, не потеряв данные на винте и не форматируя в MBR. И может быть вы сможете сказать так же, на будущее, почему более ранние манипуляции не упирались в проблему с GPT? Очень надеюсь на скорейшие советы и рекомендации, помогите пожалуйста решить проблему. Готов предоставить дополнительную информацию по системе, если что-то будет требоваться.

1) Отформатировать флэшку в FAT32. 2) Скопировать на нее содержимое ISO-образа любой 64-разрядной Windows (7 \ 8 \ 8.1 \ 10); при желании ISO-файл можно через банальный WinRAR распаковать. 3) Вставить флэшку в ноутбук, включить его и нажать Escape для вызова Boot Menu. 4) Выбираем UEFI-загрузку с флэшки (выглядеть оно всё будет примерно так).

Далее ставим систему как обычно.

Огромное спасибо за оперативность, сейчас попробую

процесс пошел, проблем с GPT не возникло, спасибо. Еще отпишусь по завершении установки

ОС встала без проблем!

Персональная благодарность Avatar-Lion и огромное спасибо форуму. Вы лучшие!!))))

Устранение неполадок в BIOS

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

При наращивании количества оперативной памяти или установке новой видеокарты желательно обновить BIOS до самой новой версии. Это поможет избежать аппаратной несовместимости. Обычно в этом случае компьютер просто отказывается видеть новое устройство. После успешной «перепрошивки» ПЗУ данная проблема исчезает.

Для инициализации этой процедуры необходимо использовать либо внутренние подпрограммы, такие как Easy Flash, либо программы в ОС. На сайте производителя компьютера необходимо найти более современную версию БИОСа. Желательно также проверить, будет ли она поддерживать устанавливаемое оборудование, прочитав описание версии.

Обновление версии базовой системы может привести к несовместимости с уже установленным оборудованием, так как ПЗУ имеет ограниченный объем и поддержка новых устройств возможна только за счет удаления из нее информации об устаревших. По этой причине обновление BIOS показано только в случае установки нового оборудования, а при работе компьютера стабильно и отсутствии изменений «профилактическое» перепрограммирование не желательно.

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

При установке пароля в базовой системе и невозможности ее настройки для восстановления работоспособности компьютера специально была оставлена возможность аппаратного сброса на заводские параметры. Эта возможность связана с особенностями хранения настроек BIOS. Сама система записана на ПЗУ, а ее настройки находятся в другой памяти, называемой CMOS. Для ее очистки следует найти перемычку или джампер около батарейки системного питания (для работы часов при выключенном компьютере). Также помогает извлечение этой батарейки, если она съемная.

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

Для любителей разгона компонентов системы работа с параметрами BIOS/UEFI становится рутинным занятием. В продвинутых версиях можно настраивать тонкие параметры напряжения и частот прямо через интерфейс базовой системы. Подразумевается, что пользователь знает о последствиях грубой работы с этими параметрами. Обычно такие настройки доступны для дорогих моделей процессоров, материнских плат и видеокарт.

Поступление в продажу SSD-накопителей не решило проблемы работы с огромными объемами данных, которые необходимо быстро считывать с жестких дисков. В этом случае используется технология RAID. Для этого два и более диска объединяются, и информация распределяется по ним согласно специальным алгоритмам. Таким образом можно получить значительный рост скорости и чтения информации. Большая часть настройки происходит в интерфейсе BIOS.

Особенности установки

  • начальный загрузчик EFI не похож на обычный, надо уметь находить в нём установщик;
  • язык установщика по умолчанию — английский, иной надо выбирать вручную на первом шаге установки;
  • остальные разделы — и файловая система, и своп — имеют GPT-тип basic data; актуальный тип раздела задаётся отдельно;
  • модуль установки загрузчика предложит вариант «EFI», с которым стоит согласиться.

Следует устанавливать 64-битные дистрибутивы; запуск 32-битного дистрибутива возможен в режиме BIOS/CSM (Compatibility Support Module), а в режиме EFI такая установка не будет сочтена загрузочной. При установке 64-битного дистрибутива в режиме BIOS/CSM будет невозможна двойная загрузка с UEFI Windows (обычно 8 и новее).

При загрузке с образа в EFI-режиме загрузчиком будет графический rEFInd либо совсем текстовое ELILO, в BIOS-режиме — синяя текстовая либо брендированная графическая менюшка SYSLINUX.

После собственно загрузки и логина именем root в EFI-режиме должны отработать команды

modprobe efivars
efibootmgr

— в BIOS-режиме вторая из них скажет

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

При загрузке установленной системы типичным на сегодня будет почти обычный grub2-efi.

UEFI Shell ****

The UEFI Shell is a shell/terminal for the firmware which allows launching uefi applications which include uefi bootloaders**.** Apart from that, the shell can also be used to obtain various other information about the system or the firmware like memory map (memmap), modifying boot manager variables (bcfg), running partitioning programs (diskpart), loading uefi drivers, editing text files (edit), hexedit etc**.**

Launching UEFI Shell ****

Few Asus and other AMI Aptio x86_64 UEFI firmware based motherboards (from Sandy Bridge onwards) provide an option called . For those motherboards, download the x86_64 UEFI Shell and copy it to your UEFI SYSTEM PARTITION as (mostly ) .

Systems with Phoenix SecureCore Tiano UEFI firmware are known to have embedded UEFI Shell which can be launched using either F6, F11 or F12 key**.**

Note: If you are unable to launch UEFI Shell from the firmware directly using any of the above mentioned methods, create a FAT32 USB pen drive with Shell.efi copied as (USB)/efi/boot/bootx64.efi . This USB should come up in the firmware boot menu. Launching this option will launch the UEFI Shell for you**.**

Important UEFI Shell Commands ****

UEFI Shell commands usually support option which makes output pause after each page**.** lists recognized filesystems (, …) and data storage devices (, …). Run to list available commands**.**

BCFG command is used to modify the UEFI NVRAM entries, which allow the user to change the boot entries or driver options**.** This command is described in detail in page 83 (Section 5**.**3) of «UEFI Shell Specification 2.0» pdf document.

Note: Users are recommended to try only if fails to create working boot entries in their system**.**

Note: UEFI Shell 1**.0 does not support command.**

To dump a list of current boot entries —

Shell> bcfg boot dump -v

To add a boot menu entry for rEFInd (for example) as 4th (numbering starts from zero) option in the boot menu

Shell> bcfg boot add 3 fs0:\EFI\arch\refind\refindx64.efi "Arch Linux (rEFInd)"

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

To remove the 4th boot option

Shell> bcfg boot rm 3

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

Shell> bcfg boot mv 3 0

For bcfg help text

Shell> help bcfg -v -b
Shell> bcfg -**?** -v -b

EDIT command provides a basic text editor with an interface similar to nano text editor, but slightly less functional**.** It handles UTF-8 encoding and takes care or LF vs CRLF line endings**.**

To edit, for example rEFInd’s refind.conf in the UEFI System Partition (fs0: in the firmware)

Shell> fs0:


FS0:\> cd \EFI\arch\refind


FS0:\EFI\arch\refind\> edit refind.conf

Type for help**.**

Create UEFI bootable USB from ISO

Note: The instructions below are specifically for Archiso /official media; Archbootpreparation is identical, with this  instead of the one mentioned below (which is for Archiso) and without the filesystem label requirement.

Note: The USB can use either MBR or GPT partition table. The filesystem should be either FAT32 (recommended) or FAT16. FAT12 is designed for floppy drives and therefore not recommended for USB drives.

First create a MBR partition table in the USB using fdisk. Mount the USB partition and create a FAT32 filesystem with LABEL as used in the Archiso configuration.

# mkdir -p /mnt/{usb,iso}
# mount -o loop archlinux-2012.12.01-dual.iso /mnt/iso

Obtain the label from ; this is used by the hook in initramfs to identify the udev path to the installation media.

# awk 'BEGIN {FS="="} /archisolabel/ {print $3}' /mnt/iso/loader/entries/archiso-x86_64.conf | xargs mkfs.vfat /dev/sdXY -n

Mount the newly created FAT32 USB partition, and copy the contents of the installation media to the USB media.

# mount /dev/sdXY /mnt/usb
# cp -r /mnt/iso/* /mnt/usb
# umount /mnt/{usb,iso}
# sync

If you find the error: «No loader found. Configuration files in /loader/entries/*.conf are needed.« A possible fix is to use a different uefi bootloader to the included one, gummiboot.

Download refind-efi pkg and extract the file  from within the package to  (overwrite or rename any existing file).

Then copy this text to . Take care that the label in the Arch menu section ( here) matches that of your usb’s.

refind.conf
timeout 5
textonly

showtools about,reboot,shutdown,exit
# scan_driver_dirs EFI/tools/drivers_x64
scanfor manual,internal,external,optical

scan_delay 1
dont_scan_dirs EFI/boot

max_tags 0
default_selection "Arch Linux Archiso x86_64 UEFI USB"

menuentry "Arch Linux Archiso x86_64 UEFI USB" {
  loader /arch/boot/x86_64/vmlinuz
  initrd /arch/boot/x86_64/archiso.img
  ostype Linux
  graphics off
  options "archisobasedir=arch archisolabel=ARCH_201302 add_efi_memmap"
}

menuentry "UEFI x86_64 Shell v2" {
  loader /EFI/shellx64_v2.efi
  graphics off
}

menuentry "UEFI x86_64 Shell v1" {
  loader /EFI/shellx64_v1.efi
  graphics off
}

You should now be able to successfully boot, and you can choose which EFI you’d like to load.

Недостатки UEFI

А теперь хотелось бы осветить недостатки технологии UEFI:

  1. Усложнение архитектуры. Все преимущества EFI не являются настолько уж значимыми перед основным её недостатком — усложнением структуры кода. Значительное увеличение объема кода, его логическое усложнение никак не способствуют облегчению разработки, скорее даже наоборот. А ведь до и параллельно с UEFI, альтернативой устаревшей модели BIOS были открытые реализации, к примеру OpenBIOS, которые были отвергнуты.
  2. Secure Boot. Тут разработчики операционных систем решили сразу несколько проблем: частично проблему пиратства, исключив обход активации путем внедрения активаторов в этапы загрузки, проблему вредоносного кода (вирусов) стадии загрузки и проблему сохраняющих популярность устаревших операционных систем, с которых ну никак не хотят уходить пользователи В действительности вышло так, что в отдельных особенно умных устройствах, из-за наличия не отключаемой опции «Secure Boot», зачастую невозможно установить никаких ОС кроме систем линейки Windows версии 8+, поскольку сертифицированные загрузчики на данный момент имеют лишь последние. Согласитесь, смахивает на довольно топорный способ борьбы со скупыми пользователями и конкурентами, хотя сама Microsoft всячески отрицает подобную ситуацию. Одним словом, технология способна доставить массу неудобств, хорошо хоть у большинства вендоров эта опция (пока еще) отключается в настройках.
  3. Невозможность установки старых ОС (в некоторых случаях). Невозможно установить старые системы при отсутствии режима совместимости (CSM).
  4. Отступление от стандарта. Каждый производитель аппаратных компонентов по своему усмотрению модифицирует UEFI, тем самым создавая для пользователя дополнительные трудности, фактически возвращая нас в хаос BIOS? Например, на различных устройствах менеджер загрузки может быть реализован по-разному, при этом иметь достаточно существенные отступления от рекомендаций спецификации UEFI. На практике, иногда попадались забагованные UEFI, которые игнорировали параметры списка загрузки NVRAM и просто грузили код из \EFI\Microsoft\Boot\bootmgfw.efi или EFI/BOOT/bootx64.efi. Или менеджер загрузки в одних реализациях может содержать комбинированный список из MBR и GPT устройств, в других же разные списки загрузки, что вводит некоторую сумятицу.
  5. Внедрение средств контроля контента. Стандарт UEFI предусматривает наличие неких драйверов, которые будут перехватывать вызовы операционной системы, таким образом можно реализовать DRM (Digital Restrictions Management, технические средства защиты авторских прав). Суть алгоритма следующая: человеку, у которого все работает, предлагается за его же счет установить такое программное обеспечение или оборудование, чтобы часть функций в его работающих системах воспроизведения цифрового контента (компьютеры, мультимедиа-плееры и др.) более не работала привычным образом. Существуют небезосновательные опасения, что создание UEFI — это завуалированный способ введения в ПК нежелательных для конечного пользователя функций.
  6. Возможность внедрения нежелательных модулей. Невозможно гарантировать, что операционная система на 100% контролирует компьютер, если она загружается с помощью UEFI!

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

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

Загрузочная запись нам не нужна — дело в том, что при выставлении в настройках 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» с тремя строчками (привожу свои):

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

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

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

Настройка⚓︎

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

очень легкий (136 Кб), поэтому он не будет занимать много места в ESP. Типичный размер ESP составляет 100 Мб (для диспетчера загрузки Windows, который использует около 50 Мб в ESP). Как только grubx64.efi загружен прошивкой, он загрузит модули GRUB в загрузочный раздел. Расположение по умолчанию — .

Установите файлы GRUB в и . Затем настройте загрузочную запись в переменных EFI:

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

Запустите , чтобы ещё раз проверить конфигурацию загрузки EFI.

Пример вывода:

Обратите внимание, что является первым в , а — это. Это означает, что при следующей загрузке системы будет использоваться версия , установленная в

Создание файла конфигурации GRUB

Создайте для настройки меню загрузки GRUB:

, следует заменить в соответствии с вашей конфигурацией.

Обратите внимание

Для GRUB файлы используются относительно раздела. Если вы использовали отдельный раздел , удалите из указанных выше путей (к ядру и к unicode.pf2). Вам также нужно будет изменить строку корневого раздела, чтобы она указывала на загрузочный раздел.

Create UEFI bootable USB from ISO ****

Note: The USB can use either MBR or GPT partition table**.** The filesystem should be either FAT32 (recommended) or FAT16**.** FAT12 is designed for floppy drives and therefore not recommended for USB drives**.**

First create a MBR partition table in the USB using fdisk**.** Mount the USB partition and create a FAT32 filesystem with LABEL as used in the Archiso configuration**.**

# mkdir -p /mnt/{usb,iso}


# mount -o loop archlinux-2012**.**12.01-dual.iso /mnt/iso

Obtain the label from ; this is used by the hook in initramfs to identify the udev path to the installation media**.**

# awk 'BEGIN {FS="="} /archisolabel/ {print $3}' /mnt/iso/loader/entries/archiso-x86_64.conf | xargs mkfs.vfat /dev/sdXY -n

Mount the newly created FAT32 USB partition, and copy the contents of the installation media to the USB media**.**

# mount /dev/sdXY /mnt/usb




# cp -r / mnt / iso / * / mnt / usb


# umount /mnt/{usb,iso}


# sync

If you find the error: «No loader found**.** Configuration files in /loader/entries/*.conf are needed**.**« A possible fix is to use a different uefi bootloader to the included one, gummiboot**.**

Then copy this text to . Take care that the label in the Arch menu section ( here) matches that of your usb’s**.**

refind.conf
timeout 5




textonly




showtools about,reboot,shutdown,exit


# scan_driver_dirs EFI/tools/drivers_x64


scanfor manual,internal,external,optical




scan_delay 1


dont_scan_dirs EFI/boot




max_tags 0


default_selection "Arch Linux Archiso x86_64 UEFI USB"




menuentry "Arch Linux Archiso x86_64 UEFI USB" {


  loader /arch/boot/x86_64/vmlinuz


  initrd /arch/boot/x86_64/archiso.img


  ostype Linux


  graphics off


  options "archisobasedir=arch archisolabel=ARCH_201302 add_efi_memmap"


}




menuentry "UEFI x86_64 Shell v2" {


  loader /EFI/shellx64_v2.efi




  graphics off




}




menuentry "UEFI x86_64 Shell v1" {


  loader /EFI/shellx64_v1.efi




  graphics off




}

You should now be able to successfully boot, and you can choose which EFI you’d like to load**.**

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

Есть, на самом-то деле, несколько способов настроить 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-скриптов, которые до сих пор валяются у меня в корневой ФС:

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

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

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

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

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

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

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

Примечание: Установленная система потребует использования загрузчика, поддерживающего IA32 UEFI, например, GRUB с целью .

Из Linux

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

$ cat /sys/firmware/efi/fw_platform_size

Это вернёт для 64-битного (x86_64) UEFI или для 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:

$ ioreg -l -p IODeviceTree | grep firmware-abi

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

Из Microsoft Windows

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

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

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

Testing UEFI in systems without native support

OVMF for virtual machines

You can install from the extra repository.

$ cp /usr/share/edk2-ovmf/x64/OVMF_VARS.fd my_uefi_vars.fd

To use the OVMF firmware and this variable store, add following to your QEMU command:

-drive if=pflash,format=raw,readonly,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=my_uefi_vars.fd

For example:

$ qemu-system-x86_64 -enable-kvm -m 1G -drive if=pflash,format=raw,readonly,file=/usr/share/edk2-ovmf/x64/OVMF_CODE.fd -drive if=pflash,format=raw,file=my_uefi_vars.fd …

DUET for BIOS only systems

You can also try Clover which provides modified DUET images that may contain some system specific fixes and is more frequently updated compared to the gitlab repos.

Алгоритм работы UEFI Boot Manager

Концепция загрузки UEFI существенно отличается от аналогичной в BIOS. Если вспомнить BIOS, то за загрузку там отвечал код начального загрузчика int 19h (bootstrap loader), задача которого состояла лишь в том, чтобы загрузить главную загрузочную запись (MBR) с устройства загрузки в память и передать ей управление. В UEFI всё несколько интереснее, она содержит свой собственный полноценный встроенный загрузчик, который носит название UEFI Boot Manager (Менеджер загрузки UEFI или просто Boot Manager), имеющий куда более богатый функционал.

UEFI Boot Manager — стандартный типовой модуль UEFI.

Boot Manager реализует довольно широкий набор функций, в число которых входит загрузка таких UEFI-образов, как: UEFI-загрузчиков ОС первой стадии, UEFI-драйверов, UEFI-приложений. Загрузка может производиться из любого UEFI-образа, размещенного на любой поддерживаемой UEFI файловой системе, располагающейся на любом поддерживаемом платформой физическом носителе информации. UEFI Boot Manager имеет свою собственную конфигурацию, параметры которой в виде ряда переменных располагаются в общей NVRAM (Non-volatile RAM).

EFI NVRAM — общая область памяти, предназначенная для хранения параметров конфигурации UEFI, доступная для использования разработчикам прошивки, производителям оборудования, разработчикам операционных систем и пользователям.

Параметры UEFI хранятся в NVRAM в виде переменных, которые классически представлены парой «название параметра» = «значение». Эти переменные содержат большое количество параметров, которые относятся к разным функциональным частям UEFI, то есть, помимо параметров UEFI Boot Manager’а, NVRAM хранит и многие другие параметры UEFI. Однако, в контексте данной главы нас интересуют лишь переменные, относящиеся к UEFI Boot Manager. Это, в первую очередь, глобальная переменная BootOrder, которая указывает на переменные дескрипторов загрузки с именами Boot####. Каждый элемент Boot#### представляет собой указатель на физическое устройство и (опционально) может описывать даже файл, представляющий собой образ UEFI, который должен с этого физического устройства грузиться.

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

Вот так, примерно, я представляю себе алгоритм перебора носителей в процессе работы UEFI:

Как мы видим, UEFI Boot Manager парсит BootOrder, то есть загружает путь устройства каждого элемента Boot#### в порядке, заданном значением переменной BootOrder и пытается выполнить загрузку с указанного устройства. В случае ошибки менеджер загрузки переходит к следующему элементу. Кроме этого, формируется так называемый список загрузки. Этот список актуален для интерфейса настроек UEFI и выглядит как привычное стандартное меню загрузки (Boot Menu). UEFI Boot List формируется на основе переменной BootOrder и используется для внесения пользователем изменений в очередность и конфигурацию устройств загрузки. А как же формируется сама BootOrder? А очень просто, например в процессе установки операционной системы Windows, инсталлятор создает раздел ESP (в случае его отсутствия) на установочном диске, форматирует данный раздел в файловую систему FAT, затем помещает свой загрузчик (для Windows 7+ это файл bootmgfw.efi) и некоторые другие файлы по пути \EFI\Microsoft\Boot\. По окончании установки ОС, инсталлятор Windows создает переменную в EFI NVRAM с именем Boot#### (где #### — шестнадцатеричный номер), ссылающуюся на менеджер загрузки Windows с именем bootmgfw.efi.

Понравилась статья? Поделиться с друзьями:
Wi-Fi Роутер
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: