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
新增話題