diff --git a/README.md b/README.md index 7437c58..5160cb4 100644 --- a/README.md +++ b/README.md @@ -803,14 +803,14 @@ Mainly relevant for Virtual Machines, legacy Macs and FileVault users. leave eve

Quirks

-Relating to quirks with the UEFI environment, leave everything here as default as we have no use for these quirks: +Relating to quirks with the UEFI environment, leave everything here as default as we have no use for these quirks.

ReservedMemory

Used for exempting certain memory regions from OSes to use, mainly relevant for Sandy Bridge iGPUs or systems with faulty memory. Use of this quirk is not covered in this guide. We also won't be needing it anyways, safely ignore.
-

Congratulations! You've built your EFI image!

+

Congratulations! You've configured your Config.plist!

diff --git a/docs/docs/04-Configs/01-VMCascadeLake/00-Introduction.md b/docs/docs/04-Configs/01-VMCascadeLake/00-Introduction.md index 55d9338..e139466 100644 --- a/docs/docs/04-Configs/01-VMCascadeLake/00-Introduction.md +++ b/docs/docs/04-Configs/01-VMCascadeLake/00-Introduction.md @@ -8,4 +8,24 @@ nav_order: 1

-

\ No newline at end of file +

+ +# Introduction / Overview +#### Download the following tools needed for modifications. + +| Tool | Status | Description | +| ----- | ----- | ----- | +| [Python](https://www.python.org/downloads/) | Required | Needed as a dependency. | +| [ProperTree](https://github.com/corpnewt/ProperTree) | Required | Software that required Python, provides GUI and Tools for config.plist | +| [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) | Required | Must generate clean SMBIOS information for iServices | +| [DarwinOCPkg](https://github.com/royalgraphx/DarwinOCPkg/blob/main/Docs/Sample.plist) | Required | Need Docs/Sample.plist renamed to config.plist in OC folder. | + +We'll first need a valid Python installation on our host. Don't forget to add Python to PATH. If for whatever reason you missed the option, restart the installer and select "Add to PATH". You'll then need to get your hands on ProperTree. + +This will allow you to use tools like "OC Clean Snapshot" which will scan your OC folder and add the various files to your config.plist automatically and in the correct order. This is especially true when dealing with kext loading order. Essentially, you cannot load a dependency before the main Kext that needs it, is loaded... so to make sure we don't run into any issues we use the officially recommended method of OC Clean Snapshot and regular OC Snapshot when updating things in our folders. + +GenSMBIOS will be very important because the Sample.plist does not contain any serial number. Meaning you cannot log into iServices until you properly generate MacPro7,1 SMBIOS information and use that on your config.plist + +Of course, the repository includes a custom Sample.plist that has been cleaned up and peer-reviewed for the proper configuration needed for QEMU/KVM. There is still a Config guide you must follow for the Virtual Machine platform, but it will do the same thing as the main Dortania guide Configs: teach you what makes your hack work. + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/04-Configs/01-VMCascadeLake/01-ACPI.md b/docs/docs/04-Configs/01-VMCascadeLake/01-ACPI.md index f0d7c68..e7613c0 100644 --- a/docs/docs/04-Configs/01-VMCascadeLake/01-ACPI.md +++ b/docs/docs/04-Configs/01-VMCascadeLake/01-ACPI.md @@ -4,4 +4,28 @@ title: Part 1 - ACPI parent: Virtual Machine Cascade Lake grand_parent: Configs nav_order: 2 ---- \ No newline at end of file +--- + +# ACPI + +

+ +

+ +## Add + +This section of the config is meant to expose the various ACPI in your OC folder. This along with many of the other sections will be auto-filled by simply going to ``File -> OC Clean Snapshot`` and going to the OC folder in your OpenCore.img mount point. + +## Delete + +This blocks certain ACPI tables from loading, for us, we can ignore this. + +## Patch + +This section allows us to dynamically modify parts of the ACPI (DSDT, SSDT, etc.) via OpenCore. For us, our patches are handled by our SSDTs. This is a much cleaner solution as this will allow us to boot Windows and other OSes with OpenCore for dual or multi-boot configurations. + +## Quirks + +For settings relating to ACPI, leave everything here as default as we have no use for these quirks. + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/04-Configs/01-VMCascadeLake/02-Booter.md b/docs/docs/04-Configs/01-VMCascadeLake/02-Booter.md index 0136a1d..f945cb0 100644 --- a/docs/docs/04-Configs/01-VMCascadeLake/02-Booter.md +++ b/docs/docs/04-Configs/01-VMCascadeLake/02-Booter.md @@ -4,4 +4,31 @@ title: Part 2 - Booter parent: Virtual Machine Cascade Lake grand_parent: Configs nav_order: 3 ---- \ No newline at end of file +--- + +# Booter + +

+ +

+ +## MmioWhitelist + +This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with DevirtualiseMmio. We can ignore this for our Virtual Machine use cases generally. + +## Patch + +This contains general patches, for us, we can ignore this. + +## Quirks + +Don't skip over this section, we'll be changing the following: + +| Quirk | Value | Description | +| ----- | ----- | ----- | +| EnableWriteUnprotector | False | This quirk and RebuildAppleMemoryMap can commonly conflict, recommended to enable the latter on newer platforms and disable this entry. | +| RebuildAppleMemoryMap | True | Rebuilds the memory map to a macOS-compatible one. | +| SetupVirtualMap | False | Fixes SetVirtualAddresses calls to virtual addresses, VMs don't require it. | +| SyncRuntimePermissions | True | Fixes MAT table alignment and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for RebuildAppleMemoryMap users. | + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/04-Configs/01-VMCascadeLake/03-DeviceProperties.md b/docs/docs/04-Configs/01-VMCascadeLake/03-DeviceProperties.md index 2ff3a1f..4aa20e0 100644 --- a/docs/docs/04-Configs/01-VMCascadeLake/03-DeviceProperties.md +++ b/docs/docs/04-Configs/01-VMCascadeLake/03-DeviceProperties.md @@ -4,4 +4,20 @@ title: Part 3 - Device Properties parent: Virtual Machine Cascade Lake grand_parent: Configs nav_order: 4 ---- \ No newline at end of file +--- + +# Device Properties + +

+ +

+ +## Add + +This allows you to add properties to various devices using its PciRoot address. For now, and in most cases we can ignore this. An example would be: overriding an ethernet controller to appear as built-in so that macOS allows iServices to work. On Virtual Machines, we rarely have to override. + +## Delete + +This allows you to delete properties of various devices using its PciRoot address. For now, and in most cases we can ignore this. + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/04-Configs/01-VMCascadeLake/04-Kernel.md b/docs/docs/04-Configs/01-VMCascadeLake/04-Kernel.md index b0373d6..91b7e73 100644 --- a/docs/docs/04-Configs/01-VMCascadeLake/04-Kernel.md +++ b/docs/docs/04-Configs/01-VMCascadeLake/04-Kernel.md @@ -4,4 +4,59 @@ title: Part 4 - Kernel parent: Virtual Machine Cascade Lake grand_parent: Configs nav_order: 5 ---- \ No newline at end of file +--- + +# Kernel + +

+ +

+ +## Add + +This section of the config is meant to expose the various Kexts in your OC folder. This along with many of the other sections will be auto-filled by simply going to ``File -> OC Clean Snapshot`` and going to the OC folder in your OpenCore.img mount point. + +## Block + +Blocks certain Kexts from loading. Not relevant for us. + +## Emulate + +Needed for spoofing unsupported CPUs like Pentiums and Celerons. We are already spoofing the CPU to CascadeLake in the XML, so we won't need this. + +- Cpuid1Mask: Leave this blank +- Cpuid1Data: Leave this blank + +## Force + +Used for loading Kexts off system volume, only relevant for older operating systems where certain kexts are not present in the cache, i.e IONetworkingFamily in 10.6. + +For us, we can ignore. + +## Patch + +Patches both the kernel and Kexts. I've gone ahead and incorporated CaseySJ's PCI Bus Enumeration fix on KVM. For us, we can ignore this section. + +## Quirks + +Don't skip over this section, we'll be changing the following: + +| Quirk | Value | Description | +| ----- | ----- | ----- | +| ForceSecureBootScheme | True | Forces the x86 scheme for IMG4 verification in Apple Secure Boot initialization. | +| PanicNoKextDump | True | Allows for reading kernel panics logs when kernel panics occur. | +| PowerTimeoutKernelPanic | True | Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. | +| ProvideCurrentCpuInfo | True | Provides current CPU info to the kernel. This quirk works differently depending on the CPU: For KVM and other hypervisors it provides precomputed MSR 35h values solving kernel panic with ``-cpu host``. | + +## Scheme + +Settings related to legacy booting, but we can change the following. + +| Key | Type | Value | +| ----- | ----- | ----- | +| CustomKernel | Boolean | False | +| FuzzyMatch | Boolean | False | +| KernelArch | String | x86_64 | +| KernelCache | String | Prelinked | + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/04-Configs/01-VMCascadeLake/05-Misc.md b/docs/docs/04-Configs/01-VMCascadeLake/05-Misc.md index 3272a10..fe136b7 100644 --- a/docs/docs/04-Configs/01-VMCascadeLake/05-Misc.md +++ b/docs/docs/04-Configs/01-VMCascadeLake/05-Misc.md @@ -4,4 +4,60 @@ title: Part 5 - Misc parent: Virtual Machine Cascade Lake grand_parent: Configs nav_order: 6 ---- \ No newline at end of file +--- + +# Misc + +

+ +

+ +## BlessOverride + +To be filled with plist string entries containing absolute UEFI paths to customised bootloaders such as \EFI\debian\grubx64.efi for the Debian bootloader. We do nothing here, nor will we ever. + +## Boot + +Don't skip over this section, we'll be changing the following: + +| Key | Type | Value | +| ----- | ----- | ----- | +| HideAuxiliary | Boolean | True | +| PollAppleHotKeys | Boolean | True | + +## Debug + +Helpful for debugging OpenCore boot issues. +Don't skip over this section, we'll be changing the following: + +| Key | Type | Value | +| ----- | ----- | ----- | +| Target | Number | 67 | + +## Entries + +Used for specifying irregular boot paths that can't be found naturally with OpenCore. We do nothing here, nor will we ever. + +## Security + +Security is pretty self-explanatory, do not skip. We'll be changing the following: + +{: .warning } +Optional is a word, you must type it out. It IS case-sensitive. + +| Key | Type | Value | +| ----- | ----- | ----- | +| AllowSetDefault | Boolean | True | +| ExposeSensitiveData | Number | 15 | +| ScanPolicy | Number | 0 | +| Vault | String | Optional | + +## Serial + +Used for serial debugging (Leave everything as default). + +## Tools + +This section of the config is meant to expose the various Tools in your OC folder. This along with many of the other sections will be auto-filled by simply going to ``File -> OC Clean Snapshot`` and going to the OC folder in your OpenCore.img mount point. + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/04-Configs/01-VMCascadeLake/06-NVRAM.md b/docs/docs/04-Configs/01-VMCascadeLake/06-NVRAM.md index 11e7147..dcc418a 100644 --- a/docs/docs/04-Configs/01-VMCascadeLake/06-NVRAM.md +++ b/docs/docs/04-Configs/01-VMCascadeLake/06-NVRAM.md @@ -4,4 +4,57 @@ title: Part 6 - NVRAM parent: Virtual Machine Cascade Lake grand_parent: Configs nav_order: 7 ---- \ No newline at end of file +--- + +# NVRAM + +

+ +

+ +## Add + + +{: .highlight } +7C436110-AB2A-4BBB-A880-FE41995C9F82 + +We can use this dictionary to modify boot-args. Use the chart below for various arguments that possibly be useful later in the future. For the Recovery and Installation, before the GPU passthrough, you don't need to modify this section. + +### General Boot-Args + +| boot-arg | Description | +| ----- | ----- | +| -v | This enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. | +| debug=0x100 | This disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can hopefully glean some useful info and follow the breadcrumbs to get past the issues. | +| keepsyms=1 | This is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. | + +### GPU Related Boot-Args + +| boot-arg | Description | +| ----- | ----- | +| agdpmod=pikera | Used for disabling board ID checks on some Navi GPUs (RX 5000 & 6000 series), without this you'll get a black screen. Don't use if you don't have Navi (ie. Polaris and Vega cards shouldn't use this) | +| -radcodec | Used for allowing officially unsupported AMD GPUs (spoofed) to use the Hardware Video Encoder | +| radpg=15 | Used for disabling some power-gating modes, helpful for properly initializing AMD Cape Verde based GPUs | +| unfairgva=1 | Used for fixing hardware DRM support on supported AMD GPUs | + +## Delete + +Forcibly rewrites NVRAM variables, do note that Add will not overwrite values already present in NVRAM so values like boot-args should be left alone. + +## LegacyOverwrite + +For us, we can leave it to the default value of ``False``. + +## LegacySchema + +Used for assigning NVRAM variables, used with OpenVariableRuntimeDxe.efi. Only needed for systems without native NVRAM. The values under this can be deleted safely. + +## WriteFlash + +Enables writing to flash memory for all added variables. + +| Key | Type | Value | +| ----- | ----- | ----- | +| WriteFlash | Boolean | True | + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/04-Configs/01-VMCascadeLake/07-PlatformInfo.md b/docs/docs/04-Configs/01-VMCascadeLake/07-PlatformInfo.md index 9d052cc..c4160fe 100644 --- a/docs/docs/04-Configs/01-VMCascadeLake/07-PlatformInfo.md +++ b/docs/docs/04-Configs/01-VMCascadeLake/07-PlatformInfo.md @@ -4,4 +4,66 @@ title: Part 7 - PlatformInfo parent: Virtual Machine Cascade Lake grand_parent: Configs nav_order: 8 ---- \ No newline at end of file +--- + +# Platform Info + +

+ +

+ +## Automatic + +Leave as default. + +## CustomMemory + +Can be ignored for now. Documentation in progress. + +## Generic + +At this point in the guide, you'll need to open a terminal and an instance of GenSMBIOS. Select option 1 for downloading MacSerial and Option 3 for selecting SMBIOS. For this Cascade Lake example, we'll choose the MacPro7,1 SMBIOS. + +This will give us output similar to the following: + +``` + ####################################################### + # MacPro7,1 SMBIOS Info # +####################################################### + +Type: MacPro7,1 +Serial: F0000000000M +Board Serial: F0000000000000000F +SmUUID: 90000006-3009-4004-B001-800000000008 +Apple ROM: 000000000005 + +Press [enter] to return... +``` + +To fill out the information on your config.plist, refer to the following chart to convert across. + +| GenSMBIOS | config.plist | +| ----- | ----- | +| Board Serial | MLB | +| Apple ROM | ROM | +| Type | SystemProductName | +| Serial | SystemSerialNumber | +| SmUUID | SystemUUID | + +## UpdateDataHub + +Update Data Hub fields. We can leave this default. + +## UpdateSMBIOS + +Updates SMBIOS fields. We can leave this default. + +## UpdateSMBIOSMode + +Replace the tables with newly allocated EfiReservedMemoryType. We can leave this default. + +## UseRawUuidEncoding + +Use raw encoding for SMBIOS UUIDs. We can leave this default. + +## You can now continue to the next page. diff --git a/docs/docs/04-Configs/01-VMCascadeLake/08-UEFI.md b/docs/docs/04-Configs/01-VMCascadeLake/08-UEFI.md index f34a45a..37dfd13 100644 --- a/docs/docs/04-Configs/01-VMCascadeLake/08-UEFI.md +++ b/docs/docs/04-Configs/01-VMCascadeLake/08-UEFI.md @@ -6,4 +6,46 @@ grand_parent: Configs nav_order: 9 --- -

You can now proceed to the Fetching BaseSystem section!

\ No newline at end of file +# UEFI + +

+ +

+ +## APFS + +By default, OpenCore only loads APFS drivers from macOS Big Sur and newer. If you are booting macOS Catalina or earlier, you may need to set a new minimum version/date. Not setting this can result in OpenCore not finding your macOS partition! For us, running Monterey, Ventura, or even Sonoma, we can skip this section. + +## Audio + +Related to AudioDxe settings, for us we'll be ignoring (leave as default). This is unrelated to audio support in macOS. This is mainly for adding back the Chime sound when macOS starts on bare metal situations. + +## ConnectDrivers + +Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. Leave it as default for our use case. + +## Drivers + +This section of the config is meant to expose the various Drivers in your OC folder. This along with many of the other sections will be auto-filled by simply going to ``File -> OC Clean Snapshot`` and going to the OC folder in your OpenCore.img mount point. + +## Input + +Related to boot.efi keyboard passthrough used for FileVault and Hotkey support, leave everything here as default as we have no use for these quirks. + +## Output + +Relating to OpenCore's visual output, leave everything here as default as we have no use for these quirks. + +## ProtocolOverrides + +Mainly relevant for Virtual Machines, legacy Macs and FileVault users. leave everything here as default as we have no use for these quirks. + +## Quirks + +Relating to quirks with the UEFI environment, leave everything here as default as we have no use for these quirks. + +## ReservedMemory + +Used for exempting certain memory regions from OSes to use, mainly relevant for Sandy Bridge iGPUs or systems with faulty memory. Use of this quirk is not covered in this guide. We also won't be needing it anyways, safely ignore. + +## You can now continue to the next page. \ No newline at end of file diff --git a/docs/docs/04-Configs/01-VMCascadeLake/09-Complete.md b/docs/docs/04-Configs/01-VMCascadeLake/09-Complete.md new file mode 100644 index 0000000..7ffe239 --- /dev/null +++ b/docs/docs/04-Configs/01-VMCascadeLake/09-Complete.md @@ -0,0 +1,20 @@ +--- +layout: default +title: Completion +parent: Virtual Machine Cascade Lake +grand_parent: Configs +nav_order: 10 +--- + +

+ +

+ + +

+ +

+ +

Congratulations! You've configured your Config.plist!

+ +

You can now proceed to the Fetching BaseSystem section!

\ No newline at end of file