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

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

我正在尝试使用 Kali Live 中的 hdparm 为我的 Micron M600 自加密 SSD 添加 ATA 密码,我使用: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

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

当我输入时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.

这个网站的格式总是很混乱,但我尽力保持内容的可读性。

答案1

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

给出的感觉数据如下:

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

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

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

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

编辑:您链接的手册上说:

Micron 的 SED 支持任何一个TCG Opal 2.0 规范或者ATA 安全功能集。ATA 安全模式通常由系统 BIOS 或某些基于通用可扩展固件接口 (UEFI) 的系统在传统模式下启动。根据相关行业标准组织的规范,TCG Opal 和 ATA 安全是互斥的。换句话说,如果启用其中一个,则另一个将被禁用。

所以如果你的 BIOS 没有启用它,它就无法工作。“冻结”只是意味着你无法改变状态。

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

编辑

输出hdparm -I明确显示“未启用”,但“冻结”。因此您的 BIOS 并未启用它,而是冻结了,因此您无法更改状态。

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

值得一试在插入电源的情况下进行电源循环。

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

答案2

遇到了同样的问题,我在其他地方看到过,关闭设备电源或热插拔循环可以解除冻结。有些人建议在笔记本电脑上暂停系统,所以我决定试一试,结果成功了!

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

首先,我将服务器启动到 nfs 启动的救援环境。然后我登录并暂停系统:

local $> ssh root@server    
server #> apt-get install pm-utils
server #> pm-suspend

此时系统已暂停(SSD 也是如此),我的 ssh shell 当然没有响应。

我使用主机控制面板发出了 WOL(局域网唤醒)信号(不确定 ping 是否能起到作用),过了一会儿(大约 20 秒),shell 恢复运行并且 SSD 解冻,因此我可以使用 hdparm 发出 --secure-erase 命令,如许多操作指南中所述。

答案3

自从五年前提出这个问题以来,没有一个答案或评论提到它,但实际上有一种非常简单的方法可以在本地解码机器上的 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

附言:由于问题标题是输出 Sense 错误时始终打印的通用消息hdparm,我相信这会对没有这个确切的六角 Sense 错误消息的人有所帮助。

答案4

我遇到了同样的问题,错误代码也完全相同。这是在戴尔系统上。我按照 arch wiki 操作https://wiki.archlinux.org/index.php/Solid_state_drive/Memory_cell_clearing

其中明确指出:

在 BIOS 中设置内部硬盘密码(注意,键盘映射是 en_US / qwerty)。

我有一个不同的键盘布局,所以基本上一直在使用错误的密码......

相关内容