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

摘要:记录一次通过 Intel Preboot/BootUtil 工具预部署系统,并在问题服务器上刷入 Combo Option ROM 的完整流程。
大家好,我是云核筑梦家。
这次遇到一个比较特殊的问题:部分服务器安装系统后,Intel 网卡无法正常识别。由于问题机器无法直接联网,所以采用了一个折中的办法:先在一台正常服务器上安装好 Ubuntu 24,并提前放好 Intel Preboot/BootUtil 工具;然后把系统硬盘拆下来,装到网卡异常的服务器上,再在问题机器本地执行 BootUtil 操作。
本文记录完整操作流程,方便后续遇到类似问题时快速处理。
一、适用场景
本教程适合以下情况:
服务器安装系统后,Intel 网卡无法正常识别;
问题机器暂时无法通过网络安装依赖;
可以先在另一台正常机器上安装系统;
可以通过 IPMI、iKVM、显示器键盘进入问题机器;
手上已有 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
然后把这块已经准备好的系统硬盘拆下来,安装到网卡无法识别的服务器上。
这一步建议提前准备好:
IPMI / iKVM;
显示器和键盘;
服务器本地登录权限;
电源和远程重启手段。
因为问题机器网卡可能还没恢复,所以不要完全依赖 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 操作。这样可以避免问题机器因网卡不可用导致无法下载安装依赖的问题。
评论