/OpenCorePkg

OpenCore front end

Primary LanguageCBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Additional features/changes implemented by this fork Build Status

[ Multi-Boot ]

     - ACPI patches and Booter Quirks are optional for non macOS with setting ACPI->Quirks->EnableForAll / Booter->Quirks->EnableForAll to yes (default is no).
     - SMBIOS and Device Properties patches will only applied to macOS.

[ Hotkeys ]

     - Full functional Hotkeys [1-9] corresponding to Boot Entry's Index number and dedicated W (Windows) / X (macOS) keys can be used without seeing Boot Picker. While in boot picker, F10 can use to take a snapshot of the screen.

[ Ui Boot Picker ]

      - Mouse support.
      - Bios Date/time, auto boot to the same OS or manual set to always boot one OS mode, and OC version are displayed in boot picker.
      - Auto boot to previous booted OS (if Misc->Security->AllowSetDefault is NO/false).
      - macOS Recovery/Tools Entries are hidden by default, use Spacebar/Mouse ClickRight in Boot Menu as a toggle on/off to show/hide hidden entries.

[ Custom Entries ]

      - Custom entries are now listed first in picker menu and by the orders they are appeared in Misc->Boot->Entries, before all other entries.
      - Ability to change entry name found by auto scanner by adding custom entry with the exact same device path, this will give users the option to complete change how all boot entries listed in Boot Picker.

[ Others ]

      - No verbose apfs.efi driver loading (if using apfs.efi instead of ApfsDriverLoader.efi).
      - ndk-macbuild.tool script are set to compile with latest edk2 (One can easily set to stable edk2 if prefer).

Usage:

  • To build OpenCore, run "./ndk-macbuild.tool" at Terminal (require Xcode and Xcode Command Line Tool installed, and open xcode to accept license agreement before compiling).

N-D-K fork discussion:

InsanelyMac.com in English

OpenCore bootloader with development SDK.

Discussion

Libraries

This repository also contains additional UEFI support common libraries shared by other projects in Acidanthera. The primary purpose of the library set is to provide supplemental functionality for Apple-specific UEFI drivers. Key features:

  • Apple disk image loading support
  • Apple keyboard input aggregation
  • Apple PE image signature verification
  • Apple UEFI secure boot supplemental code
  • Audio management with screen reading support
  • Basic ACPI and SMBIOS manipulation
  • CPU information gathering with timer support
  • Cryptographic primitives (SHA-256, RSA, etc.)
  • Decompression primitives (zlib, lzss, lzvn, etc.)
  • Helper code for ACPI reads and modifications
  • Higher level abstractions for files, strings, UEFI variables
  • Overflow checking arithmetics
  • PE image loading with no UEFI Secure Boot conflict
  • Plist configuration format parsing
  • PNG image manipulation
  • Text output and graphics output implementations
  • XNU kernel driver injection and patch engine

Early history of the codebase could be found in AppleSupportPkg and PicoLib library set by The HermitCrabs Lab.

OcGuardLib

This library implements basic safety features recommended for the use within the project. It implements fast safe integral arithmetics mapping on compiler builtins, type alignment checking, and UBSan runtime, based on NetBSD implementation.

The use of UBSan runtime requires the use of Clang compiler and -fsanitize=undefined argument. Refer to Clang documentation for more details.

Credits