Компьютер отказывается загружаться в режиме UEFI - выдает ошибку о сетевой карте Intel Gigabit


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

Этот вопрос является продолжением обсуждения в чате .
bwDraco

Ответы:


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 он обычно поставляется в прошивке карты.


1
Эта ссылка выглядит как минимум незначительно релевантной - federicofr.wordpress.com/2011/07/01/…
Фахим Митха

Я пойду с bootutil64e -up=efi64 -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB. В сообщении говорится: «Обновление EFI удаляет функциональность PXE. Хотите продолжить?» Я не знаю точно, что это значит.
Фахим Митха

Измерение, которое вы получаете, показывает, что текущая прошивка обеспечивает функциональность PXE и ​​перезаписывается прошивкой, которая обеспечивает функциональность EFI. Вы можете включить оба варианта, чтобы не потерять PXE; попробуй -up=combo. В противном случае ваша карта, очевидно, одновременно поддерживает только одну из этих функций, но не обе, и вам придется потерять функцию загрузки PXE, чтобы загрузить карту в среде UEFI.
bwDraco

UEFI не заменит PXE в любом случае? Например, UEFI может загружать загрузочные файлы из сети, если он имеет сетевой драйвер.
Zan Lynx

1
Моя сетевая карта теперь имеет прошивку UEFI благодаря помощи bwDraco. Вот последний шаг, который мне пришлось сделать, чтобы заставить UEFI-загрузку работать с установщиком Debian. На моем Asus MB (SABERTOOTH 990FX R2.0) Secure Boot имеет настройку ОС. Я переключил его с Windows на «Другие ОС», и установщик загружается в режиме UEFI. До этого просто молча не получалось.
Фахим Митха

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

Как это ответ на ваш вопрос? Это также не та информация, которая должна быть отредактирована в вопросе. Если вы не разберетесь в этом, этот не ответ будет удален.
ДэвидПостилл

@DavidPostill Это расшифровка того, что нужно сделать, чтобы получить желаемый результат. И я не закончил писать это.
Фахим Митха
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.