Clover
Clover EFI は、OS X (Hackintosh)、Windows、そして Linux をレガシーモードや UEFI モードでブートするために開発されているブートローダです。
Clover の主な長所は:
- レガシー BIOS システムで UEFI をエミュレートできる
- EFISTUB をサポートする Linux カーネルをブートできる
- 今日一般的に使用されている大きなスクリーンでネイティブな解像度 GUI をサポートする
- 簡単に使える
- 簡単にカスタマイズ可能
インストール
Clover は BIOS システム上で UEFI 環境をエミュレートできるので、UEFI システムと BIOS システムでの手順は似ています。
UEFI システム
EFI システムパーティションを /boot
にマウントしてください。これは、UEFI から EFISTUB カーネルを直接ブートする場合に推奨される方法です。
初期 RAM ディスク環境を mkinitcpio で生成してください。
Clover ブータブル ISO をここからダウンロードしてください。
Clover-*-X64.iso.7z
アーカイブを展開し、Clover-*-X64.iso
ファイルを見つけて、その ISO を /mnt/iso
などのようなディレクトリにマウントしてください。Windows と Mac OS と異なり、Linux では すべてのファイルとフォルダの名前が小文字で表示されることに注意してください。
/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
BIOS システム
Clover Bootable ISO をダウンロードしてください。
Clover-*-X64.iso.7z
アーカイブを展開し、Clover-*-X64.iso
ファイルを見つけて、その ISO を /mnt/iso
などのようなディレクトリにマウントしてください。
Clover コードを現在の Master と Partition Boot Records にマージしてください (ESP が /dev/sda
のパーティション 1 であると仮定しています。必要に応じて変更してください):
# 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
設定
設定は EFI システムパーティションにある EFI/CLOVER
下の XML ファイル config.plist
で行います。
config.plist
を任意の OS で簡単に編集できるツールが存在します: Cloud Clover Editor (CCE)
それぞれのキーの意味は、カスタムエントリの wiki を参照してください。Volume
キーは、EFI システムパーティションの PARTUUID である必要があり、大文字でなければなりません。Arguments
の最小 initramfs initramfs-linux.img
と Path
の Linux カーネル実行ファイル vmlinuz-linux
は、EFI システムパーティションからの相対パスです。逆スラッシュは EFI 標準にしたがって使用する必要があります。Arguments
の他の引数については、EFISTUB と カーネルパラメータ#パラメータ一覧 を参照してください。
以下の例では、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 に準拠している、BIOS システム用のブートローダが必要である場合、systemd-boot を BIOS システムで使用することができます。以下は、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>