起因
在收到新主板后,查看官网发现有新版的固件可用。首先在网页升级了BMC没有问题,之后手贱在BMC升级了BIOS(请不要在BMC升级BIOS)。
在点击升级之后,BMC网页提示BIOS不支持刷新,但是再次刷新就变成了“正在进行固件更新,或系统正在重新启动,请稍后重试。” 翻车的第二件事发生了:电源没有接入PMBUS,导致系统关机后直接给BMC断电,此时BMC无法从带外管理口访问,路由器检测不到IP地址,在BIOS修改IP地址也无效了。
修复
因为我的机器安装的是Windows11,在BIOS推出更新的时候还没有这个系统,所以直接在系统下再次刷入BIOS会提示烧写软件不兼容当前系统,于是首先尝试在BIOS里进入EFI刷写,但是官网的888版本固件的EFI似乎有问题,刷写后的BMC依旧不能联网。(后续核对文件发现888版本固件相比885好像少了一些文件夹,但是该版本固件可以在网页端刷入)
此时问题陷入了僵局,在网上多方查证之后发现有一个技嘉其他版本服务器主板可以通过JTAG_BMC接入串口从而在Uboot层面进行修复。而我在检查主板之后发现我是有这个接口的。
找到如图所示的JTAG_BMC接口,按照图里线序接好串口(不连接3。3V,不需要交换rx/tx),打开Putty COM4/115200。重启电脑查看输出,发现BMC此时无法通过DHCP获取到服务器地址,输出地址始终为0.0.0.0。尝试用socfalsh刷新BMC固件则提示写保护(后续查看确定系某次修正漏洞导致)。uboot启动时不输出 Hit any key to stop autoboot 。所以无法进入uboot命令模式。
这时我想起使用888自带的UEFI刷机工具时可以看到这个输出,于是执行UEFI刷机程序,执行同时在串口不断敲击回车最终进入uboot端口(此时EFI界面如上图所示,不会自动重启,不用担心)就可以执行tftpboot命令
1 2 3 4 5 6 7 8 |
uboot# tftpboot PHY_REG0x1f: 8180 Is KSZ8051 …… TFTP from server 192.168.0.126; out IP address is 192.168.0.188 Filename 'all.bin' Load address: 0x41400000 …… |
这里注意几个要点,一个是TFTP服务器地址为192.168.0.126,另一个是读取的内存地址从0x41400000开始。所以我们需要配置一个地址为192.168.0.126的TFTP服务器,我用了TFPTD64。在这个软件的FTP目录下将885.img重命名为all.bin。程序运行后会将all.bin固件保存到内存中。执行fwu check <load address>检查固件,然后执行fwu update <load address>刷入固件。
1 2 3 4 5 6 7 8 9 10 11 12 |
uboot# fwu check 0x41400000 ………… Done! uboot# fwu update 0x41400000 Checking image header CRC ... OK Checking platform ID ........ OK Checking kernel image CRC ... OK Checking rootfs image CRC ... OK Checking u-boot image CRC ... OK ………… OK Done! |
刷入完毕,此时BMC已经能获取到IP地址,可以在串口的日志中看到,重启BMC的过程大概需要1-3分钟。重启后在网页更新到888版本固件,BMC修复完成。
总结
没事不要瞎刷固件,能跑就行。以及刷之前一定要注意刷新版本。
BMC访问失败也有可能是路由器的问题,要多方面考虑。