Jump to content

Clover v.2 Instructions

Bootloader EFI Clover

  • Please log in to reply
50 replies to this topic

#41
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

Property List Editor

 

It is helpful for config.plist editing.

This is utility from old Xcode, looks and works better then new version.

Unpack the archive, copy these frameworks into /Library/Frameworks/

The application may be placed in your convenient folder.

Attached File  PListEditor.zip   6.12MB   830 downloads

Attached File  Screen Shot 2014-04-28 at 7.58.06.png   97.43KB   130 downloads



#42
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

Blocking Bad Kext

 
I encounter a bad situation when I installed a kext (it is GeforceSensor) that caused KP. I install it into SLE without checking if it works.
Then I can't boot even with -x, -v, -s. It always loaded and panics.
So I created a revision of Clover that is able to block one kext in /S/L/E.
Test with NVClockX.kext. It is not vital for system so I can experiment with it.

Attached File  BlockKext.png   575.29KB   152 downloads

Ordinary boot

zone leak detection enabled
standard timeslicing quantum is 10000 us
mig_table_max_displ = 73
NVClockX: NVClock Darwin port by alphamerik (C) 2010
NVClockX: usr-sse2 (C) 2010
AppleACPICPU: ProcessorId=0 LocalApicId=0 Enabled
AppleACPICPU: ProcessorId=1 LocalApicId=1 Enabled

With BlockKext

zone leak detection enabled
standard timeslicing quantum is 10000 us
mig_table_max_displ = 73
HWInfo: [Debug] Initialising...
HWInfo: HWInfo get information from Clover bootloader, (c)Slice 2013
IntelCPUMonitor: Based on code by mercurysquad, superhai (C)2008. Turbostates measurement added by Navi
User defined TjMax=0
AppleACPICPU: ProcessorId=0 LocalApicId=0 Enabled
AppleACPICPU: ProcessorId=1 LocalApicId=1 Enabled

So yes, the kext is not loaded by boot.efi. Don't forget to boot without cache!

But then surprise!!!
 

slice$ sudo kextstat | grep -v apple
Password:
Index Refs Address    Size       Wired      Name (Version) <Linked Against>
   18    4 0x566db000 0xa000     0x9000     org.netkas.FakeSMC (3.3.1) <13 7 5 4 3>
   19    0 0x56236000 0x4000     0x3000     org.slice.HWInfo (1) <18 7 4 3>
   20    0 0x566e5000 0x6000     0x5000     org.slice.IntelCPUMonitor (1.1) <18 7 5 4 3>
   23    0 0x56763000 0x7000     0x6000     org.mozodojo.ITEIT87x (1.0.3) <18 7 5 4 3>
   36    0 0x56746000 0x5000     0x4000     com.yourcompany.driver.AppleACPIPS2Nub (1.0.0d1) <13 7 5 4 3 1>
   38    0 0x564b4000 0x3000     0x2000     net.osrom.kext.Disabler (1.0.1) <4 3>
   79    0 0x5d46b000 0x14000    0x13000    org.usrsse2.NVClockX (1.0.1d1) <18 14 7 5 4 3>
   85    0 0x564b7000 0x23000    0x22000    org.voodoo.driver.VoodooHDA (2.8.4) <84 14 7 5 4 3>
Sergeys-iMac:Clover slice$

It is loaded! Why? I think it is loaded by kernel that is not affected by FSInject.efi
But it is loaded much later and give me an ability to boot with -s before the KP will occur.
Yes, this is workaround in the case above.

 

Since rev.2665



#43
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

AAPL,slot-name

 

This is a property that usually injected by DSDT or property strings but this is a wrong way to go.

Actually this property appeared by AppleSMBIOS.kext (see sources if you want).

So in revision 2673 I made more vanilla way to assign this property.

1. DSDT must contain Name (_SUN, 0x05). Or other number. The number must be one byte and avoid 0 and 1 because of stupid optimization. Sample:

                Device (GIGE)
                {
                    Name (_ADR, 0x00050000)  // _ADR: Address
                    Name (_SUN, 0x02)  // _SUN: Slot User Number

You may write nothing but set DSDT Fix Mask bits for those devices

Attached File  Screen Shot 2014-05-20 at 10.25.26.png   109.95KB   91 downloads

2. SMBIOS must contains tables type 9 for each named device. To do this write into config.plist like here

Attached File  Screen Shot 2014-05-20 at 10.23.37.png   73.92KB   87 downloads

Here 

- Slots->Device is a one of devices {ATI, NVidia, LAN, WIFI, Firewire}. That's all for now. I can accept more propositions.

- Slots->ID must be the same number as you set into DSDT in _SUN.

- Slots->Name will be a string that you want to assign to AAPL,slot-name

- Slot->Type is intended to be a type of slot. There is a number 0,1,2,4,8,16 means PCI, PCIe 1x, PCIe 2x etc.

3. Clover must be revision 2673+

 

See the result

Attached File  Screen Shot 2014-05-20 at 10.32.56.png   94.82KB   86 downloads

 



#44
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

Fake CPUID

 

What to do if your OSX is not supported your CPU?

See table what CPUs supported by different OS versions

CPU name	CPUID	10.4.11	10.5.8	10.6.3	10.6.8	10.7.2	10.7.5	10.8.5	10.9.2
Yonah	      0x0006E6	1	1	1	1	1	1	0	0
Conroe	      0x0006F2	1	1	1	1	1	1	1	1
Penryn	      0x010676	0	1	1	1	1	1	1	1
Nehalem	      0x0106A2	0	1	1	1	1	1	1	1
Atom	      0x0106C2	0	0	0	0	0	0	0	0
XeonMP	      0x0106D0	0	0	0	1	0	0	0	0
Linnfield     0x0106E0	0	0	1	1	1	1	1	1
Havendale     0x0106F0	0	0	1	1	1	1	1	1
Clarkdale     0x020650	0	0	0	1	1	1	1	1
AtomSandy     0x020660	0	0	0	0	0	0	0	0
Lincroft      0x020670	0	0	0	0	0	0	0	0
SandyBridge   0x0206A0	0	0	0	1	1	1	1	1
Westmere      0x0206C0	0	0	0	1	1	1	1	1
Jaketown      0x0206D0	0	0	0	1	1	1	1	1
NehalemEx     0x0206E0	0	0	1	1	1	1	1	1
WestmereEx    0x0206F0	0	0	0	1	1	1	1	1
Atom2000      0x030660	0	0	0	0	0	0	0	0
IvyBridge     0x0306A0	0	0	0	0	0	1	1	1
Haswell	      0x0306C0	0	0	0	0	0	0	1	1
IvyBridgeE5   0x0306E0	0	0	0	0	0	0	0	1
HaswellMB     0x0306F0	0	0	0	0	0	0	1	1
HaswellULT    0x040650	0	0	0	0	0	0	1	1
CrystalWell   0x040660	0	0	0	0	0	0	1	1

If you want to install OSX on Atom CPU then you may see it is not supported.

As well IvyBridge is not supported by 10.7.2 while it will be supported by 10.7.5 after SoftwareUpdate.

 

For these cases Clover-rev2748+ proposes you to set FakeCPUID in config.plist or even in GUI -> Binaries patching menu

	<key>KernelAndKextPatches</key>
	<dict>
		<key>FakeCPUID</key>
		<string>0x010676</string>

In this example we tell that the CPU is Penryn supported by all OS versions 10.5+

 

To illustrate I set for my CPU FakeID=0x0106C2 that is unsupported Atom and as expected I got KP while IntelCPUMonitor sees real CPU - Penryn :)

Attached File  03072014202.jpg   170.67KB   111 downloads

 

And vice versa. If you set good model for bad CPU you may successfully start system.

 

Download a version Attached File  CLOVERX64.efi-rev2749.zip   249.45KB   181 downloads



#45
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

 Multiple boot options.

Rev 2948+
Briefly, Clover writes Boot#### options for each entry in MainMenu and set BootCurrent to last booted entry if all correct.

Requirements: UEFI boot with real NVRAM present.

Usage:
Enter CloverGUI, navigate to "Clover Boot Options" in the tools row of main menu and press "Add Clover boot options for all entries".
Attached File  screenshot5.png   194.35KB   113 downloads
If you once do this no need to repeat. It will be saved in NVRAM forever.
When you change the main menu by adding new volume, new partition, new OS then you should 
first remove old options: "Remove all Clover boot options"
second add all options again.
Print them into boot.log to see what you have.

When you started an OS by some entry in the Menu then this entry will be saved as "BootCurrent" and next boot will happen with Clover knowing DefaultVolume and DefaultLoader as in last boot.

Advantages
1. It will remember last boot to Windows or even to legacy boot (not checked but I hope it is).
2. Bios menu will contain these entries.
Attached File  141008204117.png   164.45KB   89 downloads


I tested with QEMU+Ovmf and have the follow debug.log after tuning:

Boot options:
-------------
48:487  0:051  BootOrder: 7: Boot0005, Boot0006, Boot0000, Boot0001, Boot0002, Boot0003, Boot0004
49:388  0:901   0) Boot0005: Clover start boot.efi at Macintosh, Attr: 0x1
49:442  0:053      HD(1,GPT,065C30D9-992D-4C4C-8965-A266108C7D0F,0x800,0x60000)\EFI\CLOVER\CLOVERX64.EFI
49:495  0:053      Size: 222 (Attr:4 + FPl:2 + Desc:70 + FP:102 + Opt:44 = 222 -> OK)
49:550  0:054   1) Boot0006: Clover start (null) at EFI, Attr: 0x1
49:604  0:054      HD(1,GPT,065C30D9-992D-4C4C-8965-A266108C7D0F,0x800,0x60000)\EFI\CLOVER\CLOVERX64.EFI
49:697  0:093      Size: 176 (Attr:4 + FPl:2 + Desc:54 + FP:102 + Opt:14 = 176 -> OK)
49:751  0:053   2) Boot0000: EFI Floppy, Attr: 0x1
49:805  0:053      PciRoot(0x0)\Pci(0x1,0x0)\Floppy(0x0)
49:860  0:054      Size: 62 (Attr:4 + FPl:2 + Desc:22 + FP:34 + Opt:0 = 62 -> OK)
49:914  0:054   3) Boot0001: EFI Floppy 1, Attr: 0x1
49:967  0:053      PciRoot(0x0)\Pci(0x1,0x0)\Floppy(0x1)
50:021  0:053      Size: 66 (Attr:4 + FPl:2 + Desc:26 + FP:34 + Opt:0 = 66 -> OK)
50:114  0:093   4) Boot0002: EFI Hard Drive, Attr: 0x1
50:168  0:053      PciRoot(0x0)\Pci(0x1,0x1)\Ata(0x0)
50:225  0:056      Size: 66 (Attr:4 + FPl:2 + Desc:30 + FP:30 + Opt:0 = 66 -> OK)
50:279  0:054   5) Boot0003: EFI Network, Attr: 0x1
50:334  0:054      PciRoot(0x0)\Pci(0x3,0x0)\MAC(525400123456,0x1)
50:387  0:053      Size: 89 (Attr:4 + FPl:2 + Desc:24 + FP:59 + Opt:0 = 89 -> OK)
50:441  0:054   6) Boot0004: EFI Internal Shell, Attr: 0x1
50:536  0:094      MemoryMapped(0xB,0x900000,0x10FFFFF)\FvFile(C57AD6B7-0515-40A8-9D21-551652854E37)
50:590  0:054      Size: 92 (Attr:4 + FPl:2 + Desc:38 + FP:48 + Opt:0 = 92 -> OK)
50:643  0:053  -------------
...
0:109  0:000  Clover revision: 2947  running on Standard PC (i440FX + PIIX, 1996)
0:109  0:000  ... with board 
0:109  0:000  Clover load options size = 44 bytes
0:109  0:000  Clover started with option to boot boot.efi from Macintosh


#46
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

How to install Windows in EFI mode on legacy BIOS based PC

using legacy Clover

 

It is a way to go away from legacy systems even if you have old BIOS based computer.

 

First, you should realize that there are requirement for partition table:

1. OSX requires GPT. It can be installed into MBR with special patch.

2. Legacy Windows requires MBR and can't be installed into GPT.

3. UEFI Windows requires GPT and can't be installed into MBR. Moreover, check with fdisk, it must be as follow:

fdisk: 1> p
Disk: /dev/rdisk0	geometry: 19457/255/63 [312579695 sectors]
Offset: 0	Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE    0   0   2 - 1023 254  63 [         1 -         34] <Unknown ID>
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
fdisk: 1> 

I mean there must be no Hybrid MBR! Attention! Only one partition and it is with EE sign. Check and zero all other entries if found.

 

Second.

Minimum Windows version is Windows 7-64bit. So your computer must have 64-bit CPU.

 

Installation order.

1. Install Mac OSX first. In the installer format your drive to GPT and reserve a space for Windows at least 60Gb.

2. Install Clover into EFI partition created during the formatting. It must be boot6 (Clover SATA)

3. Insert DVD with Windows-7-64bit. It must be ISO9660+Joilet format. Not UDF because Clover is not ready for this.  GrubUDF.efi works!

4. Start the windows EFI-install from this DVD by Clover

Attached File  screenshot4.jpg   135.4KB   78 downloads

5. This installation kill the Clover so you have to restart during installation to Clover on USB stick and choose boot Windows from HDD to continue installation. No! Clover is still in place and we can continue!

6. After complete Windows installation you have to start from the USB stick into OSX and then reinstall Clover.

 

Final result.

/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *160.0 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:       Microsoft Basic Data Windows                 46.0 GB    disk0s2
   3:                  Apple_HFS MacHD                   113.7 GB   disk0s3
   4:         Microsoft Reserved                         133.2 MB   disk0s4

Attached File  Screen Shot 2014-11-05 at 14.41.19.png   111.13KB   56 downloads

 

Attached File  main.png   1.21MB   45 downloads



#47
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

How to speedup Clover boot

 

There is usual claim from novices that Clover is too slow (or hang). Let us consider this question carefully.

If you try Clover first time then it is logically that you install it onto USB stick and set debug-log to be created. This is the reason of slowness #1.

	<key>Boot</key>
	<dict>
		<key>Log</key>
		<false/>

This is wrong key name, I will change the key to "Debug" (since rev3064) that will reflect its appointment. Boot.log will be created even with "False", it just be in memory and accessible in system if booted.

When "true" the "debug.log" will be Open-Write-Close on every line guarantying you will found the file even after hard-reset.

The file will be saved in /clover-partition/EFI/CLOVER/misc/ folder is the partition is FAT32 to help you understand what is the reason of hang is any. The process ve-e-ery slo-o-ow. With my USB stick I have to wait about 10 minutes to enter GUI.

Set "false" here!

I also will kindly recommend to install Clover on HDD that times faster then USB. Why not? You want to keep Chameleon here? Yes, it is possible. Clover and Chameleon can live on the same partition with the same boot sectors. Boot sectors from Clover distribution are able to boot Chameleon as they are comes from them. But not vice versa. Chameleon's boot1h is not able to boot Clover because of its restriction.

OK. The partition will looked like this

total 22487
drwxrwxrwx  1 slice  staff     2560 18 дек 17:17 .
drwxrwxrwt@ 8 root   admin      272 19 дек 10:54 ..
drwxrwxrwx  1 slice  staff     1024 29 окт 11:17 EFI
drwxrwxrwx  1 slice  staff     2048  4 апр  2014 Extra
-rwxrwxrwx  1 slice  staff   482816  3 дек 15:54 boot
-rwxrwxrwx  1 slice  staff   268256  6 авг  2011 boot2
-rwxrwxrwx  1 slice  staff   367589  4 апр  2014 boot3
-rwxrwxrwx  1 slice  staff   383562 14 июл  2009 boot4
-rwxrwxrwx  1 slice  staff   450048 17 дек 17:37 boot5
-rwxrwxrwx  1 slice  staff   482816 28 окт 13:34 boot6

Where

EFI/ - a folder for Clover's files

Extra/ - a folder for Chameleon files

boot is current bootloader. For my case it is Clover BiosBlockIO, renamed from boot7.

boot2 is Chameleon

boot3 is Clover-32bits

boot5 is Clover with low-ebda (rev3061+)

At the computer start when I see "Booting from hard drive..." I can press a digit 2,3,5 to choose a bootloader.

I just want to say you can install Clover on HDD even if there is Chameleon presents here.

 

Reason #2.

Less feature - faster boot, more features - slower boot. What do you want, powerful bootloader or fast bootloader?

The compromise should be found when you study all Clover's features.

For the first time I may propose minimal setting to boot into system.

Do you want to see all possible systems and entries in main menu? And you have four drives with tens partitions each.

Scanning all partitions will take a time. I even saw 80 seconds in real life.

	<key>GUI</key>
	<dict>
		<key>Scan</key>
		<dict>
			<key>Entries</key>
			<false/>
			<key>Legacy</key>
			<false/>
			<key>Tool</key>
			<false/>
		</dict>

Use custom entry to set only that entry that you want to see

	<key>GUI</key>
	<dict>
		<key>Custom</key>
		<dict>
			<key>Entries</key>
			<array>
				<dict>

See more instructions elsewhere.

 

If you have Windows with a couple of files then scanning it will be very slow. DIsable NTFS.efi driver to prevent it!

 

Reason #3.

Too many drivers in /EFI/CLOVER/drivers64*/ folder. Some third party driver may hang or slow respond. Test it separately when needed.

 

Reason #4.

Big theme chosen. More graphics, more animations - slow boot. But very nice looking!

For first start you may choose Theme=embedded. This is fastest theme.

 

Reason #5.

Mouse slow response. Clover GUI can be controlled by a mouse. But the driver can understand only part of market. Good mice: Logitech, KYE systems, Microsoft. Bad mice: noname.

Disable mouse in config.plist

		<key>Mouse</key>
		<dict>
			<key>Enabled</key>
			<false/>
			<key>Speed</key>
			<integer>0</integer>
		</dict>

Reason #6. Slow HFS+ driver.

Official release of Clover contains VBoxHFS.efi driver. It is very good, it understand links sft and hard, it understand aliases, but slow.

Apple's driver HFSplus.efi is much faster but we have no license to distribute it. Take it somewhere (here #3 ) and place it into /EFI/CLOVER/drivers64*/ folder. And it will works instead embedded driver. (since rev 3043).

 

Since Clover revision 3063 you may see boot process on the screen to understand why it is soo slow.

Attached File  boot-process.png   12.75KB   116 downloads



#48
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

InfoPlist Patching

 

There is interesting Clover ability to perform an Info.plist patching on the fly.

Since rev.3154 I should set more strict rules to have a success.

Write into config.plist the follow as example

	<key>KernelAndKextPatches</key>
	<dict>
		<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Comment</key>
				<string>Power state 1 - 0</string>
				<key>Name</key>
				<string>AppleIntelHDGraphicsFB</string>
				<key>InfoPlistPatch</key>
				<true/>
				<key>Find</key>
				<data>PGtleT5Qb3dlclN0YXRlczwva2V5PjxpbnRlZ2VyPjE8L2ludGVnZXI+</data>
				<key>Replace</key>
				<data>PGtleT5Qb3dlclN0YXRlczwva2V5PjxpbnRlZ2VyPjA8L2ludGVnZXI+</data>
			</dict>
		</array>
	</dict>

It corresponds to replace in kext AppleIntelHDGraphicsFB.kext, in its Info.plist the lines

				<key>PowerStates</key>
				<integer>1</integer>

by lines

				<key>PowerStates</key>
				<integer>0</integer>

but original pattern contains symbols "<", ">", "/", LF, TAB, SPACES that impossible to correctly write into config.plist.

So

1. You have to erase all invisible characters from pattern search.

2. Convert <string> to <data>.

The result looks like

Attached File  Screen Shot 2015-02-02 at 17.19.48.png   37.12KB   106 downloads

This is only way to do search and replace will be success.

 

Next problem.

If you want to replace DeviceID into IOPCIMatch the you can use this InfoPlistPatch

For example inject unsupported ATI Radeon ID into AMDRadeonX3000.kext. But the kext is not present in kernelcache and the patch will not occur.

In this case you have to boot without caches and Clover will Force load this kext for patching.

 

The patching method is updated in rev 3256. Now it should work fine.



#49
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

Arbitrary device injection.

 

Since rev 3262 I propose new method for device properties injection. It excluded old method and is not compatible with it.

For backward compatibility old method will also work if new method is not used. Vice versa.

 

First you should look your boot.log or preboot.log (obtained by press F2 in Clover GUI). There is a list of your PCI devices.

4:432  0:000  PCI (00|00:00.00) : 8086 2E30 class=060000
4:432  0:000  PCI (00|00:02.00) : 8086 2E32 class=030000
4:432  0:000  Found GFX model=Unknown
4:432  0:000  PCI (00|00:02.01) : 8086 2E33 class=038000
4:432  0:000  PCI (00|00:1B.00) : 8086 27D8 class=040300
4:432  0:000  PCI (00|00:1C.00) : 8086 27D0 class=060400
4:432  0:000  PCI (00|01:00.00) : 10DE 01D1 class=030000
4:432  0:000  Found NVidia model=Gigabyte GeForce 7300 LE
4:432  0:000  PCI (00|00:1D.00) : 8086 27C8 class=0C0300
4:432  0:000  PCI (00|00:1D.01) : 8086 27C9 class=0C0300
4:432  0:000  PCI (00|00:1D.02) : 8086 27CA class=0C0300
4:432  0:000  PCI (00|00:1D.03) : 8086 27CB class=0C0300
4:432  0:000  PCI (00|00:1D.07) : 8086 27CC class=0C0320
4:432  0:000  PCI (00|00:1E.00) : 8086 244E class=060401
4:432  0:000  PCI (00|02:05.00) : 10EC 8167 class=020000
4:432  0:000  PCI (00|00:1F.00) : 8086 27B8 class=060100
4:432  0:000  PCI (00|00:1F.02) : 8086 27C0 class=01018F
4:432  0:000  PCI (00|00:1F.03) : 8086 27DA class=0C0500

Look, for example, line

4:432 0:000 PCI (00|02:05.00) : 10EC 8167 class=020000

This is LAN device

VendorID= 10EC - this is Realtek

DeviceID= 8167 - This is Realtek 8167/8169/8110 Gigabyte Ethernet Controller

It is located on the PCI bus (green digits)

Bus = 02

Device = 05 

Function = 00

This location will be unique for every device in your computer. You may have two equal graphics cards with the same IDs and same model. But their locations will be different.

 

We have to write into config.plist in section "Devices", array "Arbitrary" of items one per device you want to inject properties.

	<key>Devices</key>
	<dict>
		<key>Arbitrary</key>
		<array>
			<dict>
				<key>PciAddr</key>
				<string>02:05.00</string>
				<key>Comment</key>
				<string>Realtek LAN 8167</string>
				<key>CustomProperties</key>
				<array>
					<dict>
						<key>Key</key>
						<string>model</string>
						<key>Value</key>
						<string>Realtek 8169 Gigabit Ethernet Controller</string>
					</dict>
					<dict>
						<key>Key</key>
						<string>built-in</string>
						<key>Value</key>
						<data>AQAAAA==</data>
					</dict>
				</array>
			</dict>
			<dict>
				<key>PciAddr</key>
				<string>01:00.00</string>
				<key>Comment</key>
				<string>Nvidia Geforce card in PCIe slot</string>
				<key>CustomProperties</key>
				<array>
					<dict>
						<key>Key</key>
						<string>model</string>
						<key>Value</key>
						<string>Gigabyte GeForce 7300 LE</string>
					</dict>
					<dict>
						<key>Key</key>
						<string>AAPL,boot-device</string>
						<key>Value</key>
						<data>AQAAAA==</data>
					</dict>
				</array>
			</dict>
		</array>

This example for Nvidia injection is far from full working. You should look elsewhere how to do it for your case.

 

Key must be <string>

Value can be <string>, <integer> or <data>.

 

This way for card injection suppose more work then usual Inject->Nvidia=true so it will be for advanced users.

But this way advanced used can inject two similar card and set AAPL,boot-device only for one of them.

They also can inject properties for non-standard devices.

Advanced used also may not agree with Clover's injection and use his own better properties. Here you go!

 

Using this way you may use FakeID old way but it will affect only DSDT patch. 

Inject->... will not work for all devices if one Arbitrary device implemented.

AddProperies also will not work.

New way is the presence of "Arbitrary" section will cancel all device injection old way.

If "Arbitrary" section is missing then old way will work as usual.



#50
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

Non-Standard Legacy Boot Files

 
I notice one problem: slow legacy boot. Analyzing boot.log I found a reason

7:689  0:025   6: 'Legacy HD4' no file system
7:689  0:000   7: 'Data'
22:601  14:912   8: ''
22:657  0:055   9: 'EFI'

15 seconds to look into partition "Data"! Why? 
This partition on my computer formatted into exFAT file system and new Clover supported it.
But in this case I don't need such support. So I just recompiled Clover with a flag -D NO_GRUB_DRIVERS and win this 15 seconds!
 
So there are flags to manually compile own version of Clover with explanation for a what.
Example ./ebuild.sh -mc -D NO_GRUB_DRIVERS -D ONLY_SATA0
 
-mc same as -D USE_BIOS_BLOCKIO
Use LegacyBios based HD drivers (Int 13h) instead of Uefi SATA driver. In most case it works better but it is not working with DVD because of sector size.
As well it is not working on my Dell Inspiron, don't know why.
 
-D NO_GRUB_DRIVERS

Don't compile GRUB drivers. Useful for windows compiler that can't compile such sources.

 

-D NO_GRUB_DRIVERS_EMBEDDED
Don't include driver for exFAT file system which included by default.
Including this driver needed for starting Clover from such drive, like USB stick.
But I see this driver may slow down the booting and mostly not needed.
 
-D ONLY_SATA_0
If you have several HDDs but you are sure to boot only from first one then you may speedup booting by not checking other drives.
 
-D DISABLE_UDMA_SUPPORT
Some SATA controllers reported unsupported UDMA nodes.
This flags allows you to boot slowly but stable.
 
-D ENABLE_VBIOS_PATCH_CLOVEREFI
If you are using config.plist settings PatchVBios=true then you may notice it occured only after CloverGUI is loaded. Because config.plist became available only at this stage.

If you compile clover with this flag then you can get the affect much early, at the time of boot file loaded.

For those who are brave to test.

 

-D DISABLE_USB_SUPPORT

Usually boot6 compiled with USB support while boot7 without it because HDD, keyboard and mouse will be controlled by legacy BIOS INTs.

But I found for QEMU it is better to compile boot7 with USB support. Mouse will work!

 

-D ENABLE_PS2MOUSE_LEGACYBOOT

It means saving PS2 mouse state during legacy boot from Clover to legacy Windows XP.

 

-D DEBUG_ON_SERIAL_PORT

If you want to debug clover using null-modem cable connected to other computer accepting RS232 protocol this is a way for you.

As well it works in QEMU outputting results into Terminal.

 

-D DISABLE_LTO

Stop LTO optimization. The boot file will be 483k instead of 450k and probable will work for you if standard (LTO) version is not.

 

-D ENABLE_SECURE_BOOT

It produces Clover that should work with secure boot.

Apianti was a developer of it and his last words were "should work now".

 

 

-D USE_ION

Attached specific ION.efi driver for ION chipset. This driver if private and is not freely distributed.

 

-D DISABLE_USB_MASS_STORAGE

Don't disable USB as whole but disable USB stick.

 

-D ENABLE_USB_OHCI

For those who have Nforce chipset

 

-D ENABLE_USB_XHCI

It will include USB3 drivers into legacy Clover.

 

-D REAL_NVRAM

This flag will probably add support for real NVRAM (hardware NVRAM) with legacy Clover if it works.

For developers and brave testers.

 

 

Standard Clover package contains boot6 without any of these flags and

boot7 as compiled as

./ebuild.sh -mc -D DISABLE_USB_SUPPORT



#51
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 5,128 posts
  • Gender:Male
  • Location:Moscow

Reboot to Windows UEFI from Mac

 

If you successfully installed two system using my instructions at post #46 then this is for you.

Attached File  Screen Shot 2016-07-13 at 11.57.49.png   66.04KB   9 downloads

Click on restart and really restarted into Windows!

But some prerequisites.

 

1. Make Windows partition to be writable. I wrote a line into file /etc/fstab

LABEL=Windows none ntfs rw,auto,nobrowse

2. Place mach_kernel and empty folder /System/Library/CoreServices/ to the drive.

 

I am not sure if something else needed. The instruction will be corrected after a more experience.

 

In boot.log I see the follow related

4:094  0:066  Loading nvram.plist from Vol 'MacHD' - loaded, size=2053
4:104  0:009  PutNvramPlistToRtVars ...
4:104  0:000   Adding Key: BootCampHD: Size = 30, Data: 02 01 0C 00 D0 41 08 0A 00 00 00 00 01 01 06 00 02 1F 03 01 08 00 01 00 00 00 7F FF 04 00

4:104  0:000   Adding Key: efi-boot-device: String: Size = 489, Val = '<array><dict><key>MemoryType</key><integer size="64">0xb</integer><key>StartingAddress</key><integer size="64">0xffe00000</integer><key>IOEFIDevicePathType</key><string>HardwareMemoryMapped</string><key>EndingAddress</key><integer size="64">0xffefffff</integer></dict><dict><key>IOEFIDevicePathType</key><string>MediaFirmwareVolumeFilePath</string><key>Guid</key><string>2B0585EB-D8B8-49A9-8B8C-E21B01AEF2B7</string></dict><dict><key>IOEFIBootOption</key><string>HD</string></dict></array>'
4:104  0:000   Adding Key: efi-boot-device-data: Size = 48, Data: 01 03 18 00 0B 00 00 00 00 00 E0 FF 00 00 00 00 FF FF EF FF 00 00 00 00 04 06 14 00 EB 85 05 2B B8 D8 A9 49 8B 8C E2 1B 01 AE F2 B7 7F FF 04 00

4:309  0:004  GetEfiBootDeviceFromNvram:got efi-boot-device-data size=48
4:309  0:000 
4:309  0:000   efi-boot-device-data: MemoryMapped(0xB,0xFFE00000,0xFFEFFFFF)\FvFile(2B0585EB-D8B8-49A9-8B8C-E21B01AEF2B7)
4:309  0:000   BootCampHD: PcieRoot(0x0)\Pci(0x1F,0x2)\Ata(0x0)
4:309  0:000   Volume: 'PcieRoot(0x0)\Pci(0x1F,0x2)\Ata(0x0)'
4:309  0:000   LoaderPath: '<null string>'
4:309  0:000   volume: disk = PcieRoot(0x0)\Pci(0x1F,0x2)\Ata(0x0)
4:309  0:000   searching for that disk
4:309  0:000    found disk as volume 1. 'Whole Disc Boot'
4:309  0:000   searching for first entry with win loader or win partition on that disk
4:309  0:000    found loader entry 0. 'Boot Microsoft EFI boot from EFI', Volume 'EFI', '\EFI\microsoft\Boot\bootmgfw.efi'
4:309  0:000  Boot redirected to Entry 0. 'Boot Microsoft EFI boot from EFI'

We may notice next conditions:

  Usage of nvram.plist. So Clover scripts must be enabled. This is legacy Clover and I don't know if the same is possible with hardware NVRAM.

 

We see Clover successfully recognized boot entry left by Mac OS 10.7.5 to boot from bootmgfw.efi!








2 user(s) are reading this topic

0 members, 2 guests, 0 anonymous users

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