Jump to content

Clover Change Explanations


172 posts in this topic

Rev 4438

New feature for theme designers. Automatic choose "yourtheme" or "yourtheme@2x" if monitor is 2k or larger.

The criteria is ScreenHight > 1100. For example if I choose theme=metal then I will use theme from folder "metal" on monitor 1920x1080 and a theme from folder "metal@2x" on monitor 2048x1560.

So I expected our artists will prepare new copy of their themes with 2x larger pictures and fonts. It is better then scale 2x.

 

  • Like 16

Rev 4442

All Clover utility and prePane will be 64 bits since now. We are waiting 10.14 without 32 bit support.

  • Like 9
  • Thanks 2
  • Confused 1
  • Sad 1

Rev 4443 - 4444

Clover correctly recognized the name of all Mac OS series Mac OS X/OS X/macOS and type of macOS installation too.

  • Like 9
  • Thanks 2
  • Confused 1
  • 2 weeks later...

Rev 4450

 

A data leak issue was identified in the hibernation code, allowing hibernation encryption key to be passed to the system through RTC and preserved till the next hibernation without a subsequent erase. More details could be found in this message. To workaround this issue a new option enabling RTC memory erase upon waking from hibernation was added:

Boot → RtcHibernateAware = YES (BOOLEAN, off by default)

 

This option relies on a poorly documented (or rather undocumented) RTC memory access, and unspecified RTC memory layout, which is implementation-specific. While it is extremely recommended to be turned on if you rely on hibernation, it may not work on your hardware (should be fine on Ivy Bridge and newer at least), and is thus optional and disabled by default.

 

Note, that AppleRTC or FixRTC patches effectively break hibernation by reducing the available RTC memory and avoiding encryption key preservation. You should DISABLE them if you have no issues with BIOS preferences afterwards or use HibernationFixup. However, if RtcHibernateAware does not work for you, enabling AppleRTC patch and using HibernationFixup may be a safer workaround.

  • Like 15

Revision 4453

Revision 4456

Revision 4457

 

Changed the behavior of scanning default boot loader paths. Instead of being skipped they are hidden by default, pressing F3 should unhide/rehide those entries. You can create a custom entry with no path, Type-Other, and Hidden=false, to have the default boot loader path entries always appear. I didn't check to see if clover is currently one of these entries so take care that the entry is not clover and is the actual entry you wish to boot.

 

EDIT: I did not check the hidden or disabled flags when the entry is added so they were not hidden/disabled, so the real fix to this is 4457.

Edited by apianti
  • Like 4
  • 2 weeks later...

Rev 4466

Now Devices->Properties can be written into config.plist in format as DarwinDumper do

For example

  Reveal hidden contents

More detailed instructions followed.

This way we can deprecate Arbitrary section.

  • Like 8
  • Thanks 2

Rev 4468

More exact renaming Devices in DSDT and SSDT taking into account its bridge.

Example

	<key>ACPI</key>
	<dict>
		<key>RenameDevices</key>
		<dict>
			<key>_SB.PCI0.RP02.PSXS</key>
			<string>ARPT</string>
			<key>_SB.PCI0.EHC1</key>
			<string>EH01</string>
			<key>_SB.PCI0.POP2.PEGP</key>
			<string>GFX0</string>
		</dict>

Complex case such as this DSDT is also taken into account

_SB.PCI0.RP02.PSXS
We have to take into account fields like
Scope(\_SB)
{
  Device (PCI0)
  {
    Device(RP02)
    {
      Device(PSXS)  <- to patch
      {
		Method(_ON)
		{
		}
		Method(_OFF)
		{
		}

	  }
	  PSXS._ON() <- to patch
	}
	Scope(RP02)
	{
	  PSXS._OFF() <- to patch
	}
	Device(RP03)
	{
	  Device(PSXS) <- to not patch
	  {
	  }
	  PSXS._ON() <- to not patch
	}

 

  • Like 12
  • Thanks 1
  • Confused 1

REV 4476 - 4478

 

  • Added ebuild.sh option '-D NO_CLOVER_SHELL' to disable building of Clover-modified shell.  Vanilla shell lib is built for bdmesg.efi, and vanilla shell binary can be taken from edk2/ShellBinPkg (see --edk2shell option for ebuild.sh).
  • Reengineered the patch to GetBestLanguage() function found in MdePkg/Library/UefiLib so that 6 other patched sources can be eliminated.  The eliminated patched files are
    • Patches_for_EDK2/MdeModulePkg/Library/UefiBootManagerLib/BmDriverHealth.c
    • Patches_for_EDK2/MdeModulePkg/Library/UefiHiiLib/HiiString.c
    • Patches_for_EDK2/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
    • Patches_for_EDK2/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
    • Patches_for_EDK2/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c
    • Patches_for_EDK2/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c
  • Make sure to revert the removed patches in EDK2 tree to their original form.
  • Like 6

Rev 4487

Fixed a feature introduced by rev 4466.

  • Like 5

REV 4496

 

Synchronized Patches_for_EDK2 with r27233 - which resolves the problems with GetBestLanguage()/VariableGetBestLanguage()

Removed patches:

MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c

MdePkg/Include/Library/UefiLib.h

MdePkg/Library/UefiLib/UefiLib.c

and reverted MdeModulePkg/Universal/Variable/EmuRuntimeDxe/EmuVariable.c to its previous form that doesn't include this fix.

Patches_for_UDK2018 stays the same on this issue as fix was not back-ported.

 

Removed the patch to MdePkg/Include/Base.h

The only build that needs the "no MS va funcs" is clang with -target x86_64-pc-win32-macho.

So I added '-DNO_MSABI_VA_FUNCS' for the relevant toolchains in tools_def.txt (XCLANG and XCODE5).

Note that this change is only guaranteed to work with recent versions of both GCC and clang.  Some really old versions (GCC < 4.8 and clang around the time of SnowLeopard) may not work correctly.

If anyone still wants to build Clover with a really old compiler, it is their responsibility to set the correct value by either adding or removing -DNO_MSABI_VA_FUNCS as appropriate.

This change was back-ported to UDK2018 and is committed to Patches_for_UDK2018 as well as Patches_for_EDK2.

 

Also some more minor changes

Update svn:ignore and .gitignore for present-day build products.

Change a couple of makefiles in CloverEFI/BootSectors to account for previous removal of svn:executable on files in CloverEFI/BootSectors/bin (these files are committed build products of these makefiles.)

Typos in ebuild.sh.

Edited by Zenith432
  • Like 8

Rev 4504

Now clover-genconfig is able to produce all your injection keys used at last successful boot including automatic properties when inject=YES. But not including _DSM methods.

So the way is follow:

1. Boot as usual. New or old Clover revision.

2. Use new clover-genconfig to produce your current config.plist.

3. Update Clover to revision > 4500

4. Update you config.plist to switch off all injection including Graphics, Audio, LAN, USB

5. Disable all AddProperties and Arbitrary.

6. Insert new produced Device->Properties dictionary which will include all your old properties.

7. Enjoy!

  • Like 15
  • 2 weeks later...

Revision 4515

 

Revision 4450 introduced a new key (Boot → RtcHibernateAware) which improved the situation with hibernation compatibility and reduced the impact of some security issues in this process. Starting with 10.13.6 a lot of legacy code got (finally) ditched on Apple side, and some changes are necessary to get hibernation to work on hacks. Revision 4515 incorporates them in Clover.

 

Mandatory stuff:

1) Clover must be r4450 and newer

2) AptioMemoryFix must be R20 (b83c025) or newer

3) Boot → RtcHibernateAware must be set to YES

 

Some additional notes:

— Config changes (and driver updates) will benefit all the systems (starting from Yosemite if I remember correctly), not just 10.13.6

— OsxAptioFix1/2/3 will NOT work with hibernation on 10.13.6 and newer, and they may be removed from the default Clover installer in the future (time to upgrade).

— If you can boot with AppleRTC/FixRTC patches OFF without BIOS settings reset, disable them, they break stuff in macOS  

— If you have to use HibernationFixup, you may want to update it to 1.2.1, currently only available from source.

 

Last, but not least:

If Hibernation does not work for you… well, RIP. Believe me or not, but it is not something you should rely on. Especially if you care about security and privacy of your data.

  • Like 11
  • Sad 1

Rev 4514-4517

Mojave compatibility by PMheart

 

Rev 4518

Menu for DSDT name choice

2018-06-06_07-53-52.png

  • Like 10

Rev 4538

dont check xcode version, assume it is greater then 4

 

Old scripts contain check for Xcode4 and perform some actions for it.

But I think it is not good way. If you have Xcode4 which is for 10.7.5 which is last system for GMA950 for example then you have to use GCC.

The problem is Xcode10 which will not work in scripts before 4537.

  • Like 2

Rev 4540

New driver developed by savvas https://github.com/acidanthera/ApfsSupportPkg/

You may exclude private apfs.efi from drivers64UEFI folder and place here the driver ApfsDriverLoader.efi.

It performs loading the driver from APFS container by DiskIO protocol.

The driver is open source but located not in Clover repository and at link above. It contains macbuild.tool for those who want to compile by himself.

  • Like 16

Rev 4542

Excluded mtoc binary file from Clover repo.

You already have it in

/usr/local/bin/mtoc.NEW

If not then compile it by the script ./buildmtoc.sh it works good and fast.

  • Like 3

Rev 4543

 

Removed patch for MdePkg/Include/X64/ProcessorBind.h.

 

File edk2/MdePkg/Include/X64/ProcessorBind.h should be manually reverted in edk2 tree.

 

This enables

#pragma GCC visibility push("hidden")

 

for clang.  I found it reduces code size by about 9K for XCODE8 build of BOOTX64.efi.  With it XCODE8 BOOTX64.efi is only 1K bigger than XCODE5 BOOTX64.efi.

 

Size reduction is because the compiler no longer uses GOT to access external symbols.  It is not necessary to use GOT when there's no dynamic linking.

 

This pragma is suppressed in LTO builds using a macro USING_LTO because it disrupts LTO build if module entry points are hidden.  Nevertheless, LTO makes the GOT loads go away due to the combining of all C source files into one compilation unit for LTO.

 

I made use of USING_LTO consistent across tools_def.txt and all module inf files that modify LTO setting.

 

XCODE5 and XCODE8 don't use LTO because it increases code size.

GCC uses LTO on all modules because it works and decreases code size.

Edited by Zenith432
  • Like 3

Rev 4550

Drivers AptioMemoryFix and ApfsDriverLoader will be download from github/releases automatically during build

  -> Downloading AptioFix version R21...
  -> Downloading ApfsSupport version 1.0.2...
  -> AptioMemoryFix.efi
  -> AptioInputFix.efi
  -> ApfsDriverLoader.efi
Copy Applications:
  -> bdmesg.efi
Done!

If you want own compilation then use key

./ebuild.sh --no-ext

  • Like 9
  • 2 weeks later...

Rev 4560 - 4586

Debugging and correcting SVG parsing. No more.

Снимок экрана 2018-06-28 в 23.52.06.png

  • Like 7
  • Thanks 1
  • 2 weeks later...

Rev 4599

Vector fonts support.

 

Tested all procedures to use fonts. Now we have to write GUI with svg images and fonts.

This font named "DragonIsComing" free for personal use.

Снимок экрана 2018-07-13 в 17.50.41.png

 

There was a mistake in original font with zero width of letter "o". I corrected manually in svg file.

And I don't know why "o" have no hole. Is it designed or still clover mistake.

 

EDITED: Holes corrected in 4607.

  • Like 6
  • Thanks 1
  • Haha 1
  • 4 weeks later...

Rev 4639

New design for Clover.prefPane, CloverUpdater, Clover Package and embedded theme. By Clovy.

Снимок экрана 2018-08-08 в 21.30.48.png

  • Like 15
  • Thanks 1

Rev 4644

A possibility to choose between Light and Dark embedded themes

	<key>GUI</key>
	<dict>
		<key>Theme</key>
		<string>embedded</string>
		<key>EmbeddedThemeType</key>
		<string>Dark</string>

Possible values Dark/Light/SVG /Daytime

The result

Снимок экрана 2018-08-10 в 23.56.44.png

  • Like 17

Rev 4645

The project ApfsSupportPkg is renamed to AppleSupportPkg because of broaden functionality. By Savvas.

  • Like 5

Rev 4653

Fixed potential icon problem for apfs and hfs partition.

Clover automatically detect partition icon according to partition type.

screenshot4.thumb.png.de174e66cb28a24dcf44ee4d2f0cceb1.png

  • Like 10
  • Thanks 3