可能是由于版权原因,对NTFS格式的支持,自Mac去掉写入之后,linux的新版本内核更加彻底的去掉了对NTFS的支持,连读取都没有办法读取。
想要解决这个问题,安装一个开源的ntfs-3g模块即可。
对于普通桌面linux中,可能已经集成了该模块。服务器版通常没有(尽量减少安装的最小安装)如果要YUM安装,该模块在EPEL包中,可能需要你添加一下源。Extra Packages for Enterprise Linux (EPEL) :: Fedora Docs (fedoraproject.org)
这里介绍源码方式安装,也非常简便。
首先下载最新版的源码包:
https://www.tuxera.com/community/open-source-ntfs-3g/
请确保已经安装了基本开发工具(GCC编译器,LIBC DEV库)。
然后解压缩:
tar zxvf ntfs-3g_ntfsprogs-2017.3.23.tgz
进入文件目录:
cd ntfs-3g_ntfsprogs-2017.3.23
编译并安装:
./configure
make
make install
使用方法:
mount -t ntfs-3g /dev/sda1 /mnt/windows
安装ntfs-3g后实现点击分区自动挂载功能
默认安装ntfs-3g之后,可执行文件为/bin/ntfs-3g,并且自动连接到/usr/sbin/mount.ntfs-3g
如:lrwxrwxrwx. 1 root root 12 Aug 5 20:03 /usr/sbin/mount.ntfs-3g -> /bin/ntfs-3g
因为是mount.ntfs-3g,而我们点击windows的ntfs分区时,系统找的是mount.ntfs,所以会报不存在ntfs模块,所以我们只需要添加一个新的连接即可。
如:ln -s /bin/ntfs-3g /usr/sbin/mount.ntfs
完成之后,再次点击windows的分区,输入root密码,分区就会被自动挂载了,不需要输入命令行,非常的简便。
mac系统也可以使用这个模块,不过安装gcc需要安装homebrew,还有fuse of macOS。
另外还有一种设想,就是mac本身是带有ntfs写模块的,只是默认在关闭状态。如果能知道默认mount加载脚本命令的话,改一下加载r为rw就能实现直接读写了。
修改mac系统文件需要在恢复模式下,关闭系统完整性保护。
另外更新系统后,也有可能需要重新做。
现在我还没有研究出mac的默认加载脚本,如果研究出来了,会更新本文章。
更新:
哈哈,最后这个问题还是成功的让我搞定了。
我的系统版本是目前最新的10.15.3,网上的一些方法都过时了,在新系统中无法使用。
实验成功日期为2020-3-21,我父亲的生日这天。
首先回答上面的问题,mac系统的mount_ntfs文件似乎是特制的。既保留了ntfs的读写功能(写功能需要命令行针对某一分区进行特别设置,设置完感觉还很不完美),同时还让你无法修改加载模式。里面的文件看着像二进制文件,可是打开还能看到一些文字。总之,改脚本这种方案,我看一时半会不靠谱,需要另辟蹊径。
经过一番认真研究,发现网上提供的方法,都比较老旧。看看原理还行,具体操作会遇到很多不一样的地方。好在我最终还是实现了自己的目的,ntfs的u盘或者移动硬盘等插入电脑,直接打开就可以读写。
下面说一下方法。
1、首先关闭SIP系统完整性保护
方法是,重启电脑,按住command+r进入恢复模式,在最上面的实用工具里,打开终端,输入关闭sip的命令
csrutil disable
系统会给你一个提示,表示关闭成功。然后重启电脑。
ps:mac电脑添加了连root用户都无法修改的系统完整性保护,再操作完后,记得开启保护。
2、官网下载Fuse for MacOS,是个dmg镜像,安装时候3个选项要全部安装。
3、为电脑安装homebrew
安装方法,百度一下homebrew的官网就有,不过网速奇慢无比。
我这里提供一个方法(联通网络才能打开git)
在github上搜索homebrew,然后在install分支里,下载install.sh文件。
(网上的教程都是下载install,现在已经升级了)
下载完成打开,把里面的下载源改为我们中国清华的源。
BREW_REPO="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew"
(新版本不需要更改core,只改一个主源就够了)
然后用bash安装:
bash -c ./install.sh
一会儿就安装完了,速度很快,也不会有网上说的“显示tapping时退出,再到对应目录git一下core……“这些步骤。(升级了,可以直接安装完成,速度很快)
安装完成后,我安装了gcc编译器,大概300MB的样子。
brew install gcc
需要另外安装依赖包,brew会自动替你装好。文件有点大,下载速度2MB/s,可以等一下。
4、装好后,安装我们的关键模块:ntfs-3g!
由于我懒得编译了,就直接brew了一个,休息一下。
brew install ntfs-3g
需要另外安装gettext编程语言包,大约280MB,耐心等一下。
安装完成后,会提示你安装的内容和mac自带的BSD包不可以放到一起,会冲突。(原文说会让安装的软件们产生疑惑~)
不过毕竟我们不是专业搞开发需要天天用,不管他也就是了。默认是分开装的,不会对我们有什么影响。
5、接下来,我们把根目录改为可读写模式(mac很鸡贼,你关了sip,照样不能用,打开发现是只读模式……)
sudo mount -uw /
如果这里不操作这一步,就会提示:Read-only file system
6、接下来,把原本Mac的mount_ntfs,在/sbin里的软连接给他改个名字备份一下
(为了保险,我还给他上了个chmod 755)
sudo mv "/Volumes/Macintosh HD/sbin/mount_ntfs" "/Volumes/Macintosh HD/sbin/mount_ntfs.orig"
系统很奇怪。按理说,这个命令是可以执行的,但是不知道为什么,用这种方式会提示没有找到该目录或文件。于是乎,我改了一下方式。我cd进去sbin,直接给他mv了,很成功。
sudo mv mount_ntfs mount_ntfs.orig
7、倒数第二步:把我们安装的ntfs-3g的软连接给他放进/sbin里
(linux里的名字叫做ntfs-3g,在Mac里是叫做mount_ntfs,名字都直接给你改好了)
sudo ln -s /usr/local/sbin/mount_ntfs /sbin/mount_ntfs
操作完成后,插上ntfs的u盘试了一下,相当完美~~
8、最后一步:开启sip保护。至于根目录读写不用担心,重启一下就失效了。
csrutil disable
9、enjoy your life~