Komputer odmawia uruchomienia w trybie UEFI - wyświetla błąd dotyczący karty sieciowej Intel Gigabit

9

Właśnie próbowałem uruchomić komputer w trybie UEFI, ale dostałem ten komunikat:

system nie może znaleźć sterownika UEFI dla dodatkowych urządzeń sieciowych [0x10D38086]

Używam systemu Debian Linux, ale nie jestem pewien, czy to jest istotne. Nie jestem pewien, czy mój system w ogóle przeszedł do części Linux.

Oto odpowiednie dane wyjściowe lspcidla mojej karty sieciowej

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

Myślę, że sama płyta główna obsługuje UEFI. Oto dane wyjściowe dmidecodedla płyty głównej.

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
źródło
To pytanie jest kontynuacją dyskusji na czacie .
bwDraco

Odpowiedzi:

19

Problem polega na tym, że oprogramowanie układowe karty sieciowej lub opcjonalna pamięć ROM nie obsługuje interfejsu UEFI.

Karta dodatkowa może mieć własny kod wykonywalny do użytku w środowisku przed uruchomieniem. VBIOS na karcie graficznej, używany do inicjalizacji GPU i wyświetlania w czasie uruchamiania, jest przykładem takiej opcji ROM. Na karcie sieciowej jest to zwykle używane do implementacji PXE . UEFI zazwyczaj 1 wymaga, aby oprogramowanie układowe karty zawierało specjalnie wykonany sterownik, ale twoja karta sieciowa została stworzona dla starszych systemów BIOS, więc nie zawiera żadnego takiego sterownika. W związku z tym nie będzie działać w systemie UEFI, który nie korzysta z modułu obsługi zgodności (starszej warstwy zgodności BIOS) i wymaga aktualizacji.

Wnikając głębiej, odkryłem, że kod podany w komunikacie o błędzie 0x10D38086jest identyfikatorem PCI karty sieciowej. 8086: 10D3 to Intel Gigabit CT Desktop Adapter .

Przeszukanie tych plików do pobrania dla tej karty zwrócił się do aktualizacji oprogramowania układowego , które mogą być zainstalowane na karcie sieciowej, aby zaktualizować Option ROM tak, że obsługuje UEFI. Pobierz i rozpakuj Preboot.tar.gzi postępuj zgodnie z instrukcjami, aby zaktualizować oprogramowanie układowe. Zgodnie z informacjami o wersji opcja ROM zawiera sterowniki UEFI, które powinny naprawić występujący błąd.

W twoim przypadku sflashuj combooprogramowanie, które zapewnia obsługę UEFI i PXE:

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

Komunikat, który zwraca narzędzie, wskazuje po prostu, jakie funkcje zapewnia istniejące oprogramowanie układowe. Zostanie nadpisany podczas procesu flashowania; to normalne.

Po sflashowaniu oprogramowania układowego uruchom ponownie system w natywnym trybie UEFI i sprawdź, czy działa. Jeśli nie, musisz wymienić kartę sieciową.


Aktualizacja: Na czacie wskazałeś , że pojawia się ten błąd podczas próby flashowania oprogramowania układowego:

Connection to QV driver failed - please reinstall it!

Wygląda na to, że program flash oprogramowania układowego wymaga do działania sterownika debugowania iQV ( iqvlinux). Sterownik można pobrać tutaj , ale musisz go samodzielnie skompilować i załadować. installSkrypt, który jest do pobrania osobno, jest konieczne do przeprowadzenia instalacji; nie tylko rozpakuj pakiet sterowników i uruchom make.


1 Sterowniki EFI mogą znajdować się także w partycji systemowej EFI lub w oprogramowaniu układowym UEFI na płycie głównej. Jednak w przypadku kart PCI i PCIe zwykle jest dostarczany z oprogramowaniem układowym karty.

bwDraco
źródło
1
Ten link wygląda przynajmniej na nieznacznie istotny - federicofr.wordpress.com/2011/07/01/…
Faheem Mitha
Jadę z bootutil64e -up=efi64 -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB. Komunikat brzmi: „Aktualizacja EFI usuwa funkcjonalność PXE. Czy chcesz kontynuować?” Nie wiem dokładnie, co to znaczy.
Faheem Mitha
Otrzymany pomiar wskazuje, że bieżące oprogramowanie układowe zapewnia funkcjonalność PXE i jest zastępowane oprogramowaniem układowym zapewniającym funkcjonalność EFI. Możesz uwzględnić oba te elementy, aby nie stracić PXE; spróbuj -up=combo. W przeciwnym razie twoja karta najwyraźniej obsługuje tylko jedną z tych funkcji jednocześnie, a nie obie, i musisz utracić funkcję uruchamiania PXE, aby karta mogła się uruchomić w środowisku UEFI.
bwDraco
Czy UEFI i tak nie zastępuje PXE? Podobnie jak w UEFI może ładować pliki rozruchowe z sieci, jeśli ma sterownik sieciowy.
Zan Lynx
1
Moja karta sieciowa ma teraz oprogramowanie układowe UEFI dzięki pomocy bwDraco. Oto ostatni krok, który musiałem podjąć, aby uruchomić rozruch UEFI z instalatorem Debiana. W moim Asus MB (SABERTOOTH 990FX R2.0) Bezpieczny rozruch ma ustawienie systemu operacyjnego. Zmieniłem go z Windows na „Inny system operacyjny”, a instalator uruchamia się w trybie UEFI. Wcześniej po prostu po cichu zawiodło.
Faheem Mitha
2

Dzięki @bwDraco za pomocną odpowiedź.

Dodam tutaj kilka szczegółów na temat tego, jak ten proces wygląda w praktyce.

Najpierw pobrałem i rozpakowałem Preboot.tar.gz. Ostrzeżenie - to nie rozpakowuje się do własnego katalogu, więc najpierw stwórz dla niego katalog.

Pamiętaj, że to narzędzie obsługuje wiele różnych systemów operacyjnych. Opiszę jednak tylko, jak to działa w systemie Linux, ponieważ nie uruchamiam nic innego. Główna dokumentacja tego narzędzia to DOCS/Adapter_User_Guide.pdf.

Wersja tego narzędzia dla systemu Linux to dwa binarne pliki wykonywalne APPS/BootUtil/Linux_x64/bootutil64e(64-bitowe) i APPS/BootUtil/Linux32$ ls bootutil32(32-bitowe). A dokumentacja bootutil to APPS/BootUtil/Docs/bootutil.txt.

I potem skopiowany plik APPS/BootUtil/Linux_x64/bootutil64edo /usr/local/bin, choć musiałem uczynić go wykonywalnym pierwszy. Kiedy go uruchomiłem, zrozumiałem

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

Wymagało to następnie pobrania iqvlinux.tar.gz, które jest archiwum źródeł modułów jądra systemu Linux, z https://sourceforge.net/projects/e1000/files/iqvlinux/1.2.0.3/ .

Uwaga: tam jest rpm, ale próba konwersji go na deb wygląda na całkiem beznadziejną. I nie wydaje się nawet zawierać pliku binarnego, tylko pliki źródłowe i nagłówki. Nie jest to oczywiste, ale potrzebny jest również installskrypt w tym samym katalogu. Następnie uruchomić

sh install

lub podobny do użytkownika (uruchamianie dziwnego skryptu jako root nigdy nie jest dobrym pomysłem), upewniając się, że iqvlinux.tar.gzjest na tym samym poziomie co installskrypt.

Daje to wynik

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

Ręczne skopiowanie modułu jądra na miejsce powoduje zniknięcie błędu.

Przed ponownym flashowaniem karty jest to wynik działania bootutil64ekarty:

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

Oto transkrypcja sesji reflashingu. Opcja kombi włącza funkcje PXE i UEFI. Zauważ, że należy wskazać lokalizację obrazu rozruchowego z FILEopcją:

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
źródło
Jak to jest odpowiedź na twoje pytanie? Nie wydaje się też, aby były to informacje, które należy edytować w pytaniu. Jeśli tego nie rozwiążesz, brak odpowiedzi zostanie usunięty.
DavidPostill
@DavidPostill Jest to zapis tego, co należy zrobić, aby uzyskać pożądany rezultat. I nie skończyłem pisać.
Faheem Mitha