# Отладка OpenCore
- Поддерживаемая версия: 0.6.9
Вам нужно выяснить, почему у вас возникают проблемы или зависания? Что ж, вы пришли по нужному адресу:
# Изменения файлов
Для начала убедитесь, что вы используете либо DEBUG
, либо NOOPT
версии OpenCore. Это предоставит больше информации, чем RELEASE
версия. Конкретные файлы, которые нужно поменять:
- EFI/BOOT/
BOOTx64.efi
- EFI/OC/Bootstrap/
Bootstrap.efi
- EFI/OC/Drivers/
OpenRuntime.efi
OpenCanopy.efi
(если вы используете это)
- EFI/OC/
OpenCore.efi
- Примечание: Как правило, лучше всего отлаживать системы без OpenCanopy, если он требуется, убедитесь, что этот файл взят из DEBUG версии, в противном случае отладочной информации практически не будет.
# Изменения в конфигурационном файле
Затем, перейдите к своему config.plist и найдите раздел Misc
, у нас есть пара записей, с которыми мы хотим поиграть здесь:
# Misc
Здесь мы хотим включить следующее:
AppleDebug: YES
- Предоставляет гораздо больше отладочной информации, относящейся к boot.efi, а также сохраняет логи на диск.
ApplePanic: YES
- Позволяет хранится логам паники ядра на диске, настоятельно рекомендуется оставить
keepsyms=1
в boot-args, чтобы сохранить как можно больше информации.
- Позволяет хранится логам паники ядра на диске, настоятельно рекомендуется оставить
DisableWatchdog: YES
- Отключает сторожевой таймер (англ. watchdog) UEFI, используемый когда OpenCore останавливается на чем-то некритичном.
Target:
67
(или рассчитайте значение ниже)- Используется для включения различных уровней отладки
Значение | Комментарий |
---|---|
0x01 | Включает логирование |
0x02 | Включает вывод отладки на экран |
0x04 | Включает логирование в Data Hub. |
0x08 | Включает логирование последовательных портов. |
0x10 | Включает логирование переменных UEFI. |
0x20 | Включает логирование энергонезависимых переменных UEFI. |
0x40 | Включает логирование в файл. |
Для вычисления значения Target, мы можем использовать HEX калькулятор, а затем конвертировать в десятичное значение. Для нас, мы хотим чтобы наши значения хранились в .txt файле для последующего просмотра:
0x01
— Включает логирование0x02
— Включает вывод отладки на экран- Обратите внимание, что это может сильно увеличить время загрузки на прошивках с плохой имплементацией GOP
0x10
— Включает логирование переменных UEFI.0x40
— Включает логирование в файл.
0x01
+ 0x02
+ 0x10
+ 0x40
= 0x53
0x53
конвертацией в десятичное значение становится 83
Итак, мы можем установить Misc
-> Debug
-> Target
-> 83
- DisplayLevel:
2147483714
(или рассчитайте значение ниже)- Используется для настройки того, что логируется
Значение | Комментарий |
---|---|
0x00000002 | DEBUG_WARN в DEBUG, NOOPT, RELEASE. |
0x00000040 | DEBUG_INFO в DEBUG, NOOPT. |
0x00400000 | DEBUG_VERBOSE в Custom Builds. |
0x80000000 | DEBUG_ERROR в DEBUG, NOOPT, RELEASE. |
Полный список можно найти в DebugLib.h (opens new window).
Нам просто нужно следующее:
0x00000002
— DEBUG_WARN в DEBUG, NOOPT, RELEASE.0x00000040
— DEBUG_INFO в DEBUG, NOOPT.0x80000000
— DEBUG_ERROR в DEBUG, NOOPT, RELEASE.
Как и с Target
, мы используем HEX калькулятор, а затем конвертируем в десятичное значение:
0x80000042
конвертированное в десятичное Misc
-> Debug
-> DisplayLevel
-> 2147483714
После этого, ваш config.plist должен выглядеть так:
# Отключение всего логирования
Чтобы убрать всё логирование в файлы, и отладочные сообщения, просто замените все файлы на те, которые находится в RELEASE версии, как мы делали до этого в разделе File Swap
А для того, чтобы убрать запись на диск, установите следующее:
- AppleDebug =
NO
- ApplePanic =
NO
- Target =
0