菜单

OpenCore 配置

相关源文件

本文档解释了在 Docker-OSX 系统中如何配置和使用 OpenCore。OpenCore 作为 macOS 在虚拟化环境中的引导加载程序,通过使用 QEMU/KVM 虚拟化在 Docker 容器内运行操作系统。

有关与 OpenCore 配置密切相关的序列号生成信息,请参阅 序列号生成

Docker-OSX 中的 OpenCore 简介

OpenCore 是 macOS 的开源引导加载程序,通过结构化的属性列表 (plist) 文件提供了一种干净、声明式的配置方法。在 Docker-OSX 中,OpenCore 通过加载必要的驱动程序、应用补丁和配置系统参数,确保与虚拟化环境的兼容性,从而促进 macOS 的引导过程。

来源:custom/config-nopicker-custom.plist custom/opencore-image-ng.sh

OpenCore 配置结构

Docker-OSX 中的 OpenCore 配置主要基于一个自定义的 plist 文件 (`config-nopicker-custom.plist`),其中包含控制引导过程和系统功能的各种部分。

来源:custom/config-nopicker-custom.plist1-4 custom/config-nopicker-custom.plist1024-1064

配置部分详解

ACPI 配置

ACPI 部分控制系统表、设备和电源管理功能。在 Docker-OSX 中,此部分主要管理:

  • 用于硬件兼容性的 SSDT(Secondary System Description Tables)
  • ACPI 表的补丁
  • 电源管理功能

Docker-OSX 中使用的主要 SSDT 文件

SSDT 文件目的默认启用
SSDT-EC.amlmacOS 的伪造嵌入式控制器
SSDT-PLUG.amlCPU 电源管理
SSDT-DTGP.aml添加 DTGP 方法
SSDT-EHCI.amlUSB 2.0 注入

来源:custom/config-nopicker-custom.plist8-274

Kernel 配置

Kernel 部分管理 kext(内核扩展)、补丁和内核操作的 Quirks。

来源:custom/config-nopicker-custom.plist340-784

PlatformInfo 配置

PlatformInfo 部分定义了虚拟机的身份标识,包括型号类型、序列号和硬件信息,供 macOS 使用。

来源:custom/config-nopicker-custom.plist1024-1064

NVRAM 配置

NVRAM 部分配置持久化变量,这些变量控制引导行为、系统功能和传递给 macOS 内核的参数。

GUID目的
7C436110-AB2A-4BBB-A880-FE41995C9F82boot-args-v keepsyms=1 tlbto_us=0 vti=9 {{KERNEL_ARGS}}内核引导参数
7C436110-AB2A-4BBB-A880-FE41995C9F82csr-active-configZwAAAA== (0x67)系统完整性保护配置
7C436110-AB2A-4BBB-A880-FE41995C9F82prev-lang:kbdZW4tVVM6MA== (en-US:0)默认键盘布局
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14UIScaleAQ== (1)UI 缩放因子

来源:custom/config-nopicker-custom.plist937-1022

UEFI 配置

UEFI 部分配置 OpenCore 的 UEFI 环境、驱动程序和界面设置。

来源:custom/config-nopicker-custom.plist1065-1398

模板变量和自定义

Docker-OSX 使用模板系统,在 OpenCore 配置中包含占位符,这些占位符在运行时会被实际值替换。

可变描述示例值
{{DEVICE_MODEL}}macOS 设备型号标识符MacBookPro15,1
{{SERIAL}}系统序列号C02XG0FDH7JY
{{BOARD_SERIAL}}主板序列号C02839303QXH69FA8
{{UUID}}系统 UUID5CCB366D-9118-4C61-A00A-E5BAF3BED451
{{ROM}}MAC 地址(数据格式)ESIzAAAA==
{{WIDTH}}屏幕宽度(像素)1920
{{HEIGHT}}屏幕高度(像素)1080
{{KERNEL_ARGS}}额外的内核参数-framework unloadable

来源:custom/config-nopicker-custom.plist1-3 custom/config-nopicker-custom.plist1036-1052 custom/config-nopicker-custom.plist960 custom/config-nopicker-custom.plist1325

OpenCore 镜像创建

Docker-OSX 使用一个脚本 (`opencore-image-ng.sh`) 来创建 OpenCore 引导磁盘镜像(qcow2 格式)。此过程创建一个 GPT 分区的磁盘,其中包含一个 EFI 系统分区,该分区包含 OpenCore 及其配置。

来源:custom/opencore-image-ng.sh72-165

引导过程(使用 OpenCore)

当 Docker-OSX 启动时,它遵循此引导顺序:

来源:custom/opencore-image-ng.sh

常见配置技巧

调整性能

为了优化性能,请考虑以下 OpenCore 配置更改:

  1. CPU 配置:根据您的 CPU 类型调整 `Kernel > Emulate 设置。
  2. 内存分配:在 QEMU 参数中设置,不在 OpenCore 中设置。
  3. 图形性能:确保 `WhateverGreen.kext 已启用。

解决启动问题

如果遇到启动问题:

  1. 启用详细启动:确保 `-v` 在 NVRAM 设置的 `boot-args` 中。
  2. 检查 ACPI 配置是否存在冲突或缺少表。
  3. 验证您选择的 macOS 设备型号的 PlatformInfo 设置是否正确。
  4. 确保内核补丁与您的 macOS 版本匹配。

来源:custom/config-nopicker-custom.plist960

显示配置

OpenCore 的显示设置在 UEFI 部分配置,分辨率由 `{{WIDTH}}` 和 `{{HEIGHT}}` 占位符定义。

<key>Resolution</key>
<string>{{WIDTH}}x{{HEIGHT}}@32</string>

默认配置使用 OpenCanopy 提供图形化引导界面,并启用控制台 GOP(Graphics Output Protocol)以在引导过程中实现正确的显示。

来源:custom/config-nopicker-custom.plist1325

进一步自定义

对于需要对 OpenCore 配置进行更深入自定义的高级用户:

  1. 基于模板创建自定义配置文件。
  2. 挂载 OpenCore.qcow2 镜像并替换 config.plist。
  3. 使用 Docker-OSX 中的环境变量来覆盖特定设置。
  4. 要进行永久性更改,请构建自定义 Docker 镜像并包含您的修改。

请记住,广泛的自定义可能会影响与未来 Docker-OSX 更新的兼容性。