Clover bootloader 101

 Clover bootloader

Clover is a  EFI-based bootloader Hackintosh that runs Mac osx on normal PC hardware created as a replacement to EDK2/Duet bootloader http://www.tianocore.org . It has support for both Legacy BIOS  and UEFI.

https://i1.wp.com/cvad-mac.narod.ru/pic/bdu/cloverv2.gif

Features:

  • Using UEFI BIOS or own CloverEFI
  • Default boot after timeout into previous chosen OS
  • Customizable GUI: themes support, own icons, fonts, background image, animated pictures, mouse pointers.
  • F1 – multilingual help, depending on language in config
  • Saving preboot.log from GUI by typing F2 and system.log for debug
  • Save original (OEM) ACPI tables by pressing F4
  • Sest DSDT patching with F5
  • Save video BIOS into EFI/misc by pressing F6
  • Saving screenshots from GUI typing F10
  • CD/DVD eject by F12 and refresh menu after CD insertion
  • Change GUI resolution by PgUp/PgDown
  • Save BOOT0000 option to NVRAM
  • Call to Shell.efi
  • Native screen resolution in GUI
  • Scroll bar if screen resolution is too low for menu
  • Theme database http://clover-wiki.zetam.org/Theme-database

Main Features:

  • Boot into 10.4 – 10.11 OSX, Windows EFI and Linux EFI
  • Boot into LegacyOS (WindowsXP, Linux, DOS) by their bootsectors
  • Ability to patch  DSDT on boot OSX.Custom DSDT will be loaded from booted partition or from EFI folder
  • ACPI tables loading (SSDT-xx, APIC, BOOT, SLIC, SLIT, SRAT, UEFI…)
  • Ablity to inject GPU properties , USB fix, EDID, HDA id, HDMI fix, PCIRootUID, Ethernet Built-in and many more.
  • Can Patch kext “on the Fly” with edited them manually.
  • Extra kexts loading without having put into S/L/E.
  • Patch kexts inside kernelcache/Prelinked kernelcache for unsupported hardware

Installer and Installation:

Clover installer file system is in .pkg .Download installer from link below.
Installation for clover is simple.So lets start install clover.The pkg only work in osx.
1.Run installer that you downloaded
2. Press continue and when you reach the customization section.
3. Change the install location ,where you want to install clover  then press “Customize
4. Read carefully the instructions given for each option after you select a entry at the bottom of the window.

Bootloader Options in details:

1. Install for UEFI motherboards : This option disables the installation of boot files.Most newer MOBOs has UEFI.So its better to this Option.
2. Install Clover in the ESP: Its install clover boot and config files into EFI partition is available (GPT partitioned drive).If unchecked clover will install in Root or “/”  of selected HDD.
3. Bootloader :This is valid for BIOS booting.For older bios aka legacy BIOS.
4. Install boot0af in MBR:  Boot utilizing boot0af (searching an active partition) and active flag will be set on  selected HDD/partition.
5. Install boot0ss in MBR: Boot utilizing boot0ss (searching an HFS+ partition, even if it is not active. Useful for dual-boot configurations.
6. User alternative booting PBR : Read here
7. CloverEFI: Choose the loader’s bit depth: 32-bit or 64-bit.
8. BiosBlockIO:  For computers with a non-standard SATA controller.
9. Drivers: These are the drivers that helps clover boot properly.You do not need them all in one.

zSc.png

BSc.png

NTFS.efi
NTFS file system driver. Provides the possibility to load Windows EFI.
HFSPlus.efi
HFS+ file system driver. Necessary for booting Mac OS X Bootloader will run faster and this is what apple uses.
VBoxHFS.efi
Legal alternative for HFSPlus.efi. May be slower.
VBoxExt2.efi
EXT2/3 file system driver. Necessary for booting Linux EFI VBoxExt4.efi EXT4 file system driver. Necessary for booting Linux EFI
FSInject.efi
Takes control of the file system for the possibility to inject external kexts into the system.
PartitionDxe.efi
Already present in CloverEFI and in UEFI, however neither optimized for Apple partitions, nor for GPT/MBR. Most probably.
OsxFatBinaryDrv.efi
Enables starting of FAT modules like boot.efi.
OsxAptioFixDrv.efi
Fixes memory map created by AMI Aptio EFI.
OsxAptioFix2Drv.efi
Another driver to Fixes memory map created by AMI Aptio EFI.
OswLowMemFix.efi
Simplified variant of OsxAptioFixDrv. Do not use both simultaneously.
EmuVariableUEFI.efi
Emulate NVRAM for OS X, this may not be needed on your system if you have native NVRAM ( Try without to test system boot or not)
PS2Mouse*.efi, PS2MouseAbsolute*.efi, UsbMouse*.efi
Set of drivers for mouse/trackpad/touchpad support in CloverGUI. They have no effect on the OS.
DataHubDxe.efi
Already present in CloverEFI and possibly in UEFI. The recommendation is to use anyway, no conflict will arise.
CsmVideoDxe.efi
Video driver for providing a wider set of resolutions than the ones present in UEFI.

10. Themes: Choose as you like
11. Install RC scripts on target volume – These are the scripts rc.local and rc.shutdown.local that are executed while starting and while exiting OS X. if you want use custom scripts,then this might help a lot.
12. Install all RC scripts on all other bootable OSX volumes : Same s above but  for multiple Mac OS X systems are installed.
13. Install Clover Preference Pane : Preference panel under System Preference   that helps with updating Clover, with choosing a theme and with setting NVRAM variables.

In Windows:

Its better to use BootDiskUtility.exe by cVaD for installation and  will help you to format a flash drive on Windows.

Clover Configuration :

This is the most important part of clover bootloader aka heart of it.It contains BOOT and Clover Folder .

Clover can do lots of stuff before OS boots.Like kext patching ,DSDT fixes and more. Here you can find most commonly needed to run  hackintosh.

Here i only mention ‘important’ options for beginners.For deep visit Clover wiki.

ySc.png

Booting system :
While  booting or restarting a PC, Clover loads operating system as below
Option A: BIOS-based PC (old motherboards)

BIOS>MBR>PBR>boot>CLOVERX64.efi>OSLoader

OSLoader is boot.efi in case of Mac OS X and bootmgr.efi in case of Windows.
Option B: UEFI-based PC (newer motherboard)

UEFI>CLOVERX64.efi>OSLoader

ACPI folder:

ACPI (Advanced Configuration and Power Interface).The specification enables new power management technologies to evolve independently in operating systems and hardware while ensuring that they continue to work together.

Here in clover Dumps or patches DSDT ,SSDT or other ACPI tables.This mostly used custom DSDT and SSDT for hackintosh.

EFI/ClOVER/ACPI…..

  • Original  (saves all the Original ACPI tables is you use F4 at boot)
  • Patched (Put you custom/patched  DSDT,SSDT here)
  • Windows  (Put windows tables, like SLIC.aml here.Only need if you use SLIC windows license )

Config.plist:

The main configuration file that loads all clover settings  for  OS  is named “config.plist“this where all the nobs and button you have to configure.
Location for config.plist:
/EFI/CLOVER/config.plist
or
/EFI/CLOVER/OEM/Your_motherboard_name/config.plist ( Advance user )
N.B : In clover “true” means inject/patch and “false” do not and used for some OOB Hardware .
Soft used for editing config.plist are :

Text Edit , PlistEditor, Xcode, TextWrangler,Clover Configurator

CSc.png

Config.plist/ACPI:

All  DSDT  patches you can edit here.Parameter group for various corrections of ACPI tables.Bit complicated new user advised to not use.but if want more information.

Here

If you are using custom SSDT the change settings below.

<key>SSDT</key>
        <dict>
            <key>DropOem</key>
            <false/>
            <key>EnableC6</key>
            <true/>
            <key>Generate</key>
            <dict>
                <key>CStates</key>
                <false/>
                <key>PStates</key>
                <false/>
            </dict>
        </dict>

Config.plist/BOOT :

Boot contains all the settings.Like boot flags, legacy settings, boot volume, loader option etc.Important are …..

  • Arguments  (  You can add “Boot Flags” and “Kernel Flags” to be used by the system)
  • DefaultVolume (default boot  volume  entry in Clover GUI.Add the name you want to boot default .e.g Yosemite)
<key>Boot</key>
    <dict>
        <key>Arguments</key>
        <string>kext-dev-mode=1  -v  npci=0x2000 dart=0</string>
        <key>DefaultVolume</key>
        <string>Yosemite</string>
        <key>Log</key>
        <false/>
        <key>Secure</key>
        <false/>
        <key>Timeout</key>
        <integer>5</integer>
        <key>XMPDetection</key>
        <false/>
    </dict>

Config.plist/Devices:
For tweaking setting affecting PCI devices.important option are …

  • FakeID  (Changes PCI properties DeviceID and VendorID for the device will work with native drivers.)
<key>FakeID</key>
        <dict>
            <key>ATI</key>
            <string>0x0</string>
            <key>IMEI</key>
            <string>0x0</string>
            <key>IntelGFX</key>
            <string>0x0</string>
            <key>LAN</key>
            <string>0x0</string>
            <key>NVidia</key>
            <string>0x0</string>
            <key>SATA</key>
            <string>0x0</string>
            <key>WIFI</key>
            <string>0x0</string>
            <key>XHCI</key>
            <string>0x0</string>
        </dict>
  • Audio   (Property injection for the sound chip codec ids into DSDT under HDEF .use the codec you want to inject in  for Audio.)
<key>Audio</key>
        <dict>
            <key>Inject</key>
            <string>1/5/887</string>
        </dict>
  • USB    ( Injects USB properties on DSDT.helpful if usb not working properly.better to use all ‘true’.
<key>USB</key>
        <dict>
            <key>AddClockID</key>
            <true/>
            <key>FixOwnership</key>
            <true/>
            <key>Inject</key>
            <true/>
        </dict>

Config.plist/Graphics:

This  is made for injecting video card(Intel, Nvidia, AMD/ATI) properties as done. There are many different parameters that are injected, mostly constants, some of them calculated.Important option are …

inject :

  • Inject / Intel      (For inject Intel cards with ig-platfrom-id)
  • Inject / ATI            (For inject AMD cards , for OOB cards ‘false’)
  • FBName                   (specific to AMD Radeon cards, which have bunch of different framebuffers )
  • Inject / NVidia        (For inject nvidia cards , for OOB cards ‘false’)
  • ig-platform-id      (Use for  enable the internal Intel HD video card.)
 <key>Graphics</key>
    <dict>
        <key>Inject</key>
        <dict>
            <key>ATI</key>
            <false/>
            <key>Intel</key>
            <true/>
            <key>NVidia</key>
            <false/>
        </dict>
    <key>ig-platform-id</key>
    <string>0x01620005</string>
    <key>FBName</key>
     <string>Macaque</string>
    </dict>

Config.plist/KernelAndKextPatches:

This enables patching on-the-fly.Mean you have choose option and clover will do the patches needed to run os.Booting with kernel cache or with the key NoCache.Important option are….

  • KernelCpu (Patches kernel panics related to an unsupported CPU     like Yonah, Atom or Haswell for old systems)
  • FakeCPUID  (Fake CPUID is intended to be a replacement for the        Kernel CPU patch)
  • AsusAICPUPM ( Unlocks/patches restriction the use of MSR register  0xE2 in power management for Sandy/Ivy Bridge systems)
  • AppleRTC  (Prevents BIOS CMOS reset on sleep or reboot)
  • KernelLapic (HP notebooks have lapic problems, which can be solved    by using the boot parameter cpus=1)
  • KernelHaswellE (Patch gets rid of the blocking compatibility check)
  • KernelPm  (Kernel power management patch for Haswell with locked msr)
  • KextsToPatch (Apart from the built-in patches you can create your own ones providing following data: the binary file name, the data to find and the data to replace with – both in hexadecimal. one of the best patch you can made yourself )
<key>KernelAndKextPatches</key>
    <dict>
        <key>AppleRTC</key>
        <true/>
        <key>KernelCpu</key>
        <true/>
        <key>AsusAICPUPM</key>
        <true/>
        <key>KernelLapic</key>
        <false/>
        <key>KernelPM</key>
        <true/>
        <key>KernelHaswellE</key>
        <false/>
        <key>KextsToPatch</key>
        <array>
            <dict>
                <key>Comment</key>
                <string>External icons patch</string>
                <key>Find</key>
                <data>RXh0ZXJuYWw=</data>
                <key>Name</key>
                <string>AppleAHCIPort</string>
                <key>Replace</key>
                <data>SW50ZXJuYWw=</data>
            </dict>
        </array>
    </dict>

Config.plist/RT Variables:

This section deals with or defining runtime variables affecting Apple services or Clover itself. Importance are….

  • MLB (Digits and letters, 17 in length, describing the motherboard’s serial number. No special rule exists here. The best option is to choose a real serial number and to replace digits in the middle)
  • ROM  (Twelve hexadecimal digits, often corresponding to the MAC address of the ethernet card.  this value can be random and you can use Lan and WiFi MAC by selecting UseMacAddr0 or UseMacAddr1.
  • CsrActiveConfig  (Controls System Integrity Protection aka SIP) best value to use for installation 0x67 )

Config.plist/SMBIOS:

Used to mask your PC as a Mac. Clover will do this task automatically based on the given processor, video card and signs of mobility. Custom settings also helps with CPUPm,Graphics and more functionality.

Config.plist/SystemParameters:

Used for inject  many option at over all system  like UUID,kext injection etc

  • InjectKexts  (This key defines the global policy regarding kext injection.Better to chose Yes if you have kext in /EFI/CLOVER/kexts/   folder )

 

This all basics you need to run clover as a beginner.Try it and have fun.

Post comment if you have issues

Information:

Downloads 

Main project :
Clover thread  here

Clover is developed by Silce and apianti, JrCs ,asava, jadran, crazybirdy, dmazar, blackosx, blusseau, zenith432 and many others from osx community.

Advertisements

About dmos

Just having fun
This entry was posted in Hackintosh Guides. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s