我是Hackintosh的新手,现在我正在研究启动过程。
据我所知:
我的问题是,为什么与变色龙/三叶草和kexts等引导加载程序存在某种关系? kexts应该由内核加载而不是引导加载程序,对吗?
Say Hackintosh需要FakeSMC.kext。但它不是引导程序的业务。引导加载程序需要做的是将Mac OS内核的init代码放入内存并将控件传递给它。应该是Mac OS内核加载FakeSMC.kext。
不是吗?
答案 0 :(得分:3)
首先,PC过去只有传统BIOS而且没有EFI,但Apple从未使用过传统BIOS,只有EFI。
但是现在已经发生了变化,因为现在大多数现代PC都内置了UEFI,所以不需要模拟EFI。
有两种方法可以在带有旧版BIOS的hackintosh上启动OS X.第一个是Chameleon,第二个是Clover。
Clover和Chameleon以不同的方式加载OS X.
Clover使用DUET EFI的修改版本(在传统bios之上的开源EFI实现),或者如果计算机拥有它自己的内置三叶草的UEFI使用它。 Clover还使用位于/System/Library/CoreServices/boot.efi的OS X分区上的默认引导加载程序来引导OS X.boot.efi加载kexts并将控制权传递给内核,就像在真正的mac上一样。
Chameleon拥有自己内置的假EFI实现,使得内核认为它在EFI Mac上运行。但是伪造的EFI不足以加载boot.efi,所以Chameleon拥有它自己的加载器。变色龙自己加载kexts,然后将控制传递给内核。
两个引导加载程序都内置了ACPI表注入,SMBIOS欺骗,设备ID注入等。
FakeSMC是一个模拟器,模拟真实Mac中的系统管理控制器,其中包含解密Apple Protected Binaries的密钥。
Chameleon将FakeSMC和其他kexts单独加载为独立或者是kernelcache的一部分,如果你使用Clover,boot.efi也可以完成相同的操作。
注意: Clover有一个你可能正在谈论的功能,它可以动态地注入kexts,看起来它们被Clover加载但实际上它们已成为kernelcache的一部分。