当前位置: 主页 > 操作系统 > MacOS > 详解Mac OS X如何装载内核扩展的

详解Mac OS X如何装载内核扩展的

时间:2009-12-31来源:互联网 点击:
     顾名思义,内核扩展程序包KEXTs是对内核kernel的扩展。为了加载根(root)文件系统,kernel必须装载一个可以访问root volume硬件的驱动程序KEXTs包。KEXTs并不包含在Mac OS X的内核中,而是在Mac OS X启动时由BootX根据情况装载到系统中。在每个KEXTs包的根目录中有一个Info.plist文件,其中有一个OSBundleRequired属性,而BootX、KEXT装载程序kextd以及KEXT缓冲程序kextcache根据这个属性来决定哪一个KEXT有心要装载或缓冲。要想查看系统中已经装载的KEXT,在终端窗口使用kextstat命令。需要注意的是,并不是所有KEXT的Info.plist中有OSBundleRequired属性。

     在Mac OS X启动顺序的开始,BootROM初始化完硬件并选择一个操作系统启动后,将控制权交给了BootX,而BootX主要负责装载内核环境。BootX首先试图为硬件装载一个以前缓冲过的设备驱动程序集(叫mkext cache),如果缓冲文件丢失或损坏,BootX就从/System/Libray/Extensions中寻找OSBundleRequired属性设置合适的KEXT包。例如,当BootX执行一个网络启动时,它就要寻找OSBundleRequired为Network-Root的KEXT包;当以-s单用户模式启动Mac OS X时,BootX寻找那些OSBundleRequired为Console的KEXT包。BootX会忽略所有Info.plist文件中OSBundleRequired属性为Safe Boot或不含有OSBundleRequired属性的KEXT包。

      当root文件系统加载后,kextd进程启动并检查系统中所有可用的驱动程序,此时,BootX根据收到的请求装载任何必要的KEXT包,并卸载不需要的驱动程序来释放内存。
站长资讯网
. TAG: Mac OS 内核扩展 装载
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言