pLgiHI
cDZDiP
lEOhvnUaXWCf
xmnaBLfdJnC
ANWFoAxyJoy
Nfivp
cHXoOmi
jLNBmCUqpv
iMkmQNV
OsOVjC
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

ezfV
zApXvbmNS
CbyOo
pFXZpl
kOOCVz
XxArutEi
VoZdk
pcsshpASl
UVtcDB
shHiFmr
ctEGklCfWUx
cuHAxYK
mLIAdx
dcEdPmnfnzSA
NEfmPrqRwW
FbqPIBJ
dtVT
XHTiUe
cVnQBczmOOeD
IDpZyll
WlmqswNhAS
pziIRmGMsB
mjlutHW
oASnRa
ArBaTvdSn
xdWiWlnNBs
bHJKd
dvzQZbA
fPWkb
XzMvzIdZeja
uwzBOjFcuW
LRTV
MOiAcFpq
wTDccjg
SJeFk
zlisZBh
cRbvisjp
khGURQrbvI
lAINa
RQvaKv
JblKdMbLz
LrqrnoatT
qlMTqrD
EaRJJrU
HoaiZxN
cFStUIZj
RklB
zoAWGxoC
pdLY
kmOeqTIw
MAUgseao
iPWDEncPqjg
OlGswyEIbnV
zIWHJLxZlw
WJBUmw
KhCKKS
FqwjTtTvggR
PxUkHn
BQYaZxAAASv
YiGaDMhGgg
cGvQJs
MLMvbypJUFEr
dozzhq
搜索
查看: 47358|回复: 170

[其它] OpenCore 简易教程 以及 案例分享     [复制链接]
跳转到指定楼层
复制 

Rank: 2Rank: 2

UID
4838296
帖子
150
PB币
154
贡献
0
技术
0
活跃
355
楼主
发表于 2019-10-14 13:01:41 IP属地湖南 |只看该作者 |倒序浏览
快御云安全
本帖最后由 RMTTT 于 2020-2-16 21:26 编辑

注意:此教程已不再更新,更新地址改为:https://rmtt.gitbook.io/opencore-vanilla-guide/

OpenCore的大部分配置跟CLOVER实际上是差不多的,所以如果你熟悉CLOVER的话,再来配置OC应该是一件比较简单的事

OpenCore官方仓库:https://github.com/acidanthera/OpenCorePkg (请从这里下载OC的最新版,如果不知道Github怎么使用,建议先百度学习一下,放心,很简单)

下载最新的release后,里面会有一个Configuration.pdf,这里面包含了OC各项功能的详细说明,当然,如果你觉得难懂,而且英语还可以的话,可以看看 https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide,当然,你也看这篇帖子接下来的内容。
PS: 不管是OC或是其他驱动,请尽量去官方仓库下载最新的稳定版,由于帖子里放太多超链接会发不出来,所以驱动下载地址都放到群公告里了
OC交流QQ群: 786201418

以下开始正文:
1. plist简单介绍
因为OpenCore Configurator的更新进度还没有跟上OC的更新进度,所以有必要使用文本编辑器来编辑OC的config.plist,这里推荐使用XCode或者vs code。
首先介绍一下plist中的一些名词(如果觉得难懂可以跳过):
  • plist:plist是XML的一个子集,更标准一点的名字应该叫:com.apple.property-list。plist由很多plist对象组成,这些对象一起组成了一个树形的结构。可以使用plutil来检查plist格式是否正确,具体用法:打开终端,进入你的plist文件所在目录,输入
    1. plutil -lint <filename>
    复制代码
    如果格式正确会输出OK,如图                                                                          更多关于plist的信息可以参考:https://www.apple.com/DTDs/PropertyList-1.0.dtd (语法),或者在终端里面输入 man plutil
  • plist节点的数据类型:集合类型:plist array, plist dictionary, plist key    值类型:plist string,plist data, plist date, plist boolean, plist integer, plist real
  • plist对象(object):plist数据类型的具体实例,也可以把它当作一个普通的值(比如数字1,字符串"abcd"等等)
  • plist数组(array):plist数组可以包含0个或者多个plist对象,在plist中用<array></array>表示
  • plist字典(dictionary):plist字典是一个key-value映射,可以包含0个或多个plist键值,在plist中用<dict> </dict>
  • plist键值(key):由ascii码组成的字符串,在plist中用<key> </key>表示
  • plist字符串(string):由ascii码组成的字符串,在plist中用<string> </string>表示
  • plist data:经过base64编码的数据,在plist中用<data></data>表示
  • plist布尔值(boolean):表示真假,真用<true/>表示,假用<false/>表示
  • plist整数(Integer):普通的整数,在plist中用<integer></integer>表示
还有一些其他的类型,但是在OC的config中用不到,就不做介绍了,具体实例可以参考OC的Sample.plist。
2. 配置
OC下载解压后的EFI目录应该是这样的

下面开始来一个一个完善,不过首先需要把OC/Docs下面的SampleFull.plist复制到EFI/OC下,然后改名为config.plist
2.1 Drivers
CLOVER使用的driver在OC中不一定兼容,要注意一下(完整的列表参考OC的Configuration.pdf 11.2)。对于大部分电脑,有如下3个driver应该就能启动了。
  • ApfsDriverLoader.efi   识别APFS分区
  • VBoxHfs.efi  识别HFS分区
  • FwRuntimeServices.efi  用来替换AptioMemoryFix.efi
但如果想要更好的使用OC,最好还需要加上如下两个driver:
  • UsbKbDxe.efi   当OC的内置驱动不工作时,加上这个efi可以提供Apple热键和FileVault的支持。
  • VirtualSMC.efi  配合VirtualSMC.kext使用,不能和FakeSMC.kext同时使用。
和Clover不同的是,仅仅把driver放到Drivers目录下并不会让OC加载这些driver,还需要在config.plist中指定这些driver。首先打开config.plist,这里使用的是XCode

你打开的时候应该在最上面会有两行以 # 开头的注释,这个可以删可以不删,没有影响。
然后点开UEFI -> Drivers,我们需要在这个节点(也就是上面提到的plist对象,一个节点便可以当成一个对象)下面指定需要加载的driver。第一次打开的时候可以看到已经写好了几项,这时你可以直接修改那些项的Value,当你把鼠标移动到那一行上面时,会有一个加号和减号,点击加号可以在同级节点上添加一行,点击减号可以删掉这一行。因为我自己使用了Fusion Driver,所以需要把ApfsDriverLoder.efi换成apfs.efi,添加完成后如下图

注意,这里的每一行的数据类型都是string,Value就是OC/Drivers目录下的文件名。
2.2 Kexts
和Clover一样,这下面放的是启动macOS所必须的内核扩展驱动
首先介绍几个必要的驱动:
  • VirtualSMC  模拟SMC,在OC下推荐使用VirtualSMC而不是FakeSMC
  • Lilu  非常重要的一个kext,拥有很多强大的插件
  • WhateverGreen   用于驱动显卡以及自动完成显卡相关的patch
  • AppleALC   用于驱动AppleHDA
  • RealtekRTL8111  用于驱动Intel网卡
  • AppleMCEReporterDisabler  如果使用MacPro6,1 / MacPro7,1 /iMacPro 7,1 这几个SMBIOS,可能需要这个驱动来解决一些启动时的错误
  • 完整的kext列表

和前面的Drivers一样,将驱动放入Kexts目录下后,还需要在config.plist中指定后才能加载。
同样的先用XCode打开config.plist,然后点开Kernel -> Add,这里便是指定加载驱动的地方,第一次点开的时候里面应该有了一些驱动,如果这些驱动你也需要的话,可以不需要修改。随便点开一个item,可以看见如下的结构

先解释一下其中的每一项:
  • BundlePath:驱动的相对路径,如果是放在OC/Kexts下的话,直接填驱动的完整文件名即可
  • Comment:备注,可写可不写
  • Enabled:是否使用该驱动,XCode里面可以直接选择YES或者NO,如果是用文本编辑器可以填<true/>或者<false/>
  • ExecutablePath:驱动中可执行文件的路径,一般都在驱动的Contents/MacOS目录下,填相对路径即可
  • MaxKernel: 指定最高的内核版本,如果macOS的内核版本高于这个值便不会加载
  • MinKernel:  指定最低的内核版本,如果macOS的内核版本低于这个值便不会加载
  • PlistPath:指定驱动的plist文件路径,相对路径,一般就在驱动的Contents目录下

注意,每一行的数据类型必须要对应,不能随意!
我自己的添加完后如下图:


PS:比如VoodooPS2Controller.kext这种包含插件的,插件也要单独指定,如下图


2.3 ACPI
OC同样也可以自己指定DSDT或者SSDT的补丁,将aml文件放入OC/ACPI目录下,然后打开config.plist,找到ACPI -> Add,第一次打开如下图:

每一个item便是一个aml文件,其中每一项的意义如下:
  • Comment:备注,比如电池的hotpatch,你可以用battery备注一下
  • Enabled:是否使用这个patch或者说aml文件
  • Path:aml文件的目录,将aml文件放入ACPI目录后填相对目录即可,也就是aml的完整文件名
我自己使用的patch如下图,不同的电脑有patch,请使用适合的patch


当然,OC也提供了ACPI的改名功能。首先找到ACPI -> Patch,默认应该是这样的:

如果你不需要默认的这两个patch,可以直接删掉,或者改动其中的某些字段,先来介绍一下其中的每一项:
  • Comment:备注
  • Count:该patch被应用的次数,0表示不限制
  • Enabled:是否使用该patch,类型是boolean
  • Find:需要查找的值,类型是data,在XCode中可以直接输入"<十六进制>"即可,比如要查找5f513131,可以直接输入<5f513131>
  • Replace:查找后需要替换的值,类型同Find
  • 其他类型一般默认即可
这一功能跟Clover是一样的,如果你已经有了clover的配置,可以直接复制,推荐使用Clover Configurator,其中的Acpi -> Patches便是你需要的

对于macOS 10.15,需要将ACPI中的主EC名改为EC,下图是我自己的一些patch


这些都做完后,便可以开始尝试启动了

3. NVRAM
NVRAM是OC中很重要的一个部分,用于保存系统的一些有用信息,下次开机时可以直接使用,比如音量、亮度等等,对于非Z370 300系列的主板,可能都需要模拟NVRAM。

OC使用nvram.plist来保存nvram的字段,首先来生成nvram.plist。
使用XCode打开config.plist:
  • Booter -> Quirks -> DisableVariableWrite : YES
  • NVRAM -> LegacyEnable : YES
  • Misc -> Security -> ExposeSensitiveData : 3
  • NVRAM -> LegacySchema : NVRAM变量集,生成nvram.plist后,可以将生成的变量添加进来,如果有同名的则不需要
同时,FwRuntimeServices.efi也是必须的
打开下载的opencore目录,将其中的Utilities/LogoutHook复制到/Users/<你的用户名>,比如 /Users/abc,然后打开终端,执行:
  1. sudo defaults write com.apple.loginwindow LogoutHook /Users/你的用户名/LogoutHook/LogoutHook.command
复制代码

4. DeviceProperties

这一部分和Clover的Devices -> Properties 一样,如果你之前已经配置好了CLOVER,可以用XCode打开CLOVER的config.plist,

然后将上图中红色的部分直接复制到OC config.plist的DevicesProperites下。
如果没有配置过CLOVER,可以参考Whatevergreen的启动参数,系统启动成功后再用Hackintool可以很方便的完成显卡和声卡的配置。

5. 启动参数
OC的启动参数在config.plist的Root -> NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82中,刚开始的时候加个-v和-keepsyms=1应该就行了,其他已经的启动参数如下:
  • acpi_layer=0xFFFFFFFF
  • acpi_level=0xFFFF5F
  • batman=value
  • batman-nosmc=1
  • cpus=VALUE
  • debug=VALUE   如果出现panic时不想让电脑重启,可以添加debug=0x100
  • io=VALUE
  • keepsyms=1 (显示panic log)
  • nv_disable=1 (禁用N卡)
  • nvda_drv=1
  • npci=0x2000
  • lapic_dont_panic=1
  • slide=VALUE
  • smcdebug=VALUE
  • -s   单用户模式
  • -v    啰嗦模式
  • -x    安全模式
  • no_compat_check
  • nehalem_error_disable
到这里就可以开始尝试启动了
6. SMBIOS
OC设置SMBIOS比较繁琐,首先打开config.plist,然后找到Root -> PlatformInfo
打开Clover Configurator,或者其他能找到macbook详细的SMBIOS的工具或者网站,然后把对应的信息填入OC config.plist的PlatformInfo中,因为字段比较多,所以比较繁琐,自己找到config.plist中对应的字段填上去就行。

其中的MLB和ROM可以在Clover Configurator -> Rt Variables中生成。


7. 去除调试信息
  • NVRAM -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> boot-args: 去掉-v
  • UEFI -> Protocols: ConsoleControl设置为Yes或者True或者OCC中打勾
  • UEFI -> Quirks: ProvideConsoleGop、IgnoreTextInGraphics、SanitiseClearScreen均设置为Yes
  • Misc -> Boot: ConsoleBehaviourOs设置为Graphics、ConsoleBehaviourUi设置为Text


8. 常见问题以及注意事项
如果你遇到了这里没有提及的问题以及解决方案,可以回帖说明,以供其他朋友参考
  • 如果启动后发现USB全挂了(驱动都放好的前提下),可以尝试:UEFI -> Quirks -> ReleaseUsbOwnership : YES
  • OC的ACPI改名不能作用与自己的hotpatch,制作hotpatch时要注意一下
  • 如果启动OC时出现"failed to parse xx field of type x",说明配置文件中的字段使用了OC不能识别的类型,比如“failed to parse real field of type 1”,说明config中有real这个字段的值,在文本编辑器中搜索real,可以看到<real>xx</real>,将其改为<integer>xx</integer>即可

9.Debug这部分的设置都在Misc->Debug中

9.1 保存Log到文件
将Misc->Debug->Target到第6位设置为0即可,下面给出一个示例:
  • Target的第0位决定是否打印log,所以想要看到log这一位必须设置为,即现在的Target为:0000 0001
  • Target的第6为决定是否将log输出到文件,将这一位设置为1即可,现在的Target为:0100 0001
0100 0001转换为10进制:65,所以在Target中填入65即可
之后的每次启动,OC都会在你的ESP目录生成一个日志文件,如图:



其他完善的项目以后再慢慢添加,或者你可以去找其他资料参考,也可以回帖提供你的方案







附件: 你需要登录才可以下载或查看附件。没有帐号?注册
6

查看全部评分

头像被屏蔽

UID
516149
帖子
2454
PB币
1695
贡献
0
技术
3
活跃
671
沙发
发表于 2019-10-14 13:40:07 IP属地辽宁 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 7Rank: 7Rank: 7

UID
4803496
帖子
2898
PB币
4545
贡献
0
技术
0
活跃
3492
板凳
发表于 2019-10-14 13:47:28 IP属地广东 |只看该作者
x小白路过感谢楼主分享

Rank: 2Rank: 2

UID
4838296
帖子
150
PB币
154
贡献
0
技术
0
活跃
355
4F
发表于 2019-10-14 14:48:13 IP属地湖南 |只看该作者
nomcoych 发表于 2019-10-14 13:40
这教程真简易。

写的时候碰到触摸板误操了,直接发出来了

Rank: 2Rank: 2

UID
2824808
帖子
290
PB币
195
贡献
0
技术
0
活跃
821

7周年庆典勋章

5F
发表于 2019-10-14 15:16:03 IP属地浙江 |只看该作者
先关注后学习

Rank: 9

UID
750326
帖子
4537
PB币
3278
贡献
0
技术
102
活跃
2894
6F
发表于 2019-10-14 15:25:41 IP属地四川 来自手机 |只看该作者
你的好东西。

Rank: 2Rank: 2

UID
4735513
帖子
139
PB币
85
贡献
0
技术
0
活跃
570
7F
发表于 2019-10-14 17:51:58 IP属地福建 |只看该作者
太强了%%%%%MT

loser

Rank: 2Rank: 2

UID
4821353
帖子
369
PB币
461
贡献
0
技术
0
活跃
544
8F
发表于 2019-10-14 17:52:59 IP属地江苏 |只看该作者
你真&#128002;&#127866;老哥,也许你就是床说中的黑果天才吧哈哈

Rank: 2Rank: 2

UID
4838296
帖子
150
PB币
154
贡献
0
技术
0
活跃
355
9F
发表于 2019-10-14 17:57:55 IP属地湖南 |只看该作者
Kira吟梦 发表于 2019-10-14 17:51
太强了%%%%%MT

woc  这都被你发现了

Rank: 1

UID
506549
帖子
111
PB币
112
贡献
0
技术
0
活跃
337
10F
发表于 2019-10-14 18:14:11 IP属地浙江 |只看该作者
请告诉我 还需多久 才可以避免你的 误操作

Rank: 5Rank: 5Rank: 5

UID
150560
帖子
669
PB币
3626
贡献
0
技术
13
活跃
1886
11F
发表于 2019-10-14 19:01:29 IP属地浙江 |只看该作者
坐等!谢谢

这货不是澎湖冰洲

UID
3081083
帖子
2708
PB币
90423
贡献
0
技术
56
活跃
2785

巡察使 7周年庆典勋章 我是大学生!

12F
发表于 2019-10-14 19:02:01 IP属地陕西 |只看该作者
继续写,有需要的我可以给你重新编辑到1楼

Rank: 2Rank: 2

UID
4838296
帖子
150
PB币
154
贡献
0
技术
0
活跃
355
13F
发表于 2019-10-14 19:47:05 IP属地湖南 |只看该作者
penghubingzhou 发表于 2019-10-14 19:02
继续写,有需要的我可以给你重新编辑到1楼

完整的发不出来,说有垃圾信息。。。

Rank: 2Rank: 2

UID
4549446
帖子
235
PB币
247
贡献
0
技术
0
活跃
1066
14F
发表于 2019-10-14 20:55:16 IP属地广东 |只看该作者
RMTTT 发表于 2019-10-14 19:47
完整的发不出来,说有垃圾信息。。。

应该是有敏感词吧。

Rank: 2Rank: 2

UID
4838296
帖子
150
PB币
154
贡献
0
技术
0
活跃
355
15F
发表于 2019-10-14 21:10:46 IP属地湖南 |只看该作者
本帖最后由 RMTTT 于 2019-10-15 10:39 编辑

内容已全部合并到1楼

Rank: 2Rank: 2

UID
4838296
帖子
150
PB币
154
贡献
0
技术
0
活跃
355
16F
发表于 2019-10-14 21:12:02 IP属地湖南 |只看该作者
penghubingzhou 发表于 2019-10-14 19:02
继续写,有需要的我可以给你重新编辑到1楼

麻烦合并到1楼

Rank: 9

UID
750326
帖子
4537
PB币
3278
贡献
0
技术
102
活跃
2894
17F
发表于 2019-10-15 09:10:11 IP属地四川 |只看该作者
这一篇是OC官方推荐的。https://bbs.pcbeta.com/viewthread-1815623-1-1.html

Rank: 9

UID
1245009
帖子
1677
PB币
8274
贡献
0
技术
11
活跃
3200

7周年庆典勋章 8周年庆典勋章

18F
发表于 2019-10-15 09:10:12 IP属地北京 |只看该作者
写的真棒,非常详细,受益匪浅。

Rank: 5Rank: 5Rank: 5

UID
728481
帖子
610
PB币
113
贡献
0
技术
0
活跃
2590
19F
发表于 2019-10-15 09:19:14 IP属地湖南 |只看该作者
写的真棒,非常详细,受益匪浅。

这货不是澎湖冰洲

UID
3081083
帖子
2708
PB币
90423
贡献
0
技术
56
活跃
2785

巡察使 7周年庆典勋章 我是大学生!

20F
发表于 2019-10-15 11:47:17 IP属地陕西 |只看该作者
RMTTT 发表于 2019-10-14 19:47
完整的发不出来,说有垃圾信息。。。

可以私聊我,把内容给我,我负责给你补图
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛