Запускать файлы / скрипты EFI из [boot, virtual media] ISO

798
raven428

Большинство поставщиков в последнее время предоставляют обновления прошивки серверов только в виде набора EFIфайлов ( пример ). Но их серверы внутренние (также как и любые внешние) IP-KVM могут подключать только ISOобразы в качестве загрузочных виртуальных носителей. С этим виртуальным носителем невозможна прошивка прошивки.

Серверы в большинстве случаев являются удаленными, и никто не может получить к ним физический доступ, чтобы вставить USBфлешку в обновления прошивки. Обновления прошивки должны быть удаленными только для ускорения всего процесса. Вопрос заключается в том, как я могу запустить EFIфайлы, как они с загрузочным ISOфлэш обновления прошивки?

Скорее всего, готового решения не существует. Поэтому я хотел бы построить сам. Но я не нашел ничего в Google для начала. Нужно указать какое-то руководство по началу работы или что-то подобное. Может быть, есть способ упорядочить в ISOэтих файлах как-нибудь, чтобы EFIоболочка смогла получить к нему доступ и запустить?

Я хотел бы Linuxрешение для сборки ISO.

2
В прилагаемых инструкциях действительно упоминается флешка. Но проблема, которую вы описываете, не имеет ничего общего с UEFI. Ситуация была бы такой же с BIOS. Я не знаю ни одного способа удаленной прошивки BIOS / UEFI. GabrielaGarcia 5 лет назад 0
Вопросы: (1) Какие ОС являются этими удаленными серверами? Они все используют Windows? (2) Сколько серверов? harrymc 5 лет назад 0
@GabrielaGarcia. Possible with UEFI Capsule support. However many UEFI firmware still do not support updatng firmware using capsules or FMP and ESRT. fpmurphy1 5 лет назад 0

4 ответа на вопрос

3
pat2015

Приведенное ниже решение реализовано на Linux Mint 19 64 на виртуальной машине.

Необходимые инструменты

GParted - графический инструмент для управления разделами. Это обычно доступно в Live Linux CD / DVD. Если у вас нет свободного места в конце диска, вам придется изменить размер и создать небольшой раздел FAT. Если существующие разделы используются, вам может потребоваться запустить GParted с Live Linux CD / DVD, чтобы он работал на вашем разделе.

genisoimage - инструмент командной строки для управления ISO. Если это не доступно, просто установите его. Это было легко доступно в Linux Mint 19 64bit

sudo apt-get install genisoimage 

Шаг 1 - Используя GParted (предпочтительно загруженный с Live Linux CD / DVD, в данном случае я использовал Live Linux Mint 19 64bit), создайте небольшой раздел в формате FAT16 в конце вашего диска. Для этого конкретного случая более 100 МБ более чем достаточно. Убедитесь, что для такого небольшого размера формат FAT16, а не FAT32

enter image description here

Шаг 2 - Распакуйте и скопируйте необходимые файлы в этот раздел, отформатированный в FAT. Вы можете просто использовать файловый менеджер GUI по умолчанию в Linux. Не требуется отдельная команда gzip

enter image description here

enter image description here

Шаг 3 - Создайте образ этого раздела. Команда здесь

dd if=/dev/sda3 of=/home/test/efi/fat.img 

В приведенном выше примере /dev/sda3раздел, отформатированный в FAT, содержащий файлы, и /home/test/efi/fat.img это созданный файл изображения.

enter image description here

Шаг 4 - Теперь мы создадим загрузочный ISO-образ EFI. Сами файлы не обязательно могут быть загрузочными здесь.

genisoimage -v -J -r -V "TEST" \ -o /home/test/myiso.iso \ -eltorito-alt-boot \ -e fat.img \ -no-emul-boot \ /home/test/efi 

enter image description here

enter image description here

В приведенной выше команде мы опускаем загрузчик BIOS и просто придерживаемся альтернативного загрузчика EFI. /home/test/myiso.isoэто новый создаваемый файл ISO, /home/test/efiэто расположение исходных файлов. Таким образом, в нем нет ничего, кроме образа загрузчика.

Теперь ISO создан на Linux Box. Смонтируйте ISO-диск как CD-привод и загрузите вашу систему UEFI в EFI Shell. Теперь раздел загрузчика должен отображаться на диск в EFI Shell, а изображение в нем, содержащее папку и ее содержимое, должно быть доступно через EFI Shell.

enter image description here

enter image description here

2
pat2015

Исходя из того, что я лучше всего понимаю ваш вопрос, я предлагаю решение с использованием следующих инструментов в 64-битной операционной системе Windows.

  1. imdisk_toolkit_64_bit Эмулятор виртуального диска. Скачать и установить отсюда
  2. Power ISO (пробная версия должна работать, так как размер файла меньше 300 МБ)

меры

Загрузите и установите вышеуказанное программное обеспечение в вашей ОС Windows.

Сначала с помощью imdisk_toolkit создайте виртуальный диск и подключите его к букве диска. Отформатируйте диск в файловую систему FAT. Диск объемом около 50 -60 МБ более чем достаточен для ваших нужд, так как размер файла едва ли <40 МБ.

Скопируйте содержимое ваших файлов, включая файлы EFI, флэш-файлы и сценарии, на этот виртуальный диск.

Теперь в том же приложении создайте и сохраните файл .img виртуального диска.

Демонтировать виртуальный диск. Эта часть работы выполнена.

Теперь откройте Power ISO и создайте новый пустой контейнер ISO.

Перейти к меню «Действие» -> «Загрузка» -> «Добавить информацию о загрузке»

и выберите файл .IMG, который мы создали ранее.

Теперь ваш ISO-файл является практически загрузочным (он создает FAT-контейнер в качестве загрузочного файла, хотя в действительности он не загружается, поскольку сами ваши файлы не являются загрузочными)

Сохраните файл как .ISO и запишите его на CD / DVD.

Этот контейнер FAT загрузчика должен быть доступен в EFI Shell и должен монтироваться как доступный диск в EFI Shell.

Я проверил это на виртуальной машине. Надеюсь, что это работает, как ожидалось, на реальном оборудовании.

Выглядит хорошо. Можно ли выполнить то же самое из коробки Linux? raven428 5 лет назад 0
Я добавил отдельный ответ для Linux Box. Попробуйте и дайте мне знать, если это работает для вас. pat2015 5 лет назад 0
0
Anon

Возможно, вы могли бы создать обновления прошивки как загрузочные образы PXE (хотя нужно быть осторожным, чтобы не оказаться в цикле перепрошивки). Большинство серверов с EFI также могут в случае необходимости использовать PXE BIOS.

Если ваше устройство IP-KVM позволяет подключать USB-диски, вы можете обнаружить, что можете просто загрузить свой «образ», прикрепив его таким образом.

Лучшим способом может быть перепрошивка сервера с реальной полностью загруженной ОС (и некоторые производители предоставляют для этого специальные утилиты для ОС).

Наконец, некоторые поставщики серверов взимают с вас СУММ дополнительных денег, чтобы позволить вам перепрограммировать BIOS сервера по сети (например, через IPMI) - вы можете быть в этом сценарии ...

0
harrymc

Существуют и другие решения, кроме загрузочных ISO, хотя для их создания требуется определенная работа. Выбор решения во многом зависит от характера удаленных компьютеров, а также от производителя и операционных систем.

Для компьютеров одного производителя большинство крупных производителей предоставляют продукты, предназначенные для управления центрами обработки данных, которые в основном бесплатны. Если это ваш случай, вот несколько ссылок:

В Windows можно использовать PowerShell для обновления BIOS. Необходимые файлы должны быть сначала отправлены на удаленный компьютер. Примеры таких скриптов:

Каждое решение требует изучения и тестирования, ни одно из них не является легким или абсолютно гарантированным.