Оновлення прошивки Intel X520-DA1/DA2 через BootUtil (помилка unsupported SFP+ module)

Мережеві карти Intel X520 (X520-DA1 з одним портом SFP+ та X520-DA2 з двома) — одні з найпоширеніших 10-гігабітних адаптерів у вживаних серверах і домашніх лабораторіях. Вони недорогі, підтримуються…

Ілюстрація до статті: Оновлення прошивки Intel X520-DA1/DA2 через BootUtil (помилка unsupported SFP+ module)

Оновлено:

Мережеві карти Intel X520 (X520-DA1 з одним портом SFP+ та X520-DA2 з двома) — одні з найпоширеніших 10-гігабітних адаптерів у вживаних серверах і домашніх лабораторіях. Вони недорогі, підтримуються будь-якою операційною системою і зазвичай працюють без питань. Проте інколи карта відмовляється піднімати лінк, а драйвер пише в лог:

ixgbe: failed to initialize because an unsupported SFP+ module type was detected

Існує декілька способів вирішення цієї проблеми, зокрема примусове ввімкнення підтримки модуля в драйвері. У цій статті розглянемо інший спосіб, який у багатьох випадках допомагає і який у будь-якому разі корисно зробити на старій карті: оновлення прошивки Preboot (завантажувальних агентів UEFI та PXE, що зберігаються у флеш-пам’яті адаптера) утилітою Intel BootUtil під Linux. Інструкція написана для Intel X520-DA1 і повністю підходить також для Intel X520-DA2.

Перед початком. Прошивання перезаписує вбудовану пам’ять карти. Працюйте на сервері, який можна вивести з експлуатації, не переривайте процес і не вимикайте живлення під час оновлення, а коли утиліта запропонує зберегти образ для відновлення — погоджуйтесь. Якщо сервер віддалений, переконайтеся, що маєте інший шлях доступу (IPMI, другий мережевий інтерфейс) на випадок, якщо завантажувальний агент поводитиметься інакше.

Крок 1. Завантаження пакета Preboot

Intel поширює завантажувальні агенти та BootUtil одним архівом Preboot.tar.gz. Завантажте актуальну версію з центру завантажень Intel (шукайте «Intel Ethernet Connections Boot Utility, Preboot Images, and EFI Drivers») або скористайтеся копією з власного дзеркала. Далі передайте архів на сервер будь-яким зручним способом (scp, sftp тощо):

scp Preboot.tar.gz root@server:/root/

Крок 2. Розпакування архіву

Переходимо до каталогу root, створюємо окрему директорію та розпаковуємо архів:

cd /root
mkdir -p /root/preboot
tar -xzvf Preboot.tar.gz -C /root/preboot

Крок 3. Перехід до BootUtil

Переходимо до каталогу утиліти та надаємо права на виконання:

cd /root/preboot/APPS/BootUtil/Linux_x64
chmod +x bootutil64e

Крок 4. Перевірка знайдених адаптерів

Запускаємо утиліту без параметрів:

./bootutil64e

У результаті буде відображена інформація про всі знайдені мережеві адаптери Intel і встановлену на них прошивку:

Error: Connection to QV driver failed - please reinstall it!

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.43.36.0

Port Network Address     Location        Series  WOL Flash Firmware        Version
==== =============== ================== ======= === ===================== =======

1    90E2BA343A0A   00000:033:00.0      10GbE   N/A UEFI,PXE Enabled      2.4.59
2    D85ED3694B2E   00000:100:00.0      Gigabit YES FLASH Not Present
3    D85ED3694B2F   00000:100:00.1      Gigabit YES FLASH Not Present

Знайдіть у списку X520 (рядок серії 10GbE) і запам’ятайте його номер у колонці Port — саме це значення NIC використовуватиметься під час оновлення. У прикладі вище X520 має номер 1, тобто NIC=1. На X520-DA2 буде два рядки 10GbE; прошивка спільна для адаптера, тож оновіть перший порт і перевірте, чи другий також показує нову версію.

Повідомлення «Connection to QV driver failed»

Перший рядок виводу — попередження, а не помилка:

Error: Connection to QV driver failed - please reinstall it!

Це означає лише те, що утиліта не отримала прямий доступ до мережевого адаптера через спеціальний драйвер QV (iqvlinux). У більшості випадків це не критично. Якщо BootUtil успішно знаходить мережеву карту та відображає її у списку, прошивку можна оновити навіть без встановлення цього драйвера.

Крок 5. Оновлення прошивки

Образ прошивки — файл BootIMG.FLB, який лежить на рівень вище від Linux-бінарника. Доступні два варіанти.

Варіант 1. Оновлення тільки EFI

Якщо потрібно оновити лише UEFI Boot Agent і PXE (застаріле мережеве завантаження) не використовується:

./bootutil64e -NIC=1 -UP=EFI -FILE=../BootIMG.FLB

Під час виконання ви побачите приблизно такий результат:

Error: Connection to QV driver failed - please reinstall it!

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.43.36.0
Copyright (C) 2003-2026 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 10FB4003.FLB...saved

Updating 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    90E2BA343A0A   00000:033:00.0      10GbE   N/A UEFI                  8.3.17
2    D85ED3694B2E   00000:100:00.0      Gigabit YES FLASH Not Present
3    D85ED3694B2F   00000:100:00.1      Gigabit YES FLASH Not Present

Зверніть увагу на попередження посередині: Updating EFI removes PXE functionality. Після цього варіанта карта завантажується лише через UEFI.

Варіант 2. Оновлення EFI + PXE

Якщо необхідно оновити одночасно UEFI та PXE Boot Agent:

./bootutil64e -NIC=1 -UP=combo -FILE=../BootIMG.FLB

Саме цей варіант рекомендується у більшості випадків: він оновлює обидва компоненти та не відключає підтримку PXE. Запитання утиліти ті самі. Відповідайте y на пропозицію створити образ для відновлення — поточний вміст флеш-пам’яті буде збережено у файл .FLB у робочому каталозі (збережіть його), — і y для підтвердження оновлення. Після завершення таблиця показуватиме нову версію для порту.

Після завершення

  1. Повністю перезавантажте сервер (найбезпечніше — холодне вимкнення живлення, щоб карта заново ініціалізувала свій Option ROM).
  2. Повторно запустіть ./bootutil64e і переконайтеся, що порт показує нову версію (у прикладі — 8.3.17).
  3. Перевірте dmesg | grep ixgbe та стан лінку (ip link): адаптер має визначатися без помилок, а якщо причиною оновлення було попередження про SFP+, перевірте, чи воно зникло.
  4. Зайдіть у налаштування BIOS/UEFI: карта тепер відображається як пристрій «Intel(R) Ethernet» з можливістю мережевого завантаження UEFI та новою версією.

Якщо помилка SFP+ лишилась

Оновлення Preboot виправляє завантажувальні агенти, але не змінює перелік трансиверів, які приймає драйвер ixgbe. Якщо повідомлення про непідтримуваний модуль не зникло, лишаються два варіанти: використати модуль SFP+/DAC з Intel-сумісним кодуванням або завантажити драйвер з параметром allow_unsupported_sfp=1:

echo "options ixgbe allow_unsupported_sfp=1" > /etc/modprobe.d/ixgbe.conf
update-initramfs -u    # Debian/Ubuntu; для RHEL-подібних — dracut -f
reboot

Непідтримувані модулі можуть працювати нормально, а можуть мати проблеми зі стабільністю лінку — протестуйте перед використанням у продакшені.

Часті запитання

Чи можна запускати BootUtil з live-USB?

Так. Підійде будь-яке x86-64 Linux live-середовище з правами root; це дозволяє не чіпати встановлену систему. Скопіюйте розпакований каталог preboot на носій із записом, щоб утиліта могла зберегти образ для відновлення.

Для чого потрібен образ для відновлення?

Це копія вмісту флеш-пам’яті до оновлення. Якщо новий завантажувальний агент спричинить проблеми, поверніть його командою ./bootutil64e -NIC=1 -UP=combo -FILE=10FB4003.FLB (використайте ім’я файлу, яке утиліта вивела під час вашого запуску).

Чи працює це у Windows?

Той самий архів містить BootUtil для Windows (APPS/BootUtil/Winx64/BootUtilw64e.exe) з ідентичними параметрами.

Оновлення прошивки — невеликий і зворотний крок, який повертає десятирічному адаптеру сучасну поведінку при завантаженні; робіть його свідомо, зберігайте образ для відновлення і перевіряйте результат.

Коротко: завантажте пакет Intel Preboot, розпакуйте його, запустіть bootutil64e, щоб дізнатися номер порту X520, і оновіть прошивку командою з -UP=combo (UEFI + PXE, рекомендовано) або -UP=EFI, відповівши «y» на створення образу відновлення та підтвердження. Попередження про QV-драйвер можна ігнорувати, якщо карта є у списку. Перезавантажте сервер і перевірте нову версію. Якщо помилка SFP+ лишилась — окремо розберіться з модулем або параметром драйвера.