Komputer menolak untuk boot dalam mode UEFI - memberikan kesalahan tentang kartu jaringan Intel Gigabit

9

Saya baru saja mencoba mem-boot mesin saya dalam mode UEFI, tetapi mendapat pesan ini:

sistem tidak dapat menemukan driver UEFI untuk perangkat jaringan tambahan [0x10D38086]

Saya menjalankan Debian Linux, tetapi saya tidak yakin apakah itu relevan. Saya tidak yakin apakah sistem saya bahkan sampai ke bagian Linux.

Ini adalah output yang relevan lspciuntuk kartu jaringan saya

0a: 00.0 Pengontrol Ethernet: Koneksi Jaringan Gigabit Intel Corporation 82574L

Motherboard itu sendiri mendukung UEFI, saya pikir. Ini adalah output dmidecodeuntuk motherboard.

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
sumber
Pertanyaan ini merupakan tindak lanjut dari diskusi obrolan ini .
bwDraco

Jawaban:

19

Masalahnya di sini adalah firmware adapter jaringan Anda, atau ROM opsi , tidak mendukung UEFI.

Kartu tambahan dapat memiliki kode yang dapat dieksekusi sendiri untuk digunakan di lingkungan preboot. VBIOS pada kartu grafis, yang digunakan untuk menginisialisasi GPU dan ditampilkan pada saat boot, adalah contoh dari ROM opsi tersebut. Pada kartu jaringan, ini biasanya digunakan untuk mengimplementasikan PXE . UEFI biasanya 1 mengharuskan firmware kartu berisi driver yang dibuat khusus, tetapi NIC Anda dibuat untuk sistem BIOS lama, sehingga tidak mengandung driver seperti itu. Dengan demikian, ini tidak akan berfungsi pada sistem UEFI yang tidak menggunakan Modul Dukungan Kompatibilitas (lapisan kompatibilitas BIOS lama) dan perlu diperbarui.

Menggali lebih dalam, saya menemukan bahwa kode yang disediakan dalam pesan kesalahan 0x10D38086,, adalah PCI ID kartu jaringan. 8086: 10D3 adalah Intel Gigabit CT Desktop Adapter .

Pencarian unduhan yang tersedia untuk kartu ini menghasilkan pembaruan firmware yang dapat diinstal ke NIC untuk memperbarui ROM opsi sehingga mendukung UEFI. Unduh dan ekstrak Preboot.tar.gzdan ikuti instruksi untuk memperbarui firmware. Per catatan rilis , ROM opsi termasuk driver UEFI, yang seharusnya memperbaiki kesalahan yang Anda dapatkan.

Dalam kasus Anda, flash combofirmware, yang menyediakan dukungan UEFI dan PXE:

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

Pesan yang dikembalikan utilitas hanya menunjukkan fungsionalitas apa yang disediakan firmware yang ada. Ini akan ditimpa selama proses flash; ini normal.

Setelah Anda menginstal firmware, reboot sistem dalam mode UEFI asli dan lihat apakah itu berfungsi. Jika tidak, Anda harus mengganti adaptor jaringan.


Pembaruan: Anda telah mengindikasikan pada obrolan bahwa Anda mendapatkan kesalahan ini ketika mencoba mem-flash firmware:

Connection to QV driver failed - please reinstall it!

Sepertinya program flash firmware mengharuskan driver debug iQV ( iqvlinux) berfungsi. Driver dapat diunduh di sini , tetapi Anda harus mengkompilasi dan memuat driver itu sendiri. The installScript, yang merupakan sebuah download yang terpisah, perlu melakukan instalasi; jangan hanya mengekstrak paket driver dan jalankan make.


1 driver EFI juga dapat berada di Partisi Sistem EFI atau dalam firmware UEFI pada motherboard itu sendiri. Namun, untuk kartu PCI dan PCIe, biasanya disediakan pada firmware kartu.

bwDraco
sumber
1
Tautan ini terlihat paling tidak relevan - federicofr.wordpress.com/2011/07/01/...
Faheem Mitha
Saya ikut bootutil64e -up=efi64 -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB. Pesan itu mengatakan: "Memperbarui EFI menghapus fungsionalitas PXE. Apakah Anda ingin melanjutkan?" Saya tidak tahu persis apa artinya ini.
Faheem Mitha
Ukuran yang Anda dapatkan menunjukkan bahwa firmware saat ini menyediakan fungsionalitas PXE, dan sedang ditimpa dengan firmware yang menyediakan fungsionalitas EFI. Anda mungkin bisa memasukkan keduanya sehingga Anda tidak kehilangan PXE; coba -up=combo. Jika tidak, kartu Anda tampaknya hanya mendukung salah satu dari fungsi-fungsi ini pada satu waktu, bukan keduanya, dan Anda harus kehilangan fitur boot PXE untuk mendapatkan kartu untuk boot di lingkungan UEFI.
bwDraco
Bukankah UEFI menggantikan PXE? Seperti pada, UEFI dapat memuat file boot dari jaringan, jika memiliki driver jaringan.
Zan Lynx
1
Kartu jaringan saya sekarang memiliki firmware UEFI berkat bantuan bwDraco. Ini adalah langkah terakhir yang harus saya ambil untuk membuat boot UEFI untuk bekerja dengan installer Debian. Pada Asus MB saya (SABERTOOTH 990FX R2.0), Secure Boot memiliki pengaturan OS. Saya beralih dari Windows ke "Other OS", dan installer menginstal dalam mode UEFI. Sebelum itu, hanya gagal diam-diam.
Faheem Mitha
2

Terima kasih kepada @bwDraco untuk jawaban yang bermanfaat.

Saya menambahkan beberapa detail di sini tentang seperti apa proses ini dalam praktiknya.

Pertama, saya mengunduh dan membongkar Preboot.tar.gz. Peringatan - ini tidak membongkar ke direktori sendiri, jadi buatlah direktori untuk itu terlebih dahulu.

Perhatikan bahwa utilitas ini mendukung sejumlah sistem operasi yang berbeda. Namun, saya hanya akan menjelaskan cara kerjanya di Linux, karena saya tidak menjalankan hal lain. Dokumentasi utama untuk utilitas ini adalah DOCS/Adapter_User_Guide.pdf.

Versi Linux dari utilitas ini adalah dua executable biner, APPS/BootUtil/Linux_x64/bootutil64e(64 bit), dan APPS/BootUtil/Linux32$ ls bootutil32(32 bit). Dan dokumentasi untuk bootutil adalah APPS/BootUtil/Docs/bootutil.txt.

Saya kemudian menyalin file APPS/BootUtil/Linux_x64/bootutil64eke /usr/local/bin, meskipun saya harus membuatnya dieksekusi terlebih dahulu. Ketika saya menjalankannya, saya mendapatkannya

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

Ini kemudian diperlukan pengunduhan iqvlinux.tar.gz, yang merupakan arsip sumber modul kernel Linux, dari https://sourceforge.net/projects/e1000/files/iqvlinux/1.2.0.3/ .

Catatan: ada satu rpm di sana, tetapi mencoba mengubahnya menjadi deb terlihat tidak ada harapan. Dan sepertinya tidak mengandung biner, hanya sumber file dan header. Ini tidak jelas, tetapi orang juga membutuhkan installskrip di direktori yang sama. Lalu lari

sh install

atau mirip dengan pengguna (menjalankan skrip aneh sebagai root tidak pernah merupakan ide yang baik), memastikan bahwa ia iqvlinux.tar.gzberada pada level yang sama dengan installskrip.

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

Menyalin modul kernel ke tempatnya dengan tangan membuat kesalahan hilang.

Sebelum memencet kartu, ini adalah output bootutil64euntuk kartu:

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

Inilah transkrip sesi reflashing. Opsi kombo memungkinkan fungsionalitas PXE dan UEFI. Perhatikan bahwa kita harus menunjuk ke lokasi gambar boot dengan FILEopsi:

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
sumber
Bagaimana ini jawaban untuk pertanyaan Anda? Tampaknya juga bukan informasi yang harus diedit menjadi pertanyaan. Jika Anda tidak menyelesaikan masalah ini, jawaban ini akan dihapus.
DavidPostill
@DavidPostill Ini adalah transkrip dari apa yang perlu dilakukan seseorang untuk mendapatkan hasil yang diinginkan. Dan saya belum selesai menulisnya.
Faheem Mitha