Il computer si rifiuta di avviarsi in modalità UEFI: genera un errore sulla scheda di rete Intel Gigabit


9

Ho appena provato ad avviare il mio computer in modalità UEFI, ma ho ricevuto questo messaggio:

il sistema non riesce a trovare il driver UEFI per i dispositivi di rete aggiuntivi [0x10D38086]

Sto eseguendo Debian Linux, ma non sono sicuro che sia rilevante. Non sono sicuro che il mio sistema sia arrivato alla parte Linux.

Ecco l'output pertinente lspciper la mia scheda di rete

0a: 00.0 Controller Ethernet: Intel Corporation 82574L Gigabit Network Connection

La stessa scheda madre supporta UEFI, credo. Ecco l'output di dmidecodeper la scheda madre.

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

Questa domanda è il seguito di questa discussione in chat .
bwDraco,

Risposte:


19

Il problema qui è che il firmware della scheda di rete o la ROM opzionale non supporta UEFI.

Una scheda aggiuntiva può avere il proprio codice eseguibile da utilizzare nell'ambiente di preavvio. Il VBIOS su una scheda grafica, utilizzato per inizializzare la GPU e visualizzare al momento dell'avvio, è un esempio di tale ROM opzionale. Su una scheda di rete, in genere viene utilizzato per implementare PXE . UEFI in genere 1 richiede che il firmware della scheda contenga un driver appositamente realizzato, ma la scheda NIC è stata realizzata per sistemi BIOS legacy, quindi non contiene tali driver. Pertanto, non funzionerà su un sistema UEFI che non utilizza il Modulo di supporto compatibilità (il livello di compatibilità BIOS legacy) e deve essere aggiornato.

Scavando più a fondo, ho scoperto che il codice fornito nel messaggio di errore 0x10D38086è l'ID PCI della scheda di rete. 8086: 10D3 è l' adattatore desktop Intel Gigabit CT .

Una ricerca dei download disponibili per questa scheda ha rivelato un aggiornamento del firmware che può essere installato sulla scheda NIC per aggiornare la ROM opzionale in modo che supporti UEFI. Scarica ed estrai Preboot.tar.gze segui le istruzioni per aggiornare il firmware. Secondo le note di rilascio , l'opzione ROM include i driver UEFI, che dovrebbero correggere l'errore che stai riscontrando.

Nel tuo caso, esegui il comboflashing del firmware, che fornisce il supporto UEFI e PXE:

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

Il messaggio restituito dall'utilità indica semplicemente quale funzionalità fornisce il firmware esistente. Verrà sovrascritto durante il processo flash; E 'normale.

Dopo aver eseguito il flashing del firmware, riavviare il sistema in modalità UEFI nativa e vedere se funziona. In caso contrario, dovrai sostituire la scheda di rete.


Aggiornamento: hai indicato in chat che stai ricevendo questo errore durante il tentativo di eseguire il flashing del firmware:

Connection to QV driver failed - please reinstall it!

Sembra che il programma flash del firmware richieda il driver di debug iQV ( iqvlinux) per funzionare. Il driver può essere scaricato qui , ma dovrai compilare e caricare tu stesso il driver. Lo installscript, che è un download separato, è necessario per eseguire l'installazione; non basta estrarre il pacchetto driver ed eseguire make.


1 I driver EFI possono anche trovarsi nella partizione di sistema EFI o nel firmware UEFI sulla scheda madre stessa. Tuttavia, per le schede PCI e PCIe, viene generalmente fornito sul firmware della scheda.


1
Questo link sembra almeno marginalmente rilevante - federicofr.wordpress.com/2011/07/01/…
Faheem Mitha

Io vado con bootutil64e -up=efi64 -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB. Il messaggio dice: "L'aggiornamento di EFI rimuove la funzionalità PXE. Desideri continuare?" Non so esattamente cosa significhi.
Faheem Mitha,

La misura che stai ricevendo indica che il firmware corrente fornisce la funzionalità PXE e viene sovrascritto con un firmware che fornisce la funzionalità EFI. Potresti essere in grado di includerli entrambi in modo da non perdere PXE; provare -up=combo. Altrimenti, apparentemente la tua scheda supporta solo una di queste funzioni alla volta, non entrambe, e dovrai perdere la funzionalità di avvio PXE per avviare la scheda in un ambiente UEFI.
bwDraco,

UEFI non sostituisce PXE comunque? Come in, UEFI può caricare i file di avvio dalla rete, se ha un driver di rete.
Zan Lynx,

1
La mia scheda di rete ora ha un firmware UEFI grazie all'aiuto di bwDraco. Ecco l'ultimo passo che ho dovuto fare per far funzionare l'avvio UEFI con il programma di installazione Debian. Sul mio Asus MB (SABRETOOTH 990FX R2.0), Secure Boot ha un'impostazione del sistema operativo. L'ho passato da Windows a "Altro sistema operativo" e il programma di installazione si avvia in modalità UEFI. Prima di ciò, è fallito silenziosamente.
Faheem Mitha,

2

Grazie a @bwDraco per la risposta utile.

Sto aggiungendo alcuni dettagli qui su come appare questo processo in pratica.

Innanzitutto, ho scaricato e decompresso Preboot.tar.gz. Avvertenza: questo non viene decompresso nella propria directory, quindi creare prima una directory per esso.

Si noti che questa utility supporta numerosi sistemi operativi diversi. Tuttavia, descriverò solo come funziona su Linux, dal momento che non eseguo nient'altro. La documentazione principale per questa utility è DOCS/Adapter_User_Guide.pdf.

La versione Linux di questa utility sono due eseguibili binari, APPS/BootUtil/Linux_x64/bootutil64e(64 bit) e APPS/BootUtil/Linux32$ ls bootutil32(32 bit). E la documentazione per bootutil è APPS/BootUtil/Docs/bootutil.txt.

Poi ho copiato il file APPS/BootUtil/Linux_x64/bootutil64ea /usr/local/bin, anche se ho dovuto renderlo eseguibile prima. Quando l'ho eseguito, ho avuto

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

Questo ha quindi richiesto il download iqvlinux.tar.gz, che è un archivio di sorgenti del modulo del kernel Linux, da https://sourceforge.net/projects/e1000/files/iqvlinux/1.2.0.3/ .

Nota: c'è un rpm lì, ma provare a convertirlo in un deb sembra abbastanza senza speranza. E non sembra nemmeno contenere un file binario, solo file sorgente e intestazioni. Questo non è ovvio, ma è necessario anche lo installscript nella stessa directory. Quindi corri

sh install

o simile all'utente (eseguire uno strano script come root non è mai una buona idea), assicurandosi che iqvlinux.tar.gzsia allo stesso livello dello installscript.

Questo dà l'output

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’)

Copiando il modulo del kernel in posizione manualmente, l'errore scompare.

Prima di eseguire il reflash della scheda, questo è l'output di bootutil64eper la scheda:

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

Ecco la trascrizione della sessione del reflashing. L'opzione combo abilita sia la funzionalità PXE che UEFI. Si noti che si deve puntare alla posizione dell'immagine di avvio con l' FILEopzione:

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

In che modo questa è una risposta alla tua domanda? Inoltre, non sembrano essere informazioni che dovrebbero essere modificate nella domanda. Se non lo risolvi, questa non risposta verrà eliminata.
DavidPostill

@DavidPostill È una trascrizione di ciò che bisogna fare per ottenere il risultato desiderato. E non ho ancora finito di scriverlo.
Faheem Mitha,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.