- Вопрос или проблема
- Запуск WinPE в виртуальной машине с PCI-проходкой
- Создание образа Windows PE
- Скачать необходимые файлы
- Подготовка файлов (пример)
- Создание образа
- Запуск образа в виртуальной машине
- Скриншот запуска FWUpdLcl64.exe в WinPE в virt-manager
- Файлы
- make-winpe
- start_script.cmd
- overlay/README.txt
- Ответ или решение
- Подготовка к обновлению
- Создание образа Windows PE
- Запуск образа в виртуальной машине
- Обновление прошивки Intel ME
- Заключение
Вопрос или проблема
Прошивка Intel ME (Management Engine) нуждается в обновлении время от времени. К сожалению, инструмент для обновления часто предоставляется только в виде исполняемого файла для Windows. Ниже приведены некоторые уже существующие обходные пути для пользователей Linux:
- Версии инструмента обновления
FWUpdLcl
для Linux доступны на форуме WinRAID, но это неофициальный источник, поэтому неясно, насколько безопасны и подходят эти исполняемые файлы. - Windows PE (Preinstallation Environment) можно запустить с USB-накопителя, и официальный инструмент обновления можно запустить внутри него. Проблема заключается в том, что проприетарное ПО получит доступ к вашим дискам, сети и т.д., что может быть нежелательным.
Существует ли способ обновить прошивку Intel ME, не подвергая риску безопасность моего компьютера?
Запуск WinPE в виртуальной машине с PCI-проходкой
Один из способов обновить прошивку Intel ME — это запустить Windows PE (Preinstallation Environment) в виртуальной машине и предоставить ей доступ к PCI-устройству Intel ME Interface (MEI / HECI) на хосте. После этого прошивка Intel ME может быть обновлена из этого окружения.
Особенности данного решения:
- Используется официальный ISO-образ Windows, а не живой CD с какого-то сайта в интернете
- Проприетарное программное обеспечение не получит доступ к вашим дискам, сети и т.д., как это было бы в случае запуска на “голом” железе
- Обновление прошивки выполняется из вашей обычной ОС Linux, т.е. нет необходимости загружаться с USB-накопителя
Предупреждение: Проприетарное программное обеспечение будет иметь доступ к Intel ME Interface (MEI / HECI). Неясно, какой доступ это дает системе, но потенциально это может предоставить доступ к оперативной памяти и зашифрованным дискам в их разблокированном состоянии, поскольку именно это уровень доступа имеет Intel ME к системе. Поэтому данное решение может оказаться даже менее безопасным, чем запуск образа Windows на “голом” железе, так как в этом случае диски не будут в разблокированном состоянии.
Используйте на свой страх и риск. Этот отрывок из статьи EFF может быть актуален:
“Доступ AMT не то же самое, что запуск произвольного кода ME, поэтому атакующие не могут напрямую получить доступ к памяти системы; им нужно использовать консоль, VNC или загруженные образы ОС, чтобы достичь своих целей.”
Одним из обходных путей может быть загрузка Ubuntu с USB-накопителя и запуск WinPE в виртуальной машине там.
Представленное здесь решение было протестировано на материнской плате ASUS Pro WS W680-ACE с Ubuntu 24.04.
Создание образа Windows PE
Скачать необходимые файлы
- Официальный ISO-образ Windows 11 (бесплатно для скачивания)
- Драйвер Intel ME Interface (MEI / HECI) для Windows для конкретной материнской платы
- Инструмент обновления прошивки Intel ME для Windows для конкретной материнской платы
Подготовка файлов (пример)
mkdir overlay
cp -ai motherboard/DRV_MEI_Intel_Corp_TP_W11_64_V2407.../Drivers/MEI/win10 overlay/driver-mei-win10
cp -ai motherboard/MEUpdateTool_16.1.30.2307_TP overlay/
Создание образа
./make-winpe
Родительские директории образа должны иметь особые настройки разрешений, чтобы virt-manager мог получить доступ к образу, поэтому скрипт make-winpe создает доступный для чтения всем миром каталог /tmp/iso и помещает образ туда.
Запуск образа в виртуальной машине
sudo apt install virt-manager
virt-manager
Настройка виртуальной машины в virt-manager:
- Учебный носитель: Ручная установка
- Включить хранилище: Выкл
- Настроить конфигурацию перед установкой: Да
- Удалить NIC (нет необходимости в сети, чтобы избежать риска безопасности)
- Добавить оборудование: Хранилище: /tmp/iso/winpe-intel-me.img, устройство диска, USB, только для чтения
- Добавить оборудование: PCI-устройство хоста: контроллер HECI
- Узнайте больше об этом по PCI-проходке в virt-manager
- Нажмите “Начать установку” (“Отменить установку” удалит виртуальную машину)
Скриншот запуска FWUpdLcl64.exe в WinPE в virt-manager
Файлы
make-winpe
Этот скрипт основан на https://wiki.archlinux.org/title/Windows_PE.
#!/bin/bash
set -e
# Создание образа Windows PE (Preinstallation Environment) GPT + FAT32 с инструментами обновления
# прошивки.
#
# Если скрипт дает сбой, используйте следующие команды для очистки:
# sudo umount /media/winimg /media/winpe /media/winpefat
# sudo rmdir /media/winimg /media/winpe /media/winpefat
# sudo losetup -l -a | grep -v /var/lib/snapd/
# sudo losetup -d /dev/loopX
# rm winpe.iso
#
# Скрипт основан на <https://wiki.archlinux.org/title/Windows_PE>.
################################################################################
# Расположение файлов
win_iso='win11/Win11_22H2_EnglishInternational_x64v2.iso'
overlay_dir="overlay"
start_script="start_script.cmd"
output_image="/tmp/iso/winpe-intel-me.img"
################################################################################
if ! which -s mkwinpeimg mkisofs; then
echo 'Пожалуйста, выполните следующую команду:' >&2
echo 'sudo apt install wimtools genisoimage' >&2
exit 1
fi
if [ "$output_image" != "${output_image#/tmp/iso/}" ]; then
if [ ! -e /tmp/iso ]; then
mkdir --mode=755 /tmp/iso
fi
if [ ! -d /tmp/iso -o "$(stat -c%U /tmp/iso)" != "$USER" ]; then
echo '/tmp/iso должен быть каталогом, принадлежащим пользователю!' >&2
exit 1
fi
fi
rm -f -- "$output_image"
if [ -e "$output_image" ]; then echo "Не удалось удалить $output_image!" >&2; exit 1; fi
truncate --size=1G -- "$output_image"
sudo mkdir /media/winimg
sudo mkdir /media/winpe
sudo mkdir /media/winpefat
sudo mount --read-only -- "$win_iso" /media/winimg
mkwinpeimg --iso --windows-dir=/media/winimg --overlay="$overlay_dir" \
--start-script="$start_script" winpe.iso
sudo mount --read-only winpe.iso /media/winpe
loop="$(sudo losetup --find --show -- "$output_image")"
if [ "$loop" = "${loop#/dev/loop}" ]; then echo 'Ошибка создания устройства цикла!' >&2; exit 1; fi
sudo parted "$loop" \
mklabel gpt \
mkpart fat32 0% 100% \
set 1 boot on \
set 1 esp on
sudo mkfs.fat -F 32 "${loop}p1"
sudo mount -o uid="$USER" "${loop}p1" /media/winpefat
cp -a /media/winpe/* /media/winpefat/
cp -a /media/winimg/efi /media/winpefat/
sudo umount /media/winimg
sudo umount /media/winpe
sudo umount /media/winpefat
sudo losetup --detach "$loop"
rm -f -- winpe.iso
sudo rmdir /media/winimg
sudo rmdir /media/winpe
sudo rmdir /media/winpefat
echo
echo 'Образ WinPE, загружаемый через UEFI, можно найти здесь:'
printf '%s\n' "$output_image"
start_script.cmd
@echo Загружается драйвер Intel ME Interface (MEI / HECI):
@drvload \driver-mei-win10\heci.inf
@echo.
@echo ------------------------------------------------------------------------------
@type \README.txt
@echo ------------------------------------------------------------------------------
@echo.
@cd \MEUpdateTool*\FW
@echo Нажмите "exit", чтобы выключить компьютер.
@echo.
@cmd /k
@REM Выключить компьютер
@wpeutil shutdown
Конвертируйте файл в формат DOS (CRLF):
unix2dos start_script.cmd
overlay/README.txt
Чтобы отобразить содержимое этого файла:
type \README.txt
Чтобы показать справку, отобразить текущую/новую версию прошивки, обновить прошивку Intel ME:
cd \MEUpdateTool*\FW
FWUpdLcl64.exe -h
FWUpdLcl64.exe -fwver
FWUpdLcl64.exe -fwver ME.bin
FWUpdLcl64.exe -f ME.bin
Конвертируйте файл в формат DOS (CRLF):
unix2dos overlay/README.txt
Ответ или решение
Обновление прошивки Intel Management Engine (Intel ME) представляет собой важную процедуру для обеспечения безопасности и стабильности ваших систем. Однако, учитывая, что инструменты обновления часто предоставляются только в виде исполняемых файлов для Windows, пользователи Linux сталкиваются с проблемами при выполнении этой задачи. Ниже приведены шаги для безопасного обновления прошивки Intel ME с использованием Windows PE в виртуальной машине, что минимизирует риск для безопасности вашей системы.
Подготовка к обновлению
-
Загрузите необходимые файлы:
- Официальный образ ISO Windows 11 (возможно, предыдущие версии также подойдут).
- Драйвер Intel ME Interface (MEI / HECI) для вашей материнской платы.
- Инструмент обновления прошивки Intel ME для вашей материнской платы.
-
Создайте рабочий каталог и подготовьте файлы:
mkdir overlay cp -ai путь_к_драйверам/DRV_MEI_.../Drivers/MEI/win10 overlay/driver-mei-win10 cp -ai путь_к_инструменту/MEUpdateTool_... overlay/
Создание образа Windows PE
-
Скачайте и установите необходимые утилиты:
Убедитесь, что установленыwimtools
иgenisoimage
:sudo apt install wimtools genisoimage
-
Запустите скрипт для создания образа Windows PE (make-winpe):
Сначала создайте файлmake-winpe.sh
с приведенным ниже содержимым и дайте ему права на выполнение:chmod +x make-winpe.sh ./make-winpe.sh
После выполнения команды образ Windows PE будет создан в каталоге
/tmp/iso/
.
Запуск образа в виртуальной машине
-
Установка и настройка Virt-Manager:
sudo apt install virt-manager virt-manager
-
Создание виртуальной машины:
- Выберите "Manual install" для установки медиа.
- Отключите сетевой интерфейс для минимизации рисков.
- Добавьте хранилище: выберите созданный образ Windows PE
/tmp/iso/winpe-intel-me.img
. - Добавьте PCI-устройство: выберите контроллер HECI для доступа к Intel ME.
- Запустите установку, выбрав "Begin installation".
Обновление прошивки Intel ME
- Выполните обновление:
После запуска виртуальной машины вам нужно будет выполнить загрузку драйвера Intel ME Interface с помощью файлаstart_script.cmd
, который автоматически загрузит драйвер и запустит инструмент обновления. Вы можете выполнить следующие команды в интерактивной оболочке, чтобы проверить текущую версию прошивки и запустить процесс обновления:FWUpdLcl64.exe -h FWUpdLcl64.exe -fwver FWUpdLcl64.exe -fwver ME.bin FWUpdLcl64.exe -f ME.bin
Заключение
Обновление прошивки Intel ME в большинстве случаев требует выполнения шагов с учетом безопасности. Использование Windows PE в виртуальной машине с доступом к PCI-устройству обеспечивает контроль над средой выполнения и минимизирует риски. Однако, имейте в виду, что система все равно предоставляет доступ к Intel ME Interface, поэтому выполняйте эти действия с осторожностью и на свой риск.