我有一个外部硬盘,当 Linux Mint 尝试在插入时自动挂载该硬盘时,它突然出现错误。出于某种原因,我在 Nemo 中看到两个“外部驱动器”(驱动器名称)标签,但两者都存在尝试访问它们时会出现类似的错误。唯一的区别是第二个驱动器访问错误是/dev/sdb2
,而不是 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
这似乎正在安装驾驶而不是一个分割。我可以通过这样做访问整个驱动器,但我不确定为什么会这样。外部应该只有一个分区,所以我不确定为什么会观察到以下结果(如下所示)。如果我尝试挂载/dev/sdbX
,其中 X 为 1、2、3 或 4,我会遇到"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。
错误报告
向内核开发人员报告此错误可能是个好主意。有用的是驱动器前 512 字节的副本,该副本被误解为 MBR 分区表。如果不是每个 NTFS 文件系统都出现该错误,那么重现该错误将很有用。要将驱动器的部分复制到mbr.bin
:
sudo dd if=/dev/sdb of=mbr.bin bs=512 count=1
如果您想自己报告错误,请随意。否则,请将文件发布到网上某个地方,以便这里的人可以完成此操作。如果您要重新格式化,显然首先要执行此操作。