외장 하드 드라이브가 있는데 Linux Mint가 외장 하드 드라이브를 연결했을 때 자동 마운트하려고 하면 갑자기 오류가 발생합니다. 어떤 이유로 Nemo에 두 개의 "외부 드라이브"(드라이브 이름) 라벨이 표시되지만 액세스하려고 할 때 둘 다 비슷한 오류가 나타납니다. 유일한 차이점은 두 번째 드라이브 액세스 오류가 /dev/sdb2
아래와 같이 sdb3이 아닌 sdb3에 대한 것이라는 점입니다.
Error mounting /dev/sdb3 at /media/branden/External_Drive: Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177" "/dev/sdb3" "/media/branden/External_Drive"' exited with non-zero exit status 12: NTFS signature is missing.
Failed to mount '/dev/sdb3': Invalid argument
The device '/dev/sdb3' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
이걸 수동으로 설치하려고 했는데 더 이상한 것을 만났습니다. 유효한 명령은 다음과 같습니다:
mount /dev/sdb /mnt
이게 설치되는 것 같더라구요운전하다하나보다는분할. 이렇게 하면 전체 드라이브에 액세스할 수 있지만 왜 이런 일이 발생하는지 잘 모르겠습니다. 외부에는 파티션이 하나만 있어야 하는데 왜 다음과 같은 결과(아래 표시)가 나타나는지 잘 모르겠습니다. X가 1, 2, 3 또는 4인 위치에 마운트하려고 하면 /dev/sdbX
다음과 같은 결과가 나타납니다 "special device /dev/sdbX does not exist"
.
이것은 내가 얻는 결과입니다.fdisk -l, 텍스트 형식이 형편없어서 이미지를 게시하겠습니다.
그리고별도의 -l:
어떤 제안이 있으십니까?
마찬가지로 /etc/fstab의 특수 문자로 인한 텍스트 형식으로 인해 읽을 수 없게 됩니다.
나는 디렉토리 구조의 특정 위치에 장치를 설치하기 위한 특별한 규정을 만든 적이 없습니다. 인식되면 부팅 시 미디어 장치로 설치됩니다. 최근에 드라이브 복제를 수행했는데 드라이브가 시작 시 더 이상 마운트되지 않습니다.
산출ls /dev/sdb*
/dev/sdb /dev/sdb2 /dev/sdb3
너무 길어요.- 다른 디스크에서 HDD를 복제한 후 드라이브가 미디어 장치로 마운트되지 않습니다(USB 인터페이스가 있는 외장 HDD이기 때문). 또한 mount /dev/sdb /mnt
.mount /dev/sdb1 /mnt
fdisk
와 의 출력은 parted
전자가 존재해서는 안 되는 여러 파티션을 표시한다는 점에서 다릅니다.
답변1
무슨 일이에요?
그래서 저는 이 문제를 조사하는 데 시간을 보냈고 이 문제가 커널 버그로 인해 발생했다고 확신합니다. 디스크 루트에 NTFS 파일 시스템이 있기 때문에 오류가 발생합니다(즉, 파일 시스템이 디스크 시작 부분에서 시작됨). 일반적으로 디스크 루트에는 파티션 테이블이 포함되며 파일 시스템은 개별 파티션 내에 위치합니다.
일반적으로 이는 다른 파일 시스템에서는 잘 작동하지만 NTFS라는 사실이 커널을 혼란스럽게 하는 것 같습니다. NTFS 파일 시스템을 인식하지 못하고 무시하며, 대신 MBR 파티션 테이블로 인식하고 존재하지 않는 파티션과 관련된 일부 장치 파일을 생성합니다.
왜 그걸 모르시는지 모르겠습니다 sdb1
. 디스크의 시작과 끝이 디스크의 끝을 지나서 sdb4
나타나지 않습니다. 아마도 커널이 다른 문제를 발견했지만 sdb1
문제를 일으키지는 않았을 것입니다. 하지만 당신은 그것을 이해합니다 sdb2
.sdb3
해결책
해결책은 시스템의 나머지 부분이 신뢰할 수 없는 파티션을 무시하도록 하는 것입니다. 이렇게 하려면 먼저 sudo udevadm info /dev/sdb | grep ID_SERIAL=
디스크가 삽입될 때 디스크의 일련 번호를 찾는 명령을 실행합니다 =
. 다음으로 경로가 포함된 파일을 만듭니다 /etc/udev/rules.d/99-hide-partitions.rules
. 다음 두 줄을 입력하고 xxxxx
이전 일련 번호로 바꿉니다.
ID_SERIAL=xxxxx, ID_PART_ENTRY_NUMBER=="2", ENV{UDISKS_IGNORE}="1"
ID_SERIAL=xxxxx, ID_PART_ENTRY_NUMBER=="3", ENV{UDISKS_IGNORE}="1"
파일을 저장한 후 디스크를 뽑았다가 연결하면 모든 것이 정상입니다.
선택하다
물론 또 다른 옵션은 디스크를 다시 포맷하고 그 위에 파티션 테이블과 NTFS 파일 시스템을 넣거나 다른 파일 시스템을 사용하는 것입니다.
NTFS 파티션을 사용하는 이유는 Windows와의 호환성 때문일 수 있으므로 장기적으로는 더 나은 솔루션이 될 수 있습니다. Windows에 대한 내 경험으로는 파티션 테이블이 없는 디스크도 좋아하지 않는다는 것입니다(이것이 아마도 이 버그가 이전에 Linux에 나타나지 않았던 이유일 것입니다). 드라이브가 Windows에서 작동하는지 확인할 수 있습니다(또는 이미 알고 있을 수도 있습니다). 이 경우 Linux에서 제대로 작동하지 않는 디스크에 Windows에서 작동하지 않는 NTFS 파일 시스템을 사용하는 것은 그다지 유용하지 않을 수 있습니다.
Linux 및 Windows에서 잘 작동하는 파일 시스템을 원한다면 좋은 시도는 다음과 같습니다. UDF.
오류 보고서
이 버그를 커널 개발자에게 보고하는 것이 좋습니다. 유용한 것은 MBR 파티션 테이블로 잘못 해석되는 드라이브의 처음 512바이트의 복사본입니다. 모든 NTFS 파일 시스템에서 이 오류가 발생하지 않는 경우 오류를 재현하는 것이 유용합니다. 드라이브의 일부를 복사하려면 mbr.bin
:
sudo dd if=/dev/sdb of=mbr.bin bs=512 count=1
버그를 직접 보고하고 싶다면 언제든지 신고해 주세요. 그렇지 않은 경우 여기 있는 누군가가 할 수 있도록 파일을 온라인 어딘가에 게시하십시오. 다시 포맷하는 경우 이것이 가장 먼저 해야 할 일입니다.