修改 macOS 11 及以上版本系统的系统文件

/ 0评 / 1

起因

macOS 11.0 Big Sur 及以上版本的系统,相比此前的 macOS 10.15 Catalina,加固了对系统文件的保护。当我们想修改系统默认的 Python 软链接,或者想要更换开机的登录界面的默认壁纸时,需要的操作,相比以往,变得更加复杂。此文将我前些日子对 macOS 11.6.8 的一些折腾过程,整理记录了下来,希望能够帮助你修改新版本的 macOS 的系统文件。

流程

1、关闭 SIP 和 authenticated-root
2、将系统分区挂载到新目录下
3、在新目录中修改系统文件
4、生成新的系统快照(将更改保存到系统分区)
5、重启并开启 SIP 和 authenticated-root

关闭 SIP 和 authenticated-root

这两项操作属于对 macOS 底层进行修改,故需要关机后开机进入恢复模式,才可操作
进入恢复模式的方法,据说 Apple Silicon 机型和 Intel 机型的操作方法不同。此处 Intel 机型的操作方法为:开机后按住 Command + R,等待进度条出现后,即可松手,进度条走完后,即进入了恢复模式,然后在左上角打开终端即可
在终端中执行下面两条命令
csrutil disable
csrutil authenticated-root disable
正常情况下,执行这两条命令后,不会显示任何提示信息,说明一切顺利
然后重启正常进入系统即可

将系统分区挂载到新目录下

首先在你的用户目录下(即硬盘→用户→"你的用户名")新建一个空文件夹,比如建立一个名为 mnt 的新文件夹,我们稍后会将系统分区挂载到这个文件夹中
然后查看咱们的系统分区的名字。打开终端,输入mount回车,会显示下图这样的结果,咱们找名字最长的那个,比如我这里是disk1s5s1,就是系统分区挂载的虚拟分区,那么对应的真正的系统分区,就应该是disk1s5
寻找系统分区
找到系统分区后,咱们在终端中继续执行挂载操作
sudo mount -o nobrowse -t apfs /dev/系统分区名 /Users/你的用户名/新建的文件夹/
比如我的用户名是fotink,系统分区名是disk1s5,新建的文件夹是mnt,那么我就执行
sudo mount -o nobrowse -t apfs /dev/disk1s5 /Users/fotink/mnt/
执行后,需要输入登录密码,这个过程不会显示任何输入字符,输入完毕后回车即可

在新目录中修改系统文件

咱们打开刚才新建的那个文件夹,会发现这个文件夹,已经变成一个磁盘了,咱们直接在这个磁盘里面修改原本需要修改的系统文件即可。

修改系统的 Python 软链接

例如我想修改系统自带的 Python 的软链接,使每次在终端执行 python 时,打开的是我自己安装的 Python 3.10 而非系统自带的 Python 2.7,那么咱们就可以修改 /Users/fotink/mnt/usr/bin/ 的python 软链接
通过 where python3 指令可以找到,我安装的 Python 3.10 的位置在 /Library/Frameworks/Python.framework/Versions/3.10/bin/python3 这里,打开之后发现,这个 python3 软链接指向的是同目录下的 python3.10 文件,那么就非常简单了
首先删除 /Users/fotink/mnt/usr/bin/ 下的 python 和 python-config 软链接,然后在终端执行
sudo ln -s /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 /Users/fotink/mnt/usr/bin/python
sudo ln -s /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10-config /Users/fotink/mnt/usr/bin/python-config
输入密码回车后,搞定

修改 macOS 开机(登录)界面的壁纸

有的小伙伴可能会注意到,将 macOS 系统升级至 10.14 还是 10.15 后,每次开机时显示登录界面的速度快了不少,但是每次开机,显示的壁纸都不是自己设定的桌面壁纸,而是系统的默认壁纸。这是因为 10.14 或 10.15 系统默认开启了“文件保险箱”功能,实现了对用户数据的全盘加密
开启“文件保险箱”后,每次开机的流程,将由
读取硬盘内的用户数据→显示登录界面→密码正确后进入桌面
变为
显示登录界面→密码正确后解锁硬盘→读取硬盘内的用户数据→进入桌面
在最开始显示登录界面时,此时加载的壁纸是系统默认壁纸,用户头像也十分模糊(应该是缓存的缩略图)
所以,想要修改开机界面的壁纸,有两种手段,一个是在设置→安全性与隐私→关闭“文件保险箱”功能,这样既可以让开机后显示自己的壁纸,同时开机时用户头像也不会模糊
关闭“文件保险箱”
另一种方法,则是修改系统默认的壁纸
如果是 10.15 Catalina 系统,可直接按照网上大量的教程直接修改 Catalina.heic 文件:查看教程
如果是 11 Big Sur 或更新的系统(理论支持 Monterey),则需要在挂载系统分区后,进入挂载目录的 /System/Library/Desktop Pictures 文件夹下,直接替换对应的图片文件
比如我是 Big Sur 系统,则在“访达”中点击菜单栏的“前往”→“前往文件夹”
前往文件夹
然后输入
/Users/fotink/mnt/System/Library/Desktop Pictures
回车后打开存放系统默认壁纸的目录。Big Sur 的默认登录壁纸是“Big Sur Graphic.heic”,咱们只需将自己想要更换的壁纸更名为这个名字(注意要把后缀名从png、jpg改为heic),然后替换进这个目录中的默认壁纸,即可

生成新的系统快照(将更改保存到系统分区)

在终端中执行下列命令
sudo bless --folder /Users/用户名/挂载的目录/System/Library/CoreServices --bootefi --create-snapshot
比如我自己应该执行
sudo bless --folder /Users/fotink/mnt/System/Library/CoreServices --bootefi --create-snapshot
输入密码回车后,等待执行完毕即可

重启并开启 SIP

此时对系统的更改就已经完成了,重启之后即可生效
建议大家在修改完系统之后,开启 SIP 系统保护
还是重启至恢复模式后,在终端中执行下面的新命令
csrutil enable
然后重启,搞定,enjoy~
至于 authenticated-root,我重新开启后,开机就无法进入系统,大伙如果想开启,可以执行 csrutil authenticated-root enable 试试,如果开机无法进入系统,那就进入恢复模式,重新禁用 authenticated-root 后,即可进入系统


注意,进行完整的系统更新后,对系统的所有修改都会恢复为默认
参考文章:https://blog.csdn.net/carina_cao/article/details/115076964

转载声明:本文使用知识共享署名 4.0 国际许可协议 [CC BY-NC-SA 4.0] 进行授权

发表回复

您的电子邮箱地址不会被公开。