Jump to content

fluid | fixed

Clover v.2 Instructions

Bootloader EFI Clover

  • Please log in to reply
33 replies to this topic

#1
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

*
POPULAR

Slice is glad to present a new EFI bootloader.

Attached File  Clover.png   45.83K   236 downloads

CLOVER
Now version 2 rEFIt based.


It is open source based on different projects: Chameleon, rEFIt, XNU, VirtualBox. The main is EDK2 latest revision.
I also want to thank all who help Slice with the development. Credits and copyrights remain in the sources.
http://cloverefiboot.sourceforge.net/

Main features:
Spoiler

If you have a question please provide outputs from DarwinDumper (formed from Trauma tool). Thanks Trauma!
Continued by blackosx and STLVNUB. -----------------

Edited by ErmaC, 28 November 2012 - 11:05 PM.
Update


#2
STLVNUB

STLVNUB

    InsanelyMac Legend

  • Coders
  • 976 posts
  • Gender:Male

COMPILATION

Now on GitHub: Grab it from link below
https://github.com/S...UB/CloverGrower

This is open-source project assuming that everybody can compile it if you want to change something.
More info at http://www.projectos...indpost&p=17480

XCode Command Line Tools are essential to build the GCC 4.8.0 tool chain. ( I will always use latest version ) :wink2:

Q: CloverGrower, What is it?
A: Tool to download/compile and build the latest Clover package/iso. Packages are archived as they are built.

ALWAYS RUN CloverGrower.command FIRST, even when Upgrading.


*******************************

Edited by STLVNUB, 02 April 2013 - 05:16 AM.
Update


#3
Slice

Slice

    InsanelyMac Deity

  • Local Moderators
  • 1,817 posts
  • Gender:Male
  • Location:Moscow

DOWNLOADS


Installer
Attached File  Screen Shot 2012-11-24 at 9.55.18.png   157.49K   450 downloads
I am sorry but the forum doesn't allow attachments larger then 10Mb while the new version is 12Mb.
So look for new revisions at the project home
http://sourceforge.n.../cloverefiboot/
Attached File  Clover_v2_r826.zip   9.09MB   841 downloads

CD ISO bootable with Clover
Attached File  CloverISO-897.tar.lzma.zip   3.27MB   493 downloads
Attached File  CloverCD-785.tar.lzma.zip   2.25MB   190 downloads

Many previous revisions can be found here http://tools.inmac.org/clover/

Utility to install Clover from Windows http://cvad-mac.naro...diskutilityexe/

Additional foreign file system drivers for EFI.
Attached File  FS drivers.zip   70.08K   1493 downloads

Manuals:
Russian language  Attached File  Клевер цвета хаки 888.pdf   1.42MB   255 downloads Attached File  Клевер цвета хаки 1659.pdf   1.61MB   0 downloads



Localization
If you want to add your native language to the program please translate the follow files
Attached File  TextsToTranslate.zip   7.76K   345 downloads
and upload the result at this thread.

Edited by Slice, Yesterday, 02:52 AM.
Update


#4
Slice

Slice

    InsanelyMac Deity

  • Local Moderators
  • 1,817 posts
  • Gender:Male
  • Location:Moscow

INSTALLATION


Using the installer
Start installer. Press "Continue" and "OK' as many times as needed.
Choose a partition to install
Attached File  Screen Shot 2012-09-15 at 11.51.36.png   166.07K   3571 downloads
Customize what to install
Attached File  Screen Shot 2012-09-15 at 11.53.47.png   177.01K   5112 downloads
Choose themes. Default one is black-green by blackosx.
Attached File  Screen Shot 2012-09-15 at 11.54.57.png   152.04K   3797 downloads
C l8r themes preview.

Manual Installation
Spoiler

Warning

to use USB stick for first Clover installation and tests. There are cases where users are running install for the first time directly to HDD and then they mess with existing working Chameleon boot.



The best way to play with and test Clover (or any other booter) is to test from USB stick. Prepare MBR formatted USB stick with one FAT32 partition and then install Clover there. This stick can be used for standard BIOS Clover boot and for UEFI boot. Once Clover is set up on that stick and all is working good and you know what you are doing, then install it to HDD.


Edited by Slice, 24 November 2012 - 04:14 AM.
Update


#5
Slice

Slice

    InsanelyMac Deity

  • Local Moderators
  • 1,817 posts
  • Gender:Male
  • Location:Moscow
By dmazar: How to do UEFI boot Original post

How to do UEFI Boot


I'll repost some info regarding UEFI boot from there:

When trying UEFI boot, try with following combination of drivers in /EFI/Drivers64UEFI folder:

1. HFSPlus.efi, OsxFatBinaryDrv-64.efi

if this does not work, then

2. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxLowMemFixDrv-64.efi
and then if this does not work then

3. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxAptioFixDrv-64.efi (with slide=0 in boot args in config.plist)
and if even this does not work, then try:

4. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxAptioFixDrv-64.efi (with slide=0 in boot args in config.plist), EmuVariableRuntimeDxe.efi (from here)

More about it:

1. HFSPlus.efi, OsxFatBinaryDrv-64.efi
This works on boards with Gigabyte Hybrid EFI. This is the best option for UEFI boot, in the sense that no special fixes are required. Any OSX should boot fine, unless some big change happens that will stop working boot here.

2. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxLowMemFixDrv-64.efi
This works on Insyde H2O UEFI. Some small memory issue will be fixed by LowMemFix, and then everything should be equal to case 1.

3. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxAptioFixDrv-64.efi (with slide=0 for ML)
This works for all other boards ... well, where works. This is not so good solution because it depends on current functioning of boot.efi and current structures that are passed between boot.efi (boot loader) and kernel, like boot args and device tree. Meaning: if structure of boot args changes, like it changed when Lion came out, which caused Chameleon to fail to boot Lion, this will again break Chameleon and UEFI boot with AptioFix - until somebody fixes it. This is the most annoying thing to me because the major point for having UEFI boot is to use boot.efi as bootloader and to avoid such things. Well, if this happens, the first solution will be to fall back to standard Clover until the thing is resolved. The small issue is that standard Clover is also dependent on kernel boot args when kernel and kext patching or kext injection is used - this would also need to be turned off in that case.

4. HFSPlus.efi, OsxFatBinaryDrv-64.efi, OsxAptioFixDrv-64.efi, EmuVariableRuntimeDxe.efi
This works on Dell Vostro, some ThinkPad's - some laptops with Phoenix UEFI. All mentioned in 3. is applicable here.

All other drivers may or may not be needed. Drivers listed above are required minimum. The best way to test if the driver is needed or not is to try without it - if the thing still works, then it is not needed. Well, more or less ... since for example normal boot works without FSInject, but that one can be needed sometimes.

Edited by Slice, 24 November 2012 - 04:18 AM.
Update


#6
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

How to use - common words


OK.
In the following we will assume that you correctly installed Clover.
The default configuration that comes with the installer is usually good enough for most configurations,
so as a fist attempt just try to boot.
Remember choose a starting device in BIOS or CLOVERX64.EFI in the case of UEFI BIOS.

The boot process will proceed as follows:
BIOS boot:  BIOS->MBR->PBR->BOOT->CLOVERX64.EFI-> ... system
UEFI BIOS:  UEFI->CLOVERX64.EFI-> ... sytem

The file CLOVERX64.EFI located at /Volumes/YourHDD/EFI/BOOT/ is a graphical menu to choose a system to boot (CloverGUI).
Attached File  MainMenu.png   106.71K   1226 downloads
As you see there is a help calling by F1 key.
Attached File  Help.png   99.57K   1647 downloads
This is a Russian example. There are also other languages and the choice depends on setting in your config.plist file
<key>SystemParameters</key>
<dict>
  <key>prev-lang:kbd</key>
  <string>en:0</string>

At this moment there are languages: en, ru, it, es, pt, ge, id, fr.
There is no your language? Took "TextsToTranclate from Downloads section, translate it to your language and upload here. I will implement ASAP.

You can change some settings directly from GUI. This is for temporarily enable/disable some features that you are not sure
Attached File  Options.png   80.2K   1780 downloads Attached File  CPU.png   84.33K   1487 downloads Attached File  Graphics.png   68.39K   1202 downloads Attached File  Kexts.png   67.94K   1109 downloads

Now you can boot a system. Just press "Enter". Or you may press 'Space" and choose other method to boot
Attached File  Details.png   92.78K   935 downloads

Edited by ErmaC, Yesterday, 08:50 PM.
Update


#7
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

Calculator for Automatic DSDT fix


One of the the most important concerns in the hackintosh world is how to create a good DSDT.aml.
If you already have your own DSDT.aml, you can directly place it into /EFI/acpi/patched. Moreover, in case you have different OS versions on the same computer and you want each of them to boot with a different DSDT (wow! it's possible!), what you have to do is to place each DSDT.aml in the root partition of the corresponding OS version.

If you don't have any good DSDT yet, you may allow Clover to create an autopatched DSDT for you. Namely, Clover will extract the DSDT as provided by the BIOS and consequently apply some patches. The specific set of patches that will be applied depends on your choice. The following example showcases how to apply one of the available patches by altering the configuration file config.plist:
<key>ACPI</key>
<dict>
  <key>DsdtName</key>
  <string>BIOS.aml</string>
  <key>FixDsdtMask</key>
  <string>0xB5BF</string>
</dict>

Where 0xB5BF is a mask containing 16 bits each for one patch.
To calculate them it is better to use an application by Cvad
Attached File  Screen Shot 2012-09-15 at 18.20.26.png   49.18K   2022 downloads
At this moment some explanation in Russian only so will be explained separately.

Attached File  CloverFixDsdtMaskCalculator.app.zip   46.14K   1110 downloads

20.09.2012
Since revision 683 you can assign the mask directly from CloverGUI
Attached File  DsdtFix.png   63.2K   1806 downloads

Edited by ErmaC, Today, 02:09 PM.
Update


#8
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

Instructions for GraphicsInjector


Historically the sources for GraphicsInjector came from Chameleon where it is named GraphicsEnabler.
It is easy to see is user tell about GE then it means he uses Chameleon else if he tell about GI then he uses Clover :)
But Clover runs forward.

Intel videocards: GMA950, X3100, HD300, HD4000 - proved.
You have just set
<key>Graphics</key>
<dict>
<key>GraphicsInjector</key>
<string>Yes</string>

But one note. Some notebooks (like my Dell Inspiron 1525) booted into black screen. You can use sleep-trick or erase Device(CRT) from DSDT.
The last thing will be performed by the Clover if you set DsdtFixMask with bit 0x0100 - "Display Fix".
For Intel HD4000 one more parameter is possible
  <key>ig-platform-id</key>
  <string>0x01620005</string>

Where 162 for desktop like iMac13 and 166 for MacBookPro and MacMini. Last digit is a version of graphics engine.
We can't confirm information about memory/pipes/connectors dependency.
Default value set by Clover always work.

NVidia - a wide set of supported video cards, and the database is continuously replenished by ErmaC.
There are parameters in config.plist
<key>Graphics</key>
<dict>
<key>GraphicsInjector</key>
<string>Yes</string>
<key>LoadVBios</key>
<string>No</string>
<key>VideoPorts</key>
<string>3</string>
<key>NVCAP</key>
<string>04000000000003000C0000000000000700000000</string>
<key>display-cfg</key>
<string>03010300FFFF0001</string>
</dict>

But the Clover is clever enough that you need no to set these parameters.  Just one: GI = Yes and this will be the best choice for you.
I have many successful reports and no unsuccessful.

ATI/AMD
This is a special conversation. I have GA AMD Radeon HD6670 and VFX HD5570 so I tested these technologies in the cases of 5xxx and 6xxx.
You may set nothing (GI = No) and enter desktop with a common ATIRadeonFramebuffer. It works including OpenGL, you may even test with OpenGL Extension Viewer but this is not very good way to go. If you call DVDPlayer it will crash.
If you set GI = Yes you will enter black  screen or see empty desktop because all info appears to be on second invisible desktop.
You need ATIConnector patch. Original topic by bcc9.
As example for ATI HD6670 is my config
<key>Graphics</key>
<dict>
<key>GraphicsInjector</key>
<string>Yes</string>
<key>FBName</key>
<string>Ipomoea</string>
<key>LoadVBios</key>
<string>No</string>
<key>VideoPorts</key>
<string>3</string>
</dict>

And then I do connectors patch for the "Ipomoea" framebuffer.
<key>KernelAndKextPatches</key>
<dict>
<key>KernelCpu</key>
<string>No</string>
<key>ATIConnectorsController</key>
<string>6000</string>
<key>ATIConnectorsData</key>
<string>000400000403000000010000120401050008000004020000000100001102040310000000100000000001000000000002</string>
<key>ATIConnectorsPatch</key>
<string>040000000403000000010000100001061000000010000000000100000000000100080000040200000001000012040403</string>

For Mobile Radeon there in necessity to do
<key>LoadVBios</key>
<string>Yes</string>

Yes, this is a key difference to launch mobility.

EDID
In some case you need to inject EDID string. Or may be you just know the better EDID then provided by manufacture.
<key>InjectEDID</key>
<string>Yes</string>

In this case EDID string obtained by BIOS will be accesible by OSX that is not always true.
If your monitor is non-DDC at all then you may inject some artificial EDID
<key>CustomEDID</key>
<data>AP///////wAyDADfAAAAAAASAQOAIRV4CunVmVlTjigmUFQAAAABAQEBAQEBAQEBAQEBAQEB3iGgcFCEHzAgIFYAS88QAAAY3iGgcFCEHzAgIFYAS88QAAAAAAAA/gBXNjU3RwAxNTRXUDEKAAAA/gAjMz1IZYSq/wIBCiAgAJo=</data>


AAPL,DualLink
For some older cards you should set DualLink=0 or 1. For example ATI HD1600. There must be =0 else you will see four screens.
<key>DualLink</key>
<string>1</string>


Edited by Slice, Yesterday, 03:10 AM.
Update


#9
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

ATIConnector patching


First of all I want to thank bcc9 for the method, pcj for implementing this patch and dmazar for making it working.
Instruction how to do.
1. Download radeon_bios_decoder and ati_personality.pl from bcc9 topic.

2. Look into SystemProfiler to know what is your Radeon card. My DeviceID=0x6758 which is 6000 series. What is your series? Search through vanilla ATI kexts to find your deviceID or near to that.
For example, if your DeviceID=0x68B2 then you may found that Juniper included very similar DIDs.
See AMDRadeonAccelerator.kext/Contens/Info.plist
Attached File  Screen Shot 2012-09-16 at 15.37.12.png   53.98K   875 downloads
You must write your DeviceID here.
Also see ATI5000Controller.kext/Contents/Info.plist. The same rule: "if your deviceId is absent then write it near the similar one"
Example

Quote

<key>IOPCIMatch</key>
<string>0x68981002 0x68991002 0x68E01002 0x68E11002 0x68D81002 0x68C01002 0x68C11002 0x68D91002 0x68B21002 0x68B81002 0x68B01002 0x68B11002 0x68A01002 0x68A11002 </string>
Now you are sure your device is controlled by ATI5000.

3. Dump information with ati_personality.pl.
The interesting for you is the 5000 section.
Kext /System/Library/Extensions//ATI5000Controller.kext/Contents/MacOS/AMD5000Controller
Personality: Douc
ConnectorInfo count in decimal: 2
Disk offset in decimal 165856
0000000	02 00 00 00 00 05 00 00 09 03 00 00 21 03 02 02
0000010	00 04 00 00 04 02 00 00 00 03 00 00 11 02 01 01
0000020

And so on. There are several Framebuffers. What to choose? I think any. But the better will be (for my mind, may be I am wrong)
5000: Baboon for desktop, Galago for mobile.
6000: Ipomoea for desktop, Osmunda for mobile.

This is my example with HD6670 devID=0x6758 (Turks).
Connectors info:
Personality: Ipomoea
ConnectorInfo count in decimal: 3
Disk offset in decimal 180112
0000000	00 04 00 00 04 03 00 00 00 01 00 00 12 04 01 05
0000010	00 08 00 00 04 02 00 00 00 01 00 00 11 02 04 03
0000020	10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 02


4. Next step. Dump your bios with the script radeon_bios_decoder from bcc9.
One moment. Where can you get your VideoBios? There are different ways. The simplest one is to start Clover and press F6.
You may find file /EFI/misc/c0000.bin in your Clover partition if it is FAT32 formatted.
iMac:test slice$ ./radeon_bios_decode <c0000.bin
ATOM BIOS Rom:
SubsystemVendorID: 0x1458 SubsystemID: 0x2557
IOBaseAddress: 0xe000
Filename: R667D32I.F1
BIOS Bootup Message:
GV-R667D3-2GI/F1														

PCI ID: 1002:6758
Connector at index 0
Type [@offset 44282]: HDMI-A (11)
Encoder [@offset 44286]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 44356]: 0x92, OSX senseid: 0x3
Connector at index 1
Type [@offset 44292]: DVI-D (3)
Encoder [@offset 44296]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 44383]: 0x95, OSX senseid: 0x6
Connector at index 2
Type [@offset 44302]: VGA (1)
Encoder [@offset 44306]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 44410]: 0x90, OSX senseid: 0x1
iMac:test slice$

All that we need is senseid for each output.
DVI-D: 06
VGA: 01
HDMI: 03
So replace the digits in the chosen connectors info. (red digits).
First digits (green) at every line are connector's type
0004 - DP
0008 - HDMI
1000 - VGA
Must be
0400 - DVI-D
0200 - LCD - for notebooks

0000000 00  04  00  00  04  03  00  00  00  01  00  00  12  04  01  05
0000010 00  08  00  00  04  02  00  00  00  01  00  00  11  02  04  03
0000020 10  00  00  00  10  00  00  00  00  01  00  00  00  00  00  02

Corrected table:
0000000 04  00  00  00  04  03  00  00  00  01  00  00  12  04  01  06
0000010 00  08  00  00  04  02  00  00  00  01  00  00  11  02  04  03
0000020 10  00  00  00  10  00  00  00  00  01  00  00  00  00  00  01

I can also exchange 2nd and 3rd lines
0000000 04  00  00  00  04  03  00  00  00  01  00  00  12  04  01  06
0000010 10  00  00  00  10  00  00  00  00  01  00  00  00  00  00  01
0000020 00  08  00  00  04  02  00  00  00  01  00  00  11  02  04  03


5. Now I can write initial table into ATIConnectorsData, and corrected table into ATIConnectorsPatch of my config.plist.
<key>KernelAndKextPatches</key>
<dict>
<key>ATIConnectorsController</key>
<string>6000</string>
<key>ATIConnectorsData</key>
<string>000400000403000000010000120401050008000004020000000100001102040310000000100000000001000000000002</string>
<key>ATIConnectorsPatch</key>
<string>040000000403000000010000100001061000000010000000000100000000000100080000040200000001000012040403</string>


6. This patch will work in two cases: if KernelCache is used, or if boot-args contain a key "WithKexts".
If for some reason kernelcache is not load then the patch will not be applied.
Remember that you do the patch with the chosen framebuffer, and it will not work if you set other frame buffer in the config.plist
<key>Graphics</key>
<dict>
<key>GraphicsInjector</key>
<string>Yes</string>
<key>FBName</key>
<string>Ipomoea</string>


It works for my two computers with HD6670 and with HD5570 giving me working DVDPlayer and all other functionality. I can play 4x4Evolution.

Some news.
0000000 04  00  00  00  04  03  00  00  00  01  00  00  12  04  01  06
0000010 10  00  00  00  10  00  00  00  00  01  00  00  00  00  00  01
0000020 00  08  00  00  04  02  00  00  00  01  00  00  11  02 05 03

If you have a problem with Sleep then change encoderid for VGA output to zero (red digits)
If you have a problem with HDMI plug&play then change HotPlugID to 05 (blue digits)

Edited by Slice, 03 October 2012 - 10:19 AM.
Update


#10
Slice

Slice

    InsanelyMac Deity

  • Local Moderators
  • 1,817 posts
  • Gender:Male
  • Location:Moscow

Any kext patching


You may do many patches with this ability.
One funny sample

I look into kext VoodooHDA and found a string "Headphones" = 48 65 61 64 70 68 6F 6E 65 73 00
Attached File  ______________2012_09_08___20.20.59.png   63.63K   1056 downloads
I want to rename it to "Telephones"  ;)  = 54 65 6C 65 70 68 6F 6E 65 73 00
So I write into config.plist the follow
<key>KextsToPatch</key>
<dict>
<key>0</key>
<dict>
	<key>Name</key>
	<string>VoodooHDA</string>
	<key>Find</key>
	<data>SGVhZHBob25lcwA=</data>
	<key>Replace</key>
	<data>VGVsZXBob25lcwA=</data>
</dict>
</dict>


Reboot and have the result
Attached File  ______________2012_09_08___20.28.41.png   64.42K   1496 downloads

Now about more useful patches. One of them is ATIConnectors patch only for 5000 and 6000 controller under 10.7 or 10.8. In other case you should patch as any kext.
For example OS 10.6, ATI Radeon X1650 with non-usual DeviceID=0x71cd. You have to write this value into info.plist but not only.
You also should patch the binaries of ATIRadeonX1000.kext.
Do the follow
<key>0</key>
<dict>
	<key>Name</key>
	<string>ATIRadeonX1000</string>
	<key>Find</key>
	<string>81fa87710000</string>
	<key>Replace</key>
	<string>81facd710000</string>
</dict>


There are predefined patches

Edited by Slice, 20 April 2013 - 02:08 PM.
Update


#11
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

CustomEDID

It is needed in two cases

1. There is non-DDC monitor.
2. This is DDC_monitor, but Apple's driver can't get EDID from them. While BIOS - yes.
For the second case we just set InjectEDID = yes
For the first case we should also write CustomEDID obtained from anywere into config.plist.
Attached File  Screen_shot_2012_09_12_at_14.01.07.png   87.12K   1179 downloads
You may create your best custom EDID by ViewSonic EDID editor
just port it into OSX by Wineskin
This is my result (a file from lvs1974)
Attached File  Screen Shot 2012-09-16 at 20.25.39.png   58.03K   1069 downloads
EDID sample to load by the program
128 BYTES OF EDID CODE:
		 0   1   2   3   4   5   6   7   8   9
	  ________________________________________
  0  |  00  FF  FF  FF  FF  FF  FF  00  0D  AF
 10  |  26  15  00  00  00  00  09  10  01  03
 20  |  80  21  15  78  0A  C6  A9  9A  57  4E
 30  |  85  26  1E  50  52  00  00  00  01  01
 40  |  01  01  01  01  01  01  01  01  01  01
 50  |  01  01  01  01  BC  1B  00  A0  50  20
 60  |  17  30  30  20  36  00  4B  CF  10  00
 70  |  00  18  00  00  00  FE  00  4E  31  35
 80  |  34  49  32  2D  4C  30  32  0A  20  20
 90  |  00  00  00  FE  00  43  4D  4F  0A  20
100  |  20  20  20  20  20  20  20  20  00  00
110  |  00  FE  00  4E  31  35  34  49  32  2D
120  |  4C  30  32  0A  20  20  00  88


Edited by Slice, 17 September 2012 - 01:35 PM.
Update


#12
Slice

Slice

    InsanelyMac Deity

  • Local Moderators
  • 1,817 posts
  • Gender:Male
  • Location:Moscow

Hiding unnecessary menu entries


The Clover usually find many entries with possibility to boot. There are EFI entries and legacy boot sectors. If you think you don't need it then you may hide it.
The method by skoczi.
Was
Attached File  MainMenu.png   106.71K   493 downloads
became
Attached File  Hiding.png   100.63K   445 downloads

A full set of possible hiding as follow
Since rev1600 (?) there is new format for hiding.
<key>GUI</key>
<dict>
  <key>Volumes</key>
  <dict>
   <key>Legacy</key>
   <string>First</string>
   <key>Hide</key>
   <array>
	<string>VOLUME_NAME</string>
	<string>VOLUME_UUID</string>
	<string>TODO_HIDE_VOLUME_BY_TYPE/GROUP</string>
   </array>
  </dict>
  <key>HideEntries</key>
  <dict>
   <key>OSXInstall</key>
   <true/>
   <key>Recovery</key>
   <true/>
   <key>Duplicate</key>
   <true/>
   <key>WindowsEFI</key>
   <false/>
   <key>Grub</key>
   <false/>
   <key>Gentoo</key>
   <false/>
   <key>Ubuntu</key>
   <false/>
   <key>OpticalUEFI</key>
   <true/>
   <key>InternalUEFI</key>
   <true/>
   <key>ExternalUEFI</key>
   <true/>
  </dict>
</dict>

Edited by ErmaC, Today, 02:14 PM.
Update


#13
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

DeviceProperties Injection


This is a private Apple protocol but well known initially from VBox sources and corrected by next testing. We created some DeviceProperties array (so called EFIString by, for example, EFIStudio) and permit to boot.efi use it.
But we see next requirement
In Chameleon, due to netkas efforts, there is a setting PCIRootUID=0 or 1 to make injection working. What is the number? It apperas to be _UID property of Device (PCI0). It is enough for Chameleon but EFI always use PCIRootUID=0 no matter if you see in DSDT
	   Device (PCI0)
		{
			Name (_HID, EisaId ("PNP0A03"))
			Name (_ADR, 0x00)
			Name (_UID, 0x01)
			Name (_BBN, 0x00)

We can set in config.plist PCIRootUID=1 in this case and this works at many configurations. But
as I see on screen boot.efi searches boot device at path Acpi(PNP0A08, 0) . It means always PCIRootUID=0 and always _HID=PNP0A08.
So we have to correct DSDT to
		Device (PCI0)
		{
			Name (_HID, EisaId ("PNP0A08"))
			Name (_CID, EisaId ("PNP0A03"))
			Name (_ADR, Zero)
			Name (_UID, Zero)
			Name (_BBN, Zero)

And then we have to set PCIRootUID=0  or just forget it because 0 is a default value.
This DSDT patch always performed by Clover so you just have to control that all is good.

Clover performs automatic DeviceProperties generation. You may set Yes on No to do that.
  <key>StringInjector</key>
  <string>No</string>

If NO then automatic generation.
if YES then your custom string will be used.
Consider automatic injection:
LAN injection - always ON
USB:  default YES
  <key>USBInjection</key>
  <string>Yes</string>

Graphics injection as said before. Default - yes.
  <key>GraphicsInjector</key>
  <string>Yes</string>

Sound injection. This is only the property "LayoutID". This injector will not make you working sound but help you to do that.
Instructions by dmazar
		// enabled by default
		// syntax:
		// - HDAInjection=No - disables injection
		// - HDAInjection=887 - injects layout-id 887 decimal (0x00000377)
		// - HDAInjection=0x377 - injects layout-id 887 decimal (0x00000377)
		// - HDAInjection=Detect - reads codec device id (eg. 0x0887)
		//   converts it to decimal 887 and injects this as layout-id.
		//   if hex device is cannot be converted to decimal, injects legacy value 12 decimal
		// - all other values are equal to HDAInjection=Detect


Now we can consider manual producing DeviceProperties array. You may use EFIStudio as an example but it is deprecated.
You may set Clover to automatically produce some strings and then look in it from DarwinDumper report.
You may took those strings convert them to plist,
gfxutil -i hex -o xml dp.hex dp.plist
edit the plist, for example you know your PinConfiguration
Attached File  Screen shot 2012-09-17 at 12.14.01.png   33.18K   734 downloads
Then convert the plist back to hex
gfxutil -i xml -o hex dp.plist new_dp.hex
And then copy this hex string into config.plist
  <key>StringInjector</key>
  <string>Yes</string>
  <key>DeviceProperties</key>
  <string>7a00000001000000010000006e0000000200000002010c00d041030a0000000001010600001b7fff040028000000500069006e0043006f006e00660069006700750072006100740069006f006e00730000000800000001080100180000006c00610079006f00750074002d00690064000000080000000c000000</string>

This way automatic patching will not be performed and your own string will be used.

Edited by Slice, 17 September 2012 - 08:20 AM.
Update


#14
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

Development


All instrunctions here are obsolete!
Spoiler

Attached Files


Edited by .: ErmaC :., 10 November 2012 - 01:23 AM.
Update


#15
Slice

Slice

    InsanelyMac Deity

  • Local Moderators
  • 1,817 posts
  • Gender:Male
  • Location:Moscow

Themes


The main studio for creating and discussion themes for the Clover is here
http://www.applelife...а-clover.36074/

Choosing a theme is provided by refit.conf file and there are samples to choose from

refit.conf-black_green
refit.conf-buttons
refit.conf-hellfire
refit.conf-metal
refit.conf-simple_gray
refit.conf-wooden
Just rename some of them to refit.conf that will be used by the GUI. This file is self documented so I will not explain what is what inside.

Overview

Wooden by iROOTa
Attached File  wooden.png   74.62K   394 downloads
Metal by Slice
Attached File  screenshot0.png   99.37K   526 downloads
Black-green by blackosx
Attached File  black-green.png   302.96K   508 downloads
Hellfire by lllevelll (this was the default theme for rev666 :) )
Attached File  hellfire.png   190.73K   511 downloads
BSOD by lllevelll
Attached File  BSOD_theme_2.jpg   70.71K   647 downloads
Simple-gray by hijeane
Attached File  simple_grey_91.png   34.75K   808 downloads
Aluminium by iROOTa
Attached File  Aluminium Theme.png   48.28K   652 downloads
Steampunk by Xmedik
Attached File  steam-punk.png   434.4K   390 downloads Attached File  pointer-steampunk.png   4.61K   341 downloads
Steampunk-2 by Neo.aka.Darkman - see attach.

Buttons by trauma
Attached File  buttons.png   234.25K   562 downloads
Dawn by Slice
Attached File  dawn.png   362.44K   523 downloads
OS One by Kyndder
Attached File  os_one.jpg   34.52K   504 downloads
Attached File  os_one.zip   89.26K   61 downloads
Attached File  pointer-os_one.zip   969bytes   41 downloads
OS BOX by Kyndder
Attached File  os_icon.jpg   44.12K   762 downloads
Attached File  os_box.zip   406.9K   76 downloads

mrengles Theme
Attached File  mrenglesTheme1.png   79.28K   1164 downloads
Attached File  mrenglesTheme.zip   662.06K   121 downloads

iClover by Winlog
Attached File  screenshot0.jpg   59.14K   1302 downloads
Attached File  iClover by winlog.zip   3.81MB   228 downloads
Galaxy by Winlog
Attached File  screenshot2.jpg   71.35K   781 downloads Attached File  screenshot4.jpg   70.78K   474 downloads
Attached File  Galaxy_shadows.zip   2.91MB   100 downloads

bluemac_theme by fau7i
Attached File  Jt.jpg   107.53K   712 downloads Attached File  Bluemac_Theme_CloverV2.zip   570.46K   149 downloads

AppleStyle by Eps
Attached File  Applelike.jpg   175.96K   762 downloads Attached File  AppleLike-2.jpg   165.75K   444 downloads
Attached File  AppleStyle.zip   911.81K   149 downloads

Orange theme by dwmc
Attached File  Orange_theme_screenshot.png   300.62K   235 downloads

#933   

ThinkPad theme by Kogen Mantis
Attached File  post-112035-0-29088900-1359462540_thumb.jpg   6.6K   247 downloads
Attached File  Clover-ThinkPad-Theme.zip   733.86K   49 downloads

Instruction for a future artist to create a new theme.
  • All graphics must be in png and icns format. Transparency supported. PNG may be created by system's Preview application.
    To create icns you have to use IconComposer.app provided with XCode. Attached File  Icon Composer.app.zip   408.5K   46 downloads
    You should copy/paste picture with transparency into 128 and 32 images. They may be different or may be the same.
  • First pixel from logo will be the color for the whole desktop (see "dawn").
  • Choose a font from existing or create your new font.
  • Choose a character spacing for the chosen font.
  • Create your own Selection_big.png and selection.small.png
  • Select a color for menu bar. It depends on your desktop color. selection_color 0xF376D300 This is standard WEB color coding RGBA. In this example Red=0xF3, Green=0x76, Blue=0xD3, Alfa=0.
  • Each menu element consist of Drive and OS icons.
    hidebadges none - as in Metal theme
    hidebadges swap - as in Black-green theme
    hidebadges drive - show OS only as in SimpleGray theme
    hidebadges all - show drives only, without cats, like BootCamp.
  • The theme must contain pointer.png 32x32pix with transparency. Active point is left-up corner so arrow should finish at this corner.
Full set of icons (except OS images)
{ NULL, L"icons\\func_about.png", 48 },
{ NULL, L"icons\\func_options.png", 48 }
{ NULL, L"icons\\func_clover.png", 48 },
{ NULL, L"icons\\func_reset.png", 48 },
{ NULL, L"icons\\func_shutdown.png", 48 },
{ NULL, L"icons\\func_help.png", 128 }, //5
{ NULL, L"icons\\tool_shell.png", 48 },
{ NULL, L"icons\\tool_part.png", 48 },
{ NULL, L"icons\\tool_rescue.png", 48 },
{ NULL, L"icons\\pointer.png", 32 },
{ NULL, L"icons\\vol_internal.icns", 128 },
{ NULL, L"icons\\vol_external.icns", 128 },
{ NULL, L"icons\\vol_optical.icns", 128 },
{ NULL, L"icons\\vol_firewire.icns", 128 }, //12
{ NULL, L"icons\\vol_clover.icns", 128 },
{ NULL, L"icons\\vol_internal_hfs.icns", 128 },
{ NULL, L"icons\\vol_internal_ntfs.icns", 128 },
{ NULL, L"icons\\vol_internal_ext3.icns", 128 },
{ NULL, L"icons\\vol_recovery.icns", 128 }, //17

Minimum set of OSes
os_clover.icns
os_cougar.icns
os_legacy.icns
os_leo.icns
os_linux.icns
os_lion.icns
os_mac.icns
os_snow.icns
os_tiger.icns
os_unknown.icns
os_vista.icns
os_win.icns

Attached Files


Edited by Slice, 01 February 2013 - 05:26 PM.
Update


#16
Slice

Slice

    InsanelyMac Deity

  • Local Moderators
  • 1,817 posts
  • Gender:Male
  • Location:Moscow

About kexts injection


©dmazar
When kext injection is working, then any caches should be ignored (kernelcache, Extensions.mkext) and boot.efi should load kernel and kexts separatelly - slower boot with lot of dots on a screen. Also, if any kexts are loaded, then they should be visible in system as they would normally be. For example, FakeSMC would write some line in kernel log and can be seen with kextstat | grep -i fake.
Plus, boot.log will have something like: FSInjection: OS=xx.x Injecting kexts from: &#39;xxxxx&#39; done!

If above is not happening, then this kext injection is not working.

A short info how this kext loading is working. Maybe it will help you to see what went wrong:
- FSInject.efi is loaded on startup from \efi\drivers - this is file system proxy driver that is just loaded initially. will get activated later if needed.
- volume selection screen is shown - you can mark the volume and press space to get boot options and then choose &quot;Boot Mac OS X with extra kexts (skips cache)&quot; (going into details to avoid confusion)
- this searches for appropriate folder where kexts could be located
--- EFI\OEM\xxx\kexts\xx.y (version speciffic) or
--- EFI\OEM\xxx\kexts\Other or
--- EFI\kexts\xx.y or
--- EFI\kexts\Other
- first one found is used, no metter if it is empty or not (possible mistake: if you are booting 10.8 and have kexts\10.8 which is empty and kexts\Other with FakeSMC, then kexts\10.8 will be used and no kexts will be added)
- if one is found, then FSInject.efi is activated - this replaces existing file system driver with our proxy implementation. this one is able to block OSX caches and inject drivers to /S/L/E.
- boot.efi is started - it can not load caches (blocked by FSInject), so it loads kernel and kexts from /S/L/E (FSInject will take care to report our extra kexts as being in /S/L/E)
- lot of dots should appear on screen during kext loading

So, this is what is required:
- FSInject.efi in \efi\drivers
- kexts in appropriate folder
Kexts will be loaded always if not set boot-args=NoKexts
If you want to boot without kernelcache you may write manually boot-args=NoCache

Edited by Slice, 20 April 2013 - 04:32 PM.
Update


#17
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

Instructions for P- and C-states generator


This method was initially developed by mojodojo in Chameleon and comes to Clover with some improvements.
  • Your DSDT must contain a Processor section like this
    	Scope (\_PR)
    	{
    		Processor (CPU0, 0x00, 0x00001010, 0x06) {}
    		Processor (CPU1, 0x01, 0x00001010, 0x06) {}
    	}
    
    
    Do not copy my sample! It is hardware dependent.
  • Write into config.plist
    <key>ACPI</key>
    <dict>
      <key>DropOemSSDT</key>
      <string>Yes</string>
      <key>GenerateCStates</key>
      <string>Yes</string>
      <key>GeneratePStates</key>
      <string>Yes</string>
    
    
    Generated P and C states will be as SSDT tables additional to existing so why you shuold drop OEM tables to not conflict with new one.
    But OEM tables may contain not only P and C section. For example I have three table and one of them is for SATA.
    So I extracted this table, name it as SSDT-8.aml and place into /EFI/acpi/patched - a place where we can load additional ACPI tables.
  • Generating P-states you may use additional settings
      <key>UnderVoltStep</key>
      <string>1</string>
    
    
    This is for Core2Duo and will not work for i3-i7.
    Undervoltage technology gives you more cool CPU. Reasonable values 0,1,2. If you overcool your CPU it may freeze. :cold:
    (I mean hangs...)


      <key>PLimitDict</key>
      <string>1</string>
    
    
    This value has the same sense as in PlatformPlugin.plist. This is limit to maximum P-state counting down from 0.
    That is 0 - no limit, 1 - maximum frequency will be limited by one step before maximum. 2 - two steps before maximum...
    This is a story.
    I have notebook Dell Inspiron 1525 with Core2Duo @2400MHz. It is too high for notebook! When I write this text I usually have 600MHz
    Attached File  Screen shot 2012-09-18 at 10.19.45.png   39.79K   114 downloads
    But when I play a game my CPU go to maximum speed and the temperature becomes increasing. After 10 minutes it overrun 100C and the computers switched off. :| because of overheating control.
    So I set PLimitDict=2 and now I never have CPU speed larger then 2000. PStates with 2200 and 2400 is prohibited.
    Now I can play the game infinitely long without overheating.

    NOTE! I encounter strange thing that Core2Quad works faster if PLimitDict=1. I can't explain this. So test different settings.

  • Generating C-states.
      <key>EnableC6</key>
      <string>No</string>
      <key>EnableC4</key>
      <string>No</string>
      <key>EnableC2</key>
      <string>Yes</string>
      <key>EnableISS</key>
      <string>Yes</string>
    
    
This technology is not proved to be fine. The settings above looks to be the best.

Edited by .: ErmaC :., 18 September 2012 - 11:33 AM.
Update


#18
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

Patching DSDT to get Sleep working


Performed automatically if you set some non-zero mask. Yes, the mask will be applied also on your loaded custom DSDT.

As fas as I know the DSDT collection by tony is far from perfect.

But there is another question "How to correct PlatformPlugin to get Sleep and Speedstep working".

This is not related to Clover but I have to tell about to avoid questions "Why my sleep/restart/shutdown/speedstep is not working?"


When you choose how your hackintosh will be named, for example, MacBook4,1, then you may look a predefined setting for this model in the system

/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/MacBook4_1.plist

And you have what to do with this plist. See red text - a text to insert or correct.



  •   <key>ConfigArray</key>
      <array>
    <dict>
      <key>WWEN</key>
      <true/>
      <key>model</key>
      <string>MacBook4,1</string>
      <key>restart-action</key>
      <dict>
    <key>cpu-p-state</key>
    <integer>0</integer>
      </dict>
    </dict>
      </array>


    This setting will be useful for Sleep, Restart and Shutdown. Check you have problems with one of them.  

  •   <key>CtrlLoopArray</key>
      <array>
    <dict>
      <key>Description</key>
      <string>SMC_CPU_Control_Loop</string>

      <key>PLimitDict</key>
      <dict>
    <key>MacBook4,1</key>
    <integer>0</integer>
      </dict>

    This is the PLimitDict that we already consider when generating P-state. You should check if it is present else you will not SpeedStep and will not have sleep working.


  •   <key>CStateDict</key>
    <dict>
    <key>MacBook4,1</key>
    <string>CSD3</string>
    <key>CSD3</key>
    <dict>
    <key>C6</key>
    <dict>
    <key>enable</key>
    <true/>
    Remove this section at all!
    Having this section I see CPU always at maximum frequency.


  •   <key>StepDataDict</key>
      <dict>
    <key>MacPro3,1</key>
    <string>SP1</string>
    <key>SP1</key>
    <data>
    qAYAAAAAAAEAAgQAACEAAAACAAAB//8A/wD/AP8A/wD/AAYAAP8BAAP/A...   

This influence on how many steps will be in work.
See thread by flAked with all results. MSRDumper
For example I successfully insert this data from MacPro3,1 to plist for iMac12,1 and got better result.

Edited by .: ErmaC :., 18 September 2012 - 11:37 AM.
Update


#19
Slice

Slice

    InsanelyMac Deity

  • Local Moderators
  • 1,817 posts
  • Gender:Male
  • Location:Moscow

CPU settings and geekbench


No magics. Geekbench measures real CPU speed multiply by core count. Be sure your speedstep setting permit your CPU goes with higher  speed, or may be with turbo.
The follow set of parameters
<key>CPU</key>
<dict>
  <key>Turbo</key>
  <string>No</string>
  <key>ProcessorType</key>
  <string>0x0201</string>
  <key>CpuFrequencyMHz</key>
  <string>3200</string>
  <key>BusSpeedkHz</key>
  <string>133330</string>
  <key>QPI</key>
  <string>4800</string>
</dict>


Turbo = Yes if you CPU is supporting such technology which is not always true. See, for example
http://ark.intel.com...-Cache-3_30-GHz
Attached File  no_turbo.png   38.97K   1240 downloads

ProcessorType = 0x0201 This value correspond to Yonah CPU. Do not set this key until something new will be found! Clover knows all CPU from Celeron M up to IvyBridge and can set this value automatically!

CpuFrequencyMHz = 3200 This value may be used if you don't know your BusSpeed. But this method is not preferable.

BusSpeedkHz = 133330 This value must be in the range 90 - 400MHz. Some manufacture like to write into DMI the value x4, for example at some ASUS motherboard I saw 1600MHz. This is wrong.
Common rule is follow
CPUspeed = BusSpeed * Multiplier
DMI contains a value in MHz that is not exact. A better value may be written in kHz.
My examples:
133MHz -> 133330kHz
100MHz -> 99790kHz
The system will run smoother and the system clock will be more accurate.

QPI = 4800  This value appears to be in SystemProfiler as Bus Speed or Processor Bus Speed oe Something else in the future system. It is mirage for Apple. Let it be. Write some value here at your will. It is cosmetic and will not influence on somewhat.
Attached File  ProcessorSpeed.png   42.94K   1262 downloads


Edited by .: ErmaC :., 18 September 2012 - 10:11 AM.
Update


#20
ErmaC

ErmaC

    127.0.0.1

  • Supervisors
  • 4,202 posts
  • Gender:Male
  • Location:Canary Islands

ACPI tables loading

Rules are follow
  • Look into your boot.log to find an OEM name of your computer
    In my case
    running on Inspiron 1525... with board 0U990C
    
    So I can use names "Inspiron 1525" or "0U990C".
  • All ACPI tables may be placed in the follow places
    /EFI/acpi/patched - common place
    /EFI/OEM/0U990C/acpi/patched - high priority. If the place exists then will not search in common place.
  • DSDT.aml may be placed at the root of booted partition. So different OSes may have different DSDT.
  • A full set of possible ACPI tables that can be loaded (with current revision 676)
    CHAR16* ACPInames[NUM_TABLES] = {
    L"SSDT.aml",
    L"SSDT-0.aml",
    L"SSDT-1.aml",
    L"SSDT-2.aml",
    L"SSDT-3.aml",
    L"SSDT-4.aml",
    L"SSDT-5.aml",
    L"SSDT-6.aml",
    L"SSDT-7.aml",
    L"SSDT-8.aml",
    L"SSDT-9.aml",
    L"APIC.aml",
    L"BOOT.aml",
    L"ECDT.aml",
    L"HPET.aml",
    L"MCFG.aml",
    L"SLIC.aml",
    L"SLIT.aml",
    L"SRAT.aml",
    L"UEFI.aml"
    };
    
  • Loading new ACPI table you probably want also to drop OEM table.
     DropOemSSDT Yes
     DropAPIC No
     DropDMAR Yes
     DropMCFG No
     DropHPET No
     DropECDT No
    
  • DropDMAR=Yes is a key to resolve the problem with VT-d panics.

Edited by .: ErmaC :., 23 November 2012 - 05:52 PM.
Update






Also tagged with one or more of these keywords: Bootloader, EFI, Clover

  Topic Stats Last Post Info

11 user(s) are reading this topic

2 members, 9 guests, 0 anonymous users


© 2013 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   Web hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy