固件操作系统【免费下载链接】CloverBootloaderBootloader for macOS, Windows and Linux in UEFI and in legacy mode项目地址https://gitcode.com/gh_mirrors/cl/CloverBootloader点击查看免费下载CloverBootloader 是一个面向 macOS、Windows 和 Linux 的开源多系统引导器同时支持 UEFI 与现代 PC 的 legacy 模式能够在 Mac 或 PC 上提供接近原生 Mac 的启动体验。本文以仓库 README.md 为主线结合rEFIt_UEFI/与CloverEFI/下的源码实现系统讲解它的双模式启动架构、可定制 GUI以及从 F1 到 F12 的完整功能键速查与其底层调用链帮助你理解并高效使用 Clover 的日常调试与配置流程。一、项目定位一个支持三系统、双固件的通用引导器根据 README.md 的定位CloverBootloader 是 Bootloader for macOS, Windows and Linux in UEFI and in legacy mode即三系统覆盖可引导 macOS、Windows、Linux双引导模式支持 UEFI 引导也支持在带 UEFI 或传统 BIOS 固件的 Mac/PC 上以 legacy 模式引导跨平台硬件Mac 或 PC 均可使用。其核心引擎继承自多个成熟开源项目——README 明确指出 Clover 基于 Chameleon、rEFIt、XNU、VirtualBox 等项目并以 EDK2 最新修订版为主要基础README.md。这种站在巨人肩膀上的架构使得 Clover 既能复用 EDK2 的 UEFI 协议栈又能借鉴 Chameleon/rEFIt 的引导与 GUI 逻辑。从仓库目录结构看这一架构非常直观rEFIt_UEFI/Clover 的图形界面、平台逻辑与引导扫描代码包括Platform/ACPI 修补、启动日志、gui/菜单屏幕与主题渲染、refit/主循环与入口等CloverEFI/EDK2 派生驱动与 UEFI 模拟层如OsxEfiLdr/、OsxDxeIpl/用于在传统 BIOS 机器上模拟 UEFI 固件FileSystems/FAT、HFS、APFS通过 ApfsDriverLoader、GRUB 文件系统等驱动保证 Clover 能读取不同操作系统的引导文件Drivers/、Protocols/ATA/SATA、USB、音频等硬件驱动与 Apple 专有协议实现CloverApp/macOS 图形化配置工具与偏好设置面板用于在系统内编辑 config.plist。二、双模式启动UEFI 原生与 CloverEFI 固件模拟README 在特性清单中强调了两条并行的启动路径README.md通过 UEFI 固件直接启动机器固件本身支持 UEFI 时Clover 作为 UEFI 应用被直接加载整个引导过程运行在原生 UEFI 环境中通过 CloverEFI 进行 UEFI 固件模拟当机器只有传统 BIOSlegacy BIOS固件时Clover 会先以 legacy 方式加载自身再通过 CloverEFI/ 中的OsxEfiLdr、OsxDxeIpl、OsxDxeCore等组件在 BIOS 之上搭建一个模拟 UEFI 环境从而在没有 UEFI 的机器上也能以 UEFI 方式启动 macOS。这条模拟路径的意义在于macOS 对启动环境尤其是 NVRAM、EFI System Table、ACPI 接口有较强依赖CloverEFI 让老式 BIOS 主板也能获得接近原生 UEFI 的启动能力。仓库中OsxEfiLdr/提供 PE/COFF 镜像加载、OsxDxeIpl/负责 DXE 阶段初始化它们共同构成了这套固件模拟层。从源码结构看Clover 的图形界面与平台逻辑集中在 rEFIt_UEFI/而CloverEFI/UefiCpuPkg/、PciRootBridgeDxe/等则是 EDK2 体系下的 CPU 与 PCI 初始化驱动印证了 README 所述以 EDK2 最新修订版为主要基础的技术路线。三、可定制的图形界面GUIREADME 将 GUI 定制列为最突出的特性之一README.md主题化界面支持主题、图标、字体、背景图片、动画与鼠标指针的完整定制主题管理器与主题仓库提供主题管理能力社区主题仓库位于 CloverThemes原生屏幕分辨率GUI 直接使用显示器原生分辨率渲染Page Up / Page Down 切换分辨率在 GUI 界面按 Page Up 或 Page Down 可在可用分辨率间切换。在源码层面GUI 菜单的绘制与按键响应实现在 rEFIt_UEFI/gui/REFIT_MENU_SCREEN.cpp 中。需要说明的是从当前仓库源码看SCAN_PAGE_UP/SCAN_PAGE_DOWN分支已实现为菜单滚动UpdateScroll(SCROLL_PAGE_UP/DOWN)而原先的SetNextScreenMode()调用被注释掉REFIT_MENU_SCREEN.cpp当前源码中真正执行分辨率切换的功能键是F9调用SetNextScreenMode(1)并触发界面重绘REFIT_MENU_SCREEN.cpp。因此在实际使用中README 所述 Page Up/Down 行为与源码现状可能存在版本差异分辨率切换请以 F9 为准。此外GUI 还具备以下易用性设计均来自 README 特性清单屏幕分辨率过低导致菜单放不下时启动条目菜单自动滚动超时倒计时结束后自动启动上一次选中的启动条目减少重复按键插入 CD/DVD 后 GUI 自动刷新可通过F12随时弹出光驱。四、功能键速查表F1F12 一图掌握README 用大量篇幅列出了 GUI 中的功能键README.md这是日常调试最实用的部分。下表完整汇总其功能并给出各按键在源码中的对应实现位置按键功能按 README源码实现位置rEFIt_UEFI/gui/REFIT_MENU_SCREEN.cppF1显示多语言帮助随配置的语言设置切换SCAN_F1→MENU_EXIT_HELPL966-L968F2从 GUI 保存preboot.log启动日志SavePreBootLog true; SaveBooterLog(getCloverDir(), PREBOOT_LOG)L969-L977F3显示隐藏的启动条目SCAN_F3→MENU_EXIT_HIDE_TOGGLEL978-L980F4保存原始OEMACPI 表到/EFI/CLOVER/ACPI/originSaveOemTables()L981-L983F5测试 DSDT 修补保存全量修补后的 DSDTSaveOemDsdt(true)L984-L986F6保存显卡固件VBIOS到/EFI/CLOVER/miscegSaveFile(getCloverDir(), VBIOS_BIN, 0xc0000, 0x20000)L987-L993F7测试 HDA 音频输出同时校验启动音效SaveHdaDumpBin(); SaveHdaDumpTxt(); StartupSoundPlay(...)L1004-L1021F9切换屏幕分辨率到下一个可用模式SetNextScreenMode(1)L1028-L1033F10从 GUI 保存截图egScreenShot()L1034-L1036F11重置 NVRAMResetNvram()L1037-L1040F12弹出 CD/DVDSCAN_F12→MENU_EXIT_EJECTL1041-L1044注表中功能按 README列忠实继承 README.md 的描述源码位置用于定位实现两者在个别按键如 F2 的日志路径上以源码为准。这一整套按键的官方多语言帮助文案定义在 rEFIt_UEFI/refit/menu.cpp从帮助文本还可以读出一些 README 未展开的细节F2 保存 preboot.log 仅适用于 FAT32 分区源码帮助文本均标注 FAT32 onlyF4 / F5 的保存目标都是/EFI/CLOVER/ACPI/origin区别在于 F4 保存原始 OEM 表、F5 保存经过补丁处理的 DSDTF6 / F10 的产物统一写入/EFI/CLOVER/misc。日志与产物文件的真实落盘路径按键产物路径并非 README 中那么笼统rEFIt_UEFI/Platform/BootLog.h 给出了明确的宏定义#define PREBOOT_LOG Lmisc\\preboot.log #define LEGBOOT_LOG Lmisc\\legacy_boot.log #define DEBUG_LOG Lmisc\\debug.log也就是说F2 生成的preboot.log实际写入 Clover 所在分区通常是 ESP的EFI\CLOVER\misc\preboot.logSaveBooterLog()负责把内存中的启动日志缓冲区落盘。同理misc目录还承载debug.log调试日志与legacy_boot.log传统模式引导日志F6 的 VBIOS 与 F10 的截图也保存在这里。五、功能键背后的源码实现原理为了让上述功能键不只是黑盒快捷键下面挑三个典型按键剖析其底层实现均可直接定位到源码。1. F2preboot.log 的保存链路F2 的按键分支REFIT_MENU_SCREEN.cpp做了两件事置位SavePreBootLog标志并立即调用SaveBooterLog(self.getCloverDir(), PREBOOT_LOG)。其中PREBOOT_LOG来自 BootLog.h 的宏Lmisc\\preboot.loggetCloverDir()指向 Clover 自身所在目录即EFI\CLOVER。源码注释Jief : dont write outside SelfDir表明新版刻意把日志限制在 Clover 目录内不再回退写根目录避免污染其他分区。2. F4OEM ACPI 表的转储流程F4 调用 SaveOemTables()其转储顺序清晰地写在函数实现中通过FindAcpiRsdPtr()在BIOS 内存中查找 RSDP若处于 CloverEFI 模拟模式gFirmwareClover则保存到ACPI\origin否则仅打印到日志通过EfiGetSystemConfigurationTable()查询UEFI ACPI 2.0 系统表gEfiAcpi20TableGuid再查询UEFI ACPI 1.0 系统表gEfiAcpi10TableGuid作为兼容兜底最终把本次转储的日志追加写入ACPI\origin\DumpLog.txt。这一流程保证了无论在模拟 UEFI 还是原生 UEFI 环境下都能把主板原始的 RSDP/DSDT/FADT 等表完整留存供后续 ACPI 补丁分析使用——这正是黑苹果调试中最常用的排障手段。3. F5DSDT 补丁测试F5 调用 SaveOemDsdt(true)参数FullPatch true表示执行全量补丁。其逻辑为若ACPI\patched\下已存在用户提供的 DSDT文件名由gSettings.ACPI.DSDT.DsdtName决定则直接加载该文件否则通过GetFadt()定位 FADT从FadtPointer-Dsdt字段拿到物理 DSDT 地址输出文件为ACPI\origin\DSDT.aml与带补丁标志的DSDT-%x.aml%x为FixDsdt补丁选项值。F5 的意义在于先测试、后生效在真正把补丁写入ACPI\patched之前先在origin目录生成对照文件方便对比原始与修补后的差异。六、启动条目管理自定义条目、NVRAM 与 EFI Shell除功能键外README 还列出了几项与启动条目相关的核心能力README.md创建自定义启动条目为其他操作系统或特殊引导场景添加个性化启动项并定制其显示与参数从 GUI 创建 Clover 启动项写入 NVRAM借助 GUI 内提供的工具将 Clover 自身注册为固件启动项避免依赖手工bcfg操作从 GUI 启动 EFI 命令 shell无需外置 shell 介质直接从 GUI 进入 UEFI Shell 环境执行诊断命令。这些能力与超时后自动启动上一次选择的条目菜单在低分辨率下自动滚动等细节共同构成了 Clover 的完整交互闭环既能通过 GUI 完成日常选择与自定义也能在必要时下沉到 UEFI Shell 做底层排障。七、项目构成与构建方式从仓库布局可以清楚看到 Clover 的分层构成rEFIt_UEFI/承载核心逻辑与 GUICloverEFI/提供 UEFI 模拟与 EDK2 派生驱动FileSystems/、Drivers/、Protocols/提供文件系统与硬件驱动支持CloverApp/、CloverPackage/则面向 macOS 端的配置工具与安装包生成。构建方面仓库根目录提供了一整套开箱即用的脚本buildme主构建入口脚本负责初始化 EDK2 环境并编译 Clover 固件镜像makeall.sh批量构建多个目标平台的辅助脚本build_gcc13.sh、build_gcc14.sh针对特定 GCC 工具链版本的构建脚本buildExtras.sh、buildnasm.sh、buildmtoc.sh分别用于构建附加工具、NASM 汇编器与 mtocMach-O 转换工具等构建依赖Clover.dsc 与 Clover.fdfEDK2 平台描述文件与固件布局文件定义模块集合与固件卷FV布局。macOS 上从源码构建的完整步骤说明可参考 Build_Clover_in_Sequoia.txt。需要注意的是Clover 以 EDK2 为构建基础工具链GCC、NASM、mtoc版本需要与仓库当前要求匹配。八、开源生态与致谢README 在文档末尾列出了项目的发展脉络与归属README.md核心开发者由 Slice 主导并列出 Kabyl、usr-sse2、dmazar、vit9696、jief_machak 等大量贡献者源码致谢代码基础来源于 Intel、Apple、Oracle、Chameleon、rEFIt、XNU、VirtualBox 等项目其中以 EDK2 最新修订版为主干包与工具致谢安装包相关工作感谢 Chameleon team、crazybirdy、JrCs、chris1111 等团队与个人。这些致谢不仅是礼节性记录也真实反映了 Clover 的技术血统——GUI 框架脱胎于 rEFItEFI 模拟层建立在 EDK2 之上ACPI 修补逻辑则大量借鉴了 Chameleon 时代的实践。理解这一点有助于在阅读 rEFIt_UEFI/ 源码时快速定位设计思想的来源。结语CloverBootloader 的价值在于把macOS/Windows/Linux 三系统 UEFI/Legacy 双模式整合进一套可定制、可调试的引导方案中。对普通用户而言掌握 F1F12 功能键与/EFI/CLOVER/ACPI/origin、/EFI/CLOVER/misc等目录的产物意义就能独立完成日志导出、ACPI 表备份、DSDT 补丁测试与截图取证等日常操作对开发者而言rEFIt_UEFI/gui/REFIT_MENU_SCREEN.cpp 与 rEFIt_UEFI/Platform/AcpiPatcher.cpp 则是理解 Clover 交互与修补引擎的最佳起点。赞分享固件操作系统【免费下载链接】CloverBootloaderBootloader for macOS, Windows and Linux in UEFI and in legacy mode项目地址https://gitcode.com/gh_mirrors/cl/CloverBootloader点击查看免费下载相关推荐CloverBootloader深度解析UEFI与传统模式双启动终极指南CloverBootloader深度解析UEFI与传统模式双启动终极指南 想要在Mac、Windows和Linux系统间自由切换CloverBootload固件操作系统CloverBootloader终极指南一键实现多系统完美启动CloverBootloader终极指南一键实现多系统完美启动 你是否曾经梦想过在一台电脑上同时拥有macOS的优雅、Windows的兼容和Linux的自由固件操作系统CloverBootloader解锁多系统启动的终极指南CloverBootloader解锁多系统启动的终极指南 CloverBootloader是一款功能强大的启动管理器支持在UEFI和传统模式下引导macOS固件操作系统上一篇联想刃7000K BIOS深度解析完全掌控硬件性能的终极方案下一篇NoFences桌面分区管理工具5分钟打造整洁高效的Windows工作空间终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考