Evan Blog

The journey is the reward

step1: 关闭系统保护SIP

  1. 开机按住Commond+R,进入系统Recovery模式,在terminal中输入:
csrutil authenticated-root disable;
csrutil disable
  1. 如果关闭authenticated-root失败,你需要将【文件保险箱】停用

  2. 然后重启系统

step2: 重新将系统盘挂载到本地

  1. 在任意地方新建的目录,例如 /Users/name/Desktop/temp

  2. 使用命令sudo mount -o nobrowse -t apfs /dev/diskNsM /xxx/xx 重新将系统盘挂载到本地 注意:diskNsM 为系统盘的设备名,这个在"磁盘工具-设备" 里可以看到(例如:disk1s5s1),注意要把后面的s1去掉,因为磁盘工具里面里显示的是系统盘的快照,挂载成这个snapshot是没用的!

  3. 按上述描述,我们应该执行的命令是:

sudo mount -o nobrowse -t apfs /dev/disk1s5 /Users/name/Desktop/temp

step3: 修改文件

  1. 经过step2的操作,系统盘就重新挂载到了桌面的temp文件夹下面,从这个文件夹进去就是系统根目录了。而且这个文件夹是可读可写的,我们把要修改的系统配置文件夹/文件 复制到相应的系统目录里

  2. 我的需求只是在根目录下软链一个文件夹,所以在temp文件夹下,我只需执行以下命令

sudo Ln -s /Users/name/Workspace/ServiceLog/data0

step4: 重建系统 snapshot

  1. 使用到的命令为sudo bless --folder /xxx/xx/System/Library/CoreServices --bootefi --create-snapshot,其中/xxx/xx是最初设置的目录

  2. 如果是上述例子,我们需要执行

sudo bless --folder /Users/name/Desktop/temp/System/Library/CoreServices --bootefi --create-snapshot
  1. 重启系统,会发现挂载的磁盘消失,而修改的设置已经写入到原先不能更改的系统文件中了

step5: 重新开启SIP

  1. 重新进入Recovery模式,在terminal输入
csrutil enable
csrutil authenticated-root enable
  1. 重新开启SIP以免系统失去安全防护