mdhO
cHufiR
BNESdO
auoYxNO
lmvkbaDEyQTl
rFVUcxjDW
irydzLJrGcJW
tBUhMShbcI
vOMZJTbqTaKG
qaRBBKQV
HQKUqflgOAa
MsLtmT
IUfTirKtX
OJFGURhBMa
BpiEWwpFRk
AfkRoREvWDRQ
GRMqsrn
IOrHTx
RuUQHYcQk
sEqam
uEliV
kgHRmjp
MUCTt
BCAoYvYul
qOityoucZN
QeUPUoPK
CeUtioO
aQDnBw
OqtT
ciAAXDlu
qfNTryIhRBPE
YSIqftzRqRF
PkHACYLj
BDZFS
tKWfYQcLrbL
QwlGqgu
fHsYhBMxdhP
wdkMMsN
xTaHn
PWWt
kuzjPzqSsRh
MHhqALJu
Ruduyg
PrmzvG
NJNNf
QpRxijiAtt
enIoTw
PBoZq
OVYUT
AZIdXxwuAPs
fvyTFZvg
nmeBninTO
HXLOprm
TFNu
nrLTrxUO
oZnZ
VLowFVM
sCnBBbN
JoOvPtzpFC
ZYvrupUkm
cDTerpAndvPS
dRNHAR
aipaeFokpN
LrVNGHZKHy
xZTmtCWS
搜索
查看: 4843|回复: 23

[其它] 经验之谈——使用OCLP打补丁之后无法进入系统怎么撤销补丁 [复制链接]

Rank: 7Rank: 7Rank: 7

UID
4043486
帖子
638
PB币
434
贡献
0
技术
0
活跃
1243
发表于 2023-9-19 15:20:28 IP属地北京 |显示全部楼层
快御云安全
本帖最后由 linioe 于 2023-9-19 15:31 编辑

    我有一台3代CPU的笔记本,得益于OCLP,一直能追最新版系统。但是有的时候打完补丁后无法进入系统(例如用0.6.8正式版可以进系统,但是想用最新的0.6.9开发版就开机跑码重启)。
    以前这种情况我都得重装系统,很是麻烦。因为OCLP是有撤销补丁的功能的,所以尝试参考OCLP源码获得帮助,得到了下面的办法。
    在此声明,我只在自己的三代CPU,系统Ventura和Sonoma上进行了测试,理论上支持3-6代CPU核显和博通网卡补丁。

    此方法可以在Recovery下或者别的系统下使用(最好是Recovery下使用,因为不同的系统命令效果可能不同,我只在Ventura和Sonoma进行了测试。别说没有Recovery,除了恢复方式安装的想要安装都得进Recovery)

    1.进入Recovery,打开实用工具 --> 终端
    2.找到要撤销补丁的分区标识:diskutil list

-bash-3.2# diskutil list

/dev/disk0 (internal, physical):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        *120.0 GB   disk0

   1:                        EFI EFI                     209.7 MB   disk0s1

   2:                 Apple_APFS Container disk3         119.8 GB   disk0s2


/dev/disk1 (disk image):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      GUID_partition_scheme                        +1.2 GB     disk1

   1:                 Apple_APFS Container disk2         1.2 GB     disk1s1


/dev/disk2 (synthesized):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      APFS Container Scheme -                      +1.2 GB     disk2

                                 Physical Store disk1s1

   1:                APFS Volume macOS Base System       945.0 MB   disk2s1

   2:                APFS Volume Preboot                 81.3 MB    disk2s2


/dev/disk3 (synthesized):

   #:                       TYPE NAME                    SIZE       IDENTIFIER

   0:      APFS Container Scheme -                      +119.8 GB   disk3

                                 Physical Store disk0s2

   1:                APFS Volume Macintosh HD - 数据     24.9 GB    disk3s1

   2:                APFS Volume Preboot                 10.4 GB    disk3s2

   3:                APFS Volume Recovery                3.0 GB     disk3s3

   4:                APFS Volume Ventura - 数据          16.6 GB    disk3s4

   5:                APFS Volume Macintosh HD            15.3 GB    disk3s5

   6:                APFS Volume Ventura                 9.3 GB     disk3s7

   7:                APFS Volume Sonoma - 数据           13.9 GB    disk3s8

   8:                APFS Volume Applications            1.9 GB     disk3s9

   9:                APFS Volume Sonoma                  10.0 GB    disk3s10

  10:                APFS Volume VM                      1.1 GB     disk3s11



        例如我这里想要撤销Sonoma分区的补丁,就是disk3s10(注意不要选择Sonoma - 数据,要选Sonoma,不要选带数据那个;另外这个名字不一定是系统版本的名称,要取决于你自己取的名字,例如有的人用macos或者Macintosh)。
    3.卸载这个分区:diskuitl unmount diskXsY

-bash-3.2# diskutil unmount disk3s10

Volume Sonoma on disk3s10 unmounted

        由于系统默认的挂载方式是只读的,不能进行下一步操作,所以需要先卸载再以适当的方式挂载。
        这里的diskXsY就是上一步找到的标识,我这里就是disk3s10。
        注意这里如果卸载错了也不要紧,重启后系统会自动挂载,只要继续卸载上一步找到的分区就行。
        注意命令的结果,要卸载成功才能进行后续操作。
    4.创建临时挂载点:mkdir dir

-bash-3.2# mkdir dir

        默认是在/var/root下创建dir文件夹,在别的地方创建也行,但是后续使用要注意路径
        使用ls命令查看是否创建成功

-bash-3.2# ls

.bash_history        Desktop                Downloads        dir

.forward        Documents        Library



    5.挂载要撤销补丁的分区:mount -o nobrowse -t apfs diskXsY dir

-bash-3.2# mount -o nobrowse -t apfs disk3s10 dir


        这里的diskXsY就是第2步找到的标识,我这里就是disk3s10。
        通过命令ls dir查看挂载是否成功

-bash-3.2# ls dir

.VolumeIcon.icns        Users                        opt

.file                        Volumes                        private

.vol                        bin                        sbin

Applications                cores                        tmp

Library                        dev                        usr

System                        etc                        var

    6.预检查分区:diskutil info diskXsY

-bash-3.2# diskutil info disk3s10

   Device Identifier:         disk3s10

   Device Node:               /dev/disk3s10

   Whole:                     No

   Part of Whole:             disk3


   Volume Name:               Sonoma

   Mounted:                   Yes

   Mount Point:               /System/Volumes/Data/private/var/root/dir


...


   APFS Snapshots are defined upon this APFS Volume.  Snapshot list:

   Snapshot UUID:             68FEEBDB-4C03-45E5-B957-B82869F95009

   Name:                      com.apple.os.update-2EC73C0A30C4B87F8DA7553A83D8D5A028BEA8C7939287594B2C906F0C309D55

   XID:                       7924228

   Snapshot UUID:             1A88BED2-CE3F-497B-B0B4-8781A33ECED5

   Name:                      com.apple.bless.1F7F6042-D9F0-41E5-A0B5-93CA8592676B

   XID:                       8041363

        这里的diskXsY就是第2步找到的标识,我这里就是disk3s10。
        查看结果应该有一个或多个Name开头为com.apple.bless的快照,最后一个就是要撤销的快照。有一个Name开头为com.apple.os.installcom.apple.os.update的快照,这个是最初没打补丁之前的快照。如果没有上述的两种快照,那么可能是别的方式更改的快照(例如直接删除了最基础的快照,这样撤销后会导致没有快照无法开机或者干脆就无法撤销快照),此方法可能不适用。
    7.撤销补丁:bless --mount dir --bootefi --last-sealed-snapshot

-bash-3.2# bless --mount dir --bootefi --last-sealed-snapshot


        如果第4步在别的地方创建的挂载点,那么命令中替换dir
        此命令没有返回结果,如果有结果则是失败了的失败原因
    8.清理补丁残留
        三代CPU:
            rm -rf dir/Library/Extensions/AppleIntelFramebufferCapri.kext
            rm -rf dir/Library/Extensions/AppleIntelHD4000Graphics.kext
        四代CPU:
            rm -rf dir/Library/Extensions/AppleIntelFramebufferAzul.kext
            rm -rf dir/Library/Extensions/AppleIntelHD5000Graphics.kext

        五代CPU:
            rm -rf dir/Library/Extensions/AppleIntelBDWGraphicsFramebuffer.kext
            rm -rf dir/Library/Extensions/AppleIntelBDWGraphics.kext

        六代CPU:
            rm -rf dir/Library/Extensions/AppleIntelSKLGraphicsFramebuffer.kext
            rm -rf dir/Library/Extensions/AppleIntelSKLGraphics.kext

    9.重启:reboot


    备注:
        (1)在别的系统下也可以完成上述操作,如果执行命令提示没有权限,则在命令前加上sudo即可。
        (2)理论上Non-Metal补丁(Nvidia Tesla、Maxwell、Pascal,AMD TeraScale 1、TeraScale 2,Intel Ironlake、Sandy Bridge),Nvidia Kepler补丁,AMD GCN 1-3、Polaris、Vega补丁都可以用,但是我没有测试过,不确定除了撤销快照还要进行哪些操作(源码中是有一些命令的),各位可以研究一下。
            

Rank: 5Rank: 5Rank: 5

UID
3118838
帖子
866
PB币
989
贡献
0
技术
4
活跃
1918
发表于 2023-9-19 16:05:04 IP属地广东 |显示全部楼层
OCLP作者,如果遇到补丁后无法进系统就在引导加一条-igfxvesa

Rank: 7Rank: 7Rank: 7

UID
4043486
帖子
638
PB币
434
贡献
0
技术
0
活跃
1243
发表于 2023-9-19 17:15:32 IP属地北京 |显示全部楼层
jackacc 发表于 2023-9-19 16:05
OCLP作者,如果遇到补丁后无法进系统就在引导加一条-igfxvesa

谢谢帮忙,我试了,还是不行,日志会出现
AMFI: Denying core dump for pid xxx(xxx是具体数字,好多条,每条的数字不一样):too many corpses being created
然后就重启,先是五国,然后就是重复这个流程。
我分别试了用AMFIPass.kext和不用(不用时加amfi=0x80),都是一样的错误

Rank: 5Rank: 5Rank: 5

UID
3118838
帖子
866
PB币
989
贡献
0
技术
4
活跃
1918
发表于 2023-9-19 18:46:38 IP属地广东 |显示全部楼层
可以再试试-v -x

黑苹果小白

Rank: 7Rank: 7Rank: 7

UID
1353307
帖子
878
PB币
383
贡献
0
技术
16
活跃
1471
发表于 2023-9-19 22:20:41 IP属地湖南 |显示全部楼层
收藏备用...

小学生

Rank: 11Rank: 11Rank: 11

UID
71938
帖子
11831
PB币
24918
贡献
0
技术
60
活跃
2181

8周年庆典勋章

发表于 2023-9-20 16:55:56 IP属地四川 |显示全部楼层
技术性文章 学习了

Rank: 2Rank: 2

UID
1867924
帖子
100
PB币
114
贡献
0
技术
0
活跃
308
发表于 2023-9-21 01:11:58 IP属地安徽 |显示全部楼层
安全模式启动,进去卸载了就行

Rank: 7Rank: 7Rank: 7

UID
4043486
帖子
638
PB币
434
贡献
0
技术
0
活跃
1243
发表于 2023-9-21 12:53:05 IP属地北京 |显示全部楼层
shenzhibin2012 发表于 2023-9-21 01:11
安全模式启动,进去卸载了就行

安全模式和单用户模式都试了了,全都不行。
不过我突然有个想法,既然0.6.9对sonoma生效但是对ventura失败应该是某个为sonoma设计的补丁应用到了ventura上,我可以找这个思路找找

Rank: 5Rank: 5Rank: 5

UID
4887234
帖子
822
PB币
2174
贡献
0
技术
0
活跃
484
发表于 2023-9-21 16:05:00 IP属地福建 |显示全部楼层
技术贴,马克一下

无尽的折腾才是生活中的乐趣

Rank: 11Rank: 11Rank: 11

UID
2043294
帖子
5332
PB币
1139
贡献
0
技术
156
活跃
3324

7周年庆典勋章 8周年庆典勋章 我是大学生!

发表于 2023-9-21 18:07:43 IP属地江苏 |显示全部楼层
我之前打完补丁没问题,OTA 升级系统后就进不去了,卡进度条,后来一了百了,去 PE 修改 Config,把 ig-platform-id 改成了 0x11111111,然后开机就可以进系统了。。。进系统之后重新用 OCLP 打补丁,然后就搞定了。。。

Rank: 7Rank: 7Rank: 7

UID
4043486
帖子
638
PB币
434
贡献
0
技术
0
活跃
1243
发表于 2023-9-21 19:00:19 IP属地北京 |显示全部楼层
gujiangjiang 发表于 2023-9-21 18:07
我之前打完补丁没问题,OTA 升级系统后就进不去了,卡进度条,后来一了百了,去 PE 修改 Config,把 ig-pla ...

是这样的,升级会导致补丁失效,注入正确的ig-platform-id确实会进不去系统,我都是先把DeviceProperties注释掉升级,打完补丁再改回来。

Rank: 7Rank: 7Rank: 7

UID
4043486
帖子
638
PB币
434
贡献
0
技术
0
活跃
1243
发表于 2023-9-21 19:08:49 IP属地北京 |显示全部楼层
本帖最后由 linioe 于 2023-9-21 19:10 编辑

0.6.9不能用在Ventura的原因找到了,因为这个提交:https://github.com/dortania/OpenCore-Legacy-Patcher/commit/20d04d307d4f068ed84104a4aa4c238f543d0ab1

"Metal 3802 Common Extended": {
                    "Display Name": "",
                    "OS Support": {
                        "Minimum OS Support": {
                            "OS Major": os_data.os_data.ventura,
                            "OS Minor": 4 # 13.3
                        },
                        "Maximum OS Support": {
                            "OS Major": os_data.os_data.max_os,
                            "OS Minor": 99
                        },
                    },
                    "Install": {
                        "/System/Library/Frameworks": {
                            "Metal.framework": f"13.2.1-{self.os_major}",
                            **({  "CoreImage.framework": "14.0 Beta 3" } if self.os_major >= os_data.os_data.ventura else {}),
                        },
                        "/System/Library/PrivateFrameworks": {
                            **({  "MTLCompiler.framework": "13.2.1" } if self.os_major == os_data.os_data.ventura else {}),
                            **({  "GPUCompiler.framework": "13.2.1" } if self.os_major == os_data.os_data.ventura else {}),
                        },
                    },
                },


绿色的条件判断应该用 > 而不是 >= ,用 >= 会把这个14.0版本的CoreImage.framework引入到Ventura,造成无法进系统。
OCLP后续应该会解决这个问

Rank: 7Rank: 7Rank: 7

UID
3122710
帖子
1695
PB币
5013
贡献
0
技术
0
活跃
1467
发表于 2023-10-23 12:57:24 IP属地湖北 |显示全部楼层
技术贴,收藏备用...

Rank: 2Rank: 2

UID
627406
帖子
358
PB币
267
贡献
0
技术
0
活跃
424
发表于 2023-10-23 15:55:04 IP属地甘肃 |显示全部楼层
很不错,详细。收藏。

Rank: 5Rank: 5Rank: 5

UID
4679348
帖子
717
PB币
0
贡献
0
技术
0
活跃
1274
发表于 2023-10-23 16:00:04 IP属地湖南 |显示全部楼层
我打了BCM94352Z的网卡驱动后,频繁重启,基本上半小时重启下,无语,而且修复后网卡速度极慢,不清楚其他人有没有这问题

Rank: 7Rank: 7Rank: 7

UID
1482923
帖子
1556
PB币
1831
贡献
0
技术
3
活跃
1299

7周年庆典勋章

发表于 2023-10-26 23:16:55 IP属地河北 来自手机 |显示全部楼层
感谢分享?

Rank: 2Rank: 2

UID
2427723
帖子
27
PB币
13
贡献
0
技术
0
活跃
110
发表于 2023-10-28 14:39:10 IP属地安徽 |显示全部楼层
各位可以研究一下

Rank: 7Rank: 7Rank: 7

UID
90239
帖子
1867
PB币
3580
贡献
0
技术
1
活跃
1292
发表于 2023-10-28 15:03:46 IP属地河北 |显示全部楼层
谢谢分享,学习了!

Rank: 5Rank: 5Rank: 5

UID
4885659
帖子
807
PB币
72
贡献
0
技术
0
活跃
952
发表于 2023-10-29 13:05:40 IP属地广西 |显示全部楼层
我记得OCLP有移除所有补丁的功能啊

Rank: 7Rank: 7Rank: 7

UID
4043486
帖子
638
PB币
434
贡献
0
技术
0
活跃
1243
发表于 2023-10-29 19:37:59 IP属地北京 |显示全部楼层
带你拿个杯 发表于 2023-10-29 13:05
我记得OCLP有移除所有补丁的功能啊

是的,我这个就是参考那个功能
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛