本文档适用机型:mac M1芯片,macOS Big Sur 11.1版本
问题
macOS Big Sur升级了系统保护,系统分区无法使用命令sudo mount -uw /
重挂载为读写,导致系统文件无法修改,如下:
原因
首先使用以下命令查看磁盘分区挂载情况:
其中disk3s1s1即为系统分区disk3s1的快照,以上可知,根目录是从只读权限的快照进去的,因此root用户也无法修改系统文件。
解决方案
方案一
重命名快照,重挂载系统分区为读写,具体操作可参考https://iosre.com/t/big-sur/18051
方案二(推荐)
将系统分区重新挂载在一个有读写权限的新目录下,在该目录下修改系统文件,生成快照,重启即可。具体操作:
1.关闭SIP
进入恢复模式:关机->等待10s,按住开机键直到出现“选项”图标再松开->选中“选项”->按住shift键同时点击“继续”,松开shift键。
关闭SIP:进入恢复模式后会弹出对话框,不要点击!找到左上角“实用工具”选择“终端”,在终端中输入
csrutil disable
csrutil authenticated-root disable
sudo reboot
重新开机后,查看是否关闭, 如显示disable表示已关闭。
csrutil status
csrutil authenticated-root status
2.重挂载
在用户目录下创建一个新文件夹,如/Users/caohuizhen/mnt,将系统分区挂载到该目录下。注意是disk3s1,不是disk3s1s1。
sudo mount -o nobrowse -t apfs /dev/disk3s1 /Users/caohuizhen/mnt/
接着,从mnt目录下便可访问到根目录,在此处修改系统文件。然后生成快照并重启。
sudo bless --folder /Users/caohuizhen/mnt/System/Library/CoreServices --bootefi --create-snapshot
sudo reboot
重启后,查看根目录下的系统文件已经被修改。
最后
如果想重新打开SIP,可使用以下命令,注意重启才会生效。是否打开看个人选择。
csrutil enable
csrutil authenticated-root enable
sudo reboot