rEFInd
rEFInd はrEFIt からフォークした後継の EFI および UEFI プラットフォーム向けブートマネージャです。EFI ベースのオペレーティングシステムを起動したり、EFI ベースのユーティリティにアクセスするためのグラフィカルインターフェースを提供します。
インストール
カーネル
rEFInd のような EFI からカーネルを起動した際に映像を表示するには、EFI フレームバッファのサポート (CONFIG_FB_EFI) またはベンダー特有のフレームバッファが必要です:
Device Drivers ---> Graphics support ---> Frame buffer Devices ---> <*> Support for frame buffer devices ---> [*] EFI-based Framebuffer Support
USE フラグ
rEFInd には、オペレーティングシステムを起動する前にいくつかのファイルシステムから EFI 実行可能ファイルをスキャンするオプション機能があります。これによってカーネルを EFI システムパーティション (ESP) の外に置くことができますが、それぞれの USE フラグを有効にしてビルドした rEFInd が必要です。
USE flags for sys-boot/refind The UEFI Boot Manager by Rod Smith
btrfs
|
Builds the EFI binary btrfs filesystem driver |
custom-cflags
|
Build with user-specified CFLAGS (unsupported) |
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
ext2
|
Builds the EFI binary ext2 filesystem driver |
ext4
|
Builds the EFI binary ext4 filesystem driver |
hfs
|
Builds the EFI binary hfs filesystem driver |
iso9660
|
Builds the EFI binary iso9660 filesystem driver |
ntfs
|
Builds the EFI binary ntfs filesystem driver |
reiserfs
|
Builds the EFI binary reiserfs filesystem driver |
emerge
root #
emerge --ask sys-boot/refind
rEFInd has been built and installed into ${EROOT%/}/usr/share/${P} You will need to use the command 'refind-install' to install the binaries into your EFI System Partition
ESP へのインストール
rEFInd パッケージを emerge したら、バイナリを ESP にインストールするための第2ステップが必要です。ESP が存在しない場合,作成する必要があります。EFI システムパーティションの記事を参照してください。
ファイルシステムのレイアウト
カーネルを保存する場所については、複数の選択肢があります。
ブートの過程で、rEFInd は EFI ブートイメージや Linux カーネルを自動的に探します。.efiで終わるファイルや、vmlinuz、bzImage または kernel で始まるファイルが探索されます。(上記の USE フラグに基づいて) rEFInd が読むことができるファイルシステム上では、以下の場所がスキャンされます[1]:
- ファイルシステムのルート (/)。
- /boot ディレクトリ。
- /EFI の大部分のサブディレクトリ。(例については ESP 上にカーネルイメージを置く節を参照してください)。
ブートパーティションの構成はとても柔軟です。例えば、以下の1つを選択できます:
- boot、ESP およびルートパーティションを分離する
- ESP パーティションをルートパーティションの /boot 部分とともに分離する (もし暗号化も LVM も使用しておらず、かつ上記のサポートされたファイルシステムであれば)。
- /EFI/Gentoo/ にカーネルを持つ ESP パーティションのみ。この場合、カーネルをインストールする際にいくつかの追加ステップが必要です。
NVRAM を変更してインストールする
rEFInd パッケージには refind-install コマンドが含まれています。これを実行すると:
- ESP が既にマウントされているか調べます。されていなければ、ESP を /etc/fstab に従って自動マウントします。
- refind_x64.efi アプリケーションとその他のファイルを ESP へインストールします。
- efibootmgr を呼び出し、自身をデフォルトのブートマネージャに設定します。
root #
refind-install
ShimSource is none Installing rEFInd on Linux.... ESP was found at /boot using vfat Copied rEFInd binary files Copying sample configuration file as refind.conf; edit this file to configure rEFInd. Installing it! rEFInd has been set as the default boot manager. Creating //boot/refind_linux.conf; edit it to adjust kernel options. Installation has completed successfully.
user $
tree -L 3 /boot
/boot ├── EFI │ ├── refind │ │ ├── icons │ │ ├── keys │ │ ├── refind.conf │ │ └── refind_x64.efi │ └── tools └── refind_linux.conf
user $
efibootmgr -v
Boot000x* rEFInd Boot Manager HD(1,GPT,1729a003-cf0d-4bd4-88c9-cc24d8d418c4,0x800,0x2f000)/File(\EFI\refind\refind_x64.efi)
Boot000x* は、既存のエントリによって異なります。
/boot が /etc/fstab 内に見つからない場合、refind-install はデフォルトとして /boot/efi/EFI を使用し、さらに既存の /boot/EFI を /boot/efi/EFI に移動します。
手動で
rw
オプションを付けて efivarfs を再マウントすることが重要です。さもないと、rEFInd は自身をデフォルトのブートマネージャに設定することができず、エラーメッセージを出します。
これを行うには、以下のコマンドを使用します:
root #
mount -o remount,rw -t efivarfs efivarfs /sys/firmware/efi/efivars
EFI のデフォルト/フォールバックパスへインストールする
デフォルト/フォールバックのファイル名である EFI/BOOT/bootx64.efi を使用して rEFInd をディスクへインストールすることができます。この方法でインストールした場合、コンピュータの NVRAM エントリは変更されません。多くの EFI および UEFI ファームウェアは、設定済みの EFI ファイルが見つからない場合のフォールバック EFI イメージからのブートをサポートしています。一部のファームウェアは、フォールバックブートイメージが見つかった場合、設定済みのブートオプションを上書きします。これは、そうしないと難しい場合に EFI モードでブートするために利用できます。
root #
refind-install --usedefault /dev/sda
ここで、/dev/sda が ESP です。このインストール方法は、ブート可能な USB フラッシュドライブを作成したり、NVRAM の設定を「忘れ」がちなコンピュータに rEFInd をインストールするための恒久的なセットアップとしても、システムを EFI モードでブートするための一時的なブートストラップとしても使用できます。
カーネルの管理
rEFInd は、標準的な命名規則が使用されている場合、/boot が分離したパーティションかルートファイルシステムの一部かにかかわらず、カーネルを探し出すことができるはずです。そのため、genkernel --install や make install といったカーネルの(半)自動的なインストール手法は、追加の設定をしなくても、rEFInd と互換性があります。
Initial RAM ファイルシステム
ブート時、rEFInd は init で始まりカーネルのバージョン文字列で終わる initial RAM ディスクを探します。例えば、initramfs-5.4.66-gentoo.img は initramfs-5.4.66-gentoo.img に一致します。refind_linux.conf で initrd が指定されていない場合、それがカーネルコマンドラインに自動的に追加されます。
Genkernel や Dracut のようなツールを使用している場合、追加の設定は必要ありません。しかしながら、カスタム Initramfs を使用している場合は若干の対応が必要です。initramfs は同様の規則に従って命名するか、または名前を refind_linux.conf で指定する必要があります。
ESP 上にカーネルイメージを置く (任意)
カーネルと initial RAM ディスクを /boot ではなく ESP に保管することができます。アイコンをうまく決定させるためには、カーネルを EFI/Gentoo に保管する必要があります。
この節は任意です。make --install や genkernel --install のようなツールは利用できないため、カーネルと initial RAM システムイメージを手動でコピーする必要があります。また、これはアイコンを動作させるための唯一の方法ではありません。
カーネルを移動する:
root #
mv /boot/vmlinuz-4.2.0-gentoo /boot/EFI/Gentoo/vmlinuz-4.9.16-gentoo.efi
root #
mv /boot/initramfs-4.2.0-gentoo /boot/EFI/Gentoo/initramfs-4.9.16-gentoo.img
カーネルと initramfs が EFI のサブディレクトリにあります:
user $
tree -L 3 /boot
/boot ├── EFI │ ├── Gentoo │ │ ├── vmlinuz-4.9.16-gentoo.efi │ │ └── initramfs-4.9.16-gentoo.img │ ├── refind │ │ ├── icons │ │ ├── keys │ │ ├── refind.conf │ │ └── refind_x64.efi │ └── tools └── refind_linux.conf
rEFInd にとって、特にカーネルを initramfs と対応させるために、ファイル名は重要です。より詳細な情報は設定ファイルにありますが、最善の結果を得るためには、上述した命名規則に従ってください。
Linux コマンドラインオプション
refind_linux.conf がカーネルと同じディレクトリに存在しているはずです。このファイルは、refind_install や mkrlconf を実行した際に自動的に生成されます。各エントリが、各カーネルのオプションとして表示されます。
default エントリは現在の /proc/cmdline に基づいています。single はdefault と同様ですが、single が追加されています。minimal は、現在のルートデバイスのみが ro 引数とともに含まれています。initramfs はブート時に自動的に確定されるため、いずれのエントリにも含まれていません。
このファイルは、開始したいものと同じブートセッションで生成されたものであれば、たいていはそのまま動作します。例えば、ブートローダーを rEFInd に置き換える場合など。しかしながら、例えば Gentoo のインストール中など、別の OS で生成された場合、注意してエントリを手動で修正する必要があります。
単純な設定例:
/boot/EFI/gentoo/refind_linux.conf
"Default" "root=/dev/sda2 rootfstype=ext4 ro quiet" "Console" "root=/dev/sda2 rootfstype=ext4 ro quiet nox nogui" "Emergency" "root=/dev/sda2 rootfstype=ext4 ro 1"
(静的な)カスタム initramfs と マイクロコードを読み込む:
/boot/EFI/gentoo/refind_linux.conf
"Standard boot" "root=LABEL=root initrd=intel-ucode.img initrd=initramfs-custom.img quiet" "Single-user mode" "root=LABEL=root initrd=intel-ucode.img initrd=initramfs-custom.img single" "Minimal options" "ro root=LABEL=root initrd=initramfs-custom.img"
rEFInd のメイン選択画面では、default オプションが最初のオプションとして使用されますが、カーネルをハイライトして F2 を押すことで代替ブートエントリにアクセスすることができます。cmdline についても、メニューアイテム上で F2 を押してエディターを開き、その場で変更することができます。準備ができたら、Enter を押してカーネルを起動します。
上述したカーネルの cmdline オプションはあくまで一例です - ユーザーは、そのシステムでカーネルが起動するための、自分自身の設定を用意する必要があります。
アイコン
rEFInd には、様々な Linux ディストリビューションのためのアイコンのコレクションが含まれています。メニューエントリのアイコンを表示するには、rEFInd がOS名を知る必要があります。そのため、rEFInd は以下の点をこの順番に見ます:
- アイコンのベース名がカーネルのベース名と一致する。例: vmlinuz-5.4.66-gentoo.png
- カーネルが OS に因んで名付けられた ESP のサブディレクトリ内にある。例えば、カーネルが /EFI/Gentoo/vmlinuz-5.4.66-gentoo.png にある。詳細については "ESP 上にカーネルイメージを置く" を参照してください。
- ファイルシステムのラベルにスペース、アンダーバーまたはダッシュ区切りの OS 名が含まれる。例えば、tunetfs -L Gentoo-boot /dev/sdaXとしていた場合。
- GPT パーティション名がファイルシステムのラベルと同様の条件に従っている。
- 同じパーティション内の/etc/os-release ファイル。例えば、/boot がルートパーティションの一部である場合。
- カーネルの名前の語句に基づくハードコードされた規則。例えば、vmlinux や bzImage であれば、デフォルトの Linux "Tux" アイコンになります。
関連項目
- Kernel/Configuration — Linux カーネル の設定とセットアップを手作業で行う方法
- Dracut — an initramfs infrastructure and aims to have as little as possible hard-coded into the initramfs.
- GRUB — 多くのシステムアーキテクチャ上で、様々なファイルシステムからカーネルをロードすることができる、マルチブート 2 次ブートローダです。
- Syslinux — ブートローダファミリを含むパッケージです。
- UEFI Dual boot with Windows 7/8 — describes how to dual boot Microsoft Windows on a UEFI computer.