裸金属创建时报固件错误,网卡驱动 bnx2x 加载不了固件文件,导致 bond 从设备打开失败。根因是镜像里缺少驱动需要的固件,用 modinfo 查出来补上即可。

现象

创建裸金属报固件错误,带外上看,保持类似如下:

bnx2x: Can't load firmware file bnx2x/bnx2x-e2-7.13.11.0.fw
bnx2x: Error loading firmware
bond0: (slave eth110): Opening slave failed

排查

把镜像通过 qemu-nbd 挂载上来, 然后用 modinfo 查看这个驱动, 里面会列出需要的固件:

filename:       /mnt/bootcoree/lib/modules/5.4.0-59-generic/kernel/drivers/net/ethernet/broadcom/bnx2x/bnx2x.ko
firmware:       bnx2x/bnx2x-e2-7.13.11.0.fw
firmware:       bnx2x/bnx2x-e1h-7.13.11.0.fw
firmware:       bnx2x/bnx2x-e1-7.13.11.0.fw

根因与解决

根因是镜像里缺少 bnx2x 驱动需要的固件文件。

把 modinfo 查到的固件下载下来, 放到镜像的 /lib/firmware 对应目录中,就可以了。

小结

  • 网卡驱动加载固件失败,会导致 bond 从设备打开失败;
  • 用 modinfo 查看驱动模块声明的 firmware 字段,就能知道需要哪些固件文件;
  • 把固件放到镜像的 /lib/firmware 对应目录即可解决;
  • 排查固件类问题,modinfo 是最直接的入口。