先补充一个题外话,关于bigsur偶尔出现无法登陆appstore的情况,
打开终端,输入命令:
# sudo nvram -c
Password:
nvram: Error clearing firmware variables: (iokit/common) not permitted
输入用户密码,然后回车,不必理会提示信息,然后重启
Bigsur引入了快照方式,该方式使得在10.15中使用进入recovery模式后关闭SIP (csrutil disable) 然后痛快删除系统文件的方法失效了。
经过测试,Bigsur还是可以采用挂载快照的方式来删除。
1)首先还是要进入recovery模式,关闭掉SIP,两条命令(相对10.15多了一条命令)
csrutil disable
csrutil authenticated-root disable
2)重启系统进入Bigsur系统,打开终端:输入mount命令,查看当前root如果是disk1s5s1,那么需要挂载的就是disk1s5这个分区。
如输入mount后出现以下的信息:
/dev/disk2s5s1on / (apfs, sealed, local, read-only, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk2s4 on /System/Volumes/VM (apfs, local, noexec, journaled, noatime, nobrowse)
/dev/disk2s2 on /System/Volumes/Preboot (apfs, local, journaled, nobrowse)
/dev/disk2s6 on /System/Volumes/Update (apfs, local, journaled, nobrowse)
/dev/disk2s1 on /System/Volumes/Data (apfs, local, journaled, nobrowse)
/dev/disk1s4 on /Volumes/Win-Data (exfat, asynchronous, local, noowners)
/dev/disk0s4 on /Volumes/Win10 (ntfs, local, read-only, noowners)
map auto_home on /System/Volumes/Data/home (autofs, automounted, nobrowse)
/dev/disk3s1 on /Volumes/Mac-Data (apfs, local, journaled)
ilaoyao_asus@ilaoyao-AsusdeiMac ~ %
那么表明需要挂载的是disk2s5。
3)进入终端,随便建立一个文件夹,作为挂载用,如~/temp
输入命令:
mkdir ~/temp
sudo mount -o nobrowse -t apfs /dev/disk2s5~/temp 【这两个粗体位置根据实际情况填写。】
输入密码回车后,在当前目录会出现系统分区的挂载结果,这个时候就可以修改这个里面文件,比如删除系统自带程序
4)进入终端,sudo rm -rf ,访达打开挂载目录下面的/System/Applictions,里面就是系统的内置程序,一个一个的拖到rm -rf的终端里面,回车,输入密码,回车。
5)修改完成之后需要重新保存快照(我理解是这样的意思)
sudo bless --folder ~/temp/System/Library/CoreServices --bootefi --create-snapshot 【这个粗体位置根据实际情况填写,就是上面那个挂载的目录】
6)重启Bigsur系统后,就会发现系统的内置程序删除掉了。
同样可以参照10.15中禁止系统更新的方法同样来修改这个挂载分区的系统更新。(注意对应的加粗字体)
sudo chmod 644
~/temp/System/Library/PrivateFrameworks/SoftwareUpdate.framework/Versions/A/Resources/SoftwareUpdateNotificationManager.app/Contents/MacOS/SoftwareUpdateNotificationManager
补充学习资料链接
升级到Big Sur后,以写模式挂载root报错(SIP已disable)
sudo mount -uw /
mount_apfs: volume could not be mounted: Permission denied
mount: / failed with 66
Big Sur 新增了 Signed System Volume 机制,对系统所在的 APFS Volume 增加了更多的保护
Reboot into recovery mode and run:
csrutil authenticated-root disable
Reboot back into MacOS
Find your root mount's device – run mount and chop off the last s, e.g.
if your root is /dev/disk1s5s1, you'll mount /dev/disk1s5
Create a new directory, for example ~/mount
Run:sudo mount -o nobrowse -t apfs /dev/disk1s5 ~/mount
Modify the files under the mounted directory
Run:sudo bless –folder MOUNT_PATH/System/Library/CoreServices –bootefi –create-snapshot
Reboot your system, and the changes will take place
缺点:
修改后,无法再启用SSV机制,但是可以启用SIP机制,因为系统已修改,导致签名不一致,若启用SSV,则校验失败,报错禁止启动。
csrutil enable
csrutil authenticated-root disable
Big Sur 引入的 Signed System Volume 机制会给 System APFS Volume 的每个文件
/文件夹都设置一份 hash,在 bootloader 启动后,加载内核前会进行完整性校验,校验不通过的话会拒绝引导,并提示用户重装 macOS
。使用 mount 查看挂载点会发现 /多了个 sealed 标志。系统默认会从 SSV snapshot 启动,对用户无感知。
学习资料链接2(没成功,估计是分区没找对)
Big Sur删除系统快照并解锁系统分区
由于Big Sur引?了快照系统,每次启动并不是真正的启动系
统分区,?是启动?个只可读的系统快照,如果需要进?更改
系统分区的操作那么就必须删除系统快照,让Big Sur从真正
的系统分区上启动。
禁用SIP
方法一 设置OpenCore 的csr-active-config 为
FF0F0000 ,完全禁?SIP(系统完整性保护)。
方法二 进入recovery 执行下列命令
csrutil disable
csrutil authenticated-root disable
解锁系统保护
重启进入recovery
终端执行命令: diskutil list 查看系统安装所在磁盘位置比如 disk0s2
挂载此磁盘 diskutil mountDisk disk0s2 查看挂载到了/Volumes/xxx 卷,比如/Volumes/macOS
对此卷赋予读写权限 mount -uw /Volumes/macOS
运行
/System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -v /Volumes/macOS -r ""
再运行 diskutil apfs listSnapshots /Volumes/macOS 记录得到的快照UUID
删除快照 diskutil apfs deleteSnapshot /Volumes/macOS -uuid <快照UUID>
再运行 diskutil apfs listSnapshots /Volumes/macOS 确保快照被删除,命令返回 no snapshots for disk
重启回到big sur 系统,运行 sudo mount -uw 没有返回错误,运行 diskutil info /确保返回的是磁盘位置disk0s2而不是快照位置disk2s2s1