Комп'ютер відмовляється завантажуватися в режимі UEFI - дає помилку щодо мережевої карти Intel Gigabit


9

Я просто намагався завантажувати свою машину в режимі UEFI, але отримав це повідомлення:

система не може знайти драйвер UEFI для мережевих пристроїв додатку [0x10D38086]

Я запускаю Debian Linux, але не впевнений, що це актуально. Я не впевнений, чи моя система навіть потрапила до частини Linux.

Ось відповідний висновок lspciдля моєї мережевої карти

0a: 00.0 Контролер Ethernet: мережеве підключення Intel Corporation 82574L Gigabit

Сама материнська плата підтримує UEFI. Ось вихід dmidecodeдля материнської плати.

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

Це питання є наслідком цього обговорення в чаті .
bwDraco

Відповіді:


19

Проблема тут полягає в тому, що мікропрограмне забезпечення вашого мережного адаптера або опція ROM не підтримує UEFI.

Картка додатка може мати власний виконуваний код для використання в середовищі передзавантаження. VBIOS на графічній карті, що використовується для ініціалізації графічного процесора та відображення під час завантаження, є прикладом такої опції ПЗУ. На мережевій карті це зазвичай використовується для впровадження PXE . Зазвичай UEFI 1 вимагає, щоб мікропрограмне забезпечення картки містило спеціально виготовлений драйвер, але ваш NIC був створений для застарілих систем BIOS, тому він не містить такого драйвера. Таким чином, він не працюватиме в системі UEFI, яка не використовує модуль підтримки сумісності (застарілий рівень сумісності BIOS) і потребує оновлення.

Копаючи глибше, я виявив, що код, вказаний у повідомленні про помилку 0x10D38086, - це ідентифікатор PCI мережевої карти. 8086: 10D3 - це настільний адаптер Intel Gigabit CT .

Пошук з завантаження , доступною для даної карти з'явився оновлення прошивки , яке може бути встановлено на NIC для поновлення додаткового ПЗУ так , що він підтримує UEFI. Завантажте та витягніть Preboot.tar.gzі дотримуйтесь інструкцій для оновлення мікропрограмного забезпечення. Відповідно до приміток до випуску , опція ROM включає драйвери UEFI, які повинні виправити помилку, яку ви отримуєте.

У вашому випадку прошийте comboпрошивку, яка забезпечує підтримку UEFI та PXE:

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

Повідомлення, яке утиліта повертає, просто вказує, яку функціональність надає наявна прошивка. Він буде перезаписаний під час спалаху; це нормально.

Після того, як ви прошивали прошивку, перезавантажте систему в рідному режимі UEFI і перевірте, чи працює вона. Якщо ні, вам потрібно буде замінити мережевий адаптер.


Оновлення: Ви вказали в чаті, що ви отримуєте цю помилку під час спроби прошивки прошивки:

Connection to QV driver failed - please reinstall it!

Схоже, що для роботи флеш-програми потрібен драйвер налагодження iQV ( iqvlinux). Драйвер можна скачати тут , але ви повинні скомпілювати і завантажити драйвер самостійно. installСкрипт, який є окремою завантаженням, необхідно виконати установку; не просто витягайте пакет драйверів і не запускайте make.


1 Драйвери EFI також можуть бути в розділі системи EFI або в програмному забезпеченні UEFI на самій материнській платі. Однак для PCI та PCIe карт, як правило, вони поставляються на прошивці карти.


1
Це посилання виглядає принаймні незначно актуальним - federicofr.wordpress.com/2011/07/01/…
Faheem Mitha

Я йду з bootutil64e -up=efi64 -all -FILE=/usr/local/src/Intel_Network_Card_Boot_Utility/APPS/BootUtil/BootIMG.FLB. У повідомленні йдеться: "Оновлення EFI видаляє функціональність PXE. Хочете продовжити?" Я точно не знаю, що це означає.
Faheem Mitha

Вимірюваний показник вказує на те, що поточна прошивка забезпечує функціональність PXE і перезаписується програмним забезпеченням, що забезпечує функціональність EFI. Ви можете мати можливість включити обидва, щоб не втратити PXE; спробуйте -up=combo. В іншому випадку ваша картка, мабуть, підтримує лише одну з цих функцій одночасно, а не обидву, і вам потрібно буде втратити функцію завантаження PXE, щоб змусити карту завантажуватися в середовищі UEFI.
bwDraco

Чи взагалі UEFI не замінює PXE? Як і в, UEFI може завантажувати завантажувальні файли з мережі, якщо у неї є мережевий драйвер.
Zan Lynx

1
Зараз у моєї мережевої карти є програмне забезпечення UEFI завдяки допомозі bwDraco. Ось останній крок, який я повинен був зробити, щоб завантажувати UEFI для роботи з інсталятором Debian. У моєму Asus MB (SABERTOOTH 990FX R2.0) Secure Boot має налаштування ОС. Я переключив його з Windows на "Інша ОС", а інсталятор завантажився в режимі UEFI. До цього це просто мовчки не вийшло.
Faheem Mitha

2

Дякуємо @bwDraco за корисну відповідь.

Я додаю тут кілька деталей про те, як виглядає цей процес на практиці.

По-перше, я завантажив і розпакував Preboot.tar.gz. Попередження - це не розпаковується у власний каталог, тому спершу створіть для нього каталог.

Зауважте, що ця утиліта підтримує ряд різних операційних систем. Однак я опишу лише те, як це працює в Linux, оскільки я більше нічого не запускаю. Основна документація на цю утиліту DOCS/Adapter_User_Guide.pdf.

Версія цієї утиліти Linux - це два двійкові виконувані файли APPS/BootUtil/Linux_x64/bootutil64e(64 біт) та APPS/BootUtil/Linux32$ ls bootutil32(32 біт). А документація на bootutil є APPS/BootUtil/Docs/bootutil.txt.

Потім я скопіював файл APPS/BootUtil/Linux_x64/bootutil64eв /usr/local/bin, хоча я повинен був зробити його виконуваним першим. Коли я запустив його, я отримав

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

Потім потрібно завантажити iqvlinux.tar.gz, що є архівом джерел модуля ядра Linux, з https://sourceforge.net/projects/e1000/files/iqvlinux/1.2.0.3/ .

Примітка: там є оберти, але спроба перетворити його на деб виглядає досить безнадійно. І він навіть не містить бінарних, лише вихідних файлів та заголовків. Це не очевидно, але також потрібен installсценарій у тому самому каталозі. Потім бігайте

sh install

або схожий на користувача (запуск дивного сценарію як root ніколи не є хорошою ідеєю), переконавшись, що він iqvlinux.tar.gzзнаходиться на тому ж рівні, що і installсценарій.

Це дає вихід

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

Копіюючи модуль ядра вручну, помилка усувається.

Перш ніж перезавантажити картку, це вихід bootutil64eдля картки:

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

Ось стенограма запису. Комбінований варіант дозволяє функціонувати як PXE, так і UEFI. Зауважте, що потрібно вказати на розташування завантажувального зображення з FILEопцією:

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

Як це відповідь на ваше запитання? Здається, це також не інформація, яку слід відредагувати у питанні. Якщо ви не розберете це, невідповідь буде видалено.
DavidPostill

@DavidPostill Це стенограма того, що потрібно зробити, щоб отримати бажаний результат. І я не закінчив її писати.
Faheem Mitha
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.