La computadora se niega a arrancar en modo UEFI: da un error sobre la tarjeta de red Intel Gigabit

9

Solo intenté arrancar mi máquina en modo UEFI, pero recibí este mensaje:

el sistema no puede encontrar el controlador UEFI para los dispositivos de red adicionales [0x10D38086]

Estoy ejecutando Debian Linux, pero no estoy seguro de si eso es relevante. No estoy seguro de si mi sistema llegó a la parte de Linux.

Aquí está la salida relevante de lspcimi tarjeta de red

0a: 00.0 Controlador Ethernet: Intel Corporation 82574L Conexión de red Gigabit

La placa base en sí es compatible con UEFI, creo. Aquí está la salida de dmidecodepara la placa base.

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
fuente
Esta pregunta es un seguimiento de esta discusión de chat .
bwDraco

Respuestas:

19

El problema aquí es que el firmware de su adaptador de red, o la ROM opcional , no es compatible con UEFI.

Una tarjeta adicional puede tener su propio código ejecutable para su uso en el entorno previo al arranque. El VBIOS en una tarjeta gráfica, que se usa para inicializar la GPU y mostrarlo en el momento del arranque, es un ejemplo de dicha ROM opcional. En una tarjeta de red, esto normalmente se usa para implementar PXE . UEFI normalmente 1 requiere que el firmware de la tarjeta contenga un controlador especialmente diseñado, pero su NIC se creó para sistemas BIOS heredados, por lo que no contiene ningún controlador de este tipo. Como tal, no funcionará en un sistema UEFI que no utilice el Módulo de compatibilidad de compatibilidad (la capa de compatibilidad de BIOS heredada) y deba actualizarse.

Profundizando, descubrí que el código provisto en el mensaje de error 0x10D38086es la ID PCI de la tarjeta de red. 8086: 10D3 es el adaptador de escritorio Intel Gigabit CT .

Una búsqueda de las descargas disponibles para esta tarjeta arrojó una actualización de firmware que se puede instalar en la NIC para actualizar la opción ROM para que sea compatible con UEFI. Descargue y extraiga Preboot.tar.gzy siga las instrucciones para actualizar el firmware. Según las notas de la versión , la opción ROM incluye controladores UEFI, que deberían corregir el error que está recibiendo.

En su caso, actualice el combofirmware, que proporciona soporte UEFI y PXE:

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

El mensaje que devuelve la utilidad simplemente indica qué funcionalidad proporciona el firmware existente. Se sobrescribirá durante el proceso flash; esto es normal.

Después de actualizar el firmware, reinicie el sistema en modo UEFI nativo y vea si funciona. De lo contrario, deberá reemplazar el adaptador de red.


Actualización: ha indicado en el chat que está recibiendo este error al intentar actualizar el firmware:

Connection to QV driver failed - please reinstall it!

Parece que el programa flash de firmware requiere el controlador de depuración iQV ( iqvlinux) para funcionar. El controlador se puede descargar aquí , pero deberá compilarlo y cargarlo usted mismo. El installscript, que es una descarga por separado, es necesario para realizar la instalación; no solo extraiga el paquete del controlador y ejecútelo make.


1 Los controladores EFI también pueden estar en la partición del sistema EFI o en el firmware UEFI en la propia placa base. Sin embargo, para las tarjetas PCI y PCIe, generalmente se suministra en el firmware de la tarjeta.

bwDraco
fuente
1
Este enlace parece al menos marginalmente relevante - federicofr.wordpress.com/2011/07/01/…
Faheem Mitha
Voy con bootutil64e -up=efi64 -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB. El mensaje dice: "La actualización de EFI elimina la funcionalidad PXE. ¿Desea continuar?" No sé exactamente qué significa esto.
Faheem Mitha
La medición que está obteniendo indica que el firmware actual proporciona la funcionalidad PXE y se está sobrescribiendo con un firmware que proporciona la funcionalidad EFI. Es posible que pueda incluir ambos para no perder PXE; tratar -up=combo. De lo contrario, su tarjeta aparentemente solo admite una de estas funciones a la vez, no ambas, y deberá perder la función de arranque PXE para que la tarjeta arranque en un entorno UEFI.
bwDraco
¿UEFI no reemplaza PXE de todos modos? Como en, UEFI puede cargar archivos de arranque desde la red, si tiene un controlador de red.
Zan Lynx
1
Mi tarjeta de red ahora tiene firmware UEFI gracias a la ayuda de bwDraco. Aquí está el último paso que tuve que tomar para que el arranque UEFI funcione con el instalador de Debian. En mi Asus MB (SABERTOOTH 990FX R2.0), el arranque seguro tiene una configuración del sistema operativo. Lo cambié de Windows a "Otro sistema operativo", y el instalador arranca en modo UEFI. Antes de eso, simplemente falló en silencio.
Faheem Mitha
2

Gracias a @bwDraco por la útil respuesta.

Estoy agregando algunos detalles aquí sobre cómo se ve este proceso en la práctica.

Primero, descargué y desempaqué Preboot.tar.gz. Advertencia: esto no se descomprime en su propio directorio, así que cree primero un directorio para él.

Tenga en cuenta que esta utilidad es compatible con varios sistemas operativos diferentes. Sin embargo, solo describiré cómo funciona en Linux, ya que no ejecuto nada más. La documentación principal para esta utilidad es DOCS/Adapter_User_Guide.pdf.

La versión de Linux de esta utilidad son dos ejecutables binarios, APPS/BootUtil/Linux_x64/bootutil64e(64 bits) y APPS/BootUtil/Linux32$ ls bootutil32(32 bits). Y la documentación para bootutil es APPS/BootUtil/Docs/bootutil.txt.

Entonces el archivo copiado APPS/BootUtil/Linux_x64/bootutil64ea /usr/local/bin, si tuviera que hacerlo ejecutable en primer lugar. Cuando lo ejecuté, obtuve

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

Esto requirió la descarga iqvlinux.tar.gz, que es un archivo de fuentes del módulo del kernel de Linux, desde https://sourceforge.net/projects/e1000/files/iqvlinux/1.2.0.3/ .

Nota: hay un rpm allí, pero intentar convertirlo en un deb parece bastante inútil. Y ni siquiera parece contener un binario, solo archivos de origen y encabezados. Esto no es obvio, pero también se necesita el installscript en ese mismo directorio. Entonces corre

sh install

o similar al usuario (ejecutar un script extraño como root nunca es una buena idea), asegurándose de que iqvlinux.tar.gzesté en el mismo nivel que el installscript.

Esto da la salida

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

Copiar el módulo del núcleo en su lugar a mano hace que el error desaparezca.

Antes de volver a flashear la tarjeta, esta es la salida de bootutil64ela tarjeta:

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

Aquí está la transcripción de la sesión de la actualización. La opción combinada habilita las funciones PXE y UEFI. Tenga en cuenta que uno tiene que señalar la ubicación de la imagen de arranque con la FILEopción:

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
fuente
¿Cómo es esta una respuesta a tu pregunta? Tampoco parece ser información que deba editarse en la pregunta. Si no soluciona esto, esta falta de respuesta se eliminará.
DavidPostill
@DavidPostill Es una transcripción de lo que hay que hacer para obtener el resultado deseado. Y no he terminado de escribirlo.
Faheem Mitha