我正在尝试禁用 SATA 3.5 英寸硬盘驱动器中的 DMA,使其在 PIO 模式下工作,因为要使用 GNU ddrescue 从故障磁盘中恢复一些坏扇区
我正在使用 PartedMagic Linux live CD,并尝试使用 hdparm 对其进行修改。磁盘使用 UDMA6,因此我运行:
hdparm -p4 /dev/sda
它显示了以下错误(我尝试了几种模式,不仅仅是 PIO4):
Attempting to set PIO mode to 0
HDIO_SET_PIO_MODE failed: Inappropriate ioctl for device
另外,我尝试了其他 Linux 实时系统,例如 SystemRescueCD,添加了内核参数libata.dma=0在启动时。结果相同,它仍然显示正在使用 UDMA6...
我读过 libata.force 的相关内容,但不太理解这个命令。我在 SystemRescueCD 启动时尝试了以下参数,但这次系统无法识别硬盘,哈哈(所以我再次重启,之后就把这个命令放在一边了)。
libata.dma=0 libata.force=
我查看了 BIOS 选项,但没有发现任何 DMA 选项或类似选项……
有什么建议么?
关闭记录:
这是一台旧的台式电脑(13 年历史的 x64 AMD),我没有其他电脑可以进行恢复(我的另一台电脑是笔记本电脑,我无法将磁盘直接连接到主板,否则会很乱......)
答案1
不确定 PIO/DMA 模式如何影响驱动器读取坏扇区的方式。
但尝试一下。
在 BIOS 中禁用 AHCI。
您的 Live CD 上的内核版本是什么?尝试使用尽可能新的版本,例如 Debian Live CD(应该有
ddrescue
-hdparm
如果没有,您可以使用apt-get install
它们。)hdparm
如果 Linux 内核太旧,某些功能可能会很奇怪。打开机壳并断开驱动器电源线,启动系统。等待实时 CD 启动,然后小心地连接电源线。如果您不接触驱动器电路板(仅握住边缘并放置在非静电高架表面,例如计算机顶部),并且没有静电(在处理驱动器之前触摸机壳的金属部分),则这对 SATA 驱动器来说是安全的。这将绕过 BIOS 可能在启动时发送并干扰的任何 ATA 安全命令。尝试执行以下接受的答案这个问题表示连接后驱动器是否不可见。
编辑:根据这SATA 驱动器可能不支持 PIO 模式(在 SATA 出现之前,PIO 是 EIDE 的东西)。但是我认为,如果您在 BIOS 中禁用 AHCI,控制器本质上就是在模拟 EIDE,因此它可能仍能工作。