Ubuntu 24 下预部署 Intel BootUtil,解决服务器网卡识别异常问题

有用的小知识
Ubuntu 24 下预部署 Intel BootUtil,解决服务器网卡识别异常问题 题图

摘要:记录一次通过 Intel Preboot/BootUtil 工具预部署系统,并在问题服务器上刷入 Combo Option ROM 的完整流程。

大家好,我是云核筑梦家。
这次遇到一个比较特殊的问题:部分服务器安装系统后,Intel 网卡无法正常识别。由于问题机器无法直接联网,所以采用了一个折中的办法:先在一台正常服务器上安装好 Ubuntu 24,并提前放好 Intel Preboot/BootUtil 工具;然后把系统硬盘拆下来,装到网卡异常的服务器上,再在问题机器本地执行 BootUtil 操作。

本文记录完整操作流程,方便后续遇到类似问题时快速处理。

一、适用场景

本教程适合以下情况:

  1. 服务器安装系统后,Intel 网卡无法正常识别;

  2. 问题机器暂时无法通过网络安装依赖;

  3. 可以先在另一台正常机器上安装系统;

  4. 可以通过 IPMI、iKVM、显示器键盘进入问题机器;

  5. 手上已有 Intel Preboot 工具包,例如 Preboot.tar.gz 点击下载

需要注意的是:
正常机器只负责准备系统和工具,真正刷写网卡的操作必须在问题机器上执行。

二、准备环境

本文测试系统为:

Ubuntu 24

需要准备的文件:

Preboot.tar.gz

假设文件已经上传到正常机器的 /root 目录下:

/root/Preboot.tar.gz

先确认文件存在:

ls -lh /root/Preboot.tar.gz

三、正常机器上做前期部署

先安装基础依赖:

apt update
apt install -y make gcc lrzsz build-essential dkms linux-headers-generic linux-headers-$(uname -r) pciutils ethtool net-tools vim tar

创建 Intel BootUtil 工作目录:

mkdir -p /opt/intel-oprom
cp /root/Preboot.tar.gz /opt/intel-oprom/
cd /opt/intel-oprom
tar zxvf Preboot.tar.gz

进入 BootUtil 目录:

cd /opt/intel-oprom/APPS/BootUtil

BootIMG.FLB 放到 Linux 工具目录:

cp -f BootIMG.FLB Linux_x64/

添加执行权限:

cd Linux_x64
chmod +x bootutil64e
chmod +x DRIVER/install

到这里,工具文件已经准备完成。

四、创建刷写脚本

为了避免在正常机器上误刷网卡,这里做一个带确认提示的脚本。只有输入大写 YES 才会继续执行刷写。

cat > /root/intel-oprom-flash.sh <<'EOF'
#!/bin/bash
set -e

cd /opt/intel-oprom/APPS/BootUtil/Linux_x64

echo "===== 安装 BootUtil 驱动 ====="
cd DRIVER
./install
cd ..

echo "===== 查看当前 Intel 网卡 ====="
./bootutil64e || true

echo
echo "注意:只有硬盘已经装到网卡有问题的机器上,才可以继续刷写。"
echo "如果现在还是正常机器,请直接回车退出。"
echo
read -p "确认当前是有问题的机器,并且要刷写?输入 YES 继续:" confirm

if [ "$confirm" != "YES" ]; then
  echo "已取消,没有刷写任何东西。"
  exit 0
fi

echo "===== 开启 Flash ====="
./bootutil64e -ALL -FLASHENABLE

echo "===== 刷入 Combo Option ROM ====="
./bootutil64e -ALL -UP=combo -FILE=BootIMG.FLB

echo "===== 完成,建议重启 ====="
EOF

chmod +x /root/intel-oprom-flash.sh

检查脚本权限:

ls -lh /root/intel-oprom-flash.sh

正常应该类似:

-rwxr-xr-x 1 root root 777 /root/intel-oprom-flash.sh

五、确认关键文件是否存在

执行下面三条命令,确认核心文件都在:

ls -lh /opt/intel-oprom/APPS/BootUtil/Linux_x64/bootutil64e
ls -lh /opt/intel-oprom/APPS/BootUtil/Linux_x64/BootIMG.FLB
ls -lh /opt/intel-oprom/APPS/BootUtil/Linux_x64/DRIVER/install

正常情况下应该能看到:

bootutil64e
BootIMG.FLB
DRIVER/install

确认无误后,正常机器上的准备工作就完成了。

六、关机并迁移硬盘

在正常机器上执行:

sync
poweroff

然后把这块已经准备好的系统硬盘拆下来,安装到网卡无法识别的服务器上。

这一步建议提前准备好:

  1. IPMI / iKVM;

  2. 显示器和键盘;

  3. 服务器本地登录权限;

  4. 电源和远程重启手段。

因为问题机器网卡可能还没恢复,所以不要完全依赖 SSH。

七、在问题机器上执行刷写

硬盘装到问题机器后,开机进入 Ubuntu 系统。

先查看 PCI 设备和网卡识别情况:

lspci -nn | grep -Ei "ethernet|network|intel"
ip link

然后执行前面准备好的脚本:

bash /root/intel-oprom-flash.sh

脚本会先安装 BootUtil 驱动,然后显示当前识别到的 Intel 网卡。

正常输出大概类似:

Intel(R) Ethernet Flash Firmware Utility
BootUtil version 1.43.32.0

Port Network Address  Location       Series   WOL Flash Firmware
==== ================ ============== ======= === ===============
1    002590C30E92     00000:005:00.0 Gigabit YES FLASH Disabled
2    002590C30E93     00000:005:00.1 Gigabit YES FLASH Disabled

这里说明 BootUtil 已经能识别到 Intel 网卡,但是当前 Flash 状态是 Disabled。

确认当前确实是问题机器后,输入:

YES

注意必须是大写 YES
如果输入 yes 或直接回车,脚本会退出,不会执行刷写。

脚本继续执行后,会依次运行:

./bootutil64e -ALL -FLASHENABLE
./bootutil64e -ALL -UP=combo -FILE=BootIMG.FLB

其中:

-FLASHENABLE

表示开启网卡 Flash 写入。

-UP=combo -FILE=BootIMG.FLB

表示刷入 Combo Option ROM。

八、刷写完成后重启

刷写完成后建议重启服务器:

reboot

重启后再次检查网卡:

lspci -nn | grep -Ei "ethernet|network|intel"
ip link
dmesg | grep -Ei "igb|ixgbe|i40e|ice|e1000|firmware|net"

如果系统已经能看到网卡,就可以继续配置网络。

Ubuntu 24 可以通过 netplan 配置网络,例如:

ls /etc/netplan/

编辑对应配置文件:

nano /etc/netplan/01-netcfg.yaml

临时建议先使用 DHCP,确认网卡正常:

network:
  version: 2
  renderer: networkd
  ethernets:
    all-eth:
      match:
        name: "e*"
      dhcp4: true
      dhcp6: false

应用配置:

netplan generate
netplan apply

查看 IP:

ip addr

九、注意事项

1. 正常机器不要执行刷写

正常机器只负责安装系统、解压工具、准备脚本。
不要在正常机器上执行:

bash /root/intel-oprom-flash.sh

更不要手动执行:

./bootutil64e -ALL -FLASHENABLE
./bootutil64e -ALL -UP=combo -FILE=BootIMG.FLB

否则可能会刷到正常机器上的 Intel 网卡。

2. 优先使用 IPMI 或本地控制台

刷写网卡固件属于有风险操作。
如果服务器只有这一张网卡,刷写过程中一旦网络中断,SSH 可能会断开,所以强烈建议通过 IPMI、iKVM 或本地显示器键盘操作。

3. -ALL 会作用于所有支持的 Intel 网卡

脚本里使用的是:

-ALL

这表示对所有 BootUtil 可识别的 Intel 网卡执行操作。

如果机器上有多张 Intel 网卡,且只想刷指定网卡,可以先执行:

cd /opt/intel-oprom/APPS/BootUtil/Linux_x64
./bootutil64e

查看网卡编号后,改用指定 NIC:

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

第二个网口可以执行:

./bootutil64e -NIC=2 -FLASHENABLE
./bootutil64e -NIC=2 -UP=combo -FILE=BootIMG.FLB

4. BootUtil 能识别网卡才有继续操作的意义

如果 lspci 都看不到网卡,可能是 BIOS、PCIe 插槽、转接板、硬件故障等问题。

如果 lspci 能看到网卡,但 ip link 看不到,可能是驱动、固件或系统内核模块问题。

如果 BootUtil 能看到网卡,才说明可以继续考虑使用 BootUtil 进行 Flash / Option ROM 操作。

十、完整流程总结

整体流程如下:

正常机器安装 Ubuntu 24
        ↓
上传 Preboot.tar.gz
        ↓
安装依赖并解压到 /opt/intel-oprom
        ↓
创建 /root/intel-oprom-flash.sh
        ↓
关机拆硬盘
        ↓
硬盘装到问题机器
        ↓
通过 IPMI / 显示器进入系统
        ↓
执行 bash /root/intel-oprom-flash.sh
        ↓
确认识别到 Intel 网卡
        ↓
输入大写 YES
        ↓
执行 FLASHENABLE 和 UP=combo
        ↓
重启服务器
        ↓
检查网卡是否恢复

十一、本次处理结果

本次问题机器执行脚本后,BootUtil 已经成功识别到两个 Intel Gigabit 网口:

Port 1  Gigabit  FLASH Disabled
Port 2  Gigabit  FLASH Disabled

说明 BootUtil 驱动安装正常,工具也能读取到网卡。
后续确认机器无误后,输入大写 YES 即可继续执行 Flash 开启和 Combo Option ROM 刷入。

本次处理方式的核心思路是:
先在正常机器上完成系统和工具预部署,再把硬盘迁移到问题服务器,最后在问题服务器本地执行 BootUtil 操作。这样可以避免问题机器因网卡不可用导致无法下载安装依赖的问题。

本文为原创实践记录,首发于 小航博客,转载请注明出处与链接。

评论

发表评论

评论经审核后显示。请勿提交广告或与主题无关的内容。