Linux Mint下挂载Windows盘符

介绍Linux Mint下挂载Windows盘符的方式

安装linux、windows双操作系统时,可以在linux下直接挂载windows的盘符,这样可以访问windows下的文件系统,非常方便。

新版本的ubuntu16.04、Linux mint 18都已经内置了ntfs的支持,只需要简单挂载就好。最方便的方式是在开机时自动挂载。

只读挂载

如果只是要求读取文件,不要求写入,则非常简单。开机自动执行 udisksctl 命令即可解决问题。

设置开机自动挂载

在开机自启动程序中,增加一个开机启动项,命令为:

udisksctl mount -p block_devices/nvme0n1p4

解决无法装载的问题

如果windows在关机时进行了休眠,则无法装载,报错如下:

Error mounting /dev/nvme0n1p4 at /media/sky/win10: Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000" "/dev/nvme0n1p4" "/media/sky/win10"' exited with non-zero exit status 14: Windows is hibernated, refused to mount.
Failed to mount '/dev/nvme0n1p4': 不允许的操作
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully (no hibernation or fast restarting), or mount the volume
read-only with the 'ro' mount option.

解决这个问题的最好方式是消除休眠状态。一般重新启动到windows下,然后再次重启进linux,就OK。

前提是已经关闭了windows的快速启动功能,不然还会继续报同样错误。关闭快速启动的办法是进入windows,在控制面板 -> 电源管理中,选择关闭盖子的功能,点击"不能更改的选项",去掉快速启动的勾选。

但偶尔还是会遇到即使上面的事情都做好了,依然还是继续报错说"Windows is hibernated"。

此时需要想办法删除windows盘符上的休眠文件hiberfil.sys,具体作法是在linux中执行命令:

sudo mkdir /media/sky/win10
sudo ntfs-3g -o remove_hiberfile /dev/nvme0n1p4 /media/sky/win10

最恶劣的情况是,windows在即使关闭快速启动功能的情况下也还是会继续生成休眠文件,非常不可理喻。解决的方式是彻底关闭windows的休眠功能。以管理员权限启动命令行,执行命令:

powercfg /h off

参考资料

读写挂载

如果要求有写入权限,则推荐直接修改 /etc/fstab 文件。

执行

sudo lsblk -f

来查看各个盘符的 uuid:


NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1 vfat   FAT32       EC63-8FDF                              26.6M    72% /boot/efi
├─nvme0n1p2
├─nvme0n1p3 ntfs               1E1E79121E78E465
├─nvme0n1p4 ntfs               CA5096F75096E989
└─nvme0n1p5 ntfs         data  3AA6AC66A6AC247B                      595.4G    30% /media/sky/data
nvme1n1
├─nvme1n1p1 vfat   FAT32       8F75-FED5
├─nvme1n1p2 ext4   1.0         82e1f69a-06ff-42f6-972a-3bdf635b62fe  825.9G     3% /
└─nvme1n1p3 ext4   1.0         1730d77d-e91c-43ad-a883-c652c99541ae

这里我要自动挂载的是 nvme0n1p5 / uuid=3AA6AC66A6AC247B 的这个磁盘。系统之前临时把它挂载在了 /media/sky/data。为了开机自动挂载,需要确保这个目录始终存在:

sudo mkdir -p /media/sky/data

sudo vi /etc/fstab

加入内容:

UUID=3AA6AC66A6AC247B  /media/sky/data  ntfs-3g  defaults,nofail,uid=1000,gid=1000,dmask=022,fmask=133  0  0

参数解释:

  • UUID=…:你的磁盘唯一标识符。
  • /media/sky/data:挂载的目标目录。
  • ntfs-3g:Linux 下可靠的 NTFS 读写驱动(也可以写成 ntfs 或 ntfs3)。
  • defaults:使用默认的挂载设置。
  • nofail:非常重要。如果这个磁盘损坏或被拔出,系统依然会正常开机,而不会卡在黑屏报错界面。
  • uid=1000,gid=1000:将磁盘的所有权交给当前的用户(假设你的账号 uid 是 1000),确保有最高读写权限。
  • dmask=022,fmask=133:合理的权限掩码,让文件夹权限为 755,文件权限为 644,避免所有文件都被当成可执行文件(在终端里全显示为绿色)。
  • 0 0:不进行 dump 备份,开机不强制进行磁盘检查(NTFS 磁盘由 Windows 负责修复最好)。

重启之前,验证一下,先 umount。

sudo umount /media/sky/data
sudo systemctl daemon-reload
sudo mount -a

如果遇到报错:

The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Falling back to read-only mount because the NTFS partition is in an
unsafe state. Please resume and shutdown Windows fully (no hibernation
or fast restarting.)
Could not mount read-write, trying read-only
ntfs-3g-mount: failed to access mountpoint /media/sky/data: No such file or directory
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.

这表示 NTFS 磁盘被 Windows 锁定(导致只能只读),报错信息: The disk contains an unclean file system… Metadata kept in Windows cache, refused to mount.

原因: Windows 快速启动 (Fast Startup) 或休眠功能引起的。Windows 并没有真正的“彻底关机”,而是把磁盘缓存状态挂起冻结了。Linux 为了防止损坏数据,拒绝以“读写”模式强行挂载。