Linux가 물리적 하드 드라이브의 *모든* 자동 읽기를 시도하지 않도록 강제하는 방법은 무엇입니까?

Linux가 물리적 하드 드라이브의 *모든* 자동 읽기를 시도하지 않도록 강제하는 방법은 무엇입니까?

내 하드 드라이브의 파티션 테이블이나 슈퍼 블록에 불행하게도 복구할 수 없는 섹터가 있어 LBA에 액세스할 때 디스크 펌웨어가 잠깁니다. 저는 물리적 불량 섹터에서 멀리 떨어진 데이터를 복구하는 데 관심이 있습니다. Linux에 드라이브에 전혀 아무 작업 /dev/sdX도 수행하지 않도록 지시할 수 있다면 그렇게 할 가능성이 높다고 생각합니다. sg_read_long, sg_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가 장치의 부팅 파티션을 검색하게 됩니다. 비활성화할 수는 있지만 직접 제어할 수는 없습니다.

회복에 행운을 빕니다.


드라이브의 모든 자동 읽기를 중지하려면 커널 구성 옵션을 설정해야 합니까?

커널 매개변수를 사용하면 이 작업이 훨씬 쉬워지지만 나는 그것을 알지 못합니다. 당신이 할 수 있는 최선의 방법은 장치를 완전히 블랙리스트에 등록하여 사라지게 만드는 것입니다. 제거하고 싶지만 아무것도 복구할 수 없는 죽은 내장 장치에 유용할 수 있습니다.

관련 정보