Jump to content

Clover Change Explanations

129 posts in this topic

Recommended Posts


Rev 3208 by Apianti

Fix enable secure boot, should work now.

Rev 3210-3214

Implemented Proportional font width.

It must be set in every theme.plist

	<string>Main metallic looking theme</string>

It will be better if CharWidth will be even value to avoid dirty.

The best if CharWidth = FontWidth - 2



Fixed width

Screen Shot 2015-05-29 at 10.06.49.png


Screen Shot 2015-05-29 at 14.47.28.png


Share this post

Link to post
Share on other sites

Rev 3222

load specific ROM for nvidia cards, ©ErmaC


Implemented a possibility to load ROM with name specific to subvendor_id

It allows to keep a database of different ROMs in one place.

For example



Rev 3222 - 3224.

Implemented NvidiaGeneric names. Idea by ErmaC.


If this true then generic name for Videocard will be used. For example instead of

Gigabyte Geforce 7300LE 

I see

NVIDIA Geforce 7300LE



Rev 3224

Implemented NvidiaSingle

If you have two cards Nvidia and wants to inject only first one :rofl:   then you can set this parameter.


Share this post

Link to post
Share on other sites

Rev 3250


New runtime variables needed for El Capitan and Yosemite.


Bit definitions are follow

For CsrActiveConfig

/* Rootless configuration flags */
#define CSR_ALLOW_UNTRUSTED_KEXTS     (1 << 0)
#define CSR_ALLOW_UNRESTRICTED_FS     (1 << 1)
#define CSR_ALLOW_TASK_FOR_PID        (1 << 2)
#define CSR_ALLOW_KERNEL_DEBUGGER     (1 << 3)
#define CSR_ALLOW_APPLE_INTERNAL      (1 << 4)
#define CSR_ALLOW_DESTRUCTIVE_DTRACE	(1 << 5) /* name deprecated */

                          CSR_ALLOW_UNRESTRICTED_FS | \
                          CSR_ALLOW_TASK_FOR_PID | \
                          CSR_ALLOW_KERNEL_DEBUGGER | \
                          CSR_ALLOW_APPLE_INTERNAL | \
                          CSR_ALLOW_UNRESTRICTED_DTRACE | \

For example bit 0 (value 0x01) allows to use unsigned kexts from /Library/Extensions folder.


For BooterConfig there are flags

/* Bitfields for boot_args->flags */
#define kBootArgsFlagRebootOnPanic    (1 << 0)
#define kBootArgsFlagHiDPI            (1 << 1)
#define kBootArgsFlagBlack            (1 << 2)
#define kBootArgsFlagCSRActiveConfig	(1 << 3)
#define kBootArgsFlagCSRPendingConfig	(1 << 4)
#define kBootArgsFlagCSRBoot          (1 << 5)
#define kBootArgsFlagBlackBg          (1 << 6)
#define kBootArgsFlagLoginUI          (1 << 7)

This flags is analyzed by boot.efi not by kernel and present in boot_args that read by kernel.

Yosemite kernel has follow usage of this flag

csr_get_active_config(csr_config_t *config)
	boot_args *args = (boot_args *)PE_state.bootArgs;
	if (args->flags & kBootArgsFlagCSRActiveConfig) {
		*config = args->csrActiveConfig & CSR_VALID_FLAGS;
	} else {
		/* XXX: change to 0 when <rdar://problem/16239698> is in the build */

	return 0;

Setting the bit 0x20 is equivalent to kernel flag "rootless=0" (Yosemite kernel)

	boot_args *args = (boot_args *)PE_state.bootArgs;
	if (args->flags & kBootArgsFlagCSRBoot) {
		/* special booter; allow everything */
		csr_allow_all = 1;

	int rootless_boot_arg;
	if (PE_parse_boot_argn("rootless", &rootless_boot_arg, sizeof(rootless_boot_arg))) {
		/* XXX: set csr_allow_all to boot arg value for now
		 * (to be removed by <rdar://problem/16239861>) */
		csr_allow_all = !rootless_boot_arg;
		/* if rootless=1, do not allow everything when CSR_ALLOW_APPLE_INTERNAL is set */
		csr_allow_internal &= !rootless_boot_arg;

There is still the question what is changed in El Capitan as we have no the sources.

Share this post

Link to post
Share on other sites

Rev 3262

I wish to propose new way to inject device properties.

For backward compatibility old way is still working.


New way advanced user will be able to make different injection for two graphics cards even if they are similar. It is not possible for rev

As well there is a possibility to inject properties for non-standard device (TVTuner?).


Detailed instructions will be in Clover Instructions thread ASAP.

Screen Shot 2015-08-24 at 15.42.14.png

Share this post

Link to post
Share on other sites

Rev 3264

Compatibility with new EDK2 18475 (and more?).

New compiled legacy boot tested on G41M-ES2H motherboard.


Rev 3265

Add slot name into System Profiler for HDMI device on AMD or Nvidia videocards to avoid PCI device error...

Share this post

Link to post
Share on other sites

Rev 3266

A task: Mavericks and ElCapitan use different framebuffers so ATIConnectorData must be different.

As well FakeCPUID needed for Mavericks is not needed for ElCapitan.

Users must have an ability to load different config.plist for different systems.

Moreover I may propose different configs for similar systems on different volumes.

Or just two entries with different configs without manual switch settings.

That is.

Now we can write name of config into Custom Entry (without .plist extensions!). Tested on Lion computer.

Screen Shot 2015-09-16 at 14.38.50.png

a line Settings=special mean a file special.plist which is the same as config.plist but with other values.

GUI looks like this


First entry has SubEntries with a possibility to return to common setting from common config.plist.



Choosing common or special setting I can boot same system with two different settings.

In my demo this is different VideoCard names. NvidiaGeneric=true/false


In this demo I used file special.plist.

It may be ElCapitan.plist or config-666.plist or any other to your taste.


One note, this plist should not contain sections Boot and GUI.

Share this post

Link to post
Share on other sites

Rev 3269.


I have to make one backward incompatibility with previous versions.

If you had KernelAndKextPatches section inside Custom entries then now you you follow instructions for rev 3266 and move these patches to separate config.

Else it will not work and you will have only common patches.


So KernelAndKextPatches section is in config.plist as main section and not in subsection.


It is needed as I debugged a crash in it.

PS. It also means nobody used it before ;)

Share this post

Link to post
Share on other sites

By default, when Clover scans your partitions for loaders, each volume found is checked for Linux installations. This check takes a short time, but becomes more noticeable with the more volumes you have. And using a theme with larger icons, for example BGM256, takes even longer.


Commit #3325 adds the option for you to disable the scan for Linux installations if you know you don’t have any.


To disable the scan, you can now add Linux=false to the GUI->Scan section of your config.plist.

Legacy booting now loads the GUI 2 seconds faster for me.

Share this post

Link to post
Share on other sites

Up to revision 3306 there was internationalizations.


Rev 3309

Workaround for core count calculations.


Rev 3314

Added file boot1f32 to ISO. It was not here before!


Rev 3319

As I successfully created Clang-3.8 from llvm sources I made changes to have a possibility to compile Clover by this new compiler.

Also synchronisation with recent EDK2.


Rev 3321

Add an item into Clover menu for instant set *-platform-id  which used as ig-platform-id or snb-platform-id.


Rev 3325

Speedup boot by disabling linux scan


Rev 3326

implement Function Disable


For those who knows what is it. RCBA 3418.


Rev 3327

check disabled patches, by cecekpawon

If you have many patches in config.plist then you can Enable/Disable then by one click


Rev 3328

Same for DSDT patches


Rev 3329

add switch for string injection by cecekpawon


It is added in Clover menu for easy on/off


Rev 3330

Don't dump useless OperationRegions


Rev 3333

Added support for other Intel CPU.


Rev 3334-3336

new GetBiosRegions by Rehabman


This resolves some bugs with FixRegion DSDT patch.


Rev 3338

Compatibility with recent EDK2, because of changes in Autogen.py build tool.


Rev 3348

OsxAptioFixDrv: Align the stack to a 16-byte rather than a 8-byte boundary

patch by Download-Fritz

Assuming resolved some bugs.


Rev 3350

Turbo can be disabled


It can be useful for mobile computers at hot weather.



Rev 3356

Introduce calculation for ARTFrequency used in ElCapitan and present on Skylake computers.


Rev ...-3358

I found many bugs with core count calculation and only in this revision I corrected a reason for this.

It is very old bug, at least 4 years, introduced I didn't remember where and whom.

CPUID_4 can't be used for core count calculations.


Rev 3359-3362

Resolve a  SMBIOS patching bug when OEM reused same strings.


Rev 3363

I have Clover sources on volume MacHD while work in volume ElCapitan.

This patch permit me to compile Clover from other volume.


Rev 3365-3368

Introduce new SMBIOS table type 133 to inject "platform-feature" property into registry. Used by ElCapitan.


This is integer value that should be same as in real Macs.


Rev 3369

Compatibility with Xeon E5 v4

Rev 3372

Don't create empty _DSM method if NoDefault properties set.

patch by cecekpawon


Rev 3374

A possibility to not inject ARTFrequency introduced by rev 3356 if calculated value is not good somehow


Share this post

Link to post
Share on other sites

Rev 3471


After an investigation of va_args, here's what I found


  • The difference between __builtin_va_args and __builtin_ms_va_args is that __builtin_va_args passes va_list by reference (i.e. pointer) from caller to callee when va_list is used as a function parameter.  __builtin_ms_va_args passes va_list by value (which is similar to making an implicit va_copy before passing it.)
  • The C standard allows passing va_list by either value or reference.
  • When va_list is passed by reference, calls to va_arg inside the callee change the caller's va_list.
  • The reason __builtin_va_args was failing with clang builds is due to an error in DevicePathToText.c which passes va_list twice as a parameter without va_copy.
  • I corrected this error, along with other errors in use of va_list I found.
  • As a result, it is now possible to use __builtin_va_args with clang.
  • There is a 2nd issue, which is that __builtin_ms_va_args is intended to allow ms_abi functions to pass their va_list as a parameter when calling sysv_abi functions.  This is not an issue with clang, because clang build uses ms_abi on all functions.  In gcc build, functions declared as EFIAPI are ms_abi - all others are sysv_abi.  So in gcc build, it is necessary to use __builtin_ms_va_args.
  • I set things up so clang build uses __builtin_ms_va_args for Windows64 builds on newer versions known to support these keywords.  On all other clang builds, __builtin_va_args is used.

It is now possible to build Clover with -xcode5 using versions of Xcode prior to 7.3 - as long as DevicePathToText.c is patched from Patches_for_EDK2.


Additionally, the problem of GetEfiBootDeviceFromNvram hanging was fixed in rev 3466.  In rev 3470 I added some validation checks to prevent hanging if invalid device paths are stored in nvram.

Share this post

Link to post
Share on other sites

Rev 3474 by cecekpawon

Print information line about building Clover options.


Rev 3476 

C1E fix for AMD CPU. Noted by Bronya, implemented in OpenSolaris.


Several next commits devoted to good compilation with XCODE5 toolchain.


Rev 3487 and 3514

Support for DDR4 by Joe van Tunen


Rev 3499 and 3518

Fill SMBIOS tables entries with data from MacPro3,1 if not defined by user in the case the model is not known for Clover.


Rev 3505

Link Time Optimization can be disabled for xcode5 toolset by a compile-time flag  --no-lto.

It can be needed for older Xcode versions older then 7.3.

It doesn't affect gcc compilation.

Rev 3519 by cecekpawon


Share this post

Link to post
Share on other sites

*** Rev 3327


Added example








Rev 3372

Originally NoDefaultProperties is to create (which still unknown purposes until now) an empty _DSM on each device injected from Clover. From now, we remove em all & switch this function to "SKIP injecting some default extra/additional properties" by Clover. For example, if user have NoDefaultProperties to TRUE & inject NVIDIA to TRUE, then Clover will SKIP inserting extra "connector-type" into registry. However, you still able to do this by hand with "AddProperties" entries like below:








Rev 3399

BootDisplay: To fix ugly 2nd stage boot or even black screen before login screen, we add new "BootDisplay" (a shorthand for "@x,AAPL,boot-display") property into config (value range: 0 - [totalports-1]). For years people did this job via D/SSDT / EFI Strings injections (Apple style), but no more. Before, Clover only set this properties to port 0 by default, which may lead problem if your currently active port (connected to display) other than port 0.

VideoPorts: We have now full (NVIDIA, ATI to follow) functionality to parse & set its properties dynamically from amount of display ports by user defined.

Able to inject Intel/Integrated-GPU even its not set to primary in BIOS by using blank FB (find more here).








Rev 3456

Introduced on 2012 (but seems improperly documented) to set multiple cards fixed properties. Adjust some keys + add more values like: "LoadVBios" & "VideoPorts" for each card (NVIDIA, ATI to follow).




      <string>Quadro FX 380</string>
      <string>YOUR_SECOND_CARD_SUB_ID(if necessary)</string>
      <string>ATI Radeon HD6670</string>




Rev 3490

More adjustment to batch script (wrote by @apianti, please follow this WIKI for min requirements) to compile Clover under Windows. Tested with VS2012, VS2013 & VS2015 with some additional features:




 /--------------------- [ WINDOWS BATCH SCRIPT FOR BUILDING ] ---------------------\

          .d8888b.  888      .d88888b.  888     888 8888888888 8888888b.
         d88P  Y88b 888     d88P   Y88b 888     888 888        888   Y88b
         888    Y88 888     888     888 888     888 888        888    888
         888        888     888     888 Y88b   d88P 8888888    888   d88P
         888        888     888     888  Y88b d88P  8888888    8888888P
         888    d88 888     888     888   Y88o88P   888        888 T88b
         Y88b   88P 888     Y88b. .d88P    Y888P    888        888  T88b
          Y888888P  88888888 Y8888888P      Y8P     8888888888 888   T88ba

 \------------------------------ [ Under rev: 3525 ] ------------------------------/

--usage : print this message and exit
--version : print build version and exit
-h, --help : print build help and exit

-n, --threadnumber <THREADNUMBER> : build with multi-threaded [default CPUs + 1]
-t, --tagname <TOOLCHAIN> : force to use a specific toolchain
-a, --arch <TARGETARCH> : overrides target.txt's TARGET_ARCH definition
-p, --platform <PLATFORMFILE> : build the platform specified by the DSC argument
-d, --define=<MACRO>, ex: -D ENABLE_SECURE_BOOT
-b, --buildtarget <BUILDTARGET> : using the BUILDTARGET to build the platform, or:
                        --debug : set DEBUG buildtarget
                      --release : set RELEASE buildtarget

--vbios-patch-cloverefi : activate vbios patch in CloverEFI
--only-sata0 : activate only SATA0 patch
--std-ebda : ebda offset dont shift to 0x88000
--genpage : dynamically generate page table under ebda
--no-usb : disable USB support
--mc : build in 64-bit [boot7] using BiosBlockIO (compatible with MCP chipset)

--cygwin : set CYGWIN dir (def: c:\cygwin)
--nasmprefix : set NASM bin dir (def: c:\cygwin\bin)
--pythonhome : set PYTHON dir (def: c:\Python27)
--pythonfreezer : set PYTHON Freeze dir (def: c:\Python27\Scripts)
--nobootsector : skip create Bootsector (need Cygwin)
--updtools : udate basetools binaries from repo
--updedk : update EDK source from repo
--updclover : update CLOVER source from repo
--edk2setup : using Edk2Setup.bat instead of edksetup.bat
--edk2rebuild : soft compile basetools binaries
--edk2forcerebuild : hard compile basetools binaries
--edk2reconfig : recover target.txt, tools_def.txt and build_rule.txt from template




Rev 3519

Dynamically to en/disable SSDTs (under ACPI\patched folder) injections via GUI menu (under "Tables dropping ->") / config.plist







Share this post

Link to post
Share on other sites

Rev 3536


Added F1 - Help text in the bottom left corner of GUI. Adjust within theme.plist


Added "System Variables" GUI sub menu. Contain: "BooterConfig" & "CsrActiveConfig".
Set "ExposeSysVariables" to TRUE in Config:SystemParameters to expose more. Current: "MLB", "ROM", "CustomUUID" & "InjectSystemID".


Share this post

Link to post
Share on other sites

Rev 3537


Do you like proportional fonts? Depends on...

Vertical menu looks better with constant width fonts.

Other text with proportional.

So I made questionable change that options menu will switch font to constant width with char width set in Theme.plist.

While Help, About and Boot information will be proportional or no depends on Theme.plist. In this case char width doesn't matter.


Share this post

Link to post
Share on other sites

Rev 3549


A task: I wanted to create USB stick with Windows UEFI installation. It is proposed to use on legacy PC BIOS-based so the stick is bootable by Clover.

So I took usual stick 4Gb OEM formatted to FAT32 one partition and install Clover 3543 on it. Full success! The stick is bootable and can start OSX on HDD.

There is a big problem to copy Windows distribution on it because it contains a folder BOOT/ while the stick contains file BOOT which is Clover itself. They can't live together.


The solution is to rename BOOT -> BOOT5 and replace boot sector boot1f32 by the new one boot1f5 which is the same but booting BOOT5 by default.

Installation instructions are old


Suppose your USB stick is disk3


sudo -s

dd if=/dev/rdisk3s1 count=1 bs=512 of=/tmp/origbs

cp boot1f5 /tmp/newbs
dd if=/tmp/origbs of=/tmp/newbs skip=3 seek=3 bs=1 count=87 conv=notrunc
dd of=/dev/rdisk3s1 count=1 bs=512 if=/tmp/newbs

Share this post

Link to post
Share on other sites

Rev 3561 - first Sierra compatible revision


Rev 3577

Legacy boot improvements.


Legacy boot is a process to boot OSes through 16bit instructions in real mode like it did old PC BIOS-based computer before Clover, before UEFI.

It was needed to boot Windows XP or Windows 7-32bit, old Linux or modern systems if the drive formatted to MBR Partition Table.

But Clover is already 32/64bit program working in EFI environment in protected mode. It can't get back to real mode. To do this we made a trick with loading PBR boot sector and start it in real mode.

It's a pity it is not always work because devices like SATA controller occur in undefined state. :(


There was three methods for Legacy boot before "LegacyBiosDefault", "PBRtest", "PBR" set by config.plist


"LegacyBiosDefault" assumed UEFI BIOS with CSM module capable to do LegacyBoot.

"PBR" is the most commonly used method for legacy Clover. I have one computer with PATA drive working with this method.

"PBRtest" is somehow different. May be someone will be happy with it.


Now I propose one more method "PBRsata". It is the same as "PBR" but making a SATA reset before boot. AFAIK the SATA controller is a main reason why legacy boot is not working.

Hope someone will be happy.


PS. The version is released.

Share this post

Link to post
Share on other sites

Rev 3580
make kext patches to be OS dependent, by Micky1979


Author's post  #880 

and further discussions.



Rev 3586

Bootcamp style for Clover menu

implemented by Needy

initial post   #485  

Rev 3600

Theme list scroll support


screenshot4.png screenshot5.png




Share this post

Link to post
Share on other sites

Rev 3603

Delayed preboot.log.


Before if we press F2 we immediately save preboot.log. It occured before many patches applied.

Since 3603 press F2 just remember that the log will be saved and this will occur at the OS started. Much more lines will be visible. Some lines we never saw starting Windows as full boot.log is not accessible in this operating system.


How it looks now

5:229  0:010  GUI ready
6:242  1:013  UpdateScroll on 0
9:525  3:282  ParseBootOption: invalid boot variable
9:525  0:000  BootOption of the entry is empty
9:525  0:000  StartLoader() start
9:525  0:000  Finally: Bus=200832kHz CPU=2400MHz
9:525  0:000  Loading bootmgfw.efi  status=Success
9:751  0:225  Closing events for Windows
9:751  0:000  OtherOS: Found Acpi 2.0 RSDP 0xCFB13000
9:751  0:000  RSDT at CFEE3040
9:751  0:000  XSDT at 0
9:751  0:000  FADT pointer = CFEE30C0
9:751  0:000  Removed efi-boot-device-data variable: Success
9:751  0:000  Closing log

Share this post

Link to post
Share on other sites

  • Recently Browsing   1 member

  • Similar Content

    • By fagner_sbs
      Hello! Sorry for the way of writing in English, I'm using google translator.
      I am several days trying to make my Mojave hakintosh work perfectly. However, I have reached a point where I can no longer proceed without help.
      Almost all hardawares were installed and recognized (using the clover). However, still have a panic kernel (capture attached). Every time, when connecting the MAC it restarts 2 or 3 times to be able to show the dekstop and to function normal. I also think that having problem with video graphics sometimes freezes the entire display system if video appears on a web page.
      I've attached a file with used files: clover, bios capture, complete hardware information, error capture(https://1drv.ms/u/s!AvhW45_HBY8zgfsySZPWZ-SZXFiMfA). Can someone help me?
      Mobile DualCore Intel Core i7-3537U, 2000 MHz (20 x 100), 4 threads
      Asus K46CB Series Notebook
      Intel Panther Point HM76, Intel Ivy Bridge-MB
      16269 MB  (DDR3 SDRAM)
      BIOS AMI (05/17/2013)
      Intel(R) HD Graphics 4000               
      NVIDIA GeForce GT 740M                  
    • By MikixIT
      Salve ragazzi, io ho un pc con sopra Windows e Sierra(che ho installato grazie a questo fantastico forum)
      Recenetemte ho avuto problemi con gli aggiornamenti windows 10(Che uso urgentemente per lavoro)
      E girando per i forum di Windows, ho capito che il problema era dato da un "interferenza" di clover di quando windows faceva i soliti riavvi quando aggiorna.
      Io volevo chiedere se era possibile selezionare MOMENTANAMENTE Windows come avvio primario e quindi non su clover, una sorta di bypassare clover
      e quindi il pc avvia o riavvia e va subito ad avviare windows senza passare da clover, in modo da fare aggiornare Windows e poi "RIATTIVARE" Clover esattamente come prima
      Esiste un modo di fare ciò senza perdere clover o dati etc? 
      Grazie se risponderete, buona serata ragazzi!
    • By cvad
      Small tool to download, compile and build the latest Clover X64 package.

      The script inside is editable.

      Many thanks to the comrade SunKi for help with creating the script.
      Best thanks - click "Rate File".
    • 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
         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)
      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 18A391:  For macOS Mojave or High Sierra, use macOS_iso_creator.tool on page 4 of thread.
      Good luck and enjoy
    • By Masha24
      Hi guys, I've been lurking in the shadows for months trying to learn how to hackintosh this laptop.  Perhaps if anyone has the time, I could use some help getting it to install 
      Trying to install High Sierra on this Laptop:
      Lenovo Ideapad 110-171KB-80VK (2017)
      Intel Core i5 7200U
      Intel HD 620 Graphics
      Resolution: 1600x900
      Elan PS2 Track Pad - [ACPI\VEN_ETD&DEV_0675 - system device -PCI\VEN_8086&DEV_9D23&SUBSYS_383117AA&REV_21]
      Realtek Network    - [PCI\VEN_10EC&DEV_8136&SUBSYS_383317AA&REV_07]
      Realtech audio
      SATA Controller    - [PCI\VEN_8086&DEV_9D03&SUBSYS_382F17AA&REV_21]
      USB 3.0 XHC        - [PCI\VEN_808
      --- Using Clover *
      --- I'll attach it below.
      I can't quite get it to install, and i've been going in circles for months now ...
      I'll attach everything I have so far including, verbose pics, clover preboot, Clover folder, etc.
      Here are some photos of the verbose text leading up to the installer, if maybe there is something useful in here?

      And now photos of the installer


      Above is an image of the Installer log, (the main pop up window loads from about 10 mins and stops arbitrarily at 2 minutes left, every time) of the nearly hundred attempts i have made, this is the final screen i get, pretty much no matter what i do.
      Sometimes the the order of what it says is different , but the main things of interest are:
      "Target is not convertible to APFS: This volume is not formatted as Mac OS Extended journaled."
      "Warning: Couldn't find Board ID, Chip ID, & ECID in new namespace, falling back"
      "Unable to get fs for null"
      " NO native mechanism to verify Applediagnostics.chunklist"
      " NO native mechanism to verify Installfa.plist"
      " NO native mechanism to verify Basesystem.dmg"
      " NO native mechanism to verify AppleDiagnostics.dmg"
      " NO native mechanism to verify InstallESD.dmg"
      " NO native mechanism to verify Basesystem.chumklist"
      I have tried many many ... many .. different combinations of kexts, drivers, copies of clover, forks of clover - different copies of drivers and kexts from different sources.. including from all the official repositories.
      * I am not trying to install with APFS - the drive i am using is a spinning HDD - so i don't understand the first line quote above.
      * I am using a usb2 slot - there is only two on this machine - 1- usb2 and 1- usb3
      * As you'll see in the Clover folder i'm using APFSdriverloader. - so the installer should detect the installer-APFS-thing - and see it should be HFS+ ?? no?
      I'll detail the procedures:
      I wiped the Target HDD drive with a live linux USB.
      i prepair the USB with Createinstallmedia method, install clover to the EFI on usb, load kexts and drivers (I've been recently attempting with the Plist from a 'certain other site' Ton*****86) As it has the dvmt preallocation patch and other bits - i'm of course open to ANY other files/pLists .. this is just the one i've been experimenting with lately.)
      Add ' -v ' in clover options to see the verbose output
      in the installer (acts sketchy sorta, delayed and sluggish) i use DiskUtility to erase the drive 'Macos extended journaled'
      Make initial selections, agree to license and begin install.
      it proceeds to 2 minutes left every time, and hangs. many times i've left it for hours, and even overnight.
      I'm honestly not kidding, it's nearly 100 times ive' tried this, i've downloaded high sierra from the app store 5 times to rule out that, i've used countless combinations of everything .. i'm almost completely burned out.
      If anyone can shed some light i'll be VERY thankful!... I'm ready to go in a completely new direction...please please please help
      I'll put the Clover in the next post because i ran out of space in this one......
      Here is the latest clover i've been using, with the preboot, and DSDT/SSDT (F2 & F4) in it.
      Thank you very much for ANY help you can provide