題 計算機拒絕在UEFI模式下啟動 - 提供有關Intel千兆網卡的錯誤


我只是嘗試在UEFI模式下啟動我的機器,但得到了這樣的消息:

系統無法為附加網絡設備找到UEFI驅動程序[0x10D38086]

我正在運行Debian Linux,但我不確定這是否相關。我不確定我的系統是否已進入Linux部分。

這是相關的輸出 lspci 為我的網卡

0a:00.0以太網控制器:Intel Corporation 82574L千兆網絡連接

我認為主板本身支持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

9
2018-06-16 04:56


起源


這個問題是後續問題 這個聊天討論。 - bwDraco


答案:


這裡的問題是您的網絡適配器的固件,或 選項ROM,不支持UEFI。

附加卡可以擁有自己的可執行代碼,以便在預引導環境中使用。用於初始化GPU並在引導時顯示的圖形卡上的VBIOS就是這種選項ROM的一個例子。在網卡上,這通常用於實現 PXE。 UEFI通常1 要求卡的固件包含特製的驅動程序,但您的NIC是為舊版BIOS系統製作的,因此它不包含任何此類驅動程序。因此,它不適用於不使用兼容性支持模塊(舊版BIOS兼容層)且需要更新的UEFI系統。

深入挖掘,我發現錯誤信息中提供的代碼, 0x10D38086,是網卡的PCI ID。 8086:10D3是 英特爾千兆CT桌面適配器

搜索 可用於此卡的下載 出現了一個 固件升級 可以安裝到NIC上以更新選項ROM,以便它支持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


1EFI驅動程序也可以位於EFI系統分區中或主板上的UEFI固件中。但是,對於PCI和PCIe卡,它通常在卡的固件上提供。


19
2018-06-16 05:13



此鏈接看起來至少是相關的 - federicofr.wordpress.com/2011/07/01/... - Faheem Mitha
我要去 bootutil64e -up=efi64 -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB。消息說:“更新EFI會刪除PXE功能。您要繼續嗎?”我不知道究竟是什麼意思。 - Faheem Mitha
您獲得的測量結果表明當前固件提供了PXE功能,並且正在被提供EFI功能的固件覆蓋。您可以將兩者都包括在內,這樣就不會丟失PXE;嘗試 -up=combo。否則,您的卡顯然一次只支持其中一個功能,而不是兩者兼而有之,並且您需要丟失PXE引導功能才能使卡在UEFI環境中啟動。 - bwDraco
難道UEFI無法替代PXE嗎?如同,UEFI可以從網絡加載啟動文件,如果它有網絡驅動程序。 - Zan Lynx
由於bwDraco的幫助,我的網卡現在具有UEFI固件。這是我必須採取的最後一步,以使UEFI啟動與Debian安裝程序一起使用。在我的Asus MB(SABERTOOTH 990FX R2.0)上,安全啟動具有操作系統設置。我將其從Windows切換到“其他操作系統”,安裝程序以UEFI模式啟動。在那之前,它只是默默地失敗了。 - Faheem Mitha


感謝@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

這是重新刷新的會話記錄。組合選項啟用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

2
2018-06-16 10:21



這是如何回答你的問題的?它似乎也不應該被編輯成問題的信息。如果您不對此進行排序,則此非答案將被刪除。 - DavidPostill♦
@DavidPostill這是一個需要做的事情的記錄,以獲得理想的結果。我還沒寫完。 - Faheem Mitha