Uefi built in efi shell: Built-in EFI Shell — что это?
Содержание
Резервирование UEFI в Linux — Server admin
Posted on by unixmin
В большинстве случаев на серверные системы Linux
ставится на RAID, железный или программный. В простом случае программный рейд создаётся при помощи mdadm
, в форме зеркала. Корень и разделы системные и данных легко ставятся на получившиеся /dev/mdX
-разделы и такое решение отлично защищает от потери данных в случае аппаратной неисправности жесткого диска. Однако, в стандартной установке загрузчик ставится только на один жёсткий диск и в случае его поломки система не загрузится. Поставим задачу зарезервировать ещё и загрузку, т.е. сделать систему загружаемой с любого из дисков зеркала.
Будем рассматривать наиболее простую конфигурацию и разбиение носителей — 2 NVMe-тома, на которых всего по 2 раздела: для UEFI и для корня системы. Например:
# fdisk /dev/nvme0n1 . .. Device Start End Sectors Size Type /dev/nvme0n1p1 2048 526335 524288 256M EFI System /dev/nvme0n1p2 526336 879097934 878571599 419G Linux RAID
Имеем первый раздел для EFI и второй под корень системы. Корень уже в mdadm массиве уровня 1, с ним все уже в порядке. Второй такой же носитель /dev/nvme1n1
имеет в точности такую же разбивку.
После установки получим efi
-раздел, монтируемый в /boot/efi
и параметры загрузки EFI вроде
# efibootmgr -v BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0000,0002,0006,0005 Boot0000* debian HD(1,800,80000,0496eff8-477c-4335-ada1-ce9200ddff6e)File(\EFI\debian\grubx64.efi) Boot0002* UEFI: Built-in EFI Shell Vendor(5023b95c-db26-429b-a648-bd47664c8012,)..BO Boot0005* UEFI: Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,0)MAC(MAC(0cc47ada7688,1)..BO Boot0006* UEFI: IP4 Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,0)MAC(MAC(0cc47ada7688,1). .BO Boot0007* UEFI: Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,1)MAC(MAC(0cc47ada7689,1)..BO Boot0008* UEFI: IP4 Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,1)MAC(MAC(0cc47ada7689,1)..BO
Раздел /dev/nvme0n1p1
непустой и содержит загрузчик. Аналогичный раздел со второго носителя /dev/nvme1n1p1
пустой. Запишем загрузчик в него и добавим его в последовательность загрузки. В случае BIOS срабатывал штатный grub-install
на второй диск. Здесь аналогичный способ перепишет строчку в последовательности загрузки efiboot
выше и по сути переключит загрузку на второй диск. Поступим иначе, а именно наново сделаем загрузку на второй диск, её сохраним, и затем вернём загрузку с первого.
Для начала подменим уже смонтированный раздел /dev/nvme0n1p1
аналогичным со второго диска
umount /boot/efi mount -o umask=0077 /dev/nvme1n1p1 /boot/efi
и убедимся, что смонтировался именно он. Если этот раздел не отформатирован при загрузке сделаем это сейчас
mkfs.vfat -F32 /dev/nvme1n1p1
FAT32
может не быть в системе изначально, он доустанавливается из dosfstools
. Раздел должен быть пустым.
Далее стандартными средствами, по мануалу дебиана прописываем загрузчик:
apt-get install --reinstall grub-efi grub-install /dev/nvme1n1 update-grub
В результате получаем загрузчик в /boot/efi (смонтированный на /dev/nvme1n1p1) и строчку в последовательности UEFI
-загрузки
# efibootmgr -v BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0000,0002,0006,0005 Boot0000* debian HD(1,800,80000,37194fa6-dca2-491e-a0cf-a7fded36e2c5)File(\EFI\debian\grubx64.efi) Boot0002* UEFI: Built-in EFI Shell Vendor(5023b95c-db26-429b-a648-bd47664c8012,)..BO Boot0005* UEFI: Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,0)MAC(MAC(0cc47ada7688,1). .BO Boot0006* UEFI: IP4 Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,0)MAC(MAC(0cc47ada7688,1)..BO Boot0007* UEFI: Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,1)MAC(MAC(0cc47ada7689,1)..BO Boot0008* UEFI: IP4 Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,1)MAC(MAC(0cc47ada7689,1)..BO
Посмотрим таблицу идентификаторов UUID
# blkid /dev/nvme0n1p1: UUID="AC77-0809" TYPE="vfat" PARTUUID="0496eff8-477c-4335-ada1-ce9200ddff6e" /dev/nvme0n1p2: UUID="9643fce5-dcfb-1ff3-d03d-14004857da61" UUID_SUB="f5c3d323-29ec-3079-0e58-3259275e26db" LABEL="s00:0" TYPE="linux_raid_member" PARTUUID="d37e4df1-07ef-467e-acf8-ab98bbb60f87" /dev/nvme1n1p1: UUID="4072-D808" TYPE="vfat" PARTUUID="37194fa6-dca2-491e-a0cf-a7fded36e2c5" /dev/nvme1n1p2: UUID="9643fce5-dcfb-1ff3-d03d-14004857da61" UUID_SUB="f5e0f678-9b1d-3111-df00-74096ddf7e6d" LABEL="s00:0" TYPE="linux_raid_member" PARTUUID="660ba68e-7e25-4287-a646-3f555b510533" /dev/md0: UUID="ce3f9f38-e7d9-4c89-ae36-2127a71670e0" TYPE="ext4" /dev/nvme0n1: PTUUID="86a68d04-a4d9-4296-8a1a-48d02b7171fb" PTTYPE="gpt" /dev/nvme1n1: PTUUID="1bc21b63-6011-42e9-80ab-1fd120b69907" PTTYPE="gpt"
и убедимся, что в последовательности загрузки стоит идентификатор именно второго диска. Но оригинальная строчка с загрузчиком первого диска перезаписана. Поэтому, вручную добавим строчку для второго диска под другим номером и под другим названием аналогично существующей:
efibootmgr -c -d /dev/nvme1n1 -p 1 -L "debian1" -l "\EFI\debian\grubx64.efi"
Проверяем результат
# efibootmgr -v BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0000,0002,0006,0005 Boot0000* debian HD(1,800,80000,37194fa6-dca2-491e-a0cf-a7fded36e2c5)File(\EFI\debian\grubx64.efi) Boot0001* debian1 HD(1,800,80000,37194fa6-dca2-491e-a0cf-a7fded36e2c5)File(\EFI\debian\grubx64.efi) Boot0002* UEFI: Built-in EFI Shell Vendor(5023b95c-db26-429b-a648-bd47664c8012,)..BO Boot0005* UEFI: Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,0)MAC(MAC(0cc47ada7688,1)..BO Boot0006* UEFI: IP4 Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,0)MAC(MAC(0cc47ada7688,1)..BO Boot0007* UEFI: Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,1)MAC(MAC(0cc47ada7689,1). .BO Boot0008* UEFI: IP4 Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,1)MAC(MAC(0cc47ada7689,1)..BO
И меняем порядок загрузки на необходимый
# efibootmgr -o 0000,0001,0002
Вторая часть — это вернуть обратно первый загрузчик. Перемонтируем обратно раздел с ним на оригинальный с первого диска
umount /boot/efi mount /boot/efi
Убеждаемся, что смонтировался именно он, и стандартными средствами записываем загрузчик
apt-get install --reinstall grub-efi grub-install /dev/nvme1n1 update-grub
Аналогичное можно было сделать и с помощью efibootmgr
, как это делали для второго раздела.
В любом способе в конечном варианте загрузки должны видеть примерно следующую последовательность UEFI
# efibootmgr -v BootCurrent: 0000 Timeout: 1 seconds BootOrder: 0000,0001,0002 Boot0000* debian HD(1,800,80000,0496eff8-477c-4335-ada1-ce9200ddff6e)File(\EFI\debian\grubx64. efi) Boot0001* debian1 HD(1,800,80000,37194fa6-dca2-491e-a0cf-a7fded36e2c5)File(\EFI\debian\grubx64.efi) Boot0002* UEFI: Built-in EFI Shell Vendor(5023b95c-db26-429b-a648-bd47664c8012,)..BO Boot0005* UEFI: Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,0)MAC(MAC(0cc47ada7688,1)..BO Boot0006* UEFI: IP4 Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,0)MAC(MAC(0cc47ada7688,1)..BO Boot0007* UEFI: Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,1)MAC(MAC(0cc47ada7689,1)..BO Boot0008* UEFI: IP4 Intel(R) I350 Gigabit Network Connection ACPI(a0341d0,0)PCI(3,3)PCI(0,1)MAC(MAC(0cc47ada7689,1)..BO
Таким образом загрузка будет происходить с любого из дисков, даже если один из них выйдет из строя.
Posted in Linux | Tagged debian, Linux, отказоустойчивость |
Leave a reply
Что можно делать в оболочке UEFI? – Wazeesupperclub.
com
Что можно делать в оболочке UEFI?
Интерактивная оболочка UEFI — это простая программа-оболочка (например, bash), отвечающая за загрузку вашей операционной системы. Вы также можете использовать интерактивную оболочку UEFI для запуска команд и сценариев оболочки EFI. Его также можно использовать для обновления системной прошивки вашей материнской платы.
Как использовать UEFI, встроенный в Shell?
Для доступа к меню UEFI создайте загрузочный USB-носитель:
- Отформатируйте USB-устройство в FAT32.
- Создайте каталог на USB-устройстве: /efi/boot/
- Скопируйте файловую оболочку. efi в каталог, созданный выше.
- Переименуйте файл shell.efi в BOOTX64.efi.
- Перезагрузите систему и войдите в меню UEFI.
- Выберите вариант загрузки с USB.
Что такое встроенная оболочка UEFI?
Встроенная оболочка UEFI — это предзагрузочная среда командной строки для создания сценариев и запуска приложений UEFI, включая загрузчики UEFI. Оболочка также предоставляет команды на основе интерфейса командной строки, которые можно использовать для получения информации о системе, а также для настройки и обновления BIOS системы.
Включена ли оболочка UEFI по умолчанию?
Доступ к встроенной оболочке UEFI включен по умолчанию.
Как запустить Windows из оболочки EFI?
Установка Windows на компьютер с EFI
- Установите Windows, запустив программу установки Windows из загрузочной записи EFI на главном компьютере.
- В оболочке EFI выберите устройство с установочным носителем Windows, а затем запустите загрузочное приложение EFI.
- При появлении запроса нажмите любую клавишу для загрузки с DVD-диска Windows.
Что такое оболочка EFI с USB-накопителей?
Оболочка EFI — это «оболочка» (подумайте о командной строке), в которую (U)EFI «BIOS» может загружаться напрямую (вместо вашей ОС), позволяя контролировать и создавать сценарии многих элементов, включая сценарии загрузки, установку Оболочка EFI в разделе «EFI System» (тип EF00), отформатированном с использованием файловой системы vfat и правильно названном — «…
Как запустить интеллектуальную подготовку с помощью системных утилит?
Запуск Intelligent Provisioning
- На экране «Системные утилиты» выберите «Встроенные приложения» и нажмите «Ввод».
- Выберите Intelligent Provisioning и нажмите Enter.
- Перезагрузите сервер, чтобы вернуться в меню системных утилит.
Поддерживается ли обновление BIOS системы оболочкой UEFI?
Утилита обновления UEFI Flash BIOS позволяет обновлять BIOS из оболочки EFI. файлы для вашего Intel NUC. Все файлы обновления BIOS для продуктов Intel® NUC доступны в центре загрузки Intel по адресу http://downloadcenter.intel.com/. 1.
Как выйти из оболочки EFI?
Перейдите к варианту загрузки № 1 и установите для него Диспетчер загрузки Windows… Сохраните и выйдите из BIOS, нажав F4 на клавиатуре, или перейдите к пункту «Сохранить и выйти» и выберите «Сохранить изменения и выйти» в меню.
При включении устройства я вижу встроенный интерфейс оболочки EFI Что мне делать, чтобы это исправить?
[Часто задаваемые вопросы] При включении устройства я вижу встроенный интерфейс EFI Shell, что мне делать, чтобы исправить это?
- Перезагрузите устройство (вы можете ввести exit и Enter в командной строке Shell или просто нажать и удерживать кнопку питания)
- В интерфейсе «Сделано нами» во время запуска несколько раз нажмите Esc.
Как выйти из загрузки оболочки EFI?
UEFI Shell — Безопасность встроенного ПО
~ hucktech ~ Оставить комментарий
Глядя на приведенный ниже твит, мне интересно, проводил ли кто-нибудь тестирование безопасности с использованием переменных UEFI и псевдонимов оболочки, аналогично текущим атакам на NT, преемницу OS/2, которая также имеет консольные API (и переменные).
Как и Windows, UEFI также имеет псевдоним командной строки командной строки и API (часть протокола UEFI Shell). UEFI был создан еще тогда, когда самыми современными системными интерфейсами от Microsoft была OS/2 1. x, и один из первых разработчиков EFI ранее занимался кодированием API консоли OS/2 1.x.
doskey /exename=cmd.exe dir=calc.exe
это известная вещь? к сожалению, не сохраняется в сеансах/перезагрузках cmd.exe cc @danielhbohannon @subTee @KyleHanslovan @bohops @DissectMalware pic.twitter.com/QCxa2MdeBr— Адам (@Hexacorn) 21 декабря 2018 г. /wiki/Alias_(command)#cite_note-EFI-Shells-and-Scripting-3
https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Protocol/Shell.h
http: //h27007.www1.hpe.com/docs/iss/proliant_uefi/UEFI_Edgeline_103117/v28070872.html
~ hucktech ~ Оставить комментарий
Для пользователей UEFI Shell помимо CHIPSEC и acpidump существует еще один инструмент диагностики ACPI. Выдержки из сообщения списка рассылки edk2-devel и справочной страницы инструмента ниже, см. полный список сообщений с исходным кодом и дополнительной информацией.
ShellPkg: добавление инструмента acpiview для создания дампа таблиц ACPI
Эта программа предназначена для проверки содержимого таблиц ACPI из оболочки UEFI. Это может помочь в расследовании, особенно на том этапе, когда таблицы не позволяют загрузить ОС. Программа не является исчерпывающей и только инкапсулирует подробные знания об ограниченном числе типов таблиц. По умолчанию отображается содержимое всех установленных таблиц. «Известные» типы таблиц будут проанализированы и отображены с описаниями и значениями полей. Там, где это уместно, выполняется определенная проверка согласованности, и в выходных данных могут сообщаться ошибки. Другие типы таблиц будут отображаться в виде массива шестнадцатеричных байтов. Для облегчения отладки можно использовать параметры -t и -b для создания образа двоичного файла таблицы, который можно скопировать в другое место для исследования с помощью таких инструментов, как предоставляемые acpica.org. Это особенно актуально для таблиц типа AML, таких как DSDT и SSDT. Вдохновением для этого послужила существующая команда оболочки smbiosview Debug1. Многие таблицы не обрабатываются явно, отчасти из-за отсутствия примеров для нашего тестирования. Программа предназначена для расширения на новые таблицы с минимальными усилиями, и участие приветствуется.acpiview
Отображение информации таблицы ACPI.ACPIVIEW [[-?] | [[-л] | [-s AcpiTable [-d]]] [-c] [-v] [-h Highlight]]
-l — Показать список установленных таблиц ACPI.
-s — отображать только указанный тип AcpiTable.
AcpiTable : Требуемый тип таблицы ACPI.
-d — создать дамп двоичного файла указанной таблицы AcpiTable.
-c — проверка согласованности (по умолчанию включена).
-v — Показать подробные данные (по умолчанию включено).
-h – включить/отключить выделение цветом.
Highlight : TRUE/ON включает выделение;
FALSE/OFF (по умолчанию) отключает подсветку.
-? — Показать помощь.Форматированное отображение и проверка предусмотрены для следующих типов подписей:
APIC – Multiple APIC Description Table (MADT)
BGRT – Boot Graphics Resource Table
DBG2 – Debug Port Table 2
FACP – Fixed ACPI Description Table (FADT)
GTDT — таблица описания универсального таймера
IORT — таблица переназначения ввода-вывода0008
RSDP – Root System Description Pointer
SLIT – System Locality Information Table
SPCR – Serial Port Console Redirection Table
SRAT – System Resource Affinity Table
XSDT — Таблица расширенного описания системыПРИМЕРЫ:
Для отображения списка установленных типов таблиц:
FS0: \> acpiview -l. дамп содержимого таблицы в файл в текущем рабочем каталоге:
fs0:\> acpiview -s DSDT -dДля отображения содержимого всех таблиц ACPI:
fs0:\> acpiview~ hucktech ~ Оставить комментарий
UEFI_ListPci — это новое приложение UEFI, использующее протокол UEFI для перечисления устройств PCI/PCIe.
https://github.com/Justgocode/UEFI_ListPci
(Также есть команда PCI UEFI Shell, включенная на Tianocore.org.)
~ hucktech ~ Оставить комментарий
У Финнбарра П. Мерфи есть новая запись в блоге о написанном им новом инструменте TPM на основе UEFI.
Утилита UEFI для чтения PCR TPM 2.0 https://t. co/4iLZY1UyMj
— vincent zimmer (@vincentzimmer) 13 марта 2017 г.
[…]Кстати, если у вас есть доступ к набору инструментов для тестирования EFI на соответствие Intel TXT (Trusted Execution Technology), включенная утилита pcrdump.efi, предоставляет функциональность, аналогичную утилите, описанной в этом посте.[…]
См. больше его утилит UEFI:
https://github.com/fpmurphy/UEFI- Утилиты
https://github.com/fpmurphy/UEFI-Utilities-2016
~ hucktech ~ Оставить комментарий
Финнбарр П. Мерфи не часто ведет блог, но каждый пост обычно очень хорошо написан и часто фокусируется на использовании некоторых команд UEFI Shell для выполнения какой-либо конкретной задачи. В текущем посте речь идет о доступе к функциям TPM из оболочки UEFI, и она называется «часть 1», и это еще не все!
«Зачем я пишу эту серию постов? Потому что опубликовано несколько примеров рабочего кода UEFI, взаимодействующего с доверенным платформенным модулем. Такой пример кода полезен для исследователей безопасности и специалистов по компьютерной криминалистике».
http://blog.fpmurphy.com/2016/02/accessing-tpm-functionality-from-uefi-shell-part-1.html
~ hucktech ~ 1 комментарий
Алекс Ионеску только что создал новый проект, чтобы помочь с интеграцией Visual Studio / EDK-II.
Наконец-то решил что-то сделать с EDK-II. Представляем https://t.co/uPKFenVdiv. @legbacore @osxreverser оставьте отзыв, пожалуйста 🙂
— Alex Ionescu (@aionescu) 15 августа 2015 г.
https://github.com/ionescu007/VisualUefi
Судя по файлу readme, VisualUEFI состоит из трех вещей:
1) Решение и набор Visual Файлы проекта Studio 2015, позволяющие создавать официальный EDK-II без использования файлов inf, Python и 50 других инструментов сборки, настраиваемого средства отслеживания зависимостей и системы сборки, а также двадцати других пользовательских фрагментов кода. EDK-II присутствует как подмодуль непосредственно из официального дерева TianoCore, и в него не вносятся никакие изменения.
2) Решение и несколько файлов проекта Visual Studio 2015 для демонстрации двух образцов компонентов UEFI: приложения UEFI и загрузочного драйвера UEFI. Код на 100% совместим с EDK-II, но вместо этого построен с использованием VisualUEFI.
3) рабочая копия QEMU64 2.3 для Windows с довольно свежим ПЗУ UEFI 2.5 OVMF Secure Boot. Они будут обновляться на постоянной основе по мере необходимости. Это интегрировано с образцом решения Visual Studio 2015, поэтому нажатие клавиши F5 запускает экземпляр для тестирования.Вы сможете без проблем открыть файл EDK-II.SLN и выполнить сборку в Visual Studio 2015. WDK или другие сторонние установки не требуются. После сборки библиотек EDK-II вы сможете открыть файл SAMPLES.SLN и собрать два примера, которые создадут UefiApplication. efi и UefiDriver.efi.
Вы можете нажать F5 (Выполнить/Отладить) в образце решения, который должен запустить экземпляр QEMU с 512 МБ оперативной памяти, а ваш каталог выпуска — виртуальную файловую систему, доступную через «fs0:». Затем вы можете попробовать загрузить драйвер с помощью «Load fs0:\UefiDriver.efi». Вы можете проверить его наличие с помощью команд Drivers или DevTree.
Visual UEFI выглядит как хорошее улучшение среды разработки Visual Studio от Microsoft. Спасибо, Алекс!
(Это то, чего я ожидал от форума UEFI в качестве плагина Eclipse, как это сделали Yocto и некоторые связанные проекты.)
~ hucktech ~ 1 комментарий
[ОБНОВЛЕНИЕ: комментарий умного читателя:
Технология AMIDebug бесполезна для конечных пользователей и исследователей, поскольку ее поддержка должна быть специально скомпилирована в специальной сборке DEBUG. Аппаратная часть AMI DebugRX в порядке, чтобы получить коды порта 80h через USB, посредственная отладка исходного кода. Intel XDP или Arium-ITP аналогичны AMIDebug, оба являются хорошими продуктами и не требуют каких-либо изменений прошивки или специальных режимов сборки.
Кстати, я не знаю, почему комментарии не отображаются на веб-сайте блога, я пытаюсь это исправить… ]Ранее на этой неделе AMI объявила о поддержке USB3 для своего продукта AMIDebug для UEFI.
По-видимому, у AMI есть 3 версии этого: 1) AMIDebug для программного обеспечения UEFI для Aptio V, 2) портативное USB-устройство отладки AMIDebug Rx и 3) прошивка Aptio V UEFI от AMI.
Выдержки из пресс-релиза:
Компания American Megatrends, Inc. (AMI), мировой лидер в области BIOS, удаленного управления, сетевых продуктов для хранения данных и решений для операционной системы Android(TM), рада объявить о поддержке USB 3.0 контроллеры в последнем выпуске решения для отладки AMIDebug(TM) для UEFI для встроенного ПО Aptio(R) V UEFI.
AMIDebug для UEFI от American Megatrends — это мощное программное решение для отладки проектов UEFI на основе Aptio или UEFI Shell, предлагающее символьную отладку на уровне исходного кода (C и Assembler) без необходимости использования дорогостоящих аппаратных средств отладки JTAG.
Последняя версия AMIDebug для UEFI, разработанная специально для флагманской прошивки Aptio V UEFI компании, добавляет поддержку отладки USB 3.0 среди других важных функций. Эти недавно добавленные функции знаменуют ключевое развитие этого программного обеспечения для отладки, поскольку многие наборы микросхем теперь поддерживают только USB 3.0 (XHCI) и во многих случаях больше не включают старые стандарты USB (EHCI) в свои аппаратные разработки, такие как Intel. (R) Процессоры серии Atom(TM) x5-Z8300.
Что остается неизменным в AMIDebug для UEFI, так это его способность беспрецедентным образом облегчить разработку встроенного ПО для клиентов AMI OEM и ODM благодаря его глубокой интеграции во всю экосистему разработки UEFI. AMIDebug для UEFI по-прежнему предлагает стандартные функции отладки, такие как Break, Step, Step Over, Step Into, Step, run to курсор и установка следующего оператора, в дополнение к функциям отладки, характерным для UEFI, таким как Stop при вводе имени драйвера, Stop при вводе имени PEIM. , Остановиться на контрольной точке, Остановиться в начале PEI/DXE, Отладка SMM и дизассемблирование. Кроме того, поддерживается множество различных средств просмотра разработки встроенного ПО, включая память, регистры ЦП, шину PCI, стек вызовов, ввод-вывод и косвенный ввод-вывод.
Эх, хотелось бы, чтобы они были доступны для независимых поставщиков ПО UEFI и исследователей безопасности UEFI, а не только для OEM/ODM UEFI от AMI! Я хочу один. 😦
Дополнительная информация:
http://www.ami.com/news/press-releases/?PressReleaseID=322&/American%20Megatrends%20Announces%20Support%20for%20USB%203.0%20Controllers%20in%20Aptio%20V %20AMIDebug%20for%20UEFI/
http://www.ami.com/products/bios-uefi-tools-and-utilities/amidebug-rx/
http://www. ami.com/resources/resource-library /?documentationSearch=амидбаг~ hucktech ~ 3 комментария
Команда Intel CHIPSEC только что опубликовала последнюю версию CHIPSEC, 1.2.0. Выдержка из примечаний к выпуску ниже, см. полный текст на сайте github с известными проблемами:
Новые/обновленные модули:
* Модуль common.secureboot.keys объединен с модулем common.secureboot.variables
* Обновленные инструменты Модуль .secureboot.te для проверки проблем с PE/TE в Linux или оболочке UEFI
* Обновлен модуль tools.smm.smm_ptrОбновления:
* Добавлена абстракция *controls*. Модулям рекомендуется использовать «get_control» и «set_control» при взаимодействии с регистрами платформы. Это обеспечивает большую гибкость в случае, если регистр, который управляет данной функцией или конфигурацией, изменяется между поколениями платформы. Элементы управления определены в XML-файле платформы. В настоящее время определено лишь небольшое количество элементов управления. Мы планируем перевести существующие модули на этот новый механизм.
* Добавлена XML-схема для файлов конфигурации XML
* Добавлена поддержка чтения, записи и перечисления переменных UEFI из среды UEFI Shell.
* Добавлена поддержка распаковки во время анализа флэш-памяти SPI с помощью команд «decode» или «uefi decode» в Linux
* Добавлен базовый анализ таблицы ACPI в HAL (RSDP, RSDT/XSDT, APIC, DMAR)
* Добавлен поиск и анализ таблиц UEFI в HAL (системная таблица EFI, таблица служб времени выполнения, таблица служб загрузки, таблица служб DXE, таблица конфигурации EFI)
* Добавлен дамп и анализ ПЗУ DIMM Serial Presence Detect (SPD) в HAL
* Добавлена команда «uefi s3bootscript» для разбора сценария загрузки S3 в chipec_util.py
* Добавлена функция преобразования виртуального адреса в физический для Linux/EFI/Windows helpers
* Добавлена поддержка серверных платформ (Haswell server и Ivy Town) в chipset. pyДополнительная информация:
https://github.com/chipsec/chipsec
~ hucktech ~ Оставить комментарий
В дополнение к сценариям UEFI Shell, Python и Lua вы также можете использовать Ruby для написания кода для UEFI.
Mruby — это компилятор Ruby, перенесенный в UEFI. « mruby — это облегченная реализация языка Ruby, соответствующая (частично) стандарту ISO. Его синтаксис совместим с Ruby 1.9. »
Mruby на EFI Shell — это порт mruby на UEFI Shell, портированный Masamitsu Murase . С помощью mruby.efi вы можете вызывать службы UEFI BootTime и RunTime Services и получать доступ к структурам данных UEFI. Для некоторых хороших примеров, посмотрите на домашнюю страницу проекта.
Чтобы собрать mruby для EFI Shell, посмотрите ридми по исходникам, для него нужно создать новый подкаталог в EDK-II AppPkg. После сборки вам необходимо скопировать mruby.