如何强制 Linux 不尝试*任何*自动读取物理硬盘?

如何强制 Linux 不尝试*任何*自动读取物理硬盘?

我的硬盘的分区表或超级块中有一个不幸的不可恢复扇区,这会导致磁盘固件在访问 LBA 时锁定。我对恢复远离物理坏扇区的数据感兴趣,如果我可以指示 Linux 对驱动器绝对不执行任何操作,我认为我很有可能做到这一点,除非它对应于我使用/dev/sdX我运行的工具进行读取明确地如sg_read_longsg_write_long、 和ddrescue

目前,我的Linux安装(Ubuntu)尝试读取分区表并自动挂载;我不希望在机器启动后通过 USB 连接驱动器时发生这种情况。除了 mtab、Nautilus 等所有用户模式内容之外,是否需要设置内核配置选项才能停止对驱动器的所有自动读取?

答案1

您必须删除执行大量自动化操作的整个用户空间(systemd、udev 等),因此仅使用 busybox 和 ddrescue(或您需要的其他工具)构建最小的 initramfs。您可以使用本指南作为参考:https://wiki.gentoo.org/wiki/Custom_Initramfs

除此之外,您还必须编译一个不支持分区表的自定义内核,否则内核本身将尝试自行自动读取。

这是一个不寻常的配置,因为人们当然希望他们的分区出现,所以通常所有内核都将这些设置为 yes:

CONFIG_MSDOS_PARTITION=y # for old school dos/mbr partitions
CONFIG_EFI_PARTITION=y   # for new GPT/UEFI partitions
# but there are many others like:
CONFIG_AIX_PARTITION=y
CONFIG_MAC_PARTITION=y
CONFIG_SOLARIS_X86_PARTITION=y

要摆脱内核对 HDD 的读取,您必须禁用所有这些。制作一个不支持任何类型分区表的内核。

即使如此,您也应该在热插拔驱动器之前先启动自定义内核 + initramfs。否则,BIOS 将已经扫描设备的引导分区。您也许可以禁用它,但您无法直接控制它。

祝您康复顺利。


是否需要设置内核配置选项才能停止对驱动器的所有自动读取?

内核参数将使这变得容易得多,但我不知道有这样一个。您最多可以将设备完全列入黑名单,使其消失。对于您只想摆脱的死内置设备可能很有用,但您也无法从中恢复任何内容。

相关内容