Computador se recusa a inicializar no modo UEFI - erro na placa de rede Intel Gigabit

9

Eu apenas tentei inicializar minha máquina no modo UEFI, mas recebi esta mensagem:

o sistema não pode encontrar o driver UEFI para os dispositivos de rede complementares [0x10D38086]

Estou executando o Debian Linux, mas não tenho certeza se isso é relevante. Não tenho certeza se meu sistema chegou à parte do Linux.

Aqui está a saída relevante lspcipara a minha placa de rede

0a: 00.0 Controlador Ethernet: Conexão de rede Gigabit Intel Corporation 82574L

A própria placa-mãe suporta UEFI, eu acho. Aqui está a saída da dmidecodeplaca-mãe.

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
fonte
Esta pergunta é um acompanhamento desta discussão no bate-papo .
bwDraco

Respostas:

19

O problema aqui é que o firmware do seu adaptador de rede, ou a ROM opcional , não suporta UEFI.

Uma placa de expansão pode ter seu próprio código executável para uso no ambiente de pré-inicialização. O VBIOS em uma placa de vídeo, usado para inicializar a GPU e exibir no momento da inicialização, é um exemplo dessa ROM opcional. Em uma placa de rede, isso geralmente é usado para implementar o PXE . O UEFI normalmente 1 exige que o firmware da placa contenha um driver feito especialmente, mas sua NIC foi feita para sistemas BIOS herdados, portanto, não contém nenhum driver. Como tal, ele não funcionará em um sistema UEFI que não use o Módulo de Suporte de Compatibilidade (a camada de compatibilidade do BIOS herdada) e precisa ser atualizado.

Indo mais fundo, descobri que o código fornecido na mensagem de erro 0x10D38086é o ID PCI da placa de rede. 8086: 10D3 é o adaptador de desktop Intel Gigabit CT .

Uma pesquisa dos downloads disponíveis para esta placa resultou em uma atualização de firmware que pode ser instalada na NIC para atualizar a opção ROM para suportar a UEFI. Baixe e extraia Preboot.tar.gze siga as instruções para atualizar o firmware. Pelas notas de versão , a opção ROM inclui drivers UEFI, que devem corrigir o erro que você está recebendo.

No seu caso, atualize o combofirmware, que oferece suporte a UEFI e PXE:

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

A mensagem que o utilitário retorna simplesmente indica qual funcionalidade o firmware existente fornece. Será substituído durante o processo de flash; isto é normal.

Depois de atualizar o firmware, reinicie o sistema no modo UEFI nativo e verifique se ele funciona. Caso contrário, será necessário substituir o adaptador de rede.


Atualização: você indicou no bate - papo que está recebendo esse erro ao tentar atualizar o firmware:

Connection to QV driver failed - please reinstall it!

Parece que o programa flash do firmware requer que o driver de depuração do iQV ( iqvlinux) funcione. O driver pode ser baixado aqui , mas você precisará compilar e carregar o driver. O installscript, que é um download separado, é necessário para executar a instalação; não apenas extraia o pacote do driver e execute make.


1 Os drivers EFI também podem estar na partição do sistema EFI ou no firmware UEFI na própria placa-mãe. No entanto, para placas PCI e PCIe, geralmente é fornecido no firmware da placa.

bwDraco
fonte
11
Este link parece, pelo menos marginalmente relevantes - federicofr.wordpress.com/2011/07/01/...
Faheem Mitha
Eu vou com bootutil64e -up=efi64 -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB. A mensagem diz: "A atualização do EFI remove a funcionalidade PXE. Deseja continuar?" Não sei exatamente o que isso significa.
Faheem Mitha
A medida que você está recebendo indica que o firmware atual fornece a funcionalidade PXE e está sendo substituído por um firmware que fornece a funcionalidade EFI. Você pode incluir os dois para não perder o PXE; tente -up=combo. Caso contrário, sua placa aparentemente suporta apenas uma dessas funções por vez, não as duas, e você precisará perder o recurso de inicialização PXE para fazer com que a placa inicialize em um ambiente UEFI.
bwDraco
UEFI não substitui o PXE? Como em, UEFI pode carregar arquivos de inicialização da rede, se tiver um driver de rede.
Zan Lynx
11
Minha placa de rede agora possui firmware UEFI graças à ajuda do bwDraco. Aqui está o passo final que tive que fazer para que a inicialização do UEFI funcionasse com o instalador da Debian. No meu MB da Asus (SABERTOOTH 990FX R2.0), a Inicialização segura tem uma configuração de SO. Mudei do Windows para "Other OS" e o instalador é inicializado no modo UEFI. Antes disso, apenas falhou silenciosamente.
Faheem Mitha
2

Obrigado a @bwDraco pela resposta útil.

Estou adicionando alguns detalhes aqui sobre como esse processo se parece na prática.

Primeiro, baixei e descompactei Preboot.tar.gz. Aviso - isso não é descompactado em seu próprio diretório, então crie um diretório para ele primeiro.

Observe que este utilitário suporta vários sistemas operacionais diferentes. No entanto, descreverei apenas como ele funciona no Linux, pois não executo mais nada. A documentação principal deste utilitário é DOCS/Adapter_User_Guide.pdf.

A versão Linux deste utilitário são dois executáveis ​​binários APPS/BootUtil/Linux_x64/bootutil64e(64 bits) e APPS/BootUtil/Linux32$ ls bootutil32(32 bits). E a documentação para o bootutil é APPS/BootUtil/Docs/bootutil.txt.

Copiei o arquivo APPS/BootUtil/Linux_x64/bootutil64epara /usr/local/bin, embora eu tivesse que torná-lo executável primeiro. Quando eu corri, eu consegui

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

Isso exigiu o download iqvlinux.tar.gz, que é um arquivo de fontes do módulo do kernel Linux, em https://sourceforge.net/projects/e1000/files/iqvlinux/1.2.0.3/ .

Nota: existe um rpm lá, mas tentar convertê-lo em um deb parece bastante inútil. E nem parece conter um binário, apenas arquivos de origem e cabeçalhos. Isso não é óbvio, mas também é necessário o installscript no mesmo diretório. Então corra

sh install

ou semelhante ao usuário (executar um script estranho como root nunca é uma boa ideia), certificando-se de que iqvlinux.tar.gzesteja no mesmo nível do installscript.

Isso fornece a saída

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 o módulo do kernel no lugar manualmente faz com que o erro desapareça.

Antes de atualizar novamente o cartão, esta é a saída do bootutil64ecartão:

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

Aqui está a transcrição da sessão do reflash. A opção de combinação habilita a funcionalidade PXE e UEFI. Observe que é preciso apontar para o local da imagem de inicialização com a FILEopção:

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
fonte
Como isso é uma resposta para sua pergunta? Também não parece ser uma informação que deva ser editada na pergunta. Se você não resolver isso, essa não resposta será excluída.
DavidPostill
@DavidPostill É uma transcrição do que é preciso fazer para obter o resultado desejado. E ainda não terminei de escrever.
Faheem Mitha