Я просто попытался загрузить свою машину в режиме UEFI, но получил это сообщение:
система не может найти драйвер UEFI для дополнительных сетевых устройств [0x10D38086]
Я использую Debian Linux, но я не уверен, что это актуально. Я не уверен, попала ли моя система в Linux.
Вот соответствующий вывод lspci
для моей сетевой карты
0a: 00.0 Контроллер Ethernet: Intel Corporation 82574L Gigabit Network Connection
Думаю, сама материнская плата поддерживает UEFI. Вот вывод dmidecode
для материнской платы.
dmidecode --type 2
# dmidecode 2.12
SMBIOS 2.7 present.
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
Manufacturer: ASUSTeK COMPUTER INC.
Product Name: SABERTOOTH 990FX R2.0
Version: Rev 1.xx
Serial Number: 130309723501985
Asset Tag: To be filled by O.E.M.
Features:
Board is a hosting board
Board is replaceable
Location In Chassis: To be filled by O.E.M.
Chassis Handle: 0x0003
Type: Motherboard
Contained Object Handles: 0
boot
uefi
network-adapter
Фахим Митха
источник
источник
Ответы:
Проблема в том, что прошивка вашего сетевого адаптера или дополнительное ПЗУ не поддерживает UEFI.
Дополнительная карта может иметь собственный исполняемый код для использования в среде предварительной загрузки. VBIOS на графической карте, используемая для инициализации графического процессора и отображения во время загрузки, является примером такого дополнительного ПЗУ. На сетевой карте это обычно используется для реализации PXE . UEFI обычно 1 требует, чтобы прошивка карты содержала специально изготовленный драйвер, но ваша сетевая карта была создана для устаревших систем BIOS, поэтому она не содержит такого драйвера. Таким образом, он не будет работать в системе UEFI, которая не использует модуль поддержки совместимости (устаревший уровень совместимости с BIOS) и нуждается в обновлении.
Копая глубже, я обнаружил, что код, указанный в сообщении об ошибке
0x10D38086
, является PCI ID сетевой карты. 8086: 10D3 - это настольный адаптер Intel Gigabit CT .Поиск доступных загрузок для этой карты обнаружил обновление прошивки, которое можно установить на NIC для обновления дополнительного ПЗУ, чтобы оно поддерживало UEFI. Загрузите и распакуйте
Preboot.tar.gz
и следуйте инструкциям для обновления прошивки. Согласно примечаниям к выпуску , опция ROM содержит драйверы UEFI, которые должны исправить полученную ошибку.В вашем случае прошейте
combo
прошивку, которая обеспечивает поддержку UEFI и PXE:Сообщение, возвращаемое утилитой, просто указывает, какие функции предоставляет существующая прошивка. Он будет перезаписан во время процесса прошивки; это нормально.
После прошивки прошивки перезагрузите систему в собственном режиме UEFI и посмотрите, работает ли она. Если нет, вам нужно заменить сетевой адаптер.
Обновление: Вы указали в чате, что получаете эту ошибку при попытке прошить прошивку:
Похоже, что для прошивки прошивки требуется драйвер отладки iQV (
iqvlinux
). Драйвер можно скачать здесь , но вам нужно будет скомпилировать и загрузить драйвер самостоятельно.install
Скрипт, который является отдельной загрузкой, необходимо выполнить установку; не просто распакуйте пакет драйвера и запуститеmake
.1 Драйверы EFI также могут быть в системном разделе EFI или в прошивке UEFI на самой материнской плате. Однако для карт PCI и PCIe он обычно поставляется в прошивке карты.
источник
bootutil64e -up=efi64 -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB
. В сообщении говорится: «Обновление EFI удаляет функциональность PXE. Хотите продолжить?» Я не знаю точно, что это значит.-up=combo
. В противном случае ваша карта, очевидно, одновременно поддерживает только одну из этих функций, но не обе, и вам придется потерять функцию загрузки PXE, чтобы загрузить карту в среде UEFI.Спасибо @bwDraco за полезный ответ.
Я добавляю некоторые подробности о том, как этот процесс выглядит на практике.
Сначала я скачал и распаковал
Preboot.tar.gz
. Предупреждение - это не распаковка в отдельный каталог, поэтому сначала создайте для него каталог.Обратите внимание, что эта утилита поддерживает ряд различных операционных систем. Однако я только опишу, как это работает в Linux, так как я больше ничего не запускаю. Основная документация для этой утилиты есть
DOCS/Adapter_User_Guide.pdf
.Версия этой утилиты для Linux состоит из двух двоичных исполняемых файлов
APPS/BootUtil/Linux_x64/bootutil64e
(64-разрядных) иAPPS/BootUtil/Linux32$ ls bootutil32
(32-разрядных). И документация для bootutil естьAPPS/BootUtil/Docs/bootutil.txt
.Затем я скопировал файл
APPS/BootUtil/Linux_x64/bootutil64e
в/usr/local/bin
, хотя я должен был сделать его исполняемым первым. Когда я запустил его, я получилЗатем требуется загрузка
iqvlinux.tar.gz
, представляющая собой архив исходных кодов модулей ядра Linux, с https://sourceforge.net/projects/e1000/files/iqvlinux/1.2.0.3/ .Примечание: там есть rpm, но попытка конвертировать его в deb выглядит довольно безнадежно. И даже не кажется, что он содержит двоичные файлы, только исходные файлы и заголовки. Это не очевидно, но также нужен
install
скрипт в том же каталоге. Тогда бегиили похож на пользователя (запуск странного скрипта от имени root никогда не является хорошей идеей), убедившись, что он
iqvlinux.tar.gz
находится на том же уровне, что иinstall
скрипт.Это дает выход
Копирование модуля ядра на место вручную устраняет ошибку.
Перед перепрошивкой карты это вывод
bootutil64e
для карты:Вот сессионная стенограмма перепрошивки. Опция combo включает функции PXE и UEFI. Обратите внимание, что нужно указать местоположение загрузочного образа с помощью
FILE
опции:источник