9

Я просто попытался загрузить свою машину в режиме 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

2 ответа2

19

Проблема здесь в том, что прошивка вашего сетевого адаптера или дополнительное ПЗУ не поддерживает 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:

bootutil64e -up=combo -all -FILE=BootIMG.FLB

Сообщение, возвращаемое утилитой, просто указывает, какие функции предоставляет существующая прошивка. Он будет перезаписан во время процесса прошивки; это нормально.

После прошивки прошивки перезагрузите систему в собственном режиме UEFI и посмотрите, работает ли она. Если нет, вам нужно заменить сетевой адаптер.


Обновление: Вы указали в чате, что получаете эту ошибку при попытке прошить прошивку:

Connection to QV driver failed - please reinstall it!

Похоже, что для прошивки прошивки требуется драйвер отладки iQV (iqvlinux). Драйвер можно скачать здесь, но вам нужно будет скомпилировать и загрузить драйвер самостоятельно. Сценарий install , который является отдельной загрузкой, необходим для выполнения установки; не просто распакуйте пакет драйвера и запустите make .


1 Драйверы EFI также могут находиться в системном разделе EFI или в прошивке UEFI на самой материнской плате. Однако для карт PCI и PCIe он обычно поставляется вместе с прошивкой карты.

2

Спасибо @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 , хотя сначала мне нужно было сделать его исполняемым. Когда я запустил его, я получил

root@orwell:/home/faheem# bootutil64e -?
Connection to QV driver failed - please reinstall it!

Затем для этого потребовалось загрузить iqvlinux.tar.gz , который является исходным архивом модулей ядра Linux, с https://sourceforge.net/projects/e1000/files/iqvlinux/1.2.0.3/.

Примечание: там есть rpm, но попытка конвертировать его в deb выглядит довольно безнадежно. И даже не кажется, что он содержит двоичные файлы, только исходные файлы и заголовки. Это не очевидно, но нужно также install скрипт в том же каталоге. Тогда беги

sh install

или похож на пользователя (запуск странного скрипта с правами root никогда не является хорошей идеей), убедившись, что iqvlinux.tar.gz находится на том же уровне, что и скрипт install .

Это дает вывод

faheem@orwell:/usr/local/src/iqvlinux$ sh install
Extracting archive..OK!
make: Entering directory '/usr/local/src/iqvlinux/iqvlinux/src/linux/driver'
make -C /lib/modules/3.16.0-4-amd64/build SUBDIRS=/usr/local/src/iqvlinux/iqvlinux/src/linux/driver modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-4-amd64'
make[1]: Entering directory `/usr/src/linux-headers-3.16.0-4-amd64'
  CC [M]  /usr/local/src/iqvlinux/iqvlinux/src/linux/driver/nalioctldrv.o
  CC [M]  /usr/local/src/iqvlinux/iqvlinux/src/linux/driver/linuxnaldriver.o
  CC [M]  /usr/local/src/iqvlinux/iqvlinux/src/linux/driver/linuxdriveros_i.o
  CC [M]  /usr/local/src/iqvlinux/iqvlinux/src/linux/driver/linuxdriverpci_i.o
  CC [M]  /usr/local/src/iqvlinux/iqvlinux/src/linux/driver/linuxdriverdevice_i.o
  CC [M]  /usr/local/src/iqvlinux/iqvlinux/src/linux/driver/linuxdrivermemory_i.o
  LD [M]  /usr/local/src/iqvlinux/iqvlinux/src/linux/driver/iqvlinux.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /usr/local/src/iqvlinux/iqvlinux/src/linux/driver/iqvlinux.mod.o
  LD [M]  /usr/local/src/iqvlinux/iqvlinux/src/linux/driver/iqvlinux.ko
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-4-amd64'
make: Leaving directory '/usr/local/src/iqvlinux/iqvlinux/src/linux/driver'
Skipping removing QV driver - it does not exist...
Copying iqvlinux.ko driver file to /lib/modules directory...cp: cannot create regular file ‘/lib/modules/3.16.0-4-amd64/kernel/drivers/net/iqvlinux.ko’: Permission denied                                                                                                                                                  
Error: failed to copy driver (‘/usr/local/src/iqvlinux/iqvlinux/src/linux/driver/iqvlinux.ko’ -> ‘/lib/modules/3.16.0-4-amd64/kernel/drivers/net/iqvlinux.ko’)

Копирование модуля ядра на место вручную устраняет ошибку.

Перед перепрошивкой карты это вывод bootutil64e для карты:

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   001B213916B9    10:00.0 Gigabit YES PXE                           1.3.21

Вот расшифровка стенограммы сессии. Опция combo включает функции PXE и UEFI. Обратите внимание, что нужно указать местоположение загрузочного образа с помощью опции FILE :

root@orwell:/home/faheem# bootutil64e -up=combo -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.6.39.1
Copyright (C) 2003-2017 Intel Corporation

Programming flash on port 1 with flash firmware image
Create restore image of NIC 1 before proceeding? (Y)es or (N)o: Y
Y

Saving flash firmware image on port 1 to file 10D34008.FLB...
Filename 10D34008.FLB already exists.
(O)verwrite/proceed or (S)top execution?: O
O
saved

Updating PXE+EFI removes PXE functionality.
Would you like to continue? (Y)es or (N)o: Y
Y
/
Flash update successful

Port Network Address Location Series  WOL Flash Firmware                Version
==== =============== ======== ======= === ============================= =======
  1   001B213916B9    10:00.0 Gigabit YES UEFI,PXE Enabled              1.5.84

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .