在不同情况下,VirtualSMC 能改善现有跟未来版本的 macOS 的兼容性,带来更多 SMC 支持, SMC 键值模拟例如 MMIO ,事件 (SMCLightSensor),权限支持等功能。在旧款的 Mac 型号上,可以用它来升级 SMC 世代以获得更多功能。
macOS 10.4 或以上. 确保使用正确的 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 跟内核崩溃无关。 VirtualSMC 出现在堆栈跟踪是因为 VirtualSMC 把 kernel_trap 包装在模拟的 SMC 设备里。
传感器 Kext 提供额外的信息例如温度, 电压, 还可通过特有 SMC 键值提供一些额外的功能。 已知的传感器列表可在 Docs 目录下查阅。 你可以使用特有 API 来开发传感器 Kext, 但请事先阅读一些基本文档。
检查传感器 Kext 是否有提供你想要查看的传感器信息, 可以通过查看 SMC 键值来确认 (运行 smcread -s
). 如没有, 检测此信息是否在原生苹果产品使用上并考虑创建一个 Pull request。 如没有, 检查你所用的资源管理器软件确实有尝试读取相关键值。 请注意, 某些资源监控软件例如 iStat Menus 会根据不同的 Mac 平台使用其特有描述文件, 故某些你所使用的硬件也许会被忽略。
Authenticated restart, 一般情况下由 sudo fdesetup authrestart
触发, 详情见 man fdesetup
, 如有用 VirtualSMC.efi 即可支持。 可是, 正如任何软件功能整合一样,它并不是很安全。 如果你很在意安全与隐私, 你应该加上 vsmchbkp=0
启动参数禁止此功能。
此功能的整合由 VirtualSMC 把加密密钥储存在 NVRAM, 如有更高的 RTC 记忆库可用,还会由临时密钥进行再次加密。 除此之外, 如果 AptioMemoryFix 存在的话,在 EXIT_BOOT_SERVICES 后 AptioMemoryFix 会禁止此密钥被再读取。
SMCBasics.txt
包含关于 SMC 的基本信息SMCKeys.txt
包含已更新的 SMC 键值描述 (html 文档可利用此文件)SMCKeysMacPro.html
包含旧版 MacPro 的 SMC 键值描述键值描述SMCSensorKeys.txt
包含libSMC.dylib
SMC 传感器SMCDumps
包含 SMC 键值描述信息导出文件 ,可通过运行smcread -s
生成。我们需要更多 SMC 信息导出文件,如有机会请补充。SMCDatabase
包含 SMC 固件信息导出文件, 可通过运行smcread
+ 已更新的 SMC 固件SMCTypes
基于SMCDatabase
,创建,包含各世代 SMC 简述键值列表。iStat.txt
包含 iStat Menus 键值描述文件 (比如说当检测到 FakeSMC 时它会用 “FauxMac” 描述文件)MacModels.txt
包含 board-id <--> mac-model 简述和 SMC 固件导出文件状态SensorInfo.md
包含基本 SMC 知识
rtcread
可访问 RTC/CMOS 内存并包含相关 AppleRTC 信息smcread
可访问 SMC 键值, 导出 SMC 固件所包含的键值和libSMC.dylib
smc-fuzzer
一个原smc
fork,部分缺失的功能已由smcread
补充libaistat
当 iStat Menus 跟DYLD_INSERT_LIBRARIES
一起使用时,可导出 SMC 键值描述文件
SMCLightSensor
通过新的 SMC 事件 API,是一个光线传感器的例子 (需要ACPI0008
/_ALI
)SMCBatteryManager
添加 SMC 跟 SMBus 协议完整的 AppleSmartBattery 模拟层,电池相关的传感器SMCProcessor
给 Penryn CPU 或以上提供温度传感器支持SMCSuperIO
风扇信息读取