Skip to content

Repository files navigation

Hackintosh EFI Collection

自动化采集的黑苹果 EFI/config.plist 数据库,覆盖 Intel 213 代、AMD Zen1Zen4、主流笔记本平台,来源包括 GitHub 开源社区与本地共享资源。


文件总览

HackintoshUI/
├── EFI-Collection/               # 1219 个 config.plist(41个分类目录)
├── EFIData/                      # 本地 EFI 压缩包原始资源(324个压缩包)
├── Intel-iGPU-FrameBuffer.json   # Intel 2~10代核显 FrameBuffer 参数(202款CPU)
├── EFI-Database.json             # EFI 数据库索引(plist→源地址映射)
├── scripts/                      # 所有采集与处理脚本
│   ├── hackintosh_efi_collector.py   # GitHub API 采集器
│   ├── rename_with_readme.py         # README 解析重命名 v1
│   ├── rename_v2.py                  # 重命名 v2(repo名优先)
│   ├── rename_v3.py                  # 垃圾名清理 v3
│   ├── rename_v4.py                  # 全量补全 v4
│   ├── efidata_import.py             # 本地压缩包导入
│   ├── build_igpu_json.py            # 核显 FrameBuffer 提取
│   └── build_efi_db.py               # 数据库索引构建
└── README.md

EFI-Collection 统计

| 平台 | 文件数 | 分类数 |

|------|--------|--------| | Intel | 694 | 25 | | Laptop | 295 | 6 | | AMD | 174 | 5 | | GPU | 56 | 5 | | 合计 | 1,219 | 41 |

来源分布

来源 数量 占比
GitHub 开源仓库 812 66.6%
本地共享资源(EFIData) 228 18.7%
未匹配 179 14.7%

文件命名规则

{Platform}-{Vendor}-{Board}-{CPU}-{iGPU}-{dGPU}-{Audio}-{ETH}-{WiFi}__{repo}.plist
字段 含义 示例
Platform 平台 Intel / AMD
Vendor 主板品牌 ASUS / Gigabyte / MSI
Board 芯片组/型号 Z490 / B550MAORUS
CPU 处理器 I9-10900K / R5-5600X
iGPU 核显 UHD630 / Unk
dGPU 独显 RX6900XT / Unk
Audio 声卡 ALC1220 / Unk
ETH 有线网卡 I225 / RTL8111
WiFi 无线网卡 AX200 / BCM94360
repo 来源标识(截断20字符) Hackintosh-EFI-Z490

EFI-Database.json 格式

数据库按 平台 → 世代/分类 → 文件名 三级索引,记录每个 plist 文件的来源地址。

{
  "AMD": {
    "Zen2-Ryzen3000": {
      "AMD-ASUS-B550M-R5-3600-...__hackintosh-b550.plist": {
        "name": "AMD-ASUS-B550M-R5-3600-...__hackintosh-b550.plist",
        "type": "github",
        "addr": "user/hackintosh-b550"
      }
    }
  },
  "Intel": {
    "8th-CoffeeLake": {
      "Intel-Gigabyte-Z390-I9-9900K-...__gigabyte-z390.plist": {
        "name": "Intel-Gigabyte-Z390-I9-9900K-...__gigabyte-z390.plist",
        "type": "shared",
        "addr": "https://shared.pika.net.cn/Sources/OSImages/MacOS/EFIData/台式机EFI/技嘉主板/001/xxx.zip"
      }
    }
  }
}

type 字段说明

含义
github 来自 GitHub 开源仓库,addrowner/repo
shared 来自本地 EFIData 压缩包,addr 为完整 URL
unknown 来源未能匹配(通常为重命名过程中path变化导致)

Intel 核显 FrameBuffer 参数表

文件:Intel-iGPU-FrameBuffer.json

收录 Intel 2~10 代共 202 款 CPUPciRoot(0x0)/Pci(0x2,0x0) DeviceProperties,base64 已转为 16 进制。

{
  "i5-9600k": {
    "AAPL,ig-platform-id": "0x0300913e",
    "device-id": "0x9b3e0000",
    "igpu": "UHD630",
    "_source": "local"
  },
  "i3-2100": {
    "AAPL,snb-platform-id": "0x00030010",
    "igpu": "HD3000",
    "_source": "canonical"
  }
}

_source 值:local(本地plist精确匹配)、same-igpu(同款核显复用)、canonical(Dortania标准值)


采集脚本说明

1. hackintosh_efi_collector.py — GitHub API 批量采集

通过 GitHub Search API 按 CPU/GPU/主板关键词搜索黑苹果仓库,下载 config.plist

功能:断点续传 · 36个分类 · 1393个仓库扫描 · 861个plist采集
关键参数

TOKEN = "your_github_token"
CATEGORIES = [...]   # 36个搜索分类
BASE = "./EFI-Collection"

运行

timeout 40 python3 -u hackintosh_efi_collector.py
# 每次运行40秒后自动保存进度,可重复执行直到完成

2. rename_with_readme.py (v1) — 首次README解析重命名

读取每个 config.plist 源仓库的 README,用正则提取硬件信息(主板/CPU/GPU/声卡/网卡),更新文件名中的 Unk 字段。

问题:正则过于宽松,部分字段提取到无意义文本(已由v2/v3修复)


3. rename_v2.py — 改进版重命名

策略

  • 主要数据源:GitHub 仓库名称(直接匹配芯片组/CPU/GPU型号,最可靠)
  • 辅助数据源:README(仅提取严格格式:ALC声卡、RTL/Intel网卡、BCM/AX WiFi、UHD/HD核显)
  • 对 board/cpu/gpu 字段始终覆盖(修复v1引入的垃圾名)

断点续传EFI-Collection/_rename_v2_progress.json


4. rename_v3.py — 垃圾名专项清理

检测 board/cpu/gpu 字段中的长全大写字符串(≥15字符,如 USEDISASFOLLOWS),用 repo 名重新提取覆盖。


5. rename_v4.py — 全量最终处理

对所有含 Unk 或垃圾名的文件重新处理。综合 repo名(主)+ README(辅)双数据源。支持断点续传。

运行(需多次执行,每次40秒):

timeout 40 python3 -u rename_v4.py
# 查看进度
python3 -c "import json; p=json.load(open('EFI-Collection/_rename_v4_progress.json')); print(f'done={len(p[\"done\"])} updated={p[\"updated\"]}')"

6. efidata_import.py — 本地EFIData压缩包导入

解压 EFIData 目录下所有 zip/rar/7z/tar.gz 压缩包,提取 config.plist,按硬件信息命名后分类存入 EFI-Collection。

支持格式:zip, rar, 7z, tar.gz(依赖 libarchive-c
安装依赖

pip install libarchive-c --break-system-packages

运行

python3 efidata_import.py

7. build_igpu_json.py — 核显FrameBuffer提取

扫描本地 plist,解析 DeviceProperties > PciRoot(0x0)/Pci(0x2,0x0),生成 Intel-iGPU-FrameBuffer.json

缺失的 iGPU 型号(Iris650、IrisPro5200 等)使用 Dortania OpenCore 指南权威值填充。

运行

python3 build_igpu_json.py

8. build_efi_db.py — 数据库索引构建

将 EFI-Collection 中所有 plist 文件与源仓库/压缩包对应,生成 EFI-Database.json

原理

  • GitHub 文件:从文件名 __suffix 反查 _log.json 中的 san(repo[:20]) 映射
  • EFIData 文件:从文件名 __suffix 反查压缩包名的 san(basename[:20]) 映射

运行

python3 build_efi_db.py

快速开始

环境要求

pip install libarchive-c rarfile --break-system-packages

复现采集流程

# 1. 采集 GitHub EFI(需要 GitHub Token,重复执行直到完成)
export GITHUB_TOKEN="your_token"
while ! grep -q '"COMPLETE"' /tmp/done; do
    timeout 40 python3 scripts/hackintosh_efi_collector.py
done

# 2. 导入本地 EFIData
python3 scripts/efidata_import.py

# 3. 从 README 完善文件名(需重复执行)
for i in $(seq 1 30); do
    timeout 40 python3 scripts/rename_v4.py
done

# 4. 构建核显 FrameBuffer 表
python3 scripts/build_igpu_json.py

# 5. 构建数据库索引
python3 scripts/build_efi_db.py

硬件字段提取成功率

字段 成功率 备注
Board(主板) ~78% 从芯片组代号提取
CPU ~79% i5/i7/Ryzen等标准格式
iGPU(核显) ~76% UHD/HD/IrisXe
dGPU(独显) ~72% RX/RTX/GTX系列
Audio(声卡) ~67% ALC编号
ETH(有线网) ~52% RTL8111/I225等
WiFi(无线) ~48% 台式机通常无WiFi

参考资源

About

OpenCore 1000+ Config Collection

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages