Clover是一个操作系统启动加载器(boot loader) ,能够同时运行于支持EFI方式启动的新式电脑和不支持它的老式电脑上。一些操作系统可以支持以EFI方式启动,比如OS X, Windows 7 64-bit, Linux ;也有不支持的,比如Windows XP ,它只能通过传统的BISO方式来启动,也就是通过启动扇区来启动。
Clover的任务
1.设置SMBISO (DMI)信息来模拟-台真实的Apple电脑-这对于运行OS X系统是必需的。序列号是伪造的,但是有
效的。
2. ACPI表-包含在电脑的固件中-通常没有被正确的编写而且可能包含bugs ,这大多是因为制造商的懒惰: APIC表
中包含错误的CPU核心数量,没有NMI数据, FACP表中没有重置寄存器(reset register) ,错误的电源配置, SSDT表中没有EIST数据,甚至没有DSDT表。Clover试图去修正这些问题。
3.接着OS X会从boot loader获取用来描述附加的设备如显卡、网卡或声卡的数据,这些数据就是所谓的EFI字符串(E
FI Strings)。Clover产生这些数据。
4.基于BISO的电脑在启动初期, USB运行于旧的模式(legacy mode) ,当控制权传递给操作系统时,会产生问题。CI
over负责改变USB的运行模式。
5. OS X使用- -块特殊的称为NVRAM的内存来进行信息交换,它被包含在运行时服务(RuntimeServices)中(在启动
的初期不存在, not present in a legacy loader )。Clover提供这种信息交换,使Firewire功能正常,“启动磁盘"设置面板也可正常使用。附加的NVRAM也用于注册iCloud和iMessage服务。6. ConsoleControl协议是必要的并且DUET中没有.
7.通过DataHub协议为EFI/Platform填充某些必要的信息,这些信息DUET中没有,而UEFI中也不一定会有。而且会
设置非常重要的FSB频率值(FSBFrequency value) ,因为这个值有时是错的或者根本就没有。
8. CPU在工作前必须被正确地初始化,但是主板为了兼容大量的不同的CPU ,内部表中不包含任何正确的CPU数据。
Clover会对安装的CPU做一个完全的检测,修正这些表中的CPU信息。其中的一一个效果就是CPU加速模式(turbomode)能够工作。
9.还有一个小问题: DUET和EDK2源码是为了兼容不同的硬件而编写的,但不同的硬件依赖于不同的常量。这意味着
每个编译对应一个特定的平台。Clover提供 了自动平台检测。
EFI
EFI ( The Extensible Firmware Interface ,可扩展固件接口)是位于操作系统和硬件固件之间的一个软件接口。相对于BISO那最多64kb的可用空间和运行于1 6位处理器模式, EFI大小可以达到4MB ,运行于32位或64位模式,并且理论上是平台无关的。但实际上想要达到全平台兼容是不可能的。
EFI不仅存在于操作系统的启动过程中,它还会创建操作系统可访问的表和服务(tables and services) ,操作系统的运行依赖于EFI正确的提供功能。从内建的UEFI来启动OS X是不可能的,用原始的DUET来启动OS X也不可能。CloverEFI和CloverGU1做了大量的工作来修正内部表,让运行OS X成为可能。
译注: DUET(Developer's UEFI Emulation) ,开发者的UEFI模拟
Clover文件结构
安装后,Clover由BOOT与CLOVER两个文件夹组成。
BOOT文件夹存放启动所需的BOOTX64.efi/BOOTIA32.efi文件。
CLOVER则有以下几个文件夹组成:
ACPI
存放DSDT.aml/SSDT.aml
CLOVERIA32.efi
使用传统模式加载32位clover的启动文件
CLOVERX64.efi
使用传统模式加载64位clover的启动文件
config.plist
clover配置文件,相当于变色龙(Chameleon)的org.chameleon.boot.plist
doc
clover的帮助文档
drivers32
使用传统模式加载32位clover.efi所需的驱动
drivers32UEFI
使用传统模式加载32位clover.efi在模拟uefi环境下所需的驱动
drivers64
使用传统模式加载64位clover.efi所需的驱动
drivers64UFI
使用传统模式加载64位clover.efi在模拟uefi环境下所需的驱动
kexts
使用kexts注入时,kext的存放位置
misc
使用clover环境下的截图,提取dsdt.aml/ssdt.aml的存放位置
OEM
根据文件夹下的SystemProductName的不同,加载不同的config.conf&kexts&显卡ROM
refit-default.conf
默认的refit.conf
refit.conf
clover的界面设置文件
ROM
显卡rom存放位置
themes
clover主题存放位置
tools
EFI Shell存放位置
config.plist详解
config.plist由八大部分组成:
ACPI
-C3Latency 应为0x03E9,如果是支持Turbo的CPU,则是0x00FA
-DoubleFirstState 开启lvy变频(?)
-DropAPIC 未知
-DropBGRT 使用clover的logo代替开机时的苹果logo
-DropDMAR 修复在10.8.2后出现AppleACPIPlatform出错
-DropECDT 未知
-DropHPET 未知(强制加载AppleHPET?)
-DropMCFG 未知
-DropOemSSDT 使用自定的ssdt
-DsdtName 设定需要加载的dsdt的名字
-EnableC2 启用CPU的C2 报告(?)
-EnableC4 启用CPU的C4 报告(?)
-EnableC6 启用CPU的C6 报告(?)
-EnableISS 修复在控制台中出现ACPI_SMC_PlatformPlugin的错误
-FixDsdtMask 自动修复dsdt,注:开启后不可放入dsdt,否则五国。(或者设为0x0000来关闭)
-GenerateCStates 修复开机时ACPI_SMC_PlatformPlugin错误
-GeneratelvyStates lvy变频(?)
-GeneratePSates 修复开机时出现ACPI_SMC_PlatformPlugin错误
-MaxMultiplier 设置最大变频数(?)
-MinMultiplier 设置最小变频数(?)
-PLimitDict 限制CPU频率,可设为0,1,2。0为关闭此功能
-PatchAPIC 未知
-PluginType 未知
-ResetAddress 应为0x64
-ResetValue 应为0xFE
-UnderVoltStep 限制CPU功率,只针对core2,对i系列CPU无效。可设为0,1,2。0为关闭此功能。
-smartUPS 若启用,则在系统概述的”电源“项中\"UPS已安装“显示为”是“。只起修饰作用!
CPU
-BusSpeedkHz 设置主频。eg.133MHz -> 133330 100MHz -> 99790kHz
-CpuFrequencyMHz 设置CPU频率 eg.3.3GHz -> 3300
-ProcessorType 设置CPU类型,数值可百度。eg.core i3 ->0x0901
-QPI 设置CPU的QPI,数值可百度。eg.i3 2120->5000
-Turbo 启用CPU的Turbo功能
Craphics
-DualLink 启用duallink功能,0为关闭 -GraphicsInjector 启用显卡自动识别功能
-InjectEDID 注入自定的EDID
-LoadVBios 加载自定的显卡ROM
-NVCAP 设置显卡的NVCAP值
-PatchVBios 启用对开机扁平苹果logo的修复
-VRAM 设置显卡的显存 eg.512MB->512
-display-cfg 设置显卡的display-cfg数值
KernelAndPatches
-AppleRTC 启用修复AppleRTC.kext重置bios功能
-AsusAICPUPM 启用修复AICPM无法加载的问题
-Debug 启用debug
-KernelCpu 启用修复内核不支持的CPU的功能 eg.Atom, Pentium 4
PCI
-HDAInjection 启用对dsdt的声卡信息注入
-InjectClockID 启用修复usb无法从睡眠中唤醒的功能
-LpcTune 貌似已被slice弃用
-PCIRootUID 应为0
-StringInjector 启用efi-string的注入
-USBFixOwnership 启用修复uefi下USB所有者的功能
-USBInjection 启用USB修复功能
RtVariables
-LogEveryBoot 启用每次启动的纪录(?)
-LogLineCount 未知
-MountEFI 开机加载efi分区(?)
SMBISO
-BiosReleaseDate bios发布日期
-BiosVendor bios提供商
-BiosVersion
-Board-ID
-BoardManufacturer 主板提供商
-BoardSerialNumber 设置处理器托架的序列号
-ChassisManufacturer 机箱提供商
-Family
-Manufacturer 整机制造商
-Mobile 若为移动平台,请设为yes
-ProductName
-SerialNumber
-SmUUID 格式应为00000000-0000-1000-8000-xxxxxxxxxxxx “xxxxxxxxxxxx”为你的网卡MAC值
-Version 应为1.0
SystemParameters
-CustomUUID 设置自定的UUID
-DefaultBootVolume 设置默认开机的宗卷名称
-InjectSystemID 启用clover的自动注入UUID功能 注:开启此功能可能导致每次开机的UUID千变万化
-boot-args 若引导ML,则需填入slid=0 可选选项:-v -x npci=0x2000 darkwake=0
-prev-lang:kbd 设置clover的界面语言
Clover_v2.4k_r4972
Clover | 下载地址: https://pan.baidu.com/s/1ITtIvGwa26Jxo17q0P1IUQ |
提取件码:esxf |
Clover_v2.4k_r4961
Clover | 下载地址:https://pan.baidu.com/s/1OOZRA7Apfe5e0pD0lwF3fQ |
提取件码:2ipx |
评论3