Understanding OpenCore's Configuration File
This is not a page where you are actively doing anything, you don’t even open the configuration file at all. Your task is to simply read and understand this page before continuing. The information below in this page will explain how to use ProperTree later, to make the changes necessary to explain to OpenCore what to do, and how to do it. READING ONLY PAGE.
Let’s first go over understanding what you are looking at in the screenshot below.
What we have done in the screenshot above, is simply collapse the Root
dictionary.
We will now click on the dropdown icon, or use our right-arrow on the arrow keys to expand it.
What ProperTree, and other Property List editors are telling you, is that you are looking at a list that contains dictionaries in its Root
.
These are seen as: ACPI
, Booter
, DeviceProperties
, Kernel
, Misc
, NVRAM
, PlatformInfo
, and finally the UEFI
dictionary.
Let’s go ahead and expand the ACPI dictionary so we can talk about how to visually read Property Lists.
As shown above, you can now see that we have an ACPI dictionary that resides in the Root of the Property List. The ACPI dictionary itself contains further information in the form of entries known as children
, meaning they are underneath a dictionary, so it belongs to that parent dictionary.
To learn more about how to read this visually, we will go ahead and expand the Quirks
dictionary, that is a child
of the ACPI
dictionary.
We’ve gone ahead and highlighted the image above to clearly explain visually how to read and understand what a Key
is, and what it is doing.
-
A Key is an identifier used to label a piece of data, in whatever form it comes in.
-
The Type describes the data format of the value associated with a key.
-
The Value is the actual data or content associated with a key and is defined by its Type.
When you are not looking at ProperTree, you will find the raw text would be as follows:
<key>Quirks</key>
<dict>
<key>FadtEnableReset</key>
<false/>
<key>NormalizeHeaders</key>
<false/>
<key>RebaseRegions</key>
<false/>
<key>ResetHwSig</key>
<false/>
<key>ResetLogoStatus</key>
<true/>
<key>SyncTableIds</key>
<false/>
</dict>
As you can see, they come in pairs, where the Key
FadtEnableReset
, is a boolean
, so it simply has the associated <false/>
XML tag.
This gets more complex when we talk about numeric data in plain text, but this is a very simple way to understand how ProperTree is displaying the information visually.
Let’s bump up the difficulty and view the DeviceProperties dictionary, to view what is inside of it.
We’ve gone ahead and once again, highlighted the above image to further explain how Property Lists are structured.
-
DeviceProperties is the Dictionary we are paying attention to.
-
Add, Delete are two more dictionaries that live underneath DeviceProperties.
-
PciRoot(0x0)/Pci(0x1b,0x0) is a dictionary that lives under the
Add
dictionary.
If we take a moment to logically think about what we are telling OpenCore to do, we are specififying there are DeviceProperties
we wish to parse, we then can either Add
or Delete
device properties. From there, we must specify the PciRoot Path of the device we wish to modify, in the above example we are Add
ing properties to PciRoot(0x0)/Pci(0x1b,0x0)
. From here, we can continue to look at what we are actually asking OpenCore to inject.
- layout-id is a
Data
typeKey
that has theValue
of01000000
So, if we were to finally say in plain english what we are accomplishing in this example provided to us by Sample.plist, it is that we are asking OpenCore, to Add
a DeviceProperty
of layout-id
with the Value
equal to 01000000
, to the device located at PciRoot(0x0)/Pci(0x1b,0x0)
.
With this knowledge and understanding of ProperTree, and how Property Lists work, you can now read such information such as the following:
You can now understand, that the above screenshot is of a user looking at the Scheme
dictionary that belongs to the Kernel
dictionary of the Configuration property list.
It has children
such as CustomKernel which is a Boolean, and has the Value of False. While there are also Key
’s such as KernelArch which is is a String with the Value of x86_64.
Now that you understand the basics of navigating and understanding what you are looking at, when ProperTree has opened config.plist
, you can now actually configure the Value’s that are described to you in the following page.