自动化采集的黑苹果 EFI/config.plist 数据库,覆盖 Intel 2
13 代、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
| 平台 | 文件数 | 分类数 |
|------|--------|--------| | 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 |
数据库按 平台 → 世代/分类 → 文件名 三级索引,记录每个 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"
}
}
}
}| 值 | 含义 |
|---|---|
github |
来自 GitHub 开源仓库,addr 为 owner/repo |
shared |
来自本地 EFIData 压缩包,addr 为完整 URL |
unknown |
来源未能匹配(通常为重命名过程中path变化导致) |
文件:Intel-iGPU-FrameBuffer.json
收录 Intel 2~10 代共 202 款 CPU 的 PciRoot(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标准值)
通过 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秒后自动保存进度,可重复执行直到完成读取每个 config.plist 源仓库的 README,用正则提取硬件信息(主板/CPU/GPU/声卡/网卡),更新文件名中的 Unk 字段。
问题:正则过于宽松,部分字段提取到无意义文本(已由v2/v3修复)
策略:
- 主要数据源:GitHub 仓库名称(直接匹配芯片组/CPU/GPU型号,最可靠)
- 辅助数据源:README(仅提取严格格式:ALC声卡、RTL/Intel网卡、BCM/AX WiFi、UHD/HD核显)
- 对 board/cpu/gpu 字段始终覆盖(修复v1引入的垃圾名)
断点续传:EFI-Collection/_rename_v2_progress.json
检测 board/cpu/gpu 字段中的长全大写字符串(≥15字符,如 USEDISASFOLLOWS),用 repo 名重新提取覆盖。
对所有含 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\"]}')"解压 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扫描本地 plist,解析 DeviceProperties > PciRoot(0x0)/Pci(0x2,0x0),生成 Intel-iGPU-FrameBuffer.json。
缺失的 iGPU 型号(Iris650、IrisPro5200 等)使用 Dortania OpenCore 指南权威值填充。
运行:
python3 build_igpu_json.py将 EFI-Collection 中所有 plist 文件与源仓库/压缩包对应,生成 EFI-Database.json。
原理:
- GitHub 文件:从文件名
__suffix反查_log.json中的san(repo[:20])映射 - EFIData 文件:从文件名
__suffix反查压缩包名的san(basename[:20])映射
运行:
python3 build_efi_db.pypip 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 |