Big Sur删除系统快照并解锁系统分区

Big Sur删除系统快照并解锁系统分区

部分网友反馈此方法对于Big Sur或者更高版本MacOs已经失效。 但也反馈能在12.2 以下可以操作的。 鉴于现在的软件实际很少有需要安装到系统分区的,本文已经不重要,不再更新。


由于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

Big Sur 11.6 的处理方案

[更新于 2021-11-20 ]

步骤1 按照前述方法二 禁用SIP

执行下列两句代码,返回为disabled 则表示禁用成功

csrutil status
csrutil anthenticated-root status

步骤2 挂载系统进行修改

查看系统所在磁盘分区

diskutil list

由下图可知,disk0为物理磁盘,其为disk2的容器,disk2 中的MacOS系统的分区为disk2s2

创建临时挂载点

sudo mkdir ~/tempMount

将disk2s2挂载到上述临时挂载点位

sudo mount -o nobrowse -t apfs /dev/disk2s2 ~/tempMount

此时系统的文件已经挂载到 tempMount下了,可以相应进行修改。比如这里尝试创建了一个temp文件夹并予以删除, 注意需要加sudo 进行操作

步骤3 将当前修改过的系统生成snapshot

sudo bless --folder ~/tempMount/System/Library/CoreServices --bootefi --create-snapshot

查看snapshot情况

diskutil apfs listSnapshots /Volumes/macOS

运行一次命令就生成一次此时的快照,示意图中是运行了两次之后的效果,此时如果重启,则对系统的修改生效

经过查询 bless 命令的说明,链接如下:

https://keith.github.io/xcode-man-pages/bless.8.html

可知:

--create-snapshot Attempts to create an APFS snapshot of the target APFS system volume and set it as root snapshot of the system volume. The target system will boot from this snapshot on its next boot.

这意味着采用create-snapshot命令后,系统下次重启会自动从修改过后的snapshot启动

实际情况重启正常进入系统,查看快照情况:

鉴于修改系统有可能导致系统出现系统损坏而不能引导或者不能使用等情况,强烈建议优先采用其他方法,尽量避免修改系统的方案,除非这是唯一的选择。

步骤4 删除snapshots

diskutil apfs deleteSnapshot ~/tempMount -uuid D33B0D34-FE01-4939-9796-52431A3362D1

报错如下图所示

后续到recovery 模式中再尝试下, 未完待续

参考

这篇文章有 9 个评论

  1. 第 Jacky页

    照着做了,但是快照里有句话:purgeable: No ,删除不了快照怎么办?

    1. admin

      具体在哪一个命令行后出现这个问题 ?
      一定要确认 SIP 已经disabled.

      1. 第 Jacky页

        您好,感谢您的回复,非常开心。下面说说我的问题:在挂载了磁盘赋予读写权限那一步mount -uw /Volumes/macOS 回车,出现了这句话:mount : unknown special file or file system /Volume/macos 然后,后面的操作就都不生效了,麻烦您了帮我看看是什么问题

      2. 第 Jacky页

        我可以加您的邮箱吗?我想拍照发给您,希望您百忙之中帮助我看看问题出在哪里?非常感谢!

          1. 第 Jacky页

            感谢您的回复,好像带有快照的那个分区没办法转到其他分区,非数据的Big Sur分区也挂载不上,也没有办法删除快照,总提示权限不足,sip都已经关闭了。我的系统是11.6.1的,我重装了11.6也是一样的错误。期待您的尝试,希望有办法可以做到,先表示感谢!

          2. 第 Jacky页

            对,刚才我试了下,就是在最后一步删除快照的地方出现了-69863的错误,提示没有权限去删除。

  2. 第 Jacky页

    昨天就已经关注您了,您是个非常负责任和热心的人,再次感谢您并期待您继续更新方法,谢谢啦!

回复 Jacky 取消回复