L'ordinateur refuse de démarrer en mode UEFI - donne une erreur sur la carte réseau Intel Gigabit

9

J'ai juste essayé de démarrer ma machine en mode UEFI, mais j'ai reçu ce message:

le système ne peut pas trouver le pilote UEFI pour les périphériques réseau supplémentaires [0x10D38086]

J'utilise Debian Linux, mais je ne sais pas si cela est pertinent. Je ne sais pas si mon système a même atteint la partie Linux.

Voici la sortie pertinente de lspcima carte réseau

Contrôleur Ethernet 0a: 00.0: connexion réseau Intel Corporation 82574L Gigabit

La carte mère elle-même prend en charge l'UEFI, je pense. Voici la sortie de dmidecodela carte mère.

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
Faheem Mitha
la source
Cette question fait suite à cette discussion de clavardage .
bwDraco

Réponses:

19

Le problème ici est que le micrologiciel ou la ROM optionnelle de votre carte réseau ne prend pas en charge UEFI.

Une carte d'extension peut avoir son propre code exécutable à utiliser dans l'environnement de pré-démarrage. Le VBIOS sur une carte graphique, utilisé pour initialiser le GPU et afficher au démarrage, est un exemple d'une telle ROM optionnelle. Sur une carte réseau, cela est généralement utilisé pour implémenter PXE . UEFI 1 nécessite généralement que le micrologiciel de la carte contienne un pilote spécialement conçu, mais votre carte réseau a été conçue pour les systèmes BIOS hérités, de sorte qu'elle ne contient aucun pilote de ce type. En tant que tel, il ne fonctionnera pas sur un système UEFI qui n'utilise pas le module de support de compatibilité (la couche de compatibilité BIOS héritée) et doit être mis à jour.

En creusant plus profondément, j'ai trouvé que le code fourni dans le message d'erreur 0x10D38086est l'identifiant PCI de la carte réseau. 8086: 10D3 est l' adaptateur de bureau Intel Gigabit CT .

Une recherche des téléchargements disponibles pour cette carte a révélé une mise à jour du micrologiciel qui peut être installée sur la carte réseau pour mettre à jour la ROM optionnelle afin qu'elle prenne en charge UEFI. Téléchargez et extrayez Preboot.tar.gzet suivez les instructions pour mettre à jour le firmware. Selon les notes de publication , l'option ROM comprend des pilotes UEFI, qui devraient corriger l'erreur que vous obtenez.

Dans votre cas, flashez le combofirmware, qui prend en charge UEFI et PXE:

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

Le message renvoyé par l'utilitaire indique simplement les fonctionnalités fournies par le micrologiciel existant. Il sera écrasé pendant le processus flash; c'est normal.

Après avoir flashé le firmware, redémarrez le système en mode natif UEFI et voyez si cela fonctionne. Sinon, vous devrez remplacer la carte réseau.


Mise à jour: Vous avez indiqué sur le chat que vous obtenez cette erreur en essayant de flasher le firmware:

Connection to QV driver failed - please reinstall it!

Il semble que le programme flash du micrologiciel nécessite le pilote de débogage iQV ( iqvlinux) pour fonctionner. Le pilote peut être téléchargé ici , mais vous devrez compiler et charger le pilote vous-même. Le installscript, qui est un téléchargement distinct, est nécessaire pour effectuer l'installation; ne vous contentez pas d'extraire le package de pilotes et de l'exécuter make.


1 Les pilotes EFI peuvent également se trouver dans la partition système EFI ou dans le micrologiciel UEFI sur la carte mère elle-même. Cependant, pour les cartes PCI et PCIe, il est généralement fourni sur le micrologiciel de la carte.

bwDraco
la source
1
Ce lien semble au moins marginalement pertinent - federicofr.wordpress.com/2011/07/01/…
Faheem Mitha
Je pars avec bootutil64e -up=efi64 -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB. Le message dit: "La mise à jour d'EFI supprime la fonctionnalité PXE. Voulez-vous continuer?" Je ne sais pas exactement ce que cela signifie.
Faheem Mitha
La mesure que vous obtenez indique que le micrologiciel actuel fournit des fonctionnalités PXE et est remplacé par un micrologiciel qui fournit des fonctionnalités EFI. Vous pouvez être en mesure d'inclure les deux afin de ne pas perdre PXE; essayez -up=combo. Sinon, votre carte ne prend en charge qu'une seule de ces fonctions à la fois, pas les deux, et vous devrez perdre la fonction de démarrage PXE pour que la carte démarre dans un environnement UEFI.
bwDraco
UEFI ne remplace-t-il pas PXE de toute façon? Comme dans, UEFI peut charger des fichiers de démarrage à partir du réseau, s'il dispose d'un pilote réseau.
Zan Lynx
1
Ma carte réseau dispose désormais d'un firmware UEFI grâce à l'aide de bwDraco. Voici la dernière étape que j'ai dû franchir pour que le démarrage UEFI fonctionne avec le programme d'installation Debian. Sur mon Asus MB (SABERTOOTH 990FX R2.0), Secure Boot a un paramètre de système d'exploitation. Je l'ai basculé de Windows vers "Autre OS" et le programme d'installation démarre en mode UEFI. Avant cela, il a simplement échoué en silence.
Faheem Mitha
2

Merci à @bwDraco pour la réponse utile.

J'ajoute ici quelques détails sur ce à quoi ressemble ce processus dans la pratique.

Tout d'abord, j'ai téléchargé et déballé Preboot.tar.gz. Attention - cela ne décompresse pas dans son propre répertoire, donc créez d'abord un répertoire pour lui.

Notez que cet utilitaire prend en charge un certain nombre de systèmes d'exploitation différents. Cependant, je ne décrirai que comment cela fonctionne sous Linux, car je n'exécute rien d'autre. La documentation principale de cet utilitaire est DOCS/Adapter_User_Guide.pdf.

La version Linux de cet utilitaire est constituée de deux exécutables binaires, APPS/BootUtil/Linux_x64/bootutil64e(64 bits) et APPS/BootUtil/Linux32$ ls bootutil32(32 bits). Et la documentation de bootutil est APPS/BootUtil/Docs/bootutil.txt.

J'ai ensuite copié le fichier APPS/BootUtil/Linux_x64/bootutil64edans /usr/local/bin, bien que je devais d'abord le rendre exécutable. Quand je l'ai couru, j'ai

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

Cela a ensuite nécessité un téléchargement iqvlinux.tar.gz, qui est une archive des sources du module du noyau Linux, depuis https://sourceforge.net/projects/e1000/files/iqvlinux/1.2.0.3/ .

Remarque: il y a un tr / min, mais essayer de le convertir en deb semble assez désespéré. Et il ne semble même pas contenir un binaire, juste des fichiers source et des en-têtes. Ce n'est pas évident, mais il faut aussi le installscript dans ce même répertoire. Exécutez ensuite

sh install

ou similaire en tant qu'utilisateur (l'exécution d'un script étrange en tant que root n'est jamais une bonne idée), en veillant à ce qu'il iqvlinux.tar.gzsoit au même niveau que le installscript.

Cela donne la sortie

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

La copie manuelle du module du noyau fait disparaître l'erreur.

Avant de reflasher la carte, voici la sortie de bootutil64ela carte:

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

Voici la transcription de la session du reflashing. L'option combinée active les fonctionnalités PXE et UEFI. Notez que l'on doit pointer vers l'emplacement de l'image de démarrage avec l' FILEoption:

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
Faheem Mitha
la source
Comment est-ce une réponse à votre question? Cela ne semble pas non plus être des informations qui devraient être modifiées dans la question. Si vous ne triez pas cela, cette non-réponse sera supprimée.
DavidPostill
@DavidPostill C'est une transcription de ce que l'on doit faire pour obtenir le résultat souhaité. Et je n'ai pas fini de l'écrire.
Faheem Mitha