...
 
Commits (15)
    https://gitcode.net/btwise/opencorepkg_mod/-/commit/4314fb31ecb974c30f99ac17db1f2b67ce1bb765 ocvalidate: Fix uninitialised variable 2024-02-08T06:40:08+00:00 Mike Beaton mjsbeaton@gmail.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/0c6e53c2d57af0c71a1fb23f01fac49e2043ff28 Merge branch 'ocv-uninit' 2024-02-08T09:16:44+00:00 Mike Beaton mjsbeaton@gmail.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/724fe0ed3b80a0cd734d6d0877251723fd3d586c Docs: Sync changelog 2024-02-08T09:20:14+00:00 Mike Beaton mjsbeaton@gmail.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/c90c3f68d21b1399c991df61284196e88156a9f1 Docs: Sync errata 2024-02-08T09:59:35+00:00 Mike Beaton mjsbeaton@gmail.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/3ade8af6a49866eeba286870ffeb84745140b6a8 Docs: typo 2024-02-08T10:35:45+00:00 Mike Beaton mjsbeaton@gmail.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/e98da99655c1f13c21af70dcaa4e79da6e50e598 Docs: Wording 2024-02-08T10:39:31+00:00 Mike Beaton mjsbeaton@gmail.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/f61841445b99f40c01af45acaa29db9cd59a81db Docs: Fix additional typo 2024-02-08T12:33:55+00:00 Mike Beaton mjsbeaton@gmail.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/11436b2507f8a50916ca88a41ef77150a87d62f6 LogoutHook: Improve logging resilience 2024-02-12T22:02:57+00:00 Mike Beaton mjsbeaton@gmail.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/32c33e96f41f0b15e89cd695b0a08a60eabd33e8 EnableGop: Update README.md wording 2024-02-15T21:10:53+00:00 Mike Beaton mjsbeaton@gmail.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/2850da906bec253f09d186c76bc66c7cc0c63c97 Merge branch 'master' of https://github.com/acidanthera/OpenCorePkg 2024-02-19T10:02:57+08:00 btwise tyq@qq.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/ac15aeb8fa064184d7ec7c6a5fdb7351ad3d55b1 update 2024-02-19T10:06:07+08:00 btwise tyq@qq.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/4d78ac9b675bb827ad0901acc410af5b0d5e0403 Merge branch 'master' of https://gitee.com/btwise/OpenCorePkg 2024-02-19T10:07:24+08:00 btwise tyq@qq.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/5132427afc853e2db68b38237b599b8dbd0250a6 LogoutHook: Update Launchd.command to support Sonoma 2024-02-27T22:59:50+00:00 Mike Beaton mjsbeaton@gmail.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/e5a3f5cdb5b4b5c9be6f5c20266434f898e1749b Merge branch 'master' of https://github.com/acidanthera/OpenCorePkg 2024-03-03T12:20:53+08:00 btwise tyq@qq.com https://gitcode.net/btwise/opencorepkg_mod/-/commit/1ee3cb75fff77a40c3ff3d7c1d70cbe21a379bbd Merge branch 'master' of https://gitee.com/btwise/OpenCorePkg 2024-03-03T12:21:52+08:00 btwise tyq@qq.com
OpenCore Changelog
==================
#### v0.9.9
- Fixed incorrect warning in ocvalidate
- Modified `Launchd.command` to recreate its log file if deleted
- Updated `Launchd.command` to work with macOS Sonoma (re-run `./Launchd.command install` after upgrading to Sonoma)
#### v0.9.8
- Updated OpenDuet to allow loading unsigned, unaligned legacy Apple images such as HfsPlusLegacy.efi
- Fixed CPU frequency calculation on AMD 10h family
......
a7fffcd9e97e508ff0f9ae096fa353f1
0e82f8fa84b37e9a8e24c31e8f824427
......@@ -7393,11 +7393,23 @@ entry is no longer present, the entry for the new OS will still be automatically
If not, it should be manually selected (at this point, \texttt{CTRL+Enter} is a good idea as any final remaining installion restarts
will be to this entry).
\emph{Note}: When using emulated NVRAM but not installing from within an existing installed macOS (i.e. when installing from
\emph{Note 1}: When using emulated NVRAM but not installing from within an existing installed macOS (i.e. when installing from
within macOS Recovery, or from an installation USB), please refer to this
\href{https://applelife.ru/posts/916248}{forum post} (in Russian)
for additional options.
\emph{Note 2}: After upgrading from an ealier macOS version to macOS Sonoma, the \texttt{Launchd.command} script should be
reinstalled, as a different strategy is required in order for NVRAM to be saved successfully.
\emph{Note 3}: In macOS Sonoma the following additional constraints apply to the ESP paritition on which
OpenCore is installed, in order for the \texttt{Launchd.command} script to work successfully:
\begin{itemize}
\tightlist
\item It must not be set to automount.
\item It must be unmounted again before shutdown or restart if it was manually mounted.
\end{itemize}
\subsection{Properties}\label{uefiprops}
\begin{enumerate}
......
\documentclass[]{article}
%DIF LATEXDIFF DIFFERENCE FILE
%DIF DEL PreviousConfiguration.tex Mon Feb 5 21:21:58 2024
%DIF ADD ../Configuration.tex Mon Feb 5 21:24:33 2024
%DIF DEL PreviousConfiguration.tex Thu Feb 8 09:16:34 2024
%DIF ADD ../Configuration.tex Tue Feb 27 22:48:30 2024
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
......@@ -7453,10 +7453,26 @@ entry is no longer present, the entry for the new OS will still be automatically
If not, it should be manually selected (at this point, \texttt{CTRL+Enter} is a good idea as any final remaining installion restarts
will be to this entry).
\emph{Note}: When using emulated NVRAM but not installing from within an existing installed macOS (i.e. when installing from
\emph{Note \DIFaddbegin \DIFadd{1}\DIFaddend }: When using emulated NVRAM but not installing from within an existing installed macOS (i.e. when installing from
within macOS Recovery, or from an installation USB), please refer to this
\href{https://applelife.ru/posts/916248}{forum post} (in Russian)
for additional options.
\DIFaddbegin
\emph{\DIFadd{Note 2}}\DIFadd{: After upgrading from an ealier macOS version to macOS Sonoma, the }\texttt{\DIFadd{Launchd.command}} \DIFadd{script should be
reinstalled, as a different strategy is required in order for NVRAM to be saved successfully.
}
\emph{\DIFadd{Note 3}}\DIFadd{: In macOS Sonoma the following additional constraints apply to the ESP paritition on which
OpenCore is installed, in order for the }\texttt{\DIFadd{Launchd.command}} \DIFadd{script to work successfully:
}
\begin{itemize}
\tightlist
\item \DIFadd{It must not be set to automount.
}\item \DIFadd{It must be unmounted again before shutdown or restart if it was manually mounted.
}\end{itemize}
\DIFaddend
\subsection{Properties}\label{uefiprops}
......
......@@ -334,6 +334,53 @@ can be found at \href{https://github.com/acidanthera/bugtracker}{Acidanthera Bug
\end{itemize}
\item
\textbf{Identifier}: \texttt{ERR088-2} \\
\textbf{Published}: 2024-02-06 13:36 GMT \\
\textbf{Updated}: 2024-02-06 13:36 GMT \\
\textbf{Affected versions}: 0.8.8+ \\
\textbf{Resolved in}: Won't fix \\
\textbf{Description}:
Some released versions of Linux kernel 6.7 and release candidates of 6.8
fail to load when using OpenDuet. This has been acccepted as a bug in the
Linux kernel, for which a fix will be released in 6.8 and backported to 6.7.
Reference:
\href{https://github.com/acidanthera/bugtracker/issues/2371#issuecomment-1929638701}{acidanthera/bugtracker\#2371}.
\textbf{Possible workarounds}:
\begin{itemize}
\tightlist
\item Use OpenDuet 0.8.7 or earlier, or wait for fixed Linux kernels to
be released.
\end{itemize}
\item
\textbf{Identifier}: \texttt{ERR098-1} \\
\textbf{Published}: 2024-02-08 09:28 GMT \\
\textbf{Updated}: 2024-02-08 09:28 GMT \\
\textbf{Affected versions}: 0.9.8 \\
\textbf{Resolved in}: 0.9.9 (\href{https://github.com/acidanthera/OpenCorePkg/commit/4314fb31ecb974c30f99ac17db1f2b67ce1bb765}{4314fb31}) \\
\textbf{Description}:
\texttt{ocvalidate} may report that \texttt{OpenVariableRuntimeDxe.efi} is
incompatible with \texttt{FirmwareSettingsEntry.efi} even when
\texttt{FirmwareSettingsEntry.efi} is not included and active in \texttt{config.plist}
\texttt{Drivers} section. Reference:
\href{https://github.com/acidanthera/bugtracker/issues/2379}{acidanthera/bugtracker\#2379}.
\textbf{Possible workarounds}:
\begin{itemize}
\tightlist
\item For 0.9.8 use version of \texttt{ocvalidate} provided in a
\href{https://github.com/acidanthera/bugtracker/issues/2379#issuecomment-1933674398}{comment}
on the above issue.
\end{itemize}
\end{itemize}
\end{document}
......@@ -18,7 +18,7 @@ EnableGop version (OpenCore version)
*Note 1*: This should provide faster GOP rendering on all EnableGopDirect systems; and rendering at least at
the same speed as before, and on some systems noticeably faster than before, on almost all EnableGop systems.
*Note 2*: The compressed driver for version 1.2 is 1KB larger than for version 1.1, so for AMD vBIOSes which are
*Note 2*: The compressed driver for version 1.2 is 1KB larger than for version 1.1, so for AMD GPU firmware which is
tight on space version 1.1 may be used instead to avoid the need for VGA stripping to make additional space.
### 1.1 (0.9.0)
......@@ -36,22 +36,23 @@ with several different GPUs, and on several MacPro4,1/5,1 machines with several
case (and still possible) scenario, an incompatible or incorrectly installed driver
in firmware may brick your hardware.
*In all cases take a backup of the main firmware or vBIOS firmware which you are modifying, and confirm that
*In all cases take a backup of the main firmware or GPU firmware which you are modifying, and confirm that
you can successfully restore from this, before starting.*
## Recovery from bricked hardware
- If attempting firmware insertion on a MacPro4,1/5,1, for recovery from a bricked device you will either
- If attempting main firmware insertion on a MacPro4,1/5,1, for recovery from a bricked device you will either
need a Matt card (which may breach intellectual property laws in some jurisdictions) or the ability to
desolder and reprogram your own NVRAM chip.
- If testing via firmware insertion on an iMac, you will need the ability to disassemble your iMac and
reprogram its NVRAM chip using a SOIC clip attached to a CH341A controller running on another computer.
- If testing via vBIOS insertion (iMac or Mac Pro), you will need the ability to disassemble your system,
likely remove the heat sink from the graphics card, and then reprogram its NVRAM chip using a SOIC
desolder and reprogram your own SPI flash chip.
- If testing via main firmware insertion on an iMac, you will need the ability to disassemble your iMac and
reprogram its SPI flash chip using a SOIC clip attached to a CH341A controller running on another computer.
- If testing via GPU firmware insertion (iMac or Mac Pro), you will need the ability to disassemble your system,
likely remove the heat sink from the graphics card, and then reprogram its SPI flash chip using a SOIC
clip attached to a CH341A controller running on another computer.
- If testing via vBIOS insertion, in some cases it may also be possible
to use physical electrical connection to your GPU NVRAM chip in order to boot with no graphics, then connect
to your machine with `ssh` (which must have been enabled beforehand) and reprogram the GPU NVRAM. Advice on
this is not provided here, but may be found for instance on the iMac GPU related forum threads listed below.
- If testing via GPU firmware insertion, in some cases it may also be possible
to use physical electrical connection to your GPU in order to enable booting with no graphics even though the GPU
is present, then connect to your machine with `ssh` (which must have been enabled beforehand) and reprogram the GPU
firmware. Advice on this headless boot approach is not provided here, but may be found for instance on the iMac GPU
related forum threads listed below.
*If you are not familiar with the above procedures, you are strongly recommended to wait for further testing by
users who are. No further help can be provided here, and you proceed entirely at your own risk.*
......@@ -62,16 +63,17 @@ OpenCore needed for pre-boot graphics support with non-natively supported GPUs.
The requirements for using this driver are:
- EFI-era (~2009-2012) MacPro4,1/5,1 or iMac with most recent firmware.
- EFI-era (~2009-2012) MacPro4,1/5,1 or iMac with most recent main firmware.
- A GPU which does not produce native pre-boot graphics (such as native picker when pressing ALT key during boot)
before OpenCore starts (otherwise, you do not need it).
- A GPU which produces graphics when using OpenCore (this must include successfully showing the native Apple boot
picker when started via the latest version of OpenCore tool `BootKicker.efi`) (otherwise, the driver will not work).
- *Note*: If your OpenCore installation includes a required GOP driver for your graphics card (this is added
automatically on some systems by recent versions of OpenCore Legacy Patcher, as a way to enable OpenCore menu
in cards such as ex-mining GPUs), then you would also need to burn that driver to the vBIOS of your graphics
card in order to obtain pre-OpenCore graphics; instructions for this are outside the scope of this tutorial,
although the procedures required for modifying vBIOS are similar to what is covered here.
- *Note*: If your OpenCore installation includes a required GOP driver for your graphics card, then you would
also need to burn that driver to the firmware of your graphics card in order to obtain pre-OpenCore graphics;
instructions for this are outside the scope of this tutorial, although the procedures required for modifying
GPU firmware are similar to what is covered here.
Note that such a driver is added by the OCLP **Enable AMD GOP** option, which is enabled automatically on some
systems by recent versions of OpenCore Legacy Patcher, as a way to enable the OpenCore menu in cards such as ex-mining GPUs.
When installed, the driver should enable:
......@@ -87,9 +89,9 @@ directory of the OpenCore release package.
For GPUs needing `DirectGopRendering` in OpenCore configuration, use `EnableGopDirect.efi`, otherwise use `EnableGop.efi`
as it renders faster on most other systems.
The driver may be installed to vBIOS or to main firmware. It is expected that most Mac Pro users will use firmware insertion
and most iMac users will chose vBIOS insertion, however both techniques work on both systems (but it is harder to modify the
iMac firmware, since there is no simple way to enable writing to it).
The driver may be installed to GPU or main motherboard firmware. It is expected that most Mac Pro users will use main firmware insertion
and most iMac users will chose GPU firmware insertion, however both techniques work on both systems (but it is harder to modify the
iMac main firmware, since there is no simple way to enable writing to it).
Further discussion and community support for this driver is available at:
......@@ -97,14 +99,14 @@ Further discussion and community support for this driver is available at:
## Usage
## Install to firmware
## Install to main firmware
For reading and writing to firmware on the Mac Pro, @Macschrauber's [Rom Dump](https://youtu.be/yHnZeht_isU) works
For reading and writing to main firmware on the Mac Pro, @Macschrauber's [Rom Dump](https://youtu.be/yHnZeht_isU) works
well. Alternatively the kexts and executables which this uses can be sourced individually (or extracted from the Rom Dump app) and
run from the command line.
The firmware on the iMac cannot be updated without an initial hardware flash (SOIC clip plus CH341A controller), therefore
the recommended approach on iMac systems is [vBIOS injection](#install-to-vBIOS). However, the below instructions for firmware
The main firmware on the iMac cannot be updated without an initial hardware flash (SOIC clip plus CH341A controller), therefore
the recommended approach on iMac systems is [GPU firmware injection](#install-to-gpu-firmware). However, the below instructions for firmware
injection do work, if you are willing to do a hardware flash of the resulting firmware file, or if you have already
[unprotected your iMac firmware](https://forums.macrumors.com/threads/imac-2011-see-more-uefi-firmware-mod.2257435/page-3?post=31087001#post-31087001) -
which reduces security, and is only recommended for those actively developing firmware modifications.
......@@ -142,9 +144,9 @@ The end result, after saving and re-loading, should look like this:
<img src="UEFITool_Inserted_Screenshot.png">
## Install to vBIOS
## Install to GPU firmware
Instructions and a script for inserting the driver into Nvidia or AMD vBIOS are provided.
Instructions and a script for inserting the driver into Nvidia or AMD GPU firmware (aka VBIOS) are provided.
Please note all the cautions already given above about the difficulty of recovering, unless you are familiar with
the procedures necessary, if this process fails.
......@@ -152,23 +154,23 @@ the procedures necessary, if this process fails.
To use the provided `vBiosInsert.sh` script:
- Locate an appropriate version of the `nvflash` tool (Nvidia) or `amdvbflash` tool (AMD) (both are available for
Linux and Windows), which can be used to read from and write to the GPU vBIOS.
- Use that tool to read a copy of the vBIOS.
Linux and Windows), which can be used to read from and write to the GPU firmware.
- Use that tool to read a copy of the GPU firmware.
- Run `./vBiosInsertEfi.sh [-a|-n] {original}.rom EnableGop.efi {modified}.rom`, with `-a` for AMD and `-n` for Nvidia.
- The new file `{modified}.rom` may be burnt to the vBIOS firmware.
- The new file `{modified}.rom` may be burnt to the GPU firmware.
In the case of AMD, considerably less space is normally available, due to a strict limit of 128k for legacy and EFI
parts of the larger ROM image. If there is not enough space (i.e. script reports
data would be truncated) then it is necessary to [strip some legacy VGA parts of the
vBIOS](https://github.com/Ausdauersportler/IMAC-EFI-BOOT-SCREEN/wiki/Deleting-the-VGA). This is beyond the scope
GPU firmware](https://github.com/Ausdauersportler/IMAC-EFI-BOOT-SCREEN/wiki/Deleting-the-VGA). This is beyond the scope
of these instructions.
If required to manually detect the GOP offset (this should normally be autodetected):
> Using a hex editor, search in the vBIOS for the byte sequence `F1 0E 00 00` with the byte sequence `55 AA` coming
> Using a hex editor, search in the GPU firmware dump for the byte sequence `F1 0E 00 00` with the byte sequence `55 AA` coming
close before it; the start address of the `55 AA` is the GOP offset value needed.
For further information on vBIOS modification, see:
For further information on GPU firmware modification, see:
- https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/
- https://forums.macrumors.com/threads/imac-2011-maxwell-and-pascal-gpu-upgrade.2300989/
......
......@@ -6,7 +6,7 @@
<string>$LABEL</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>$LAUNCHFILE</string>
<string>$HELPER</string>
<string>$PARAM</string>
</array>
......@@ -22,5 +22,7 @@
<false/>
<key>EnableTransactions</key>
<false/>
<key>LowPriorityIO</key>
<false/>
</dict>
</plist>
......@@ -333,6 +333,7 @@ CheckUefiDrivers (
HasOpenVariableRuntimeDxeEfiDriver = FALSE;
IndexOpenVariableRuntimeDxeEfiDriver = 0;
IsOpenRuntimeLoadEarly = FALSE;
HasFirmwareSettingsEntryEfiDriver = FALSE;
for (Index = 0; Index < Config->Uefi.Drivers.Count; ++Index) {
DriverEntry = Config->Uefi.Drivers.Values[Index];
Comment = OC_BLOB_GET (&DriverEntry->Comment);
......@@ -611,31 +612,31 @@ CheckUefiOutput (
if (IsTextRendererSystem) {
ConsoleFont = OC_BLOB_GET (&Config->Uefi.Output.ConsoleFont);
if (ConsoleFont[0] != '\0') {
DEBUG ((DEBUG_WARN, "UEFI->Output->ConsoleFont is specified on non-Builtin TextRenderer (currently %a)!\n", TextRenderer));
DEBUG ((DEBUG_WARN, "在非内置文本渲染器上指定了UEFI->Output->ConsoleFont (当前为 %a)!\n", TextRenderer));
++ErrorCount;
}
} else {
IsClearScreenOnModeSwitchEnabled = Config->Uefi.Output.ClearScreenOnModeSwitch;
if (IsClearScreenOnModeSwitchEnabled) {
DEBUG ((DEBUG_WARN, "UEFI->Output->ClearScreenOnModeSwitch没有在System TextRenderer模式下启用 (当前模式为 %a)!\n", TextRenderer));
DEBUG ((DEBUG_WARN, "UEFI->Output->ClearScreenOnModeSwitch没有在System TextRenderer模式下启用 (当前为 %a)!\n", TextRenderer));
++ErrorCount;
}
IsIgnoreTextInGraphicsEnabled = Config->Uefi.Output.IgnoreTextInGraphics;
if (IsIgnoreTextInGraphicsEnabled) {
DEBUG ((DEBUG_WARN, "UEFI->Output->IgnoreTextInGraphics没有在System TextRenderer模式下启用 (当前模式为 %a)!\n", TextRenderer));
DEBUG ((DEBUG_WARN, "UEFI->Output->IgnoreTextInGraphics没有在System TextRenderer模式下启用 (当前为 %a)!\n", TextRenderer));
++ErrorCount;
}
IsReplaceTabWithSpaceEnabled = Config->Uefi.Output.ReplaceTabWithSpace;
if (IsReplaceTabWithSpaceEnabled) {
DEBUG ((DEBUG_WARN, "UEFI->Output->ReplaceTabWithSpace没有在System TextRenderer模式下启用 (当前模式为 %a)!\n", TextRenderer));
DEBUG ((DEBUG_WARN, "UEFI->Output->ReplaceTabWithSpace没有在System TextRenderer模式下启用 (当前为 %a)!\n", TextRenderer));
++ErrorCount;
}
IsSanitiseClearScreenEnabled = Config->Uefi.Output.SanitiseClearScreen;
if (IsSanitiseClearScreenEnabled) {
DEBUG ((DEBUG_WARN, "UEFI->Output->SanitiseClearScreen没有在System TextRenderer模式下启用 (当前模式为 %a)!\n", TextRenderer));
DEBUG ((DEBUG_WARN, "UEFI->Output->SanitiseClearScreen没有在System TextRenderer模式下启用 (当前为 %a)!\n", TextRenderer));
++ErrorCount;
}
}
......