hdparm 错误:SG_IO:错误/缺少感知数据

Sam*_*Sam 13 hard-drive hdparm self-encrypting-drive opal

我正在 Kali Live 中尝试 hdparm 将 ATA 密码添加到我的 Micron M600 自加密 SSD,我使用: hdparm --security-set-pass PASSWORD sda

但我得到:

sda:  Issuing SECURITY_SET_PASS command, password="PASSWORD",
user=user, mode=high SG_IO: bad/missing sense data, sb[]:  70 00 05 00
00 00 00 0a 04 51 60 00 21 04 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)

那么为什么会发生这种情况呢?

当我输入时hdparm -I sda,它显示我的驱动器被“安全冻结”,我记得这意味着我无法更改任何安全设置,包括添加 ATA 密码,是这个问题吗?

我的 BIOS 不支持 ATA 密码,我以前从未设置过。

编辑:安全部分hdparm -I

Security: 

    Master password revision code = 65534
            supported
    not     enabled
    not     locked
            frozen
    not     expired: security count
            supported: enhanced erase
    2min for SECURITY ERASE UNIT. 
    2min for ENHANCED SECURITY ERASE UNIT.
Run Code Online (Sandbox Code Playgroud)

这个网站上的格式总是乱七八糟,但我尽量保持内容的可读性。

小智 10

有同样的问题,我在其他地方读到设备的电源或热插拔循环会解冻它。有些人建议在笔记本电脑的情况下暂停系统,所以我决定尝试一下,它奏效了!

所以这就是我为“解冻”驱动器所做的事情(它位于 hetzner 托管公司的远程服务器上):

首先,我将服务器引导到 nfs 引导的救援环境中。然后我登录并挂起系统:

local $> ssh root@server    
server #> apt-get install pm-utils
server #> pm-suspend
Run Code Online (Sandbox Code Playgroud)

此时系统挂起(还有 SSD),当然我的 ssh shell 没有响应。

我使用主机控制面板发出 WOL(局域网唤醒)信号(不确定 ping 是否会成功),过了一段时间(20 秒左右),外壳恢复了活力,SSD 是解冻以便我可以使用 hdparm 发出 --secure-erase 命令,如许多 howtos 中所述。


dir*_*rkt 5

部分答案,因为评论太长了:

给出的感觉数据如下:

70  response code=Current information (about the error etc.)
00
05  sense code=Illegal Request
00 00 00 00 (not valid)
0a  additional 10 bytes
04 51 60 00  (command specific)
21 04 additional sense code=Unaligned Write Command
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)

所以错误是“非法请求,未对齐的写入命令”。如果hdparm使用 ATA 直写 SCSI 命令,这没有什么特别的意义。

我不知道为什么会发生这种情况。如果是对“安全冻结”状态的反应,那真是一种奇怪的反应。可能是 SCSI 到 SSD 转换层中的某些内容不喜欢 ATA 直写命令?

您确定美光 M600 SSD 支持 ATA 密码吗?

编辑:您链接的手册说:

美光科技公司的SED支持任一所述TCG蛋白石2.0规范所述ATA安全特征SET。ATA 安全模式通常由系统 BIOS 或某些基于通用可扩展固件接口 (UEFI) 的系统在传统模式下启动。根据相关行业标准组织的规范,TCG Opal 和 ATA 安全性是相互排斥的。换句话说,如果一个被启用,另一个被禁用。

因此,如果您的 BIOS 没有启用它,它将无法工作。“冻结”只是意味着你不能改变状态。

请使用 的安全部分中的完整输出编辑您的问题hdparm -I

编辑

hdparm -I输出清楚地写着“不启用”,但“冻结”。所以你的 BIOS 没有启用它,而是冻结了,所以你不能改变状态。

这意味着您的 SSD 处于 TCG Opal 模式,我不知道如何在 Linux 下访问它。

插电时重新启动它值得一试。

如果您可以找到另一台带有 BIOS 的计算机,可以让您设置密码,或者不会冻结它,那么您也可以尝试这种方式。


ada*_*ncy 5

自从 5 年前提出这个问题以来,没有一个答案或评论提到过它,但实际上有一种非常简单的方法可以在本地机器上解码 Sense 错误消息:

使用所有主要Linux发行版上可用的命令sg_decode_sense(例如Arch Linux上的包中sg3_utils),并向其传递十六进制错误消息以将其转换为人类可读的形式:

user@host$ sg_decode_sense 70 00 05 00 00 00 00 0a 04 51 60 00 21 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Fixed format, current; Sense key: Illegal Request
Additional sense: Unaligned write command
Run Code Online (Sandbox Code Playgroud)

PS:由于问题标题是hdparm输出 Sense 错误时始终打印的通用消息,我相信这将帮助路过的人没有这个确切的 hexa Sense 错误消息。