前情提要

手头上有一块64GB的固态硬盘(型号为威刚SP900 64GB),在某个时间突然不能使用了。通过diskmgmt.msc来重新格式化会显示“指定不存在的设备”,怀疑是主控的固件掉了。

解决固件的问题需要了解固态硬盘采用的主控,根据主控来确定对应的开卡方案。

拆开外壳后,了解到主控的型号为 SandForce SF-2241VB2-SPC

确定了主控型号就可以知道开卡所采用的软件和方案了。以下是开卡的记录。

开卡记录

需要的物品

  • 一台电脑(笔记本或台式机均可)
  • Windows系统 (采用虚拟机) / CentOS 7系统 (采用实体机)
  • VMware Workstation软件(如果是Windows系统采用虚拟机的方式):点击此处下载
  • CentOS镜像:点击此处下载
  • USB硬盘盒(其芯片型号最好是ASM1153E,并确保供电充足) / SATA直连(如果采用物理机安装CentOS 7系统。理论可行,未经验证)
  • 回形针或导电物体(需要对两个孔进行短接)
  • 开卡ID支持列表:点击此处下载 / 点击此处预览

本次记录采用虚拟机方式进行。

建立CentOS虚拟机

首先,打开VMware Workstation软件,点击“创建新的虚拟机”

选择“典型”并下一步。

点击“浏览”,找到下载好的CentOS 7 镜像并打开,然后下一步。

下一步填写用户名与密码等信息,可随意填写,不过要记得输入的密码。输入后点击下一步。

由于该虚拟机仅于内网使用,因此在这里设定了简单的密码 12345678 。在实际环境中(如公网VPS等请一定要使用强密码,最好采用禁止root直接登录与配置fail2ban防止爆破!

在这里设定虚拟机的名称与存放位置。可以自行决定虚拟机的位置。

磁盘大小可以是默认,也可以指定一个数字。

这里确认信息无误就可以点击完成。虚拟机会自动开启。

如果你想加快虚拟机的速度,那么取消勾选”创建后开启此虚拟机“,并调整好CPU核心数与内存再开机。

若遇到如下提示点击确定即可。

CentOS安装

虚拟机将会自动安装CentOS,无需人工干预。

安装需要花费一些时间。

环境预备

来到这个界面时,点击 ”Not listed?“,然后在username中填入root。

密码填入12345678,或者在前面”个性化Linux“时所填入的密码。

在此篇记录中使用root登陆桌面是为了操作方便,在其余情况请不要使用root身份登录

登录之后来到桌面。

然后点击Applications→System Tools→Terminal

首先运行yum update以更新系统

分贝输入2个y

然后等待系统更新即可。

等到complete时,使用reboot进行重启。

来到登录界面后点击“Not listed",然后输入用户名root和密码12345678.

下载开卡文件

进入桌面,点击Applications→System Tools→Terminal 打开Terminal,然后运行如下指令

wget -O SF.zip https://file.mashiro.pro/d/blog-file/SF2241%20Produce/SF.zip?sign=KEVUzKspkv5nUhePJgN9pNtsf8C02KTCUk45cqbmKqg=:0

解压开卡文件

然后打开home文件夹,双击SF.zip

将SF这一个文件夹拖动到Home文件夹即可

安装依赖与配置开卡ID

然后再次打开Terminal,运行如下指令(一行一行来,#行为注释,不用运行)

cd SF
chmod +x *
yum install ld-linux.so.2 libSM.so.6 libXrender.so.1 libfontconfig.so.1 libstdc++.so.6 libXext.so.6
#yum install 到 libXext.so.6 为同一行的内容
cp hack.lic sp90064.lic
mkdir output
nano sp90064.lic

进入文本编辑器后后,这一步需要删除多余的configuration_id,只保留对应的开卡ID。

手头上的这一块硬盘,靠其闪存芯片的编号并不知道这块固态硬盘所采用的颗粒是什么。而想要知道开卡ID则需要知道固态硬盘使用的闪存芯片是来自什么厂商的多少nm芯片。因此需要去web中搜查资料。

已知SP900 128GB对应的开卡ID为28044,那么64GB所采用的方案大概是差不多的。最终确定其ID为28041。(根据其有8个闪存芯片,使用Micron颗粒与128G的开卡ID推断)

因此,最终仅保留一个<configuration_id id="28041" />。其余的configuration id删去。于此同时,最后一行的<checksum>xxxxx</checksum>也要删去。其余内容不变!

然后按下Ctrl+X,然后按Y,最后按回车。

生成driveconfig与mfp

然后继续在Terminal运行如下指令。

./checksum sp90064.lic

然后双击SF文件夹,并双击SF_OEM_PackageManager

来到如下界面

以下有6行文字,分别复制到对应的框中

/root/SF/FW_PPRO_6_0_A_Release.1134440.release.dfp
/root/SF/sp90064.lic
/root/SF/output
0
1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6
6.0.A

然后点击Create OEM Package,出现下图提示并等待几分钟。

等到如下画面则表示完成,可以继续操作。

设置固态硬盘信息

然后回到SF文件夹,找到SF_ConfigurationManager

然后来到如下画面,双击output,然后双击FW_PPRO_6_0_A_Release.1134440.release--0,然后双击Configuration_Files,最后选中28041.0.driveconfig并点击Open

然后来到如下界面,修改如下三项的内容(不一定要与图中的内容相同,可以自定义)

修改完成后点击Save(右下角)。然后点击Exit(右下角)

开卡预备

然后回到SF文件夹,双击打开SF_GenesisDashboard

然后来到如下界面

点击Function栏最右边的小三角,然后选择Process_SSD

然后在DriveConfig填入如下内容

/root/SF/output/FW_PPRO_6_0_A_Release.1134440.release--0/Configuration_Files/28041.0.driveconfig

在MFP Package填入如下内容

/root/SF/output/FW_PPRO_6_0_A_Release.1134440.release--0/FW_PPRO_6_0_A_Release.1134440.release.0.mfp

在Log Folder填入/root

然后需要准备固态硬盘,硬盘盒以及回形针或导电物体准备短接。

短接硬盘并接入虚拟机

如图所示,短接固态的方孔与圆孔,然后将硬盘盒接入机器的USB2.0接口(USB3.0接口可能不成功!)然后在VMware Workstation中选择 连接到虚拟机,并单击CentOS 7 64位,然后按确定。

如果之前选择过“记住我的选择,以后不再询问”,那么需要在VMware Workstation右下角手动连接usb硬盘到CentOS虚拟机。

连接虚拟机之后几秒钟,将导电物体从孔中拔出。

然后回到Terminal,输入lsscsi并回车,若看到SandForce字样则表示成功进入ROM状态。

然后回到Genesis Dashboard,按如图信息填写

3:0:0:0的Port ID是根据lsscsi的结果(如上图)来填写的,如果您的运行结果不是3:0:0:0,请更改为您系统所显示的值
Serial No.需要与之前ConfigurationManager中的Serial Number相同。 WWN请复制如下的值并粘贴进去。
0000000000000000

开始开卡

完成后,点击Start即可开始开卡固态。

当见到PASSED的字样时,即表示开卡成功!

如果出现了FAILED字样,请检查硬盘盒供电是否充足,是否插在USB2.0端口,开卡ID是否对应固态硬盘等问题。也可以打开位于home中的log分析原因。

格式化硬盘

然后我们可以于VMware Workstation的右下角弹出设备(断开连接)。

然后我们回到Windows,就可以看到固态硬盘已经恢复正常。

接下来我们按下win+r打开diskmgmt.msc。

接下来Windows会弹出要求初始化硬盘。直接点击确定即可。

然后往下翻,找到对应磁盘,右键单击未分配的区域,点击”新建简单卷“

然后点击”下一页“

点击”下一页“

点击”下一页“

卷标可自定义,填写完成后点击下一页。

然后点击”完成“

然后我们就能在文件资源管理器中找到这块硬盘了。

这一篇记录也到此结束了!