VirtualSMC.kext 是一款用于 macOS 系统的系统管理控制器(System Management Control, SMC)内核仿冒驱动,用以仿冒真 Mac 系统布局,让 macOS 以为自己运行在真正的 Mac 上,从而达到驱动黑苹果系统的目的。该驱动需要配合Lilu.kext才能正常工作,并且 FakeSMC.kext 和 VirtualSMC.kext 起相同的功能,只能二选一,由于前者已经许久没有更新,建议使用 VirtualSMC.kext 替代。
版本:1.1.2
发布日期:2020年4月7日
驱动特点:
支持macOS 10.8和更高版本(建议10.9和更高版本)
实现MMIO协议和基于中断的响应,以与现代OS兼容
正确报告密钥的属性和密钥保护
允许基于模型进行调整,并允许使用不同的SMC代
可通过插件扩展以提供传感器和按键添加支持
在10.9上启用smcdebug = XX引导参数支持
替换找到的硬件SMC(要完全禁用SMC,您需要刷新专用固件)
启动参数:
添加 -vsmcdbg以启用调试打印(在DEBUG二进制文件中可用)。
添加 -vsmcoff以关闭所有Lilu增强功能。
添加 -vsmcbeta以在不受支持的操作系统上启用Lilu增强功能(默认情况下启用10.13及以下版本)。
添加 -vsmcrpt以将有关缺少SMC密钥的报告报告到系统日志中。
添加 -vsmccomp以首选现有的硬件SMC实现(如果找到)。
添加 vsmcgen = X强制暴露X-gen SMC设备(支持1和2)。
添加 vsmchbkp = X来设置HBKP转储模式(0-关闭,1-正常,2-不加密)。
添加 vsmcslvl = X来设置值序列化级别(0-关闭,1-正常,2-带有敏感数据(默认))。
添加 smcdebug = 0xff以启用AppleSMC调试信息打印。
添加 watchdog = 0以禁用WatchDog计时器(如果意外重启)。
常见问题:
VirtualSMC 有对我有什么帮助?
在不同情况下,VirtualSMC 能改善现有跟未来版本的 macOS 的兼容性,带来更多 SMC 支持, SMC 键值模拟例如 MMIO ,事件 (SMCLightSensor),权限支持等功能。在旧款的 Mac 型号上,可以用它来升级 SMC 世代以获得更多功能。
VirtualSMC 有什么配置需求?
macOS 10.8.5 或以上. 确保使用正确的 Lilu 版本以获得完整功能, 在测试版的 macOS 下,使用 -liluoff 以启用基本支持。如果有用文件保险箱 (FileVault) 建议使用 VirutalSMC 以获得完整的 boot.efi 支持。 VirtualSMC 不兼容 SMCHelper-64.efi,请避免一起使用。
如何进行错误排查?
使用 DEBUG 版 Kext(也包括 Lilu), 和相关的 Kext 的排错启动参数。 除了添加 -vsmcdbg keepsyms=1, -v, debug=0x100, io=0xff 这些常见的排错参数外,还有 AppleSMC 排错参数 (smc=0xff), AppleSmartBatteryManager 排错参数 (batman=0xff)。 10.13 或以上可使用 内核补丁 来获得内核崩溃追踪以避免使用后续 kext。
为什么内核崩溃报告会提到 VirtualSMC.kext?
大多数情况下 VirtualSMC 跟内核崩溃无关。 VirtualSMC 出现在堆栈跟踪是因为 VirtualSMC 把 kernel_trap 包装在模拟的 SMC 设备里。
SMC 传感器有什么用?
传感器 Kext 提供额外的信息例如温度, 电压, 还可通过特有 SMC 键值提供一些额外的功能。 已知的传感器列表可在 Docs 目录下查阅。 你可以使用特有 API 来开发传感器 Kext, 但请事先阅读一些基本文档。
为什么用了监控器 Kext, 资源监控软件依然看不见相关信息?
检查传感器 Kext 是否有提供你想要查看的传感器信息, 可以通过查看 SMC 键值来确认 (运行 smcread -s). 如没有, 检测此信息是否在原生苹果产品使用上并考虑创建一个 Pull request。 如没有, 检查你所用的资源管理器软件确实有尝试读取相关键值。 请注意, 某些资源监控软件例如 iStat Menus 会根据不同的 Mac 平台使用其特有描述文件, 故某些你所使用的硬件也许会被忽略。
是否支持 authenticated restart( FileVault 免密码重启)?
Authenticated restart, 一般情况下由 sudo fdesetup authrestart 触发,如有用 VirtualSMC.efi 即可支持。 可是, 正如任何软件功能整合一样,它并不是很安全。 如果你很在意安全与隐私, 你应该加上 vsmchbkp=0 启动参数禁止此功能。
此功能的整合由 VirtualSMC 把加密密钥储存在 NVRAM, 如有更高的 RTC 记忆库可用,还会由临时密钥进行再次加密。 除此之外, 如果 AptioMemoryFix 存在的话,在 EXIT_BOOT_SERVICES 后 AptioMemoryFix 会禁止此密钥被再读取。
这些命令行工具都有什么作用?
rtcread 可访问 RTC/CMOS 内存并包含相关 AppleRTC 信息
smcread 可访问 SMC 键值, 导出 SMC 固件所包含的键值和 libSMC.dylib
smc-fuzzer 一个原 smc fork,部分缺失的功能已由 smcread 补充
libaistat 当 iStat Menus 跟 DYLD_INSERT_LIBRARIES 一起使用时,可导出 SMC 键值描述文件
这些传感器 Kext 有什么作用?
SMCLightSensor 通过新的 SMC 事件 API,是一个光线传感器的例子 (需要 ACPI0008_ALI)
SMCBatteryManager 添加 SMC 跟 SMBus 协议完整的 AppleSmartBattery 模拟层,电池相关的传感器
SMCProcessor 给 Penryn CPU 或以上提供温度传感器支持
SMCSuperIO 风扇信息读取
附录:历代Mac型号速查表
型号
描述
Mac OS X / macOS版本
Mac-F42386C8
iMac7,1
<=
10.8
10.11
Mac-F4238CC8
iMac7,1
<=
10.8
10.11
Mac-F226BEC8
iMac8,1
<=
10.8
10.11
Mac-F227BEC8
iMac8,1
<=
10.8
10.11
Mac-F2218EA9
iMac9,1
<=
10.8
10.11
Mac-F2218EC8
iMac9,1
<=
10.8
10.11
Mac-F2218FA9
iMac9,1
<=
10.8
10.11
Mac-F2218FC8
iMac9,1
<=
10.8
10.11
Mac-F221DCC8
iMac10,1
<=
10.8
>=
10.12
Mac-F2268CC8
iMac10,1
<=
10.8
>=
10.12
Mac-F2268DC8
iMac10,1
<=
10.8
>=
10.12
Mac-F2268DAE
iMac11,1
<=
10.8
>=
10.12
Mac-F2238AC8
iMac11,2
<=
10.8
>=
10.12
Mac-F2238BAE
iMac11,3
<=
10.8
>=
10.12
Mac-942B5BF58194151B
iMac12,1
<=
10.8
>=
10.12
Mac-942B59F58194171B
iMac12,2
<=
10.8
>=
10.12
Mac-00BE6ED71E35EB86
iMac13,1
<=
10.8
>=
10.12
Mac-FC02E91DDD3FA6A4
iMac13,2
<=
10.8
>=
10.12
Mac-7DF2A3B5E5D671ED
iMac13,3
<=
10.8
>=
10.12
Mac-031B6874CF7F642A
iMac14,1
<=
10.8
>=
10.12
Mac-27ADBB7B4CEE8E61
iMac14,2
<=
10.8
>=
10.12
Mac-77EB7D7DAF985301
iMac14,3
10.9
>=
10.12
Mac-81E3E92DD6088272
iMac14,4
10.9
>=
10.12
Mac-42FD25EABCABB274
iMac15,1
10.10
>=
10.12
Mac-FA842E06C61E91C5
iMac15,2
10.10
>=
10.12
Mac-A369DDC4E67F1C45
iMac16,1
10.11
>=
10.12
Mac-FFE5EF870D7BA81A
iMac16,2
10.11
>=
10.12
Mac-65CE76090165799A
iMac17,1
10.11
>=
10.12
Mac-B809C3757DA9BB8D
iMac17,1
10.11
>=
10.12
Mac-DB15BD556843C820
iMac17,1
10.11
>=
10.12
Mac-4B682C642B45593E
iMac18,1
10.12
>=
10.12
Mac-77F17D7DA9285301
iMac18,2
10.12
>=
10.12
Mac-BE088AF8C5EB4FA2
iMac18,3
10.12
>=
10.12
Mac-CF21D135A7D34AA6
Unknown
10.13
>=
10.13
Mac-112B0A653D3AAB9C
Unknown
10.13
>=
10.13
Mac-90BE64C3CB5A9AEB
Unknown
10.13
>=
10.13
Mac-F42D89A9
MacBook5,1
<=
10.8
10.11
Mac-F42D89C8
MacBook5,1
<=
10.8
10.11
Mac-F22788AA
MacBook5,2
<=
10.8
10.11
Mac-F22C8AC8
MacBook6,1
<=
10.8
>=
10.12
Mac-F22C89C8
MacBook7,1
<=
10.8
>=
10.12
Mac-BE0E8AC46FE800CC
MacBook8,1
10.10
>=
10.12
Mac-F305150B0C7DEEEF
MacBook8,2
10.10
>=
10.12
Mac-9AE82516C7C6B903
MacBook9,1
10.11
>=
10.12
Mac-EE2EBD4B90B839A8
MacBook10,1
10.12
>=
10.12
Mac-F42D88C8
MacBookAir2,1
<=
10.8
10.11
Mac-942452F5819B1C1B
MacBookAir3,1
<=
10.8
>=
10.12
Mac-942C5DF58193131B
MacBookAir3,2
<=
10.8
>=
10.12
Mac-C08A6BB70A942AC2
MacBookAir4,1
<=
10.8
>=
10.12
Mac-742912EFDBEE19B3
MacBookAir4,2
<=
10.8
>=
10.12
Mac-66F35F19FE2A0D05
MacBookAir5,1
<=
10.8
>=
10.12
Mac-2E6FAB96566FE58C
MacBookAir5,2
<=
10.8
>=
10.12
Mac-35C1E88140C3E6CF
MacBookAir6,1
<=
10.8
>=
10.12
Mac-7DF21CB3ED6977E5
MacBookAir6,2
<=
10.8
>=
10.12
Mac-9F18E312C5C2BF0B
MacBookAir7,1
10.10
>=
10.12
Mac-937CB26E2E02BB01
MacBookAir7,2
10.10
>=
10.12
Mac-112818653D3AABFC
MacBookAir8,1
10.14
>=
10.14
Mac-F42388C8
MacBookPro3,1
<=
10.8
10.11
Mac-F4238BC8
MacBookPro3,1
<=
10.8
10.11
Mac-F42C86C8
MacBookPro4,1
<=
10.8
10.11
Mac-F42C89C8
MacBookPro4,1
<=
10.8
10.11
Mac-F42D86A9
MacBookPro5,1
<=
10.8
10.11
Mac-F42D86C8
MacBookPro5,1
<=
10.8
10.11
Mac-F2268EC8
MacBookPro5,2
<=
10.8
10.11
Mac-F22587C8
MacBookPro5,3
<=
10.8
10.11
Mac-F22587A1
MacBookPro5,4
<=
10.8
10.11
Mac-F2268AC8
MacBookPro5,5
<=
10.8
10.11
Mac-F22589C8
MacBookPro6,1
<=
10.8
>=
10.12
Mac-F22586C8
MacBookPro6,2
<=
10.8
>=
10.12
Mac-F222BEC8
MacBookPro7,1
<=
10.8
>=
10.12
Mac-50619A408DB004DA
MacBookPro7,2
<=
10.8
>=
10.12
Mac-94245B3640C91C81
MacBookPro8,1
<=
10.8
>=
10.12
Mac-94245A3940C91C80
MacBookPro8,2
<=
10.8
>=
10.12
Mac-942459F5819B171B
MacBookPro8,3
<=
10.8
>=
10.12
Mac-4B7AC7E43945597E
MacBookPro9,1
<=
10.8
>=
10.12
Mac-6F01561E16C75D06
MacBookPro9,2
<=
10.8
>=
10.12
Mac-C3EC7CD22292981F
MacBookPro10,1
<=
10.8
>=
10.12
Mac-AFD8A9D944EA4843
MacBookPro10,2
<=
10.8
>=
10.12
Mac-189A3D4F975D5FFC
MacBookPro11,1
10.9
>=
10.12
Mac-3CBD00234E554E41
MacBookPro11,2
10.9
>=
10.12
Mac-2BD1B31983FE1663
MacBookPro11,3
10.9
>=
10.12
Mac-06F11FD93F0323C5
MacBookPro11,4
10.10
>=
10.12
Mac-06F11F11946D27C5
MacBookPro11,5
10.10
>=
10.12
Mac-E43C1C25D4880AD6
MacBookPro12,1
10.10
>=
10.12
Mac-473D31EABEB93F9B
MacBookPro13,1
10.12
>=
10.12
Mac-66E35819EE2D0D05
MacBookPro13,2
10.12
>=
10.12
Mac-A5C67F76ED83108C
MacBookPro13,3
10.12
>=
10.12
Mac-B4831CEBD52A0C4C
MacBookPro14,1
10.12
>=
10.12
Mac-CAD6701F7CEA0921
MacBookPro14,2
10.12
>=
10.12
Mac-551B86E5744E2388
MacBookPro14,3
10.12
>=
10.12
Mac-937A206F2EE63C01
MacBookPro15,1
>=
10.13
>=
10.13
Mac-827FB448E656EC26
MacBookPro15,2
>=
10.13
>=
10.13
Mac-F22C86C8
Macmini3,1
<=
10.8
10.11
Mac-F2208EC8
Macmini4,1
<=
10.8
>=
10.12
Mac-8ED6AF5B48C039E1
Macmini5,1
<=
10.8
>=
10.12
Mac-4BC72D62AD45599E
Macmini5,2
<=
10.8
>=
10.12
Mac-7BA5B2794B2CDB12
Macmini5,3
<=
10.8
>=
10.12
Mac-031AEE4D24BFF0B1
Macmini6,1
<=
10.8
>=
10.12
Mac-F65AE981FFA204ED
Macmini6,2
<=
10.8
>=
10.12
Mac-35C5E08120C7EEAF
Macmini7,1
10.10
>=
10.12
Mac-7BA5B2DFE22DDD8C
Macmini8,1
10.14
>=
10.14
Mac-F4208DC8
MacPro1,1
<=
10.7
10.7
Mac-F4208DA9
MacPro2,1
<=
10.7
10.7
Mac-F42C88C8
MacPro3,1
<=
10.8
10.11
Mac-F221BEC8
MacPro4,1
<=
10.8
10.11
Mac-F221BEC8
MacPro5,1
<=
10.8
>=
10.12
Mac-F60DEB81FF30ACF6
MacPro6,1
10.9
>=
10.12
Mac-7BA5B2D9E42DDD94
iMacPro1,1
10.13
>=
10.13
Mac-F223BEC8
Xserve3,1
<=
10.8
10.11
Mac-F088A60696011ACB
Unknown
10.8
>=
10.13
Mac-C9CF552659EA9913
Unknown
10.9
>=
10.13
Mac-4BFAC7A2B9455938
Unknown
10.9
>=
10.13
Mac-ACE8A17C0DE83137
Unknown
10.9
>=
10.13
Mac-6F01109E16C71B86
Unknown
10.9
>=
10.13
Mac-4BFBC784B845591E
Unknown
10.12
>=
10.12
Mac-4BFBC784B845591E
Unknown
10.12
>=
10.12
使用 Lilu 1.4.3 API 提升了性能表现
修复了SMCSuperIO因不支持的芯片而崩溃的问题
SMCSuperIO检测芯片名称到IOReg
轻微的性能改进
添加了OpenCore内置协议支持(VirtualSmc.efi仍可以在其他引导程序中使用)
通过I / O注册表在SMCSuperIO中添加了风扇和电压报告(需要客户端更新)