step1: 关闭系统保护SIP
- 开机按住Commond+R,进入系统Recovery模式,在terminal中输入:
csrutil authenticated-root disable;
csrutil disable
-
如果关闭authenticated-root失败,你需要将【文件保险箱】停用
-
然后重启系统
step2: 重新将系统盘挂载到本地
-
在任意地方新建的目录,例如 /Users/name/Desktop/temp
-
使用命令
sudo mount -o nobrowse -t apfs /dev/diskNsM /xxx/xx重新将系统盘挂载到本地 注意:diskNsM 为系统盘的设备名,这个在"磁盘工具-设备" 里可以看到(例如:disk1s5s1),注意要把后面的s1去掉,因为磁盘工具里面里显示的是系统盘的快照,挂载成这个snapshot是没用的! -
按上述描述,我们应该执行的命令是:
sudo mount -o nobrowse -t apfs /dev/disk1s5 /Users/name/Desktop/temp
step3: 修改文件
-
经过step2的操作,系统盘就重新挂载到了桌面的temp文件夹下面,从这个文件夹进去就是系统根目录了。而且这个文件夹是可读可写的,我们把要修改的系统配置文件夹/文件 复制到相应的系统目录里
-
我的需求只是在根目录下软链一个文件夹,所以在temp文件夹下,我只需执行以下命令
sudo Ln -s /Users/name/Workspace/ServiceLog/data0
step4: 重建系统 snapshot
-
使用到的命令为
sudo bless --folder /xxx/xx/System/Library/CoreServices --bootefi --create-snapshot,其中/xxx/xx是最初设置的目录 -
如果是上述例子,我们需要执行
sudo bless --folder /Users/name/Desktop/temp/System/Library/CoreServices --bootefi --create-snapshot
- 重启系统,会发现挂载的磁盘消失,而修改的设置已经写入到原先不能更改的系统文件中了
step5: 重新开启SIP
- 重新进入Recovery模式,在terminal输入
csrutil enable
csrutil authenticated-root enable
- 重新开启SIP以免系统失去安全防护