manjaro挂载NTFS系统的方法

时间:2024-03-08 07:34:43

本文部分引自https://blog.csdn.net/baimaozi/article/details/3134267?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase。感谢baimaozi的分享!

我用的是manjaro发行版,属于arch系,所以大部分arch的方法都可以尝试。然后archwiki上的方法虽然也是安装ntfs-3g,但是配置方法与下文有所不同,并且我没弄起来,终端报错,不知道什么鬼。

正文:
装好manjaro后,虽然可以访问windows的盘,但是只能读不能写入文件,有点烦。而且一开始在dolphin中会这样显示:
没挂载的盘上有黄色的东西。
就是没挂载的盘一开始linux是检测不到的,比如用kdiskfree。
为了实现读写ntfs文件系统的功能,我们采用ntfs-3g方案。

我们先安装ntfs-3g.

sudo pacman -S ntfs-3g
tips:我发现装了这个包重启后我就可以在windows盘中新建文件了,虽然我也不知道为什么。也就是说你已经可以写盘了。但是要做到开机即能检测到盘,我们还是将它挂载。

我们查看下哪个分区是NTFS分区.

sudo /sbin/fdisk -l

例如我的:

Disk /dev/sda:476.94 GiB,512110190592 字节,1000215216 个扇区
磁盘型号:SAMSUNG MZNLN512
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:4BFE448F-5A16-4E19-807A-53C69FFCD1FA

设备            起点       末尾      扇区   大小 类型
/dev/sda1       2048     616447    614400   300M EFI 系统
/dev/sda2     616448     878591    262144   128M Microsoft 保留
/dev/sda3     878592  208931835 208053244  99.2G Microsoft 基本数据
/dev/sda4  208932864  210595839   1662976   812M Windows 恢复环境
/dev/sda5  210595840  439187455 228591616   109G Microsoft 基本数据
/dev/sda6  439187456  606957567 167770112    80G Microsoft 基本数据
/dev/sda7  832444416 1000214527 167770112    80G Microsoft 基本数据
/dev/sda8  606957568  832444415 225486848 107.5G Linux 文件系统

分区表记录没有按磁盘顺序。


Disk /dev/loop0:67.56 MiB,70844416 字节,138368 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop1:86.25 MiB,90435584 字节,176632 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop2:96.63 MiB,101318656 字节,197888 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

知道哪个是 NTFS分区 后,(我想挂载sda6和sda7)我们来编辑/etc/fstab,实现自动挂载.

sudo vi /etc/fstab或者sudo nano /etc/fstab来打开/etc/fatab

加入类似如下的内容:(只是一个例子)

/dev/sda1  /mnt/windows  ntfs-3g  users,noauto,uid=1000,gid=100,fmask=0113,dmask=0002,locale=zh_CN.utf8  0 0

 
/dev/sda6  /mnt/backup   ntfs-3g  users,uid=1000,gid=100,fmask=0113,dmask=0002,locale=zh_CN.utf8         0 0

#/mnt是根目录下路径,是你的NTFS文件系统的挂载点。windows或者backup都是名字,可以随便取。

重启,你就会发现开机后dolphin中原来windows盘上的黄东西没了。用kdiskfree查看会发现我的sda6和sda7挂载完毕:

写入代码的特点为:

  1. 可以让任何用户挂载和卸载你的NTFS分区。
  2. user(uid=1000)和group(gid=100)拥有分区的所有文件,并且对文件有-rw-rw-r-- (0664)权限,对目录有drwxrwxr-x (1775)权限。
  3. 使用zh_CN.utf8作为locale
  4. /dev/sda6在启动时自动挂载,/dev/sda1则不会

其模式为:

ntfs-3g 0 0

典型的、非常有用的ntfs-3g选项

* users - 假如ntfs-3g可执行文件设置了SUID root(命令:chmod u+s /bin/ntfs-3g),则允许任何人挂载/卸载NTFS分区。请注意,你要用users而不是user
* noauto - 启动时不要自动挂载分区   #慎用!
* uid - 指定NTFS分区中文件和目录的拥有者(用十进制数表示)
* gid - 指定NTFS分区中文件和目录的用户组(用十进制数表示)
* fmask - 文件权限(八进制数掩码)
* dmask - 目录权限(八进制数掩码)
* locale - 通常用来让使用国际化字符集的文件可见

掩码值
要无需任何计算就可以较易弄懂特定权限的掩码值,可以这样做:

  1. 启动一个新的shell会话。使用任何你喜好的终端模拟器。
  2. 使用umask命令获得指定权限设置的八进制数。
    1. 使用umask"设置"文件创建时掩码。例如:
      $ umask ug=rw,o=r
      请注意ug=rw,o=r等于-rw-rw-r--或者0664。
    2. 直接不带参数执行umask获取八进制数。
      $ umask
      将会显示
      0113
      原文基础上补充:如果你不小心写错了,导致系统启动时找不到文件系统,然后进入了emergency mode,别慌。输入你的root密码(不会显示),按回车,进入终端模式,然后sudo nano /etc/fstab把原来改的东西改回去或者查看错误,保存重启就应该ok了。另外,如果Linux系统只有一个用户,建议参阅archwiki上ntfs—-3g 的配置方案。因为上述方案即使是关闭了Windows的快速启动,仍偶尔会发生挂载失败的问题。