Clover - Arch Linux 中文维基

跳转到内容

# Clover

来自 Arch Linux 中文维基

相关文章

- Arch boot process
- Unified Extensible Firmware Interface
- EFI boot stub

翻译状态：

- 本文（或部分内容）译自 Clover，最近一次同步于 2026-06-26，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

Clover EFI 是一个用于在传统引导模式或 UEFI 引导模式下启动 macOS（Hackintoshes）、Windows 和 Linux 的 引导加载程序。

Clover 的主要优势有：

- 在传统 BIOS 系统上模拟 UEFI。
- 启动支持 EFI boot stub 的 Linux 内核。
- 在如今常见的宽屏上支持原生分辨率的图形界面。
- 简单易用
- 易于配置和自定义

## 支持的文件系统类型

Clover 继承了固件所支持的文件系统（例如，至少支持 FAT12、FAT16 和 FAT32），除此以外还会加载位于安装目录中的 `drivers` 子目录下的所有 UEFI 驱动（目录位置示例：`esp/EFI/clover/drivers`）[1]。

此外 Clover 也有多个EFI 文件系统驱动。

## 安装

由于 Clover 在 BIOS 系统上模拟 UEFI 环境，其在不同系统上的安装流程是类似的。

### UEFI

若直接从 UEFI 启动到一个 EFI boot stub 内核中，推荐将 EFI 系统分区挂载到 `/boot`。

然后使用 mkinitcpio 生成早期用户空间环境。

从 Clover 发布页面 上下载可引导的 Clover ISO 文件。

解压已下载的压缩文件，然后找到文件名为 `Clover-*-X64.iso` 的镜像文件，将其挂载到如 `/mnt/iso` 之类的目录下。需要注意的是，所有文件或目录名称在 Linux 中都会显示为小写字母，这和 Windows 与 Mac OS 上是不同的。

如果已按上述流程将镜像文件挂载到 `/mnt/iso` 下，请将整个 `/mnt/iso/efi` 目录复制到 EFI 系统分区中。`/boot` 目录树应该像下面这样：

    /boot/EFI
    /boot/EFI/BOOT
    /boot/EFI/CLOVER
    /boot/initramfs-linux-fallback.img
    /boot/initramfs-linux.img
    /boot/vmlinuz-linux

如果当前有其他的操作系统（例如 Windows）接管了你的 EFI 分区，不要忘记备份 EFI 分区中 `BOOT` 文件夹下的 bootx64.efi 文件。

### BIOS

注意：传统 BIOS 下依然需要使用 UEFI/GPT 分区模式，唯一的区别是需要在 EFI 系统分区上设置“Legacy BIOS Bootable”标识。

从 Clover 发布页面 上下载可引导的 Clover ISO 文件。

解压已下载的压缩文件，然后找到文件名为 `Clover-*-X64.iso` 的镜像文件，将其挂载到如 `/mnt/iso` 之类的目录下。

此时必须将 Clover 与主分区记录（MBR）和启动分区记录（PBR）合并。 以下是示例，此示例中有一个块设备 `/dev/sda`，ESP 位于其第一个分区 `/dev/sda1` 上：

    # dd if=/dev/sda1 of=/tmp/original_PBR bs=512 count=1 conv=notrunc
    # cp /mnt/iso/usr/standalone/i386/boot1f32 /tmp/new_PBR
    # dd if=/tmp/original_PBR of=/tmp/new_PBR skip=3 seek=3 bs=1 count=87 conv=notrunc
    # dd if=/tmp/new_PBR of=/dev/sda1 bs=512 count=1 conv=notrunc
    # dd if=/mnt/iso/usr/standalone/i386/boot0ss of=/dev/sda bs=440 count=1 conv=notrunc

然后将 EFI 系统分区挂载到 `/boot`。

将整个 `/mnt/iso/efi` 目录复制到 EFI 系统分区。

将传统引导加载程序复制到 EFI 系统分区中：

    # cp /mnt/iso/usr/standalone/i386/x64/boot6 /boot/boot

## 配置

Clover 的配置是通过编辑 EFI 系统分区中 `EFI/CLOVER` 目录下的 XML 文件 `config.plist` 来完成的。

各配置参数的详情请参见 Clover 的 wiki。`Volume` 应是 EFI 系统分区的 UUID 且必须大写。`Arguments` 中的 最小 initramfs `initramfs-linux.img` 和 `Path` 中的 Linux 内核可执行文件 `vmlinuz-linux` 路径都是基于 EFI 系统分区的相对路径。反斜杠应根据 EFI 标准使用。对于 `Arguments` 中的其他可用参数，请参见 EFI boot stub 和内核参数#参数列表。

下面的例子中，initramfs 和内核文件都位于 EFI 系统分区的根目录下，即 `efi` 的同一级目录，并且 EFI 系统分区挂载于 `/boot`：

    /boot/EFI/CLOVER/config.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
      <key>GUI</key>
      <dict>
        <key>Custom</key>
        <dict>
          <key>Entries</key>
          <array>
            <dict>
              <key>Arguments</key>
              <string>initrd=\initramfs-linux.img root=PARTUUID=d5d0fceb-c58e-c745-a7ff-f2f1b2824e66 rw add_efi_memmap</string>
              <key>Path</key>
              <string>\vmlinuz-linux</string>
              <key>Title</key>
              <string>Arch Linux</string>
              <key>Type</key>
              <string>Linux</string>
              <key>Volume</key>
              <string>33BA6C23-4772-294D-9053-72A49FCAEF39</string>
              <key>VolumeType</key>
              <string>Internal</string>
            </dict>
            <dict>
              <key>Arguments</key>
              <string>initrd=\initramfs-linux-fallback.img root=PARTUUID=d5d0fceb-c58e-c745-a7ff-f2f1b2824e66 rw debug add_efi_memmap</string>
              <key>Path</key>
              <string>\vmlinuz-linux</string>
              <key>Title</key>
              <string>Arch Linux Rescue Mode</string>
              <key>Type</key>
              <string>Linux</string>
              <key>Volume</key>
              <string>33BA6C23-4772-294D-9053-72A49FCAEF39</string>
              <key>VolumeType</key>
              <string>Internal</string>
            </dict>
          </array>
        </dict>
      </dict>
    </dict>
    </plist>

### 链式加载 systemd-boot

若需要一个遵守 The Boot Loader Specification 的引导加载程序，systemd-boot 可以完成这项功能。以下是一份令 Clover 链式加载 systemd-boot 的配置文件：

    /boot/EFI/CLOVER/config.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<key>Boot</key>
    	<dict>
    		<key>DefaultVolume</key>
    		<string>EFI</string>
    		<key>DefaultLoader</key>
    		<string>\EFI\systemd\systemd-bootx64.efi</string>
    		<key>Fast</key>
    		<true/>
    	</dict>
    	<key>GUI</key>
    	<dict>
    		<key>Custom</key>
    		<dict>
    			<key>Entries</key>
    			<array>
    				<dict>
    					<key>Hidden</key>
    					<false/>
    					<key>Disabled</key>
    					<false/>
    					<key>Image</key>
    					<string>os_arch</string>
    					<key>Volume</key>
    					<string>EFI</string>
    					<key>Path</key>
    					<string>\EFI\systemd\systemd-bootx64.efi</string>
    					<key>Title</key>
    					<string>Arch Linux</string>
    					<key>Type</key>
    					<string>Linux</string>
    				</dict>
    			</array>
    		</dict>
    	</dict>
    </dict>
    </plist>

## 参见

- 项目主页
- Clover Wiki

分类：​

- 启动加载程序

Clover
添加话题