我无法在 Linux 中将 SATA 硬盘(在 UDMA 中工作)更改为 PIO 模式

我无法在 Linux 中将 SATA 硬盘(在 UDMA 中工作)更改为 PIO 模式

我正在尝试禁用 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,因此它可能仍能工作。

相关内容