首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么kexts由Boot加载,而不是在Kernel获得控件之后加载

为什么kexts由Boot加载,而不是在Kernel获得控件之后加载
EN

Stack Overflow用户
提问于 2014-11-19 11:20:51
回答 1查看 2.4K关注 0票数 0

我是非常新的黑客,现在我正在研究启动过程。

据我所知:

  • efi二进制文件是UEFI固件运行的“字节码”。
  • kexts是内核模式的设备驱动程序,它是在机器特定的代码中编写的,由内核加载,并以内核模式运行。
  • kexts注入类似于库的动态加载,但处于内核模式。

我的问题是,为什么像变色龙/三叶草和kexts这样的引导加载程序有某种关系?kexts应该由内核加载,而不是由引导加载器加载,对吗?

我看到这里的东西了。filename=kexts.html

说黑需要FakeSMC.kext。但这不是引导加载器的事。引导加载程序需要做的是将Mac内核的init代码放在内存中,并将控件传递给它。而且应该是Mac内核加载那个FakeSMC.kext。

难到不是么?

EN

回答 1

Stack Overflow用户

发布于 2015-03-27 21:44:30

首先,个人电脑在过去只拥有遗留的bios而没有EFI,但苹果从来没有使用过遗留的bios,只有EFI。

但这种情况已经改变了,因为现在大多数现代个人电脑都内置了UEFI,因此没有必要效仿EFI。

有两种方法可以在带有遗留bios的黑客系统上引导OS。第一个是变色龙,第二个是三叶草。

克洛弗和变色龙装载OS的方式不同。

三叶草使用二重奏EFI (基于遗留bios之上的开源EFI实现)的修改版本,或者如果计算机有自己的UEFI内置在三叶草中,就使用它。boot.efi还使用位于/System/Library/CoreServices/boot.efi的OS分区上的默认引导加载程序来引导OS。加载kext并将控制传递给内核,就像在真正的mac上一样。

变色龙有自己的内置在假EFI实现,使内核认为它是运行在一个EFI Mac。但是这个假的EFI还不足以装载boot.efi,所以变色龙有自己的装载机。变色龙自己加载kext,然后将控制传递给内核。

这两个引导程序都内置了ACPI表注入、SMBIOS欺骗、设备ID注入等。

FakeSMC是一个仿真器,它模拟真实Mac中的系统管理控制器(),其中包含解密苹果保护二进制文件的密钥。

变色龙本身会将FakeSMC和其他kext作为独立的或内核缓存的一部分加载,如果使用boot.efi,同样的事情将由boot.efi完成。

注意: Clover有一个您可能正在讨论的特性,即动态注入kexts,使它们看起来像是由Clover加载的,但它们实际上已成为内核缓存的一部分。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27015587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档