如何:远程刷 Seagate 硬盘固件
🚨 警告
刷写硬盘固件时的不当操作可能会导致硬盘无法使用。本人不承担由于使用本文中介绍的内容所导致的任何后果的责任。
📜 历史文件已不具备现实意义
本文章提到的硬件已过时。
上回 说到 谷奥 的一块硬盘坏了,但是忘记说实际上两块硬盘的固件都有已知问题(ST1000DM003-9YN162固件版本CC4D,目前的最新版本是CC4H)。虽然在ticket里提到了这件事,但是remote hand没做升级,想想之后决定还是自己把它远程刷掉好了。
由于刷写不当会导致硬盘无法使用(实际上还是有办法恢复的,但是比较麻烦而且没法在远程做),因此为了以防万一,在执行任何操作之前应备份硬盘上全部数据。由于使用的是graid的镜像模式,因此事实上我们有一份完整备份,故跳过这一步。
接下来要从Seagate网站下载固件。考虑到刷新固件操作的危险性,不知道怎么找这个固件的人可以看到这为止了。
我具体下载的是那张FreeDOS的iso(不是exe格式的那个)。这张ISO是可以引导系统的,用bsdtar将其展开,在其中可以找到一个叫GR-CC4H.ima的文件,这是一个FAT格式的磁盘映像。用下面的命令将其挂到 /cdrom上:
mdconfig -a -t vnode -o readonly -f GR-CC4H.ima
md0
mount -o ro -t msdosfs /dev/md0 /cdrom我们接下来可以在 /cdrom中找到实际的payload,文件名是lod.zip。还是用bsdtar展开,可以得到下面这些文件:
| |
这里,model.lst是给人看的,而 GR-CC4H.CFS 则是一份加密的对照表,有人已经将其 解密。查表得到,这块硬盘(ST1000DM003-9YN162)对应的固件应该是 GRCC4H2H.LOD。
接下来是将固件刷写到硬盘上,首先:
camcontrol fwdownload ada0 -f GRCC4H2H.LOD -s这一步是模拟操作,如果没问题,去掉 -s 就可以写入了。
这块硬盘的刷写过程总共用了36秒。刷写会导致磁盘下线,接下来CAM子系统会重新发现这块磁盘(此时可以看到固件版本已经变成了新的)。graid会自动在后台进行重建(由于卷的一块磁盘下线,graid会重建整个磁盘)。
一些注意事项
- 务必确认固件是对的。
camcontrol fwdownload并不检查固件的正确性。 - 刷写固件会导致磁盘下线,因此,如果准备刷写的磁盘是系统中不能缺失的磁盘(例如,如果是
UFS,/所在的单一磁盘),这个操作会导致崩溃(但操作本身会成功)。 - 固件刷写之后不需要重启系统,但为了确认系统能够启动,还是应该重启确认一下。