踩坑其实踩的很多。我本人拿到的这块dpu,会发现mgmt口插上网线根本不亮,一开始还以为网口坏了,实际上是因为bmc关闭了这个网口。
所以首先:
宿主机安装doca,随后通过rshim连接到dpu内的arm linux。既可以用nvidia的那个奇怪名字的网口,也可以用/dev/rshim0/console来连接。
查看bmc版本:
ipmitool mc info
可以看到版本是2.08,根本不是NV的官方bmc
arm linux中使用ipmitool恢复出厂bmc并cold reset:
https://docs.nvidia.com/networking/display/bluefieldbmcv2404/factory+reset+bmc
ipmitool raw 0x32 0x66
ipmitool mc reset cold
等待一段时间,之后再次能在arm os中看到ipmi后,mgmt口插上网线,应该能看到网口灯亮了。
接下来我们要刷写BMC。前提是BMC现在成功连上你的电脑了,而且你拥有bmc的密码。
不知道密码怎么办?一般重置完密码都是 0penBmc。实在不行,还可以用ipmitool设置root用户的密码。这个需要查看ipmitool的命令帮助,我这台的命令大约是ipmitool user set password什么的,具体记不住了,问ai吧。
我们这里采取redfish刷写BMC,因为dell版的BMC不支持bfb-install来刷写,bfb-install刷写bmc实际上也是在arm os内的oob_net0创建一个vlan4040接口并通过redfish刷写,但是dell版的用vlan4040完全连不上,所以刷不了。用bfb-install刷写bmc可以参考: https://developer.nvidia.com/doca-downloads
redfish刷写BMC参考:
https://docs.nvidia.com/networking/display/bluefieldbmcv2410/cec+and+bmc+firmware+operations
# 我的BMC的版本很老了,只能用其中一种办法刷写
curl -k -u root:'<password>' -H "Content-Type: application/octet-stream" -X POST -T <package_path> https://<bmc_ip>/redfish/v1/UpdateService
这里的package_path是你下载来的bmc固件包,名字大概类似于 bf2-bmc-ota-24.10-33-opn.tar ,可以去 https://developer.nvidia.com/doca-archive 这里找,注意2.x版本的才提供单独的bmc固件,更新版就没有了,有能力可以尝试自己解包。
curl之后,会返回给你一个task id,用这个可以查询进度:
curl -k -u root:'<password>' -X GET https://<bmc_ip>/redfish/v1/TaskService/Tasks/<id>
总之等个10min-15min就装完了。然后一定要立刻cold reset,不要重启电脑,否则大概率还是原来那个版本!
ipmitool mc reset cold
等几分钟,再在arm里面用ipmitool查看版本,应该已经更新到doca2.x对应的那个bmc版本了。如果还是老版本,就再重复一次,一般就行。如果这个时候你发现你无论如何在arm os都连不上bmc了,别紧张,用bfb-install刷对应版本的os bundle,就好了。
现在你已经获得了一个2.x版本的固件了,想升到最新版一点也不难。只需要用bfb-install安装fw包就ok了,不过为了让他同时能更新BMC,需要一个bf.cfg。参考 https://docs.nvidia.com/networking/display/bluefieldbsp4120/software-installation-and-upgrade.pdf ,你要往里面填充你的username和password。
然后最后再
bfb-install --bfb bf-fwbundle-3.1.0-76_25.07-prod.bfb --rshim rshim0 -c bf.cfg
类似这样,把整个卡的固件都刷新,再cold reset一下BMC。如果你想把最新的BMC内所有设置都清空,那就在cold reset之前ipmitool raw 0x32 0x66。
这样你就获得了最新的BMC。然后想干啥就干啥了。注意不要搞混了arm os和bmc拿到的ip地址,不然你redfish肯定连不上了。