Инструменты для изменения переменных UEFI в Windows / Linux?

12

У меня есть машина DELL, которая использует Phoenix SecureCore Tiano в качестве UEFI / BIOS. Однако она полностью не настраивается, поскольку ее оболочка и меню UEFI скрыты в BIOS Setup.

Мне интересно, были ли инструменты, которые могут изменять настройки UEFI (такие как Boot Items) в пользовательском режиме? такие как "efibootmgr" в Linux.

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

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

marstone
источник
только что обнаружил, что efi переменные хранятся в nvram, может быть, эта ссылка помогает: wikileaks.org/ciav7p1/cms/page_26968084.html
marstone

Ответы:

3

Реализации EFI должны обеспечивать некоторый способ управления режимом загрузки (EFI против BIOS), за исключением, конечно, реализаций только для EFI без поддержки BIOS. Слишком часто, тем не менее, прошивка дает пользователю мало или вообще не имеет явного контроля над этим вопросом; вместо этого микропрограмма пытается определить правильный режим загрузки на основе состояния жесткого диска - например, она может использовать режим EFI, если обнаружен GPT, и режим BIOS, если обнаружена MBR; или он может использовать режим EFI, если системный раздел EFI (ESP) найден, и режим BIOS, если нет. Вы можете найти подсказку о том, что делает ваша прошивка, прочитав руководство. Если нет, вам просто придется экспериментировать.

При загрузке съемных носителей правила могут отличаться, но вы часто можете дать ему толчок в правильном направлении, предоставив только один режим загрузки. Это может потребовать повторного освоения компакт-диска или (более легко) тщательного выбора компакт-диска. Если вы пытаетесь форсировать загрузку в режиме EFI, мой rEFInd и, в частности, его версия загрузочного CD, могут быть полезны; он загружается только в режиме EFI и в соответствии с настройкой будет действовать как менеджер загрузки для других загрузок на основе EFI, но не для загрузок в режиме BIOS.

Род Смит
источник
Благодарность! когда я делю мой HD в режиме MBR, он работает как ожидалось. однако, если я использую режим GPT, независимо от того, есть ESP или нет, он просто не загружается и выдает эту ошибку: «Операционная система не найдена». Сообщение об ошибке / w синтаксическая ошибка, безусловно, из самой BIOS после того, как я реверс-инжиниризовал BIOS (не из какого-либо загрузчика или загрузочной записи), поэтому я просто не могу передать управление загрузкой в ​​режиме GPT.
Marstone
Некоторые системы на основе EFI будут загружаться в режиме BIOS, только если они обнаружат раздел MBR с установленным флагом «boot» (он же «активный»). На GPT-диске это требует установки этого флага в защитном разделе 0xEE в MBR. Для этого вы можете использовать такой инструмент, как fdisk в Linux (используйте опцию «a»). Вы не использовать разъехались, GParted или другие libparted-инструменты , чтобы сделать это; на GPT-диске они не дают вам никакого контроля над содержимым MBR , и «загрузочный флаг» будет применен к разделу GPT , в том смысле, что он устанавливает код типа для системного раздела EFI (ESP) ,
Род Смит
2

Я просто выпускаю свою утилиту, если кому-то интересно. Он редактирует переменную UEFI в Windows.

https://gist.github.com/Zibri/19f9838ffd12349bb2c6c3afddc9388f/

Обновлено 25.02.2020 до версии 1.2.
Нет необходимости подключения к интернету.
Вирус всего сообщает 6 (ложных срабатываний) более 96, потому что код запутан.

Zibri
источник
НЕ ТО. Программа является compressend и защищена, и некоторые антивирусы дают ложный положительный результат. Это не вирус.
Зибри
Для флагжеров: эта программа получает несколько тревожное обнаружение в Virustotal, но, похоже, это общее обнаружение и обнаружение «потенциально нежелательной программы». Возможно, что благодаря тому, что эта программа делает, она попала в наборы вредоносных программ, но пока кто-то не сможет предоставить прямых доказательств того, что это действительно вредоносное ПО, ответ на этот вопрос пока будет хорошим.
Мокубай
Я не выпустил исходный код и затруднил обратный инжиниринг только для того, чтобы «задержать» или «ограничить» именно распространение вредоносного ПО на основе моего «простого» кода. Я думаю о выпуске источника, это не секрет, я просто не хотел быть главной причиной будущих вредоносных программ на основе UEFI.
Зибри
Редактировать: обновлено сегодня до версии 1.1.
Зибри
Обновлено до версии 1.2
Zibri
1

Я только что купил Dell XPS 17 (l702x) и мне интересна мультизагрузка различных операционных систем. Если то, что я понял, верно, то у Dell есть какая-то форма BIOS «Phoenix SecureCore Tiano UEFI». Из того, что я прочитал, UEFI нельзя использовать напрямую (возможно, через скрытое меню и т. Д., Что может потребовать модификации BIOS).

Кажется возможным использовать / получить доступ к Phoenix-совместимой оболочке EFI, используя пакеты с открытым исходным кодом (BSD) TianoCore edk2 / ShellPkg (исходный код) и edk2 / ShellBinPkg (двоичный код) ( GIT Repo ).

Я рекомендую более новый ShellBinPkg , использующий профиль "full shell" UEFI Shell 2.0 (поддерживает большинство команд). Вы также можете перестроить пользовательскую оболочку с помощью ShellPkg (создать автономную версию или включить ее в пакет OVMF для создания версии x64) - Включение оболочки UEFI в дистрибутив Linux iso .

Двоичный файл оболочки [U] EFI скомпилирован для работы независимо от встроенного программного обеспечения. Это можно проверить, поместив оболочку в файловую систему FAT32 (USB-накопитель, раздел жесткого диска), переименовав ее /efi/boot/bootx64.efiи загрузившись с нее из BIOS [UEFI].

Текст справки для оболочки доступен, набрав help utilname. Просто использование helpсоздает список всех доступных команд оболочки.

Примечание. Если вы не можете запустить оболочку UEFI непосредственно из микропрограммы, создайте USB-накопитель FAT32 с Shell.efi, скопированным как (USB) /efi/boot/bootx64.efi. Этот USB должен появиться в меню загрузки прошивки. Запуск этой опции запустит оболочку UEFI для вас. - Arch Linux берет UEFI

Большой Богатый
источник
замечательно. я купил ту же модель L702x ;-) я попробую завтра! насколько мне известно, скрытое меню все еще не разблокировано. Кстати, вы скомпилировали bootx64.efi и уже тестировали на своем xps?
Марстон
ShellBinPkg - это предварительно скомпилированный двоичный файл оболочки UEFI, вы должны иметь возможность просто переименовать его и поместить в правильный каталог. Я попробовал это, и это не сработало для меня, но я не верю, что это единственная оболочка, которая доступна (я также новичок в этом). Похоже, что в этом посте предлагается загрузка оболочки, которая должна работать с Phoenix SecureCore Tiano (см. Беседу .ridikulus.rat-> cfr). Дайте нам знать, как вы поживаете.
Большой Богатый
Я попытался поместить файл efi из вышеприведенного поста в /efi/boot/bootx64.efi, однако мой usb-диск загрузился нормально, чтобы загрузиться (он уже загрузочный); Затем я отформатировал свой U-диск в режиме жесткого диска, и я получил ошибку «Удалить диски или другие носители ...». Затем я предпринял шестнадцатеричный поиск этого строкового сектора по секторам в моем u-диске, его не было. сообщение должно быть от Tiano BIOS L702x. что-то не так для моих операций?
Marstone
@marstone, извините, но я сам новичок, когда дело доходит до этого UEFI (я просто в порядке с моим Google-фу ;-)). Занят в другом месте, как только у меня будет время, я сам попробую и дам вам знать, как у меня дела. Ура, Рич.
Большой Богатый
Несмотря на то, что Dell выпустила биос с поддержкой UEFI ( A19 ), «capitankasar» на ноутбуке опубликовал 2x модифицированные биозы A18 ( uefi , uefi + nvida gpu ), они касаются разгона UEFI, графического процессора NVidia, скорости вращения вентилятора и т. Д. (Некоторые из этих функций может также существовать в официальном релизе Dell, я сам не подтвердил это). Как всегда, используйте на свой страх и риск ;-)
Big Rich
0

В своих экспериментах я заключил следующее:

Если вы хотите использовать мультизагрузочный USB-ключ U / EFI, вы ДОЛЖНЫ:

  1. очистить все разделы / стереть диск полностью;
  2. преобразовать его в GPT;
  3. создайте основной раздел и отформатируйте его как Fat32;
  4. сделать каталог с именем EFI (без учета регистра) в корне диска;
  5. создайте в предыдущем каталоге subdir с именем boot (без учета регистра)
  6. поместите туда нужный файл .efi и переименуйте его в соответствии с архитектурой системы: bootx64.efi, если x64, bootia32.efi, если x86, или bootaa64.efi, если ARM64.

Пробовал на сенсорном экране Dell Inspiron 5437 и работал отлично.

И последнее: если файл .efi не подписан цифровой подписью Microsoft, необходимо отключить только безопасный режим загрузки в настройках fw. Оставьте режим загрузки UEFI и режим быстрой загрузки включенным.

Для тестов найдите мультизагрузочный ключ вашей OEM-машины, прежде чем устанавливать его постоянно, и выберите его uefi: <your usb key>из представленного списка.

Тьяго Постио
источник