Hackintosh 安装第三方内核扩展kexts

说起来kexts文件放哪里的问题,都有些自己不同习惯。恰好https://www.tonymacx86.com/threads/guide-installing-3rd-party-kexts-el-capitan-sierra-high-sierra-mojave.268964/文章内容比较符合我的胃口,翻译了一下。

 

原文链接 https://www.tonymacx86.com/threads/guide-installing-3rd-party-kexts-el-capitan-sierra-high-sierra-mojave.268964/

 

安装第三方内核扩展kexts

 

  1. 本指南所适用操作系统版本

本指南所列方法适用以下版本系统

 

  • MacOS 10.11.X – El Capitan
  • MacOS 10.11.X – El Capitan
  • MacOS 10.12.X – Sierra
  • MacOS 10.13.X – High Sierra
  • MacOS 10.14.X – Mojave

注:如果你使用VirtualSMC而不是FakeSMC,那么本指南所列的所有FakeSMC替换为Lilu和VirtualSMC。

 

  1.    第三方内核扩展应该放在哪?

你应该把所有kexts安装在/Library/Extensions (/L/E)目录下。

警告:不能直接用Finder直接拷贝/粘贴kext文件到/L/E目录。

 

  1.     EFI/Clover/kexts/Other目录的作用。

很多使用者认为可以把kexts直接拷贝到EFI/Clover/kexts/Other目录,用Clover里设置Clover -> System Parameters -> Inject Kexts to “Yes” ,来注入这些kexts可以得到无需维护和更干净的mac os

 

但是,这个想法是错误的。。。

 

  1.     为什么应该放在/L/E目录而不是EFI/Clover/kexts/Other?

和黑苹果的一些传说相反,利用Clover来注入kexts的方法并不能得到更干净的系统,事实恰好相反。

  • 注入的kexts在系统保护内存空间之外。
  • 大量注入的kexts会导致系统不稳定。
  • 很多第三方kexts通过Clover注入会导致不能正常工作
  • 注入的kexts不在系统内核缓存内,因此不在系统错误检查范围之内。
  • /L/E目录是苹果公司推荐的安装所有第三方kexts文件的位置

 

假如你买了个硬件需要安装驱动软件,那么这个驱动软件kext会被安装在/L/E目录。因此黑苹果的kexts也不应该例外。

 

  1.   既然如此,为什么Clover还要提供注入这个功能?

因为需要运行必须的kexts来运行以下软件

  • MacOS安装程序
  • MacOS更新程序
  • MacOS恢复程序

因为以上三个都不是完整的操作系统,我们无法在其中安装必须的kexts,因此我们需要利用Clover来注入使之运行。绝大多数用户仅仅需要把FakeSMC拷贝到EFI/Clover/kexts/Other目录来运行上面列的三个程序。有些用户则需要一些额外的kexts来访问第三方存储控制器和在nas上的备份系统Timemachine。笔记本用户需要添加鼠标,触摸板的kext以便在恢复系统时候使用鼠标等设备。

 

认真考虑,仅把必须的kexts文件放在EFI/Clover/kexts/Other目录里。只要能保证上面三个程序能够运行就足够了。

 

  1.   Clover如何注入kexts?

需要设置:Clover -> System Parameters -> Inject Kexts 为”Detect”

 

当启动时候,Clover会在/L/E目录或者内核缓存里找FakeSMC。如果找到了FakeSMC,Clover不会注入任何kexts,而是让MacOS从/L/E目录或者内核缓存中调用所有第三方kexts,包括FakeSMC。这个正如上面4推荐的方法。

 

假如在/L/E目录或者内核缓存里没有找到FakeSMC,或者当在系统更细或者恢复模式,Clover会从EFI/Clover/kexts/Other目录注入kexts.

 

注:Clover还可以设置Inject Kexts为”No”或者“Yes”。这两个选项应该被当作debugging设置。如果选择”No”,Clover不会注入任何kexts文件,也就是说不能运行任何更新或者系统恢复。如果选择”Yes”,Clover会把EFI/Clover/kexts/Other目录里所有kexts都注入,这样假如在/L/E目录有相同的kexts,那么这些kexts会被加载两次,而且如果这些kexts的版本还不一样,会导致严重问题。

 

  1.  如何在/L/E目录安装kexts.

在终端运行命令:

sudo cp -R *.kext /Library/Extensions

然后重建内核缓存:

sudo kextcache -i /

之后,重启系统。

最后在说一遍,别用finder直接把kext拷贝到/L/E目录里。

 

发表评论