如何:远程刷 Seagate 硬盘固件

• 本文约 968 字,阅读大致需要 2 分钟 | *nix and Win32 Kernel

🚨 警告

刷写硬盘固件时的不当操作可能会导致硬盘无法使用。本人不承担由于使用本文中介绍的内容所导致的任何后果的责任。

📜 历史文件已不具备现实意义

本文章提到的硬件已过时。

上回 说到 谷奥 的一块硬盘坏了,但是忘记说实际上两块硬盘的固件都有已知问题(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 展开,可以得到下面这些文件:

1
2
3
4
5
6
-rwxr-xr-x  1 delphij  wheel     5654 May 23  2012 GR-CC4H.CFS
-rwxr-xr-x  1 delphij  wheel  1806848 May 23  2012 GRCC4H2H.LOD
-rwxr-xr-x  1 delphij  wheel  1806848 May 23  2012 GRCC4H4H.LOD
-rwxr-xr-x  1 delphij  wheel  1806848 May 23  2012 GRCC4H6H.LOD
-rwxr-xr-x  1 delphij  wheel     2806 May 23  2012 flash-m.bat
-rwxr-xr-x  1 delphij  wheel      363 May 23  2012 model.lst

这里,model.lst是给人看的,而 GR-CC4H.CFS 则是一份加密的对照表,有人已经将其 解密。查表得到,这块硬盘(ST1000DM003-9YN162)对应的固件应该是 GRCC4H2H.LOD

接下来是将固件刷写到硬盘上,首先:

camcontrol fwdownload ada0 -f GRCC4H2H.LOD -s

这一步是模拟操作,如果没问题,去掉 -s 就可以写入了。

这块硬盘的刷写过程总共用了36秒。刷写会导致磁盘下线,接下来 CAM 子系统会重新发现这块磁盘(此时可以看到固件版本已经变成了新的)。graid 会自动在后台进行重建(由于卷的一块磁盘下线,graid会重建整个磁盘)。

一些注意事项