如何从 Linux 恢复损坏的 SSD 固件

如何从 Linux 恢复损坏的 SSD 固件

我有一块 PNY“CS1111”240 GB SSD,我之前用在旧笔记本电脑上。后来笔记本电脑突然停止启动。BIOS 中显示该驱动器为“0.0GB 固态硬盘”,而以前它显示 PNY 和序列号。

通过 SATA-USB 适配器将其插入我的新笔记本电脑后,我注意到了一些有趣的事情。内核检测到了新设备,但它拒绝安装它或在块设备上执行任何操作,并显示“I/O 错误”。经过一番谷歌搜索,我发现这个英特尔线程似乎描述了我的问题:https://community.intel.com/t5/Solid-State-Drives/sandforce-200026BB-0-0GB/td-p/615575

但是,我没有使用英特尔固态硬盘,因此固件更新不适用。我也尝试使用 PNY 的固件更新工具,但它没有检测到我的固态硬盘(即使安装在内部)。

以下是输出smartctl

# smartctl -a /dev/sdb
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-54-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Device Model:     SandForce{200026BB}
Serial Number:    1
LU WWN Device Id: 5 00232d 000000001
Firmware Version: 402ABBR0
User Capacity:    32,768 bytes [32.7 KB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Sat Nov 21 22:48:37 2020 EST
SMART support is: Unavailable - device lacks SMART capability.

A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.

f3探针:

# f3probe /dev/sdb
F3 probe 7.2
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient.

Probe finished, recovering blocks... Done

Bad news: The device `/dev/sdb' is damaged

Device geometry:
             *Usable* size: 0.00 Byte (0 blocks)
            Announced size: 32.00 KB (64 blocks)
                    Module: 32.00 KB (2^15 Bytes)
    Approximate cache size: 0.00 Byte (0 blocks), need-reset=no
       Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 1us

fdisk:

Disk /dev/sdb: 32 KiB, 32768 bytes, 64 sectors
Disk model: Ext             
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

据我所知,该问题可能是由 SSD 的“DevSlp”功能引起的(https://en.wikipedia.org/wiki/DevSlp)。如果是这个问题,有没有办法从 Linux 内部修复它?我应该采取哪些进一步的步骤来尝试恢复此驱动器?

驱动器上的内容非常重要,因此如果可能的话,我会尝试以非破坏性的方式恢复该驱动器。

答案1

由于您的驱动器被识别为SandForce{200026BB},这意味着您的 SSD 控制器陷入了“恐慌模式”。这是SF-2000控制器。

你可以在 Linux 中修复这个问题:你需要使用Fedora,以便在 SSD 控制器上强制刷新新固件。不幸的是,你将无法保留你的数据。刷新控制器将不可避免地导致所有文档的丢失。

在开始刷新程序之前,您可以随时尝试让 SSD “循环“,以迫使它退出恐慌模式。尝试将其从插座中拔出,等待5分钟,然后重新插入并打开BIOS,留给10分钟。然后关闭计算机并等待5分钟。如果休眠后出现不正确的 SATA 唤醒命令导致控制器卡住,此操作可能会起作用。您可以尝试多次,然后再放弃,因为这是您恢复 SSD 而不丢失数据的唯一机会。如果成功识别,请快速备份所有数据,因为这可能是您最后一次机会。

此时,您可能想尝试恢复驱动器,您需要使用 SandForce 的官方软件。您将丢失驱动器上的所有数据,但如果您设法备份了驱动器,那么这不是什么大问题。该指南以英语描述了这个相当复杂的过程,在我看来,描述得非常好。

相关内容