先补充一个题外话,关于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



补充学习资料链接

https://www.quwenqing.com/archives/1597.html

升级到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(没成功,估计是分区没找对)

https://www.cryogeny.cn/794.html

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