Jump to content
ErmaC

Clover v.2 Instructions

54 posts in this topic

Recommended Posts

Advertisement

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.* tool chain. ( I will always use latest version ) :wink_anim:

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
Update

Share this post


Link to post
Share on other sites

DOWNLOADS


Installer
Screen Shot 2012-11-24 at 9.55.18.png
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/


CD ISO bootable with Clover


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


Utility to install Clover from Windows http://cvad-mac.narod.ru/bootdiskutilityexe/

Additional foreign file system drivers for EFI.
FS drivers.zip

Manuals:
Russian language offline manual:

Клевер цвета хаки 3262.pdf

English and Spanish see here http://clover-wiki.zetam.org/


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

 

For some old UEFI BIOSes you need LegacyRegion  driver that absent in regular Clover package

Take it here

LegacyRegion2Dxe.efi-IA32.zip

LegacyRegion2Dxe.efi-X64.zip

Edited by Slice
Update

Share this post


Link to post
Share on other sites

INSTALLATION

 

Using the installer

Start installer. Press "Continue" and "OK' as many times as needed.

Choose a partition to install

Screen Shot 2012-09-15 at 11.51.36.png

Customize what to install

Screen Shot 2012-09-15 at 11.53.47.png

Choose themes. Default one is black-green by blackosx.

Screen Shot 2012-09-15 at 11.54.57.png

C l8r themes preview.

 

Manual Installation

 

					Installation ( Use fdisk440 instead of fdisk )
					==============================================
Install fdisk440 first :
------------------------
 sudo cp fdisk440 /usr/sbin/fdisk440
fdisk440 - The Chameleon team modded the Apple's fdisk to only update the first 440 bytes in the MBR by adjusting MBR_CODE_SIZE to 0x1B8. The modded fdisk was renamed fdisk440 by Tamás Kosárszky on 2010-02-19 to avoid confusion between Apple's fdisk and the Chameleon fdisk.
This utility resolves Windows sleep problem.
Chameleon modded sources with explanations is here
http://forge.voodooprojects.org/p/chameleonApplications/source/tree/HEAD/trunk/fdisk.tproj
Files Install :
--------------------
- Install clover to the partition's root directory:
cp BOOT /
cp -r EFI /
sudo cp -v etc/* /etc/

Active partition installation
-----------------------------
Suppose that your partition is on /dev/disk0s2 HFS+

- Install boot0 to the MBR:
 sudo fdisk440 -f boot0 -u -y /dev/rdisk0

- Install boot1h2 to the partition's bootsector:
sudo dd if=boot1h2 of=/dev/rdisk0s2
Attention! My boot1h2 differs from Chameleon's one and will works with both Clover and Chameleon. [b]You can't use Chameleon's boot1h with Clover-64.[/b]
Use boot1h2 to boot a bootloaders boot1, boot2, boot3...
Note: dd can't change boot sector of the system partition. You should start from other partition
EFI Partition Install (FAT32) or to USB stick drive (disk1s1).
---------------------------------

Suppose that your installation is on /dev/disk0s1

- Prepare EFI partition:
sudo mkdir /Volumes/EFI
sudo mount_msdos /dev/disk0s1 /Volumes/EFI/
- Install clover to the EFI partition's root directory:
cp boot /Volumes/EFI/
sudo umount -f /Volumes/EFI/

- Install boot0 to the MBR:
 sudo fdisk440 -f boot0 -u -y /dev/rdisk0

- Install boot1f32alt to the partition's bootsector:

sudo fdisk440 -f boot0 -u -y /dev/rdisk0
dd if=/dev/rdisk0s1 count=1 bs=512 of=origbs
cp boot1f32alt newbs
dd if=origbs of=newbs skip=3 seek=3 bs=1 count=87 conv=notrunc
dd if=newbs of=/dev/rdisk0s1 count=1 bs=512
cp BOOT /Volumes/EFI/
Enter fdisk and set EFI partitoin as active partition.
fdisk -e /dev/rdisk0
>f 1
>w
>q
USB stick installation
-----------------------
Do not reformat factory formatted stick!
sudo fdisk440 -f boot0 -u -y /dev/rdisk1
dd if=/dev/rdisk1s1 count=1 bs=512 of=origbs
cp boot1f32alt newbs
dd if=origbs of=newbs skip=3 seek=3 bs=1 count=87 conv=notrunc
dd if=newbs of=/dev/rdisk1s1 count=1 bs=512
cp BOOT /Volumes/Kingston/
cp -r EFI /Volumes/Kingston/

 

 

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
Update

Share this post


Link to post
Share on other sites

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/CLOVER/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
Update

Share this post


Link to post
Share on other sites

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:
Legacy BIOS: BIOS->MBR->PBR->boot->CLOVERX64.EFI-> ... system, namely boot.efi->mach_kernel->Login
UEFI BIOS: UEFI->CLOVERX64.EFI-> ... system

The file CLOVERX64.EFI located at /Volumes/YourHDD/EFI/CLOVER/ is a graphical menu to choose a system to boot (CloverGUI).
MainMenu.png
As you see there is a help calling by F1 key.
Help.png
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, de, id, fr, ua, pl.
There is no your language? Took "TextsToTranslate 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
Options.png CPU.png Graphics.png Kexts.png

Now you can boot a system. Just press "Enter". Or you may press 'Space" and choose other method to boot
Details.png

Edited by Slice
Update

Share this post


Link to post
Share on other sites

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/CLOVER/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.

Order of searching is follow

1. Look for /booted_partition/DSDT.aml if not found then

2. Look for /clover_partition/EFI/CLOVER/OEM/your_motherboard_name/ACPI/patched/DSDT.aml, if not found then

3. Look for /clover_partition/EFI/CLOVER/ACPI/patched/DSDT.aml if not found then

4. Took OEM DSDT from BIOS of the computer.

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>DSDT</key>
		<dict>
			<key>Name</key>
			<string>DSDT.aml</string>
			<key>Fixes</key>
			<dict>
				<key>AddDTGP_0001</key>
				<true/>
				<key>AddMCHC_0008</key>
				<false/>
				<key>FakeLPC_0020</key>
				<false/>
				<key>FixAirport_4000</key>
				<true/>
				<key>FixDarwin_0002</key>
				<false/>
				<key>FixDisplay_0100</key>
				<true/>
				<key>FixFirewire_0800</key>
				<true/>
				<key>FixHDA_8000</key>
				<true/>
				<key>FixHPET_0010</key>
				<true/>
				<key>FixIDE_0200</key>
				<false/>
				<key>FixIPIC_0040</key>
				<true/>
				<key>FixLAN_2000</key>
				<true/>
				<key>FixSATA_0400</key>
				<false/>
				<key>FixSBUS_0080</key>
				<true/>
				<key>FixShutdown_0004</key>
				<true/>
				<key>FixUSB_1000</key>
				<true/>
				<key>NewWay_80000000</key>
				<true/>
				<key>FIX_RTC_20000</key>
				<true/>
				<key>FIX_TMR_40000</key>
				<true/>
				<key>AddIMEI_80000</key>
				<true/>
				<key>FIX_INTELGFX_100000</key>
				<false/>
				<key>FIX_WAK_200000</key>
				<true/>
				<key>DeleteUnused_400000</key>
				<true/>
				<key>FIX_ADP1_800000</key>
				<true/>
				<key>AddPNLF_1000000</key>
				<true/>
				<key>FIX_S3D_2000000</key>
				<true/>
				<key>FIX_ACST_4000000</key>
				<true/>
				<key>AddHDMI_8000000</key>
				<true/>
				<key>FixRegions_10000000</key>
				<true/>
			</dict>
		</dict>
 

To calculate them it is better to use an application by Cvad


If you want to see a result of patches then you can set

	<key>ACPI</key>
	<dict>
		<key>DSDT</key>
		<dict>
			<key>Debug</key>
			<true/>

Then you will found in /EFI/CLOVER/ACPI/origin the follow files

DSDT-or.aml - original DSDT.aml, before any patches;

DSDT-pa0.aml - patched DSDT.aml, first attempt. It will created immediately before system start even if the system panics.

DSDT-pa1.aml and next numbers until you can start system. Last file will be the best.

 

The patch will be applied even for custom DSDT and all loaded SSDT.

In some cases your DSDT already contains some Method(_DSM...). In this case you have to choose if you want to remain old _DSM  (you are sure it is good), or you want to drop OEM _DSM because it is for Windows and doesn't work in OSX. 

Choose

			<key>DropOEM_DSM</key>
			<dict>
				<key>ATI</key>
				<true/>
				<key>Firewire</key>
				<true/>
				<key>HDA</key>
				<true/>
				<key>HDMI</key>
				<true/>
				<key>IDE</key>
				<true/>
				<key>IntelGFX</key>
				<true/>
				<key>LAN</key>
				<true/>
				<key>LPC</key>
				<false/>
				<key>NVidia</key>
				<true/>
				<key>SATA</key>
				<true/>
				<key>SmBUS</key>
				<false/>
				<key>USB</key>
				<true/>
				<key>WIFI</key>
				<true/>
			</dict>

You may also make your custom binary patches for DSDT. Examples

			<key>Patches</key>
			<array>
				<dict>
					<key>Comment</key>
					<string>Remove battery device from desktop</string>
					<key>Find</key>
					<data>W4IeQkFUMQhfSElEDEHQDAoIX1VJRAEUCF9TVEEApAA=</data>
					<key>Replace</key>
					<data></data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>Add _SUN property for GIGE</string>
					<key>Find</key>
					<data>UFhTWAhfQURSAAhfUFJXEgYC</data>
					<key>Replace</key>
					<data>UFhTWAhfQURSAAhfU1VOCgQIX1BSVxIGAg==</data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>Rename GFX0 to IGPU</string>
					<key>Find</key>
					<data>R0ZYMA==</data>
					<key>Replace</key>
					<data>SUdQVQ==</data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>Rename HDEF to AZAL</string>
					<key>Find</key>
					<data>SERFRg==</data>
					<key>Replace</key>
					<data>QVpBTA==</data>
				</dict>
			</array>

Length Find and Replace may be different

 

And one more problem with DSDT patching.

If you set FixDisplay=true it will create display device with real address.

But in some cases there is similar device with address 0xFFFF. The is a conflict.

As we found there are no common rules what to do so there is a setting

			<key>ReuseFFFF</key>
			<false/>

Set True or False and see a result. I can't know what is better for you.

DsdtFix.png

Edited by Slice
Update

Share this post


Link to post
Share on other sites

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>Inject</key>
		<dict>
			<key>ATI</key>
			<false/>
			<key>Intel</key>
			<true/>
			<key>NVidia</key>
			<false/>
		</dict>
 

But one note. Some notebooks (like 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 - "FixDisplay".

NewWay you should set FIX_INTELGFX_100000
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>Inject</key>
		<dict>
			<key>ATI</key>
			<false/>
			<key>Intel</key>
			<false/>
			<key>NVidia</key>
			<true/>
		</dict>
		<key>NVCAP</key>
		<string>04000000000003000C0000000000000A00000000</string>
		<key>display-cfg</key>
		<string>03010300FFFF0001</string>
		<key>VideoPorts</key>
		<integer>2</integer>
 

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

New NVidia cards named Kepler don't needed in Inject. They works without it.

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>Inject</key>
		<dict>
			<key>ATI</key>
			<true/>
			<key>Intel</key>
			<false/>
			<key>NVidia</key>
			<false/>
		</dict>
		<key>DualLink</key>
		<integer>0</integer>
		<key>FBName</key>
		<string>Ipomoea</string>
		<key>InjectEDID</key>
		<true/>
		<key>LoadVBios</key>
		<true/>

And then I do connectors patch for the "Ipomoea" framebuffer.

	<key>KernelAndKextPatches</key>
	<dict>
		<key>ATIConnectorsController</key>
		<string>6000</string>
		<key>ATIConnectorsData</key>
		<string>000400000403000000010000210302040400000014020000000100000000040310000000100000000001000000000001</string>
		<key>ATIConnectorsPatch</key>
		<string>040000001402000000010000000004040004000004030000000100001102010500000000000000000000000000000000</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
Update

Share this post


Link to post
Share on other sites

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.

New one ati-personality.pl.0.11.zip

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
Screen Shot 2012-09-16 at 15.37.12.png
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

IOPCIMatch
0x68981002 0x68991002 0x68E01002 0x68E11002 0x68D81002 0x68C01002 0x68C11002 0x68D91002 0x68B21002 0x68B81002 0x68B01002 0x68B11002 0x68A01002 0x68A11002

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

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>040000000403000000010000120401061000000010000000000100000000000100080000040200000001000011020403</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>Inject</key>
		<dict>
			<key>ATI</key>
			<true/>
		</dict>
		<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 00 06
0000010 10 00 00 00 10 00 00 00 00 01 00 00 00 00 01 01
0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 02 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)

Now hackers says that HotPlugID must be in numeric order 00, 01, 02 ...  (blue digits)

Edited by Slice
Update

Share this post


Link to post
Share on other sites

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

______________2012_09_08___20.20.59.png

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>
<array>
<dict>
<key>Name</key>
<string>VoodooHDA</string>
<key>Find</key>
<data>SGVhZHBob25lcwA=</data>
<key>Replace</key>
<data>VGVsZXBob25lcwA=</data>
</dict>
</array>

 

Reboot and have the result

______________2012_09_08___20.28.41.png

 

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

<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
New format for rev1717+

Share this post


Link to post
Share on other sites

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.

Screen_shot_2012_09_12_at_14.01.07.png

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)

Screen Shot 2012-09-16 at 20.25.39.png

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
Update

Share this post


Link to post
Share on other sites

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
MainMenu.png
became
Hiding.png

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 buoo
Update

Share this post


Link to post
Share on other sites

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
Screen shot 2012-09-17 at 12.14.01.png
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.

GraphicInject has new syntax since Clover rev 2000+

		<key>Inject</key>
		<dict>
			<key>ATI</key>
			<true/>
			<key>Intel</key>
			<false/>
			<key>NVidia</key>
			<false/>
		</dict>

There are separate settings for different vendors.

Edited by Slice
Update

Share this post


Link to post
Share on other sites

Development

 

You may use GloverGrover or CloverGroverPro. Here is instructions for manual development.

 

EDITED 26.08.2015: edk2 revisions go to undefined direction. We want to use revision 18198. Else you may exclude "-r 19198" if you know how to overcome incompatibilities.

cd ~
mkdir src
cd src
svn co -r 18198 https://svn.code.sf.net/p/edk2/code/trunk/edk2 edk2
cd edk2
svn co svn://svn.code.sf.net/p/cloverefiboot/code/ Clover
make -C BaseTools/Source/C
cd Clover
./buildgettext.sh
./buildgcc-4.9.sh 
./buildnasm.sh 
cd .. 
./edksetup.sh 
cp -R Clover/Patches_for_EDK2/* ./
./ebuild.sh 
./ebuild.sh -mc
./ebuild.sh -ia32

One note. In svn repository there are no files HFSPlus.efi because of licensing. Took them here from download section.
Or you may use opensource VBoxHFS.efi.
To use Apple's driver you may correct Clover.fdf from

      # foreign file system support
INF  Clover/VBoxFsDxe/VBoxHfs.inf
#INF  RuleOverride=BINARY Clover/HFSPlus/HFSPlus.inf

to

       # foreign file system support
#INF  Clover/VBoxFsDxe/VBoxHfs.inf
INF  RuleOverride=BINARY Clover/HFSPlus/HFSPlus.inf

Making package and CD image

cd ~/src/edk2/Clover/CloverPackage/
./makepkg
./makeiso 

mtoc.NEW.zip

Edited by Slice
Update for rev 3000+

Share this post


Link to post
Share on other sites

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: 'xxxxx' 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 "Boot Mac OS X with extra kexts (skips cache)" (going into details to avoid confusion)
- this searches for appropriate folder where kexts could be located
--- EFI/CLOVER/OEM/xxx/kexts/xx.y (version speciffic) or
--- EFI/CLOVER/OEM/xxx/kexts/Other or
--- EFI/CLOVER/kexts/xx.y or
--- EFI/CLOVER/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/CLOVER/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

 

There is a submenu in Details menu

- boot without cache

- boot without kexts

- boot without cache and kexts

By default all extra kexts loaded if there is no FakeSMC in the kernelcache, usual for installation.

Else we propose all kexts are in kernelcache.

Do this by

	<key>SystemParameters</key>
	<dict>
		<key>InjectKexts</key>
		<string>Detect</string>

This is default value. Other possible value "Yes" to load kexts always.

You can also may always ignore cache "NoCaches"="Yes". But this is wrong idea.

 

Kext injection in ElCapitan will work since rev 3259.

Edited by Slice
Update

Share this post


Link to post
Share on other sites

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>SSDT</key>
    		<dict>
    			<key>Generate</key>
    			<dict>
    				<key>CStates</key>
    				<true/>
    				<key>PStates</key>
    				<true/>
    			</dict>
    
    
  • Generated P and C states will be as SSDT tables additional to existing so why you should drop OEM tables to not conflict with new one. It will be better to drop some tables
    		<key>DropTables</key>
    		<array>
    			<dict>
    				<key>Signature</key>
    				<string>DMAR</string>
    			</dict>
    			<dict>
    				<key>Signature</key>
    				<string>SSDT</string>
    				<key>TableId</key>
    				<string>CpuPm</string>
    			</dict>
    			<dict>
    				<key>Length</key>
    				<integer>720</integer>
    				<key>Signature</key>
    				<string>SSDT</string>
    			</dict>
    		</array>
    
    
    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/CLOVER/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
    Screen shot 2012-09-18 at 10.19.45.png
    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. :surprised: 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>UseSystemIO</key>
    			<false/>
    			<key>EnableC7</key>
    			<false/>
    			<key>EnableC6</key>
    			<true/>
    			<key>EnableC4</key>
    			<false/>
    			<key>EnableC2</key>
    			<false/>
    			<key>C3Latency</key>
    			<string>0x03E7</string>
    
    This technology is not proved to be fine. The settings above looks to be the best.
Edited by Slice
Update

Share this post


Link to post
Share on other sites

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.


  1.  
    ConfigArray



    WWEN


    model

    MacBook4,1

    restart-action


    cpu-p-state

    0




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

  2. CtrlLoopArray


    Description
    SMC_CPU_Control_Loop

    PLimitDict

    MacBook4,1
    0

     
    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.
     

  3. CStateDict

    MacBook4,1
    CSD3
    CSD3

    C6

    enable

    Remove this section at all!
    Having this section I see CPU always at maximum frequency.
     

  4. StepDataDict

    MacPro3,1
    SP1
    SP1

    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 :.
Update

Share this post


Link to post
Share on other sites

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.

GeekBenchScore = MaxCpuFrequency * CoreCount + RamFrequency/2 * RamChannels;

CoreCount = {2 for i3}, {3 for i5}, {4 for i7}

RamChannels = 2 if you place similar DIMMs into same colors slots. Else 1 channel.

I also saw a system with 3 channels memory.

Example: i3-2120@3.3GHz, 2channels RAM@1333MHz

GeekBench = 3300 * 2 + 1333/2 * 2 = 7933

The follow set of parameters

	<key>CPU</key>
	<dict>
		<key>BusSpeedkHz</key>
		<integer>133330</integer>
		<key>QPI</key>
		<integer>4800</integer>
		<key>Type</key>
		<string>0x0201</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
no_turbo.png
Turbo property can't be changed. It may present or not. See boot.log

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

CpuFrequencyMHz = 3200 This value will be used in System Profiler and About window. No more.

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 or 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.
ProcessorSpeed.png
 

Edited by Slice
Update

Share this post


Link to post
Share on other sites

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/CLOVER/acpi/patched - common place
    /EFI/CLOVER/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"
    };
    Since rev3000+ there is no more such list.
    You have to choice:
    - or all *aml files will be loaded from the /patched folder except dsdt*.aml files. Loading order is not guaranted
    - or you have to write into config.plist your own list what to load
    	<key>ACPI</key>
    	<dict>
    		<key>SortedOrder</key>
    		<array>
    			<string>SSDT-2.aml</string>
    			<string>SSDT-1.aml</string>
    			<string>SSDT-5.aml</string>
    			<string>SSDT-6.aml</string>
    		</array>
    	</dict>
    
    
     
    In this case only these tables will be loaded.
  • Loading new ACPI table you probably want also to drop OEM tables.
    		<key>DropTables</key>
    		<array>
    			<dict>
    				<key>Signature</key>
    				<string>DMAR</string>
    			</dict>
    			<dict>
    				<key>Signature</key>
    				<string>SSDT</string>
    				<key>TableId</key>
    				<string>CpuPm</string>
    			</dict>
    			<dict>
    				<key>Length</key>
    				<integer>720</integer>
    				<key>Signature</key>
    				<string>SSDT</string>
    			</dict>
    		</array>
    
    
     
     
  • DropDMAR=Yes is a key to resolve the problem with VT-d panics.
Edited by Slice
Update for rev 3000+

Share this post


Link to post
Share on other sites

DSDTmini

 

This is universal DSDT for any Intel-based computer... Not working for now.

As we have good autopatch OEM DSDT this technology is no more needed to be developed.

Edited by ErmaC
Update

Share this post


Link to post
Share on other sites

Custom SMBios


SMBIOS part of config.plist may be as follow

	<key>SMBIOS</key>
	<dict>
		<key>ProductName</key>
		<string>MacBook1,1</string>
		<key>SerialNumber</key>
		<string>4H629LYAU9C</string>
	</dict>

Moreover, these keys may be absent too.
Clover automatically detect the hardware and chooses the best values for SMBIOS by internal tables. It is enough.
It is quite enough for all hardware configurations. You may apply your own settings in the case if you want to test how the OS will live with other settings or may be you want to set your unique serial number. OK, do this!
But do not strive to fill all fields of the section if you don't understand what is what!

How port from Chameleon Smbios.plist to Clover config.plist

To be filled ....
Example n.1

From smbios.plist (Chameleon)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SMbiosdate</key>
<string>08/03/10</string>
<key>SMbiosvendor</key>
<string>Apple Inc.</string>
<key>SMbiosversion</key>
<string>MP31.88Z.006C.B05.0903051113</string>
<key>SMboardproduct</key>
<string>Mac-F2268DC8</string>
<key>SMfamily</key>
<string>MacPro</string>
<key>SMmanufacturer</key>
<string>Apple Inc.</string>
<key>SMproductname</key>
<string>MacPro3,1</string>
<key>SMserial</key>
<string>ElEvEnChArS</string>
<key>SMsystemversion</key>
<string>1.3</string>
</dict>
</plist>

to confing.plist (Clover)
....
<key>SMBIOS</key>
<dict>
<key>BiosVendor</key>
<string>Apple Inc.</string>
<key>BiosVersion</key>
<string>MP31.88Z.006C.B05.0802291410</string>
<key>BiosReleaseDate</key>
<string>08/03/10</string>
<key>Manufacturer</key>
<string>Apple Inc.</string>
<key>ProductName</key>
<string>MacPro3,1</string>
<key>Version</key>
<string>1.3</string>
<key>Family</key>
<string>MacPro</string>
<key>SerialNumber</key>
<string>ElEvEnChArS</string>
<key>SmUUID</key>
<string>00000000-0000-X000-X000-XXXXXXXXXXXX</string>
<key>BoardManufacturer</key>
<string>Apple Inc.</string>
<key>BoardSerialNumber</key>
<string>C02032101R5DC771H</string>
<key>Board-ID</key>
<string>Mac-F42C88C8</string>
<key>BoardVersion</key>
<string>Proto1</string>
<key>Mobile</key>
<string>No</string>
<key>LocationInChassis</key>
<string>Part Component</string>
<key>ChassisManufacturer</key>
<string>Apple Inc.</string>
<key>ChassisAssetTag</key>
<string>P6TDeluxeV1</string>
<key>FirmwareFeatures</key>
<string>0xX000XXXX</string>
</dict>
....

Edited by Slice
Update

Share this post


Link to post
Share on other sites

Clover F.A.Q.

 

To be filled during discussion and testing. So... begin?

  • - Question.
    - Answer.
  • - Question.
    - Answer
  • - Question.
    - Answer

 

Guys ... keep in mind that Slice (and all help him) make an extraordinary effort in an attempt to documenting the project.

 

Who asks for a Clover F.A.Q. section.

This post is currently a work in progress :moil:.... so

 

I invite anyone to write simple questions and answers that we can include in the Clover F.A.Q. post.

Edited by ErmaC
Update

Share this post


Link to post
Share on other sites

iCloudFix

 

© dmazar

Thanks to pene and slice for research and pointing into right direction, we have some kind of a workaround for iCloud sign-in problem.

 

And then ... it gets a little bit complicated. By blocking parts of those runtime services, we are also blocking Clover's injection of platform UUID through runtime services. Fortunately, we can still inject it like Chameleon and XPC, through device tree. But this requires changes in config.plist:

Instead of just specifying CustomUUID:

<key>SystemParameters</key>
<dict>
<key>CustomUUID</key>
<string>739EBE45-0D8C-5BFC-9AD1-6C5EF6E973A4</string>
...
</dict>

 

I need to specify:

 

<key>SystemParameters</key>
<dict>
<key>InjectSystemID</key>
<string>Yes</string>
<key>CustomUUID</key>
<string>5AA3001E-8C00-0042-41B2-F42804929E8A</string>
...
</dict>

 

Where:

739EBE45-0D8C-5BFC-9AD1-6C5EF6E973A4 - is my Hardware UUID displayed in System Information/Hardware Overview screen

5AA3001E-8C00-0042-41B2-F42804929E8A - is system-id that Chameleon injects to get above Hardware UUID

 

This Chameleon's system-id can be found by booting with Chameleon and then checking IOReg IODeviceTree:/efi/platform or just from Terminal:

> ioreg -l -p IODeviceTree | grep \"system-id

 

Hope it's not too complicated.

 

Also be sure your Ethernet card is set to built-in.

Edited by Slice
Update

Share this post


Link to post
Share on other sites

Using MOUSE


Since revision 750 there is mouse interface in Clover GUI.
In case of legacy boot (by boot0->boot1->boot) you may put a driver into the folder /EFI/CLOVER/drivers32 or /EFI/CLOVERdrivers64
PS2MouseDxe.efi
USBMouseDxe.efi
or even both of them.
No conflict expected. Moreover, you can move pointer by two mouse simultaneously.

Usually it is not needed. The driver included by default.
In case of UEFI boot you usually don't need in additional driver. It is already present in UEFI BIOS.

You must add into config.plist new values (new section)

	<key>GUI</key>
	<dict>
		<key>Mouse</key>
		<dict>
			<key>DoubleClick</key>
			<integer>500</integer>
			<key>Enabled</key>
			<true/>
			<key>Mirror</key>
			<false/>
			<key>Speed</key>
			<integer>8</integer>
		</dict>

This values are typical and are good for most hardware. You may tune for your convenience for your values.

Your theme folder must contain an image for the pointer icons/pointer.png
Installer already contains images for all themes included.

How to use? I think there will be no problem: move, click, double-click, right-click in all menus and out of items.

Edited by Slice
Update

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By cvad
      Small tool to download, compile and build the latest Clover X64 package,
      possible include HFSPlus-64.efi.
       
       
       

      The script inside is editable.

       
      Enjoy...
       
      Many thanks to the comrade SunKi for help with creating the script.
       
       
       
       
       
      Best thanks - click "Rate File".
    • By gengik84
      Ciro82==>>Thanks
      Uno dei tre Requisiti:
      Hack funzionante Mac vero Macchina virtuale Impostazioni Bios per il boot:
      Cercate una voce  del tipo “Sata Mode”e settatela  in AHCI
      Secure Boot: disabilitare o altri sistemi operativi
      CSM: UEFI o LEGACY, oppure a secondo del tipo di installazione
      VT-x / VT-d disable
      *Nota: Secure boot e csm valido solo per bios UEFI
      Materiale Occorrente 
      "OS X (Versione App.Store)”
      USB 8GB  *nota: nel caso di usb superiori dovrà essere partizionata, in modo da avere una partizione su cui "lavoreremo,di questa dimensione
      ShowAllfiles 
      kext Wizard 
      Bootloader Clover_2.3k_r xxx:                   http: //sourceforge.n.../cloverefiboot/
      Clover Configurator:                                    http: //mackie100proj...a.org/download/
      FakeSmc.kext:                                            https://github.com/kozlek/HWSensors/releases
      In allegato,a fondo pagina troverete un "pacchetto" contenente : ShowAllfiles, Kext Wizard, FakeSmc.kext: 
      App alternative:
      ESP Mounter Pro: per montare la partizione EFI
      Vi illustrerò tre metodi per creare la usb, ma sono ben distinti… quindi usatene soltanto uno
      Metodo 1: “Install Mac_OS_X.command” Metodo 2: “Create Install Media di Apple” Metodo 3:  Metodo Manuale Alla fine delle preparazione dell’installer, tutti i metodi necessitano l’installazione del Bootloader Clover sulla a vostra USB.
      “CONDIZIONI OBBLIGATORIE”
      PUNTO 1: che la vostra usb sia stata preventivamente nominata USB (caratteri maiuscoli) Tabella di partizione GUID e la formattazione in  Mac esteso Journaled.
      PUNTO 2: che l’installer di OSX si trovi in Applicazioni
      Utility Disco 
      Selezionate la pendrive, andate su “partizione”, selezionate “1 partizione”, impostate Mac OS esteso journaled e date il nome USB, poi in basso cliccate su opzioni e scegliete Tabella partizione (GUID), poi “applica”.
      Immagine 
      Riporto nuovamente l’operazione sopra citata adoperando dal nuovo Utility Disco introdotto su El Capitan.
      Rimane ovviamente invariato nome della usb in ==>> USB (maiuscolo), la formattazione in Mac esteso Journaled e sia la mappa partizione in GUID
      Da utility disco selezionate la usb, cliccate su inizializza.
      dal menù a tendina scegliete la relative impostazioni
      Immagine  
      Procedura effettua da High Sierra è la stessa della precedente, l'unica attenzione e operazione da aggiungere in primis  è cliccare nel menù a tendina in alto sulla sinistra di utility disco e selezionare "mostra tutti i dispositivi"
      Immagine 
       
      =====================
        METODO 1: "Install_Mac_OS_X.Command" Lo script che trovate allegato in fondo alla guida permette la creazione dell’installer in maniera automatica
      Include la possibilità di scelta di tre versioni di osx
      Yosemite El Capitan Sierra Il risultato finale è come quello del metodo "manuale" descritto nella guida, per cui l'installazione avverrà in un solo passaggio, non in due come con il metodo createinstallmedia. 
      Offre inoltre la possibilità di inserire un kernel patchato, utile, per esempio, per chi usa AMD.
      Rimane invariato il nome dato alla usb in USB, mappa partizione e tipo di formattazione
      Se la vostra usb non sarà rinominata nel modo corretto, verrete avvisati dal terminale, quindi non dovrete far altro che apportare la relativa modifica e rilanciare nuovamente lo script
      Esempio
      ===========================
      Metodo 2 
      L'intento è quello di usare la procedura fornitaci direttamente da Apple, "createinstallmedia", introdotta  con Mavericks. 
      Tale metodo prevede l’uso del terminale che via via se ne sta perdendo il “valore e l’uso”
      Inizialmente per i neofiti potrà sembrare problematico ma alla fine non è così.
      Durante il post installazione alcune operazioni ne richiedono l’ uso.
      Perciò mi sono chiesto perchè, qualora uno volesse, non far conoscere da subito un po’ questo “strumento”???
      Per favorirvi vi ho allegato i comandi già  “pronti”, i quali li potrete copiare ed incollare sul terminale.
      A questo punto aprite il terminale, copiate ed incollate il comando sottostante e premete invio, digitate la vostra password e premete nuovamente invio.
      Comando per creare USB con Yosemite:
      sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ Yosemite.app --nointeraction  
      Comando per creare USB con El Capitan
      sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app --nointeraction Comando per creare USB con Sierra 
      sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ Sierra.app/ --nointeraction Per creare USB con Hight Sierra o Mojave usate --> C_I_M (aggiornato per 10.14)
       
      Funziona con il drag & drop sul terminale, in questo caso non vi è necessità che la usb sia nominata in un determinato modo ed essendo basato su create install media ovviamente funziona da 10.9 a 10.14.... 
      BENE…IL PROCESSO DI CREAZIONE E’ INIZIATO…
      AVREMO CIRCA 20/30 MINUTI DI TEMPO LIBERO A CUI DEDICARSI A CIO’ CHE VOGLIAMO………………………………………..  
      COLGO L’OCCASIONE PER FARVI NOTARE LA VELOCITA’ E LA SICUREZZA DI QUESTO METODO
      CONFRONTATE QUESTO CON IL TERZO METODO E NOTERETE CHE CON UN SOLO PASSAGGIO, OSSIA IL COMANDO DATO AL TERMINALE, FACCIAMO IN UNA SINGOLA OPERAZIONE TUTTI I VARI STEP DESCRITTI SULL’ ALTRO METODO.
      DETTO QUESTO, MOLTO IMPORTANTE E’ SOTTOLINEARE CHE COSI’ FACENDO EVITEREMO ERRORI  DI DISTRAZIONE RIGUARDO AI PASSAGGI O FRAINTENDIMENTI.
      Immagine 
      Potete adesso passare ad installare il bootloader Clover sulla vostra usb.
      *NOTA*:
      Avendo usato questo metodo l'installazione si dividerà in due fasi, perciò dopo il primo riavvio e necessario far partire nuovamente l'installer, selezionare lo stesso disco senza formattarlo.
      Finita questa ulteriore fase , l'installazione sarà terminata
      =========================
      METODO "MANUALE"....  (lascio per futura memoria-Compatibile fino a 10.12)
      ==========================
      Bootloader
      **Nota:** Installazione in UEFI  dipenderà dalla scheda madre in vostro possesso, quindi se non supporta tale opzione , il bootloader dovrà essere installato in  modalità Legacy.
       Vi invito, qualora non sapeste questa informazione, a recarvi nel sito ufficiale del produttore e controllare le informazioni a riguardo
      Fatto questo dobbiamo installare  Clover sulla usb.
      A seconda del tipo di Bios o al tipo di installazione che vogliamo fare UEFI o Legacy avremo ovviamente configurazioni diverse in questa fase.
      Lanciate il pkg.
      Immagine 

       
      Cambiate la destinazione di installazione ad USB oppure Install Mac_OS_X (a secondo del tipo di creazione eseguita)
      Successivamente clicchiamo su "Ad Hoc"
      Per Installazione UEFI
      Mettete i flag   : Installazione solo per avvio UEFI
                               : installare Clover nella ESP
                               : Driver64UEFI  selezionate OsxAptioFixDrv-64
                             *  :Se nel vostro sistema è presente una scheda grafica (discreta) della serie 9xx nVidia selezionate OsxAptioFix2Drv-64 al posto di  OsxAptioFixDrv-64 *
      ** OsxAptioFix2Drv :E' necessario per poter impostare CsrActiveConfig= 0x3 **
      ***OsxAptioFix3Drv oppure AptioMemory --> (consigliato) devono essere usati su hardware Skylake o successivi perché permettono alla nvram di lavorare correttamente
           (mi raccomando o uno o l'altro)
      Proseguite con l’installazione.
      Immagine 
      ** Ricordate che avrete accesso a questa cartella dopo aver montato la partizione EFI**
      ===========================
      Per installazione Legacy
      Immagine 
      ===========================
      Impostazione per config.plist:
      Con clover configurator “montate” la partizione EFI della usb.
      1) Per fare questo nel menù di sinistra, cliccate su “Mount EFI”
      2) individuate la partizione relativa alla vostra usb, a questo punto montiamo la relativa partizione EFI  selezionando l’apposito pulsante “Mount Partition”
      Immagine 
      3) Successivamente cliccate su “Open Partition”.. recatevi in EFI/Clover ed aprite il config.plist
      4) Sezione ACPI: Disabilitate tutti i fix sia del menù 1 che del menù 2
      Immagine 
      5) Sezione BOOT: Sole se si sta installando Yosemite mettete il flag su kext-dev-mode=1
      Immagine 
      6) Sezione RT Variables: Se si sta installando El Capitan oppure Sierra, aggiungere i valori: BooterConfig= 0x28, CsrActiveConfig= 0x67
      Immagine 
      7) Sezione System Parameters: Su inject kext mettete YES
      Immagine 
      ===========================
      Nota: Su El Capitan, è stato introdotto SIP (System Integrity Protection)
      Info:
      ===========================
      Recatevi in EFI/Clover/kext/10.x 
      X= alla versione di osx che state installando. Per esempio se installerete Yosemite dovrete recarvi nella cartella 10.10, con El Capitan in 10.11….ecc
      Se non ci fosse tale cartella, createla e nominatela voi a “modo”.
      Copiatevi all’interno FakeSmc.kext
      *Nota se venite già da altre vostre configurazioni, oltre kext sopra citato ,potete mettere gli altri necessari per il vostro hardware
      Stessa cosa se avete DSDT e/o SSDT potete copiarli in EFI/Clover/Acpi/Patched
      Immagine 
      
      Per High Sierra:
      Scaricare il driver apfs.efi a fine guida, collocarlo:
          --> EFI/clover/Driver64UEFI se stiamo usando UEFI
      --> EFI/Clover/Driver64 se stiamo usando Legacy
       
      Per chi volesse continuare ad usare HFS vi rimando a questo post:
        Come installare High Sierra in HFS direttamente dalla usb  
      Utenti Laptop:  Nel 99% è obbligatorio disattivare la grafica discreta Nvidia/Amd per installare questo nuovo osx
                                     Quindi aggiungete --> SSDT-Disable_DGPU.aml.zip
                                     in EFI/Clover/acpi/Patched della usb
      --------------------------------------------------------------------
      Per Mojave:
      Scaricare il driver apfs.efi per 10.14 a fine guida, collocarlo:
          --> EFI/clover/Driver64UEFI se stiamo usando UEFI
      --> EFI/Clover/Driver64 se stiamo usando Legacy
      Versione di clover non antecedente a V_4015
      Volete usare HFS?
      E' possibile fare un installazione diretta su altro disco o partizione
      nel caso guardate...
       Mojave in HFS 
       
       
       
      Fatto questo avrete la vostra USB bootable per installare OSX.
      ………Non scordatevi Fakesmc.kext da mettere nella relativa cartella…. senza il quale non farete mai il Boot......
      *NOTA: se usato il terminale per la creazione della usb, l'installazione si dividerà in due fasi, perciò dopo il primo riavvio e necessario far partire nuovamente l'installer, selezionare lo stesso disco senza formattarlo.
      Finita questa ulteriore fase , l'installazione sarà terminata
      **NOTA** Se avete processori Broadwell,Skylake o Kabylake...usate FakeSmc.kext e relativi sensors che trovate all'interno del secondo pacchetto.. (potete usarlo anche sui precedenti senza problemi, essendo una versione più aggiornata ha ulteriore supporto per le cpu più recenti)
      Update: Fakesmc e sensors versione 6.26
      Post installazione... post #2           
       Buon Hack….. 
      Aggiornamento:Install_Mac_OS_X.command.zip (compatibile da 10.10 a 10.12)
      le info le trovate a questo post
      Ringrazio @Ciro82 che mi ha aiutato nel preparare questa guida.
      Pacchetto.zip
      Pacchetto-2.zip
      apfs.efi-10.13-NoLog.zip
      Pacchetto-Fake+Sensors 6.26.1440.zip
      apfs.efi-10.13.1-No_LOG.zip
      apfs.efi-10.13.2_No_Log.zip
      apfs.efi-10.13.3-No_Log.zip
      apfs.efi-10.13.4-No_Log.zip
      apfs.efi-10.13.5_No_Log.zip
      C_I_M.zip
       
      apfs.efi-10.14-beta1_No_Log.zip
    • By fusion71au
      Run Vanilla OS X El Capitan, Sierra, High Sierra or Mojave in VirtualBox 5.x.x on a Windows Host
      Following on from my previous guide on how to create a VMware virtual machine running Vanilla OS X El Capitan in Windows, I’ve decided to write a similar guide for creating a VirtualBox El Capitan VM. 
       
      The virtual machine should be useful for testing El Capitan and also for creating installers for use on a real machine/hackintosh.
       
      There are other tutorials and videos on the net about running OS X on Windows machines using pre-made VMDK disk images but you can never guarantee what else is in there….
       
      I’ve gathered info for this guide from several threads in the Multibooting and Virtualisation section of this forum and also the wider internet eg
       
      @colt2 HOW TO: Create a bootable El Capitan ISO for VMware
      @dsmccombs comment on faking Ivybridge Processor
      @E:V:A http://forum.xda-developers.com/showpost.php?p=55572430&postcount=6
      @Tech Reviews video tutorial https://www.youtube.com/watch?v=t7X07U63lwg.
      VirtualBox Forum: Status of OSX on OSX
       
      Requirements
         Intel PC with four or more CPU cores running Windows 7 X64 or later OS (2 or more cores needed for OS X)    4GB or more RAM (2GB or more will be needed for OS X)    Hard Disk with at least 40GB free for Virtual Machine    Oracle VM VirtualBox v 5.0.34    Install OS X El Capitan app and Mac or Hack to prepare installation iso <-- Now, no longer necessary to have previous access to a Mac or Hack by building the Installer.app from scratch - see post#75    16GB or larger exFAT formatted USB stick to transfer El Capitan iso from Mac/Hack to Host PC  
      Prepare Installation ISO on your Mac or Hack
      1.  On your Mac or Hack, download "Install OS X El Capitan.app" from the App Store into your Applications folder.
      2.  Download and unzip the CECI.tool (attached to this post) into your ~/Downloads folder. The commands in this executable script are shown below for informational purposes.  Note: you will need approx 16GB of free space on your hard disk for the script to complete.
       
       
       
      3.  Open OS X terminal, then run the following commands to execute the script:
      cd downloads chmod +x CECI.tool ./CECI.tool 4.  At the end of the process, you will have an El Capitan iso on your desktop - copy this onto an exFAT formatted USB for use on the PC Host later.
       
       
      Create an El Capitan Virtual Machine in VirtualBox
      1.  Open the VirtualBox program and click the "New" button to create a new VM.
       

       
      2.  Select Mac OS X and Mac OS X 10.11 El Capitan (64 -bit) for Operating System type and version.  I named my Virtual Machine "El_Capitan", then clicked next...
       

       
      3.  Leave the Memory size at the recommended 2048 MB, then click next.
       

       
      4.  Choose to "Create a virtual hard disk now", then click the create button.
       

       
      5.  For the hard disk file type, the default is VDI (VirtualBox Disk Image) but I have selected VMDK for inter-operability with VMWare.  Click next...
       

       
      6.  For Storage on physical hard disk, I have chosen the default Dynamically allocated (grows larger to a set limit as you need more disk space).
       

       
      7.  On the File location and size screen, you can set the location of the new virtual hard disk and its size - I recommend changing disk size to 40GB or larger.  When you click the create button, you will now see your new VM in the VirtualBox main GUI.
       

       
      8.  Click the settings button on the Main Menu to tweak a few settings....
         a.  On the System/Motherboard tab in Boot Order, you can uncheck the Floppy Drive (who has these now?)
       

       
         b.  On the System/Processor tab, you can increase the allocated CPU cores to 2
       

       
         c.  On the Display tab, you can increase the allocated Video Memory to 128MB
       

       
         d.  On the Storage tab, click on the icon of the Optical Drive and select "Choose Virtual Optical Disk File". 
       

       
      Navigate and select the El Capitan ISO we created earlier...
       

       
         e.  Click the OK button to finalise the VM settings.
       
       
      Patch El Capitan vbox configuration file with DMI Settings from a Mac
      1.  From the start menu, type cmd and click run as administrator to open an administrative command prompt. 
       

       
      2.  Choose a Mac Model similar to your host system, then type the following lines, followed by <enter>  after each line.  Make sure you first close all VirtualBox Windows and the VirtualBox program, otherwise any changes you make won't stick...
       
      Eg iMac11,3
      cd "C:\Program Files\Oracle\VirtualBox\" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-F2238BAE" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1 MacBookPro11,3
      cd "C:\Program Files\Oracle\VirtualBox\" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro11,3" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-2BD1B31983FE1663" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1 Macmini6,2
      cd "C:\Program Files\Oracle\VirtualBox\" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "Macmini6,2" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-F65AE981FFA204ED" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1 3.  Optional- For some host systems eg those with Haswell and newer CPUs, you might have to spoof an older CPU to avoid VirtualBox errors.  You can try from one of the following if this happens:

      To spoof Lynnfield i5 750 CPU
      VBoxManage.exe modifyvm "El_Capitan" --cpuidset 00000001 000106e5 06100800 0098e3fd bfebfbff To spoof IvyBridge CPU
      VBoxManage.exe modifyvm "El_Capitan" --cpuidset 00000001 000306a9 04100800 7fbae3ff bfebfbff or
      VBoxManage.exe modifyvm "El_Capitan" --cpuidset 00000001 000306a9 00020800 80000201 178bfbff 4.  Close the command prompt window.
       
       
      Installation of El Capitan
      We are now ready to start the El_Capitan Virtual Machine....
       



       
      Installation should be relatively straight forward, just following the prompts of the OS X installer:
      1.  Select language, agree to legal terms
       

       
      2.  Use Disk Utility from the Utilities Menu to erase and format the virtual hard drive as a single partition GUID Mac OS X Extended.  I named my drive "Macintosh HD" but you can enter whatever you like eg El_Capitan.
       

       
      3.  Quit DU and choose Macintosh HD to install El Capitan on.
      4.  After 20-30 min (depending on how fast your system is), the installation will complete.  At this point, unmount the El Capitan ISO by clicking the Devices menu from the VM window, click Optical Drives, then choose Remove disk from virtual drive.  The VM is now ready to reboot into OS X from the virtual hard drive.
      5.  At the welcome screen, choose your country and keyboard layout.  You can skip transfer information, location services and logging in with your Apple ID if you wish…
      6.  Create a User Account and select your Time Zone.  You can skip sending diagnostics and usage data to Apple….
      7.  Finally, you will arrive at the El Capitan Desktop.
       

       
      8.  Network/internet and audio should work OOB but on my system, the sounds were distorted.  Unfortunately, there is no QE/CI and the VM resolution will be fixed without the ability to dynamically resize the VM window (no VirtualBox additions for OS X guests atm). 
       
       
      Customization with VBoxManage
      1.  You can change the default resolution of 1024*768 (after shutting down the VM) with the VBoxManage command from the Windows Administrative Command Prompt:
      cd "C:\Program Files\Oracle\VirtualBox\" VBoxManage setextradata "El_Capitan" VBoxInternal2/EfiGopMode N (Where N can be one of 0,1,2,3,4,5) referring to the 640x480, 800x600, 1024x768, 1280x1024, 1440x900, 1920x1200 screen resolution respectively.
       
      Update:  For VirtualBox 5.2.x, the command for changing screen resolution has changed...
       
      VBoxManage setextradata "<MyVM>" VBoxInternal2/EfiGraphicsResolution XxY (where X=Horizontal screen resolution, Y=Vertical screen resolution)
      eg
      VBoxManage setextradata "<MyVM>" VBoxInternal2/EfiGraphicsResolution 1280x1024 2.  Adding serials and other SMBIOS details for the System Information Screen
      VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" "W8#######B6" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBoardSerial" "W8#########1A" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemVendor" "Apple Inc." VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiSystemFamily" "iMac" VBoxManage setextradata "El_Capitan" "VBoxInternal/Devices/efi/0/Config/DmiBIOSVersion" "IM112.0057.03B" A listing of known issues with Mac OS X guests can be found in the VirtualBox Manual - link https://www.virtualbox.org/manual/ch14.html.
       
      Vanilla Mavericks and Yosemite, Snow Leopard from Retail DVD
      The same VM settings for El Capitan will also boot and run vanilla installations of OS X Mavericks and Yosemite .  Attached to this post are installer scripts to create bootable Mavericks (CMI.tool) and Yosemite (CYI.tool) ISOs for VirtualBox and VMware.
       
      With the respective OS X installer apps in the Applications folder, download and run the installer tools using terminal ie
       
      To create a Mavericks ISO on your desktop
      cd downloads chmod +x CMI.tool ./CMI.tool To create a Yosemite ISO on your desktop
      cd downloads chmod +x CYI.tool ./CYI.tool Here is a screenshot of the VM running Mavericks 10.9.5...
       

       
      Finally, those without a Mac/Hack to prepare the install media can purchase a retail Snow Leopard DVD directly from Apple and install OSX 10.6.3 on their virtual machines (Snow Leopard, Lion and Mountain Lion run quite happily in VirtualBox with 1 CPU, 1-2 GB of RAM and the rest of the settings unchanged from above).  Once you update by combo update to SL 10.6.8, you can directly download El Capitan from the App Store for free .
       

       
      UPDATE macOS Sierra 10.12 to 10.12.6: For macOS Sierra, use CSI.tool in post#51.
      UPDATE macOS High Sierra 17A365:  For macOS High Sierra, use CHSI.tool in post#73.
      UPDATE macOS Mojave Beta:  For macOS Mojave Beta, use CMJI.tool on page 4 of thread.
       
      Good luck and enjoy
      CECI.tool.zip
      CYI.tool.zip
      CMI.tool.zip
    • By fantomas1
      -----------------------------
      Mise à jour 12/07/2018
      -----------------------------
       
      La sortie de macOS 10.14 Beta m'oblige à mettre ce topic à jour. Plus de détails dans ce post.
       

       

       
      -----------------------------
      Mise à jour 09/06/2017
       
      -----------------------------
       
      La sortie de macOS 10.13 Beta m'oblige à mettre ce topic à jour. Plus de détails dans ce post.
       

       
       
       
      -----------------------------
      Mise à jour 15/06/2016
      -----------------------------
       
      Une petite mise à jour du topic pour confirmer le bon fonctionnement du patch à la volé de Clover (r3561) avec macOS Sierra.
       

       
       
       
      -----------------------------
      Mise à jour 24/08/2015
      -----------------------------
       
      ok, très bien,
       
      comme pour la HD6770, la nouvelle méthode du patch à la volé est de nouveau fonctionnel et avec les dernières versions de Clover.
       
      pour ma part, je suis sur El Capitan DB7 et Clover r3259
       

       
       
      par contre, je suis toujours obligé de m’aider de l’astuce avec FakeSMC pour que mes kexts soient toujours chargés, mais au moins cela marche.   
       
       
       
       
      et pour config.plist, cela donne ça :
       

       
       
      ceci est juste un exemple avec ma HD4830, il va de soi que vous devez mettre Device-ID de votre carte graphique !!!
       
       
       
       
       
      Salut à tou(te)s
       
      Comme certain(e)s le savent, les cartes graphiques dites "Exotiques" ne sont pas supportés par le système d'exploitation d'Apple.
      En sus d'ajouter l'identifient de la carte graphique (Device ID) dans l'Info.plist du ou des kexts concernés, il faut aussi interagir sur la partie "binaire" du kext par le biais du "patching".
       
      Dans notre cas, les cartes graphiques exotiques sont les cartes AMD (anciennement ATI) de la série HD 48xx, et plus précisément les HD 4830, HD4850, HD4870x2 et HD4890.*
       
      Donc le but est de faire fonctionner ces cartes graphiques de manière stable et fluide en activant QE_CI, chose nécessaire pour en profiter pleinement du système d'exploitation.
       
      * Juste avant de commencer, vous l'avez peut-être remarqué, la HD4870 n'est pas sur la liste suscitée et pour cause c'est que cette carte graphique est nativement supportée par le système d'exploitation d'Apple. Son Device ID est 0x94401002 que vous pouvez trouvé dans l'Info.plist des kexts concernés et c'est celui-ci que nous allons utiliser afin de le remplacer par le Device ID de notre carte graphique.
       
      ** Ce tuto est fait pour fonctionner sous OS X Mavericks, mais il doit fonctionner aussi avec les autres. La seule chose différente c'est l'adresse binaire à patcher.    
       
       
      Très bien, comme le titre le suggère, nous allons voir comment faire reconnaître ces cartes graphiques sous Clover et obtenir par la même un QE_CI activé et parfaitement fonctionnelle.
       
      Je vais utiliser ma Sapphire HD4830 512 MB GDDR3 PCI-E (comme cobaye    ) pour ce test et qui a pour Device ID 0x944c1002.
       
      Pour que ce test réussisse, nous allons donc utiliser ces 2 kexts, à savoir AMD4800Controller.kext (pour la partie QE) et ATIRadeonX2000.kext (pour la partie CI) et allons ajouter notre Device ID dans l'Info.plist. via le tweak "KernelAndKextPatches"
       
      Donc les valeurs à entrer dans notre config.plist sont celle-ci :
      <key>KernelAndKextPatches</key>     <array>         <dict>             <key>Name</key>             <string>AMD4800Controller</string>             <key>InfoPlistPatch</key>             <string>Yes</string>             <key>Find</key>             <string>0x94401002</string>             <key>Replace</key>             <string>0x944C1002</string>         </dict>         <dict>             <key>Name</key>             <string>ATIRadeonX2000</string>             <key>InfoPlistPatch</key>             <string>Yes</string>             <key>Find</key>             <string>0x94401002</string>             <key>Replace</key>             <string>0x944C1002</string>         </dict>     </array> Comme vous pouvez le voir, la clé "InfoPlistPatch" sert à injecter notre Device ID "uniquement" dans Info.plist, sans y toucher à la partie "binaire" de nos kexts. La clé "Find" a pour fonction de trouver le Device ID que l'on veut remplacer par le notre en utilisant la clé "Replace".
       
      Très bien, maintenant comme nous l'avons dit au début de ce tutoriel, ajouter notre Device ID n'est pas suffisant pour faire fonctionner pleinement notre carte graphique, il faut encore interagir sur la partie "binaire" de nos kexts. Dans notre cas, il va falloir agir uniquement sur un kext, çàd sur ATIRadeonX2000.kext et plus particulièrement sur ATIRadeonX2000.kext/Contents/MacOS/ATIRadeonX2000
       
      Et pour cela, nous allons faire comme ceci :
      <key>KextsToPatch</key> <array> <dict>     <key>Name</key>     <string>ATIRadeonX2000</string>     <key>Find</key>     <data>0F8394010000</data>     <key>Replace</key>     <data>909090909090</data> </dict> </array> Là nous pouvons voir que la clé "InfoPlistPatch" n'est pas utilisée et donc ces valeurs n'auront aucun effet sur l'Info.plist mais agiront uniquement au niveau de la partie "binaire". 
       
      Et voici les valeurs en leur forme complète que vous devrez ajouter dans votre config.plist
      <key>KernelAndKextPatches</key>     <array>         <dict>             <key>Name</key>             <string>AMD4800Controller</string>             <key>InfoPlistPatch</key>             <string>Yes</string>             <key>Find</key>             <string>0x94401002</string>             <key>Replace</key>             <string>0x944C1002</string>         </dict>         <dict>             <key>Name</key>             <string>ATIRadeonX2000</string>             <key>InfoPlistPatch</key>             <string>Yes</string>             <key>Find</key>             <string>0x94401002</string>             <key>Replace</key>             <string>0x944C1002</string>         </dict>         <dict>             <key>Name</key>             <string>ATIRadeonX2000</string>             <key>Find</key>             <data>0F8394010000</data>             <key>Replace</key>             <data>909090909090</data>        </dict>     </array> Très bien, maintenant il ne nous reste plus qu'à autoriser l'injection des kexts, sans quoi le patch ne fonctionnera pas. Et nous allons le faire via le tweak "InjectKexts" comme ceci :
      <key>SystemParameters</key> --> clé principale <dict>       <key>InjectSystemID</key>       <true/>       <key>InjectKexts</key> --> sous clé       <string>Yes</string> </dict>  
       
      Si certain(e)s d'entre vous préfèrent utiliser le logiciel "Clover Configurator" pour plus de facilité, voici comment entrer ces valeurs :
       
      Allez sur l'onglet "Kernel And Kext Patches" et faites comme ceci :
       
       
       
      *Ne faites pas attention sur le majuscule/minuscule, cela ne fait aucune différence
       
       
      Et pour injecter les kexts, aller sur l'onglet "System Parameters" et mettez l'option Inject Kexts sur Yes comme ceci :
       

       
       
      Voilà, vous n'avez plus qu'à enregistrer les ajustements, redémarrer votre pc et apprécier le résultat.
       
       
      MAIS ... seulement voilà ... il y a un problème ... 
       
      Quoi ? 
       
      Initialement, les kexts ne sont pas présents dans le kernelcache à cause de "OSBundleRequired=Safe Boot" (ils ne sont pas chargés en local par défaut mais en mode sans échec) et donc le patchage "à la volé" (on the fly) ne fonctionnera pas.
       
      Donc quoi, tout ça pour rien ?
       
      Non, bien-sûr, voici l'astuce pour remédier à cela :
       
      Dans un premier temps, il vous faut booter l'OS sans kernelcache. Si vous utiliser Clover Configurator, il vous suffit juste de cocher l'option "No Caches" dans l'onglet "System and Parameters" ou bien vous le faites directement dans votre config.plist :
      <key>SystemParameters</key> <dict>       <key>InjectSystemID</key>       <true/>       <key>InjectKexts</key>       <string>Yes</string>       <key>NoCaches</key>       <true/> </dict> Ceci aura donc pour effet de bloquer kernelcache et obliger boot.efi de charger le kernel et les kexts séparément. Clover et FSInject vont ensuite intercepter tous les chargements des kexts par boot.efi et changer "OSBundleRequired=Safe Boot" en "OSBundleRequired=Root" à la volé (on the fly) et forceront boot .efi à charger les kexts. Et ensuite dans un second temps, Clover va patcher l'Info.plist de ces deux kexts et la partie binaire de ATIRadeonX2000, kernel va les charger et ils seront rattachés à votre carte graphique.
       
      Une fois ceci fait (donc les kexts utilisés), il vous suffit de faire sudo touch /System/Library/Extensions. Ceci créera un nouveau kernelcache qui cette fois-ci contiendra vos kexts utilisés. Ensuite il ne vous reste plus qu'à redémarrer normalement (en décochant l'option No Caches dans Clover Configurator) et le patch fonctionnera à merveille.
       
       
      Oui, mais ... là aussi ...
       
      Quoi encore ?
       
      Seulement voilà, pour une raison ou une autre, il peut arriver que kernelcache se reconstruit tout seul et le patch "à la volé" ne fonctionne plus.
       
      Alors je fais quoi moi en attendant ?
       
      L'astuce la plus efficace pour le moment est d'injecter les infos de vos kexts à l'intérieur de l'Info.plist de FakeSMC.kext comme des IOKitPersonalities additionnels.
       
      ????Kézako????
       
      Ces infos vous les trouverez dans l'Info.plist de ces 2 kexts, sous IOKitPersonalities. Les voici :
       
      Pour AMD4800Controller.kext
      <key>Controller</key> <dict>         <key>ATY,Cardinal</key>         <dict>                 <key>aty_config</key>                 <dict>                         <key>CFG_NO_PP</key>                         <true/>                 </dict>          </dict>          <key>CFBundleIdentifier</key>          <string>com.apple.kext.AMD4800Controller</string>          <key>IOClass</key>          <string>AMD4800Controller</string>          <key>IOMatchCategory</key>          <string>IOFramebuffer</string>          <key>IOName</key>          <string>AMD4800Controller</string>          <key>IOPCIMatch</key>          <string>0x94401002 0x944a1002</string>          <key>IOProbeScore</key>          <integer>65050</integer>          <key>IOProviderClass</key>          <string>IOPCIDevice</string>         <key>aty_config</key>          <dict>                 <key>CFG_NO_PP</key>                  <false/>                  <key>CFG_PAA</key>                  <integer>0</integer>                  <key>CFG_USE_USCN</key>                  <false/>          </dict>          <key>aty_properties</key>          <dict>                  <key>PP_GFXClockGatingEnabled</key>                  <integer>1</integer>          </dict> </dict> Et pour ATIRadeonX2000.kext
      <key>ATIRadeonX2000</key> <dict>         <key>ATIEnableWideBlitSupport</key>         <true/> <key>ATIUseTearingWideBlit</key> <false/> <key>CFBundleIdentifier</key> <string>com.apple.ATIRadeonX2000</string> <key>GpuDebugPolicy</key> <integer>0</integer> <key>IOCFPlugInTypes</key> <dict> <key>ACCF0000-0000-0000-0000-000a2789904e</key> <string>ATIRadeonX2000GA.plugin</string> </dict> <key>IOClass</key> <string>ATIRadeonX2000</string> <key>IODVDBundleName</key> <string>ATIRadeonX2000VADriver</string> <key>IOKitDebug</key> <integer>0</integer> <key>IOMatchCategory</key> <string>IOAccelerator</string> <key>IOPCIMatch</key> <string>0x94001002 0x94011002 0x94021002 0x94031002 0x95811002 0x95831002 0x95881002 0x94c81002 0x94c91002 0x95001002 0x95011002 0x95051002 0x95071002 0x95041002 0x95061002 0x95981002 0x94881002 0x95991002 0x95911002 0x95931002 0x94401002 0x94421002 0x944A1002 0x945A1002 0x94901002 0x949E1002 0x94801002 0x95401002 0x95411002 0x954E1002 0x954F1002 0x95521002 0x95531002 0x94a01002</string> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>IOSourceVersion</key> <string>8.24.11</string> <key>IOVARendererID</key> <integer>16908288</integer> <key>sensor-properties</key> <array> <dict> <key>device_type</key> <data> Z3B1LXNlbnNvcg== </data> <key>location</key> <string>GPU</string> <key>name</key> <string>gpu-sensor</string> <key>polling-period</key> <data> AAAAAQAAAAA= </data> <key>reg</key> <data> AAAAAg== </data> <key>sample-period</key> <data> AAAAAACYmAA= </data> <key>sensor-id</key> <data> AAAABg== </data> <key>version</key> <data> AAAAAg== </data> <key>zone</key> <data> AAAAAg== </data> </dict> </array </dict>  
      Et voici donc l'Info.plist de FakeSMC.kext dans son intégrité, vous pouvez jeter un oeil, histoire de voir à quoi cela ressemble :
       
      FakeSMC_Info.plist.zip
       
      Et pour les moins casse-têtes, voici FakeSMC.kext modifié que j'utilise pour charger les 2 kexts :
       
      FakeSMC.kext.zip
       
       
      Voilà, avec ceci, vous n'aurez plus besoin de savoir si oui ou non les kexts sont dans le kernelcache.
       
       
      Crédits attribués à :
       
      netkas  pour son incontournable QE_CI Exotic patch (même s'il n'importe plus son support)
       
      Slice  & co. pour leur bébé nommé Clover
       
      dmazar  pour son astuce avec FakeSMC.kext   (pour plus d'info, voir ici)
       
      duffs (rarement ici, plus sur le site de netkas) pour son astuce de comment patcher la partie binaire avec Clover, ce fût lors de la sortie de OS X Mavericks DP1
       
      nyolc8  pour le support de QE_CI Exotic patch pour Mavericks
       
      fantomas1  pour ......... pour ... quoi déjà ? Ah ben non ... non ... pour rien ...
    • By Slice
      Now I want to add vector graphics support in Clover. See rev 4560 and later.
      It is not working yet but designers may begin to create Vector Themes.
      It supposed to consist of SVG elements and has design size. It will be rendered to any screen size scaled from design size.
       
      What application in macOS can create SVG graphics?
      Inkscape is not working in macOS 10.11+. Pity.
      LibreOffice Draw works with SVG but buggy.
      Boxy SVG cost 10$ but looks good enough. It creates the best in simplicity files and have more then enough features.
      Illustrator is good but expensive.
       
      How to improve SVG file?
      Clover has restricted support for SVG. It is your job to make compatible file and as small as possible to speedup rendering.
      Some helps:
      Help:Inkscape – From invalid to valid SVG Inkscape files
      From invalid to valid SVG Adobe Illustrator files
      From invalid to valid SVG files of other editors: BKchem, ChemDraw and CorelDRAW
      Help:Illustrator – Assistance with creating and saving SVG images in Adobe Illustrator that will pass W3C validation
      User:Quibik/Cleaning up SVG files manually
      Later I will write own instructions specific to Clover abilities.
       
      How to create SVG fonts?
      You can google to find ready-to-use SVG fonts.  I found some problems with too beaty fonts: slow rendering and overflow crash. Be careful.
      You can get ttf or otf fonts and convert them into svg by using online WEB services. Not a problem to google.
      But then I want to find a way to simplify the font to reduce a size and speedup rendering.
      You can create own font by FontForge It is opensource and available for Windows, Mac and GNU+Linux. It creates otf font which you can convert to svg font.
       
       
×