「Limine」の版間の差分
(同期) |
(同期) |
||
| (同じ利用者による、間の2版が非表示) | |||
| 13行目: | 13行目: | ||
== サポートされているファイルシステム == |
== サポートされているファイルシステム == |
||
| − | + | Limine は [[FAT12]]、[[FAT16]]、[[FAT32]]、[[Wikipedia:ja:ISO 9660|ISO9660]] を[https://github.com/limine-bootloader/limine/blob/trunk/README.md#supported-filesystems サポート]しています。これらに加えて、ext2 から [[ext4]] までの試験的なサポートも存在していますが、上流でのサポートは限られています。サポートされているファイルシステムは、[https://github.com/limine-bootloader/limine/blob/trunk/PHILOSOPHY.md Limine の設計理念に基づいて意図的に制限されています]。 |
|
== インストール == |
== インストール == |
||
| 23行目: | 23行目: | ||
=== BIOS システム === |
=== BIOS システム === |
||
| + | [[パーティショニング#GPT か MBR の選択|MBR と GPT]] は両方ともサポートされており、インストール手順は非常に似ています。 |
||
| − | ==== MBR vs. GPT ==== |
||
| − | |||
| − | レガシーな PC BIOS は、[[GPT]] または [[MBR]] でパーティショニングされたデバイスから起動することができます。Limine はこれら両方をサポートしており、インストール手順は非常に似ています。さらに、[[GRUB]] とは違って、GPT でパーティショニングされたデバイスにインストールする際に、生のデータを含む追加のパーティションを作成する必要はありません。 |
||
| − | |||
| − | GPT では 2TiB 以上のパーティションをディスクに配置することができるし、パーティションやディスクの [[パーティショニング#GUID Partition Table|GUID]] を利用できたりなどの利点があるので、大きいドライブにおいて良い選択です。 |
||
| − | |||
| − | 一方、MBR はより古く、多くの制限があります。しかし、GPT パーティションのメディアから起動できない、風変わりな BIOS に対する互換性を確保できます。 |
||
==== デプロイ ==== |
==== デプロイ ==== |
||
| 39行目: | 33行目: | ||
# cp /usr/share/limine/limine-bios.sys /boot/ |
# cp /usr/share/limine/limine-bios.sys /boot/ |
||
| − | 次に、ステージ1とステージ2をディスクにデプロイする必要があります。 |
+ | 次に、ステージ1とステージ2をディスクにデプロイする必要があります。Limine は使用されているスキームを自動検出して適切にインストールするので、MBR と GPT のどちらが使用されていようとインストール方法は同じです: |
| − | |||
| − | 以下のように {{ic|limine bios-install}} を実行してください: |
||
# limine bios-install /dev/sdX |
# limine bios-install /dev/sdX |
||
| 57行目: | 49行目: | ||
== 設定 == |
== 設定 == |
||
| − | {{Pkg|limine}} にはデフォルトの設定ファイルが同梱されていません。なので、作成する必要があります。このファイルは、どのオペレーティングシステムが起動できるかを Limine に指示するために必要です。Limine はカスタマイズ性が高いので、設定ファイルには多くのオプションがあります。設定ファイルのフォーマットや |
+ | {{Pkg|limine}} にはデフォルトの設定ファイルが同梱されていません。なので、作成する必要があります。このファイルは、どのオペレーティングシステムが起動できるかを Limine に指示するために必要です。Limine はカスタマイズ性が高いので、設定ファイルには多くのオプションがあります。設定ファイルのフォーマットやオプションに関する詳細なドキュメントは[https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md ここ]で見られます。 |
| − | 設定ファイルは、({{ic|limine-bios.sys}} と同じように) Limine がデプロイされたドライブ上の任意のパーティションにあるルートディレクトリか {{ic|/boot}}、{{ic|/limine}}、{{ic|/boot/limine}} ディレクトリのどれかに置く必要があります。ただし、そのパーティションのファイルシステムがサポートされている必要があります。設定ファイルは {{ic|limine. |
+ | 設定ファイルは、({{ic|limine-bios.sys}} と同じように) Limine がデプロイされたドライブ上の任意のパーティションにあるルートディレクトリか {{ic|/boot}}、{{ic|/limine}}、{{ic|/boot/limine}} ディレクトリのどれかに置く必要があります。ただし、そのパーティションのファイルシステムがサポートされている必要があります。設定ファイルは {{ic|limine.conf}} という名前でなければなりません。 |
| − | {{Note| Limine の設定では、{{ic|boot: |
+ | {{Note| Limine の設定では、{{ic|boot():/}} は {{ic|limine.conf}} が存在するパーティションを表しています。{{ic|/boot}} のあるパーティションが分離されておらず、{{ic|limine.conf}} が代わりにルートパーティションにある場合、{{ic|boot():/}} は {{ic|boot():/boot/}} のように書き換える必要があります。}} |
以下は、典型的な Arch Linux カーネルと initramfs の1つのブートメニューエントリを含む設定の例です: |
以下は、典型的な Arch Linux カーネルと initramfs の1つのブートメニューエントリを含む設定の例です: |
||
| − | {{hc|limine. |
+ | {{hc|limine.conf|2= |
| + | timeout: 5 |
||
| − | TIMEOUT=5 |
||
| − | + | /Arch Linux |
|
| − | + | protocol: linux |
|
| − | + | kernel_path: boot():/vmlinuz-linux |
|
| − | + | kernel_cmdline: root=UUID=''xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'' rw |
|
| − | + | module_path: boot():/initramfs-linux.img |
|
}} |
}} |
||
| − | {{ic|'' |
+ | {{ic|''xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx''}} はルートファイルシステムの [[UUID]] です。 |
| + | |||
| + | {{Tip|[[セキュアブート]]が有効化されている UEFI システムでブートする場合は、Limine の設定ファイルとリソースファイル (カーネルやモジュールなど) の両方をセキュアにしておくことを検討してください。実際、これらの設定ファイルとリソースファイルが格納されている FAT パーティションにアクセスできる人物は、セキュアブートが有効化されている場合でもこれらのファイルを変更できてしまいます。 |
||
| + | |||
| + | これらのファイルを守るには、まず、すべてのリソースファイルの {{ic|b2sum}} チェックサムを設定ファイル内に記述しておく必要があります。Limine でのファイルパスには、ファイルの {{ic|b2sum}} チェックサムを記述するための任意のフィールドが存在します。このフィールドは、ファイルパスの後に {{ic|#}} 文字を追加し、さらにその後に '''128 文字'''のチェックサムを追加することで指定できます: |
||
| + | |||
| + | {{hc||2= |
||
| + | boot():/''path''#''checksum'' |
||
| + | }} |
||
| + | |||
| + | 設定ファイルを守るには、{{ic|limine enroll-config}} コマンドで EFI 実行ファイル内に設定ファイルの {{ic|b2sum}} チェックサムを埋め込んでおく必要があります。}} |
||
=== Windows エントリ === |
=== Windows エントリ === |
||
| 87行目: | 89行目: | ||
次にするべきことは、以下の内容を設定に追加することだけです: |
次にするべきことは、以下の内容を設定に追加することだけです: |
||
| − | {{hc|limine. |
+ | {{hc|limine.conf|2= |
| − | + | /Windows |
|
| − | + | protocol: efi_chainload |
|
| − | + | image_path: boot():'''/EFI/Microsoft/Boot/bootmgfw.efi''' |
|
}} |
}} |
||
| + | |||
| + | === 他のディスクから起動する === |
||
| + | |||
| + | {{ic|efi_chainload}} プロトコルを使って [[UKI]] をロードし、{{ic|uuid(''partition UUID''):}} でディスクのパスを指定します。[[UKI#Limine]] を参照してください。 |
||
== pacman フック == |
== pacman フック == |
||
| 130行目: | 136行目: | ||
Exec = /usr/bin/cp /usr/share/limine/BOOTX64.EFI /boot/EFI/BOOT/ |
Exec = /usr/bin/cp /usr/share/limine/BOOTX64.EFI /boot/EFI/BOOT/ |
||
}} |
}} |
||
| + | |||
| + | == ヒントとテクニック == |
||
| + | |||
| + | === ブートエントリの自動化 === |
||
| + | |||
| + | ==== Dracut サポート ==== |
||
| + | |||
| + | {{AUR|limine-dracut-support}} は、[[initramfs]] や [[UKI]] の生成に [[Dracut]] を使用するユーザーのために開発されました。これは、Limine ブートローダーでのカーネルの追加と削除を自動化することで、カーネルの管理をシンプルにします。 |
||
| + | |||
| + | {{Note|x86_64 アーキテクチャの UEFI システムにおいては、Limine を更新あるいは再インストールすると、Limine の EFI イメージは自動的に ESP へと配置されます。}} |
||
| + | |||
| + | '''設定:''' |
||
| + | |||
| + | {{ic|/etc/limine-entry-tool.conf}} ではなく {{ic|/etc/default/limine}} を変更してください。このファイルは {{ic|/etc/limine-entry-tool.conf}} よりも優先されます。 |
||
| + | |||
| + | 1. {{ic|/etc/default/limine}} を編集する |
||
| + | * {{ic|ESP_PATH}} に [[ESP]] へのパスを設定する。({{ic|bootctl}} が ESP を自動的に検出する場合は、{{ic|ESP_PATH}} を設定する必要はありません) |
||
| + | * {{ic|1=KERNEL_CMDLINE[default]=}} に所望の[[カーネルパラメータ]]を設定する。 |
||
| + | {{Tip| |
||
| + | * {{ic|1=KERNEL_CMDLINE[default]=}} と {{ic|1=KERNEL_CMDLINE=}} が設定されていない場合、ツールはまず {{ic|/etc/kernel/cmdline}} を読み込もうとします。このファイルが利用できない場合は、{{ic|/proc/cmdline}} を代わりに読み込みます。 |
||
| + | * 任意で、{{ic|1=KERNEL_CMDLINE[fallback]=}} で ''fallback'' という名前を含むカーネルエントリに対してカーネルパラメータを設定することができます。 |
||
| + | * 追加で、{{ic|1=KERNEL_CMDLINE["''kernel name''"]=}} エントリはブートメニュー内の同じ名前のカーネルエントリに対応し、カーネルエントリ毎に別々のカーネルコマンドライン/パラメータを設定することができます。例えば、{{ic|1=KERNEL_CMDLINE["linux-lts"]=}} は {{Pkg|linux-lts}} カーネルエントリに対応します。 |
||
| + | }} |
||
| + | * ESP の領域を節約するには、{{ic|DRACUT_FALLBACK}} を {{ic|no}} に設定することで、[[initramfs]] あるいは [[UKI]] のフォールバックイメージの自動生成を無効化することができます。 |
||
| + | * [[UKI]] でブートさせたい場合は、{{ic|DRACUT_UKI}} を {{ic|yes}} に設定してください。 |
||
| + | {{Tip|'''UKI の利点:''' |
||
| + | * [[systemd-boot]] や [[rEFInd]] は、このツールによって生成された UKI を自動的にロードすることができます。 |
||
| + | * {{Pkg|sbctl}} がインストールされ有効化されている場合、このツールは、カーネルを更新あるいはインストールする際に、UKI をセキュアブート鍵で自動的に署名します。 |
||
| + | }} |
||
| + | * {{ic|FIND_BOOTLOADERS}} を {{ic|yes}} に設定すると、systemd-boot や rEFInd、デフォルトの EFI ローダーが同じ ESP 内に存在する場合、それらを検出し、Limine に追加するようになります。 |
||
| + | |||
| + | 2. 以下のコマンドを実行して initramfs や UKI を生成し、{{ic|''esp''/limine.conf}} を更新します: |
||
| + | |||
| + | # limine-update |
||
| + | |||
| + | その他の設定オプションについては、[https://gitlab.com/Zesko/limine-entry-tool#configuration the configuration of limine-entry-tool] を参照してください。 |
||
| + | |||
| + | ==== mkinitcpio や他の initramfs ツール ==== |
||
| + | |||
| + | {{AUR|limine-entry-tool-git}} には、[[initramfs]] ツールも、カーネルの追加と削除を自動化させるための [[pacman フック]]も含まれていません。 |
||
| + | |||
| + | 1. {{ic|/etc/limine-entry-tool.conf}} の設定を上書きするには {{ic|/etc/default/limine}} を代わりに編集してください。 |
||
| + | * {{ic|ESP_PATH}} に [[ESP]] へのパスを設定してください。({{ic|bootctl}} が自動的に ESP を検出する場合は、{{ic|ESP_PATH}} を設定する必要はありません。) |
||
| + | * {{ic|1=KERNEL_CMDLINE[default]=}} に所望の[[カーネルパラメータ]]を設定してください。 |
||
| + | {{Tip| |
||
| + | * {{ic|1=KERNEL_CMDLINE[default]=}} と {{ic|1=KERNEL_CMDLINE=}} が設定されていない場合、ツールはまず {{ic|/etc/kernel/cmdline}} を読み込もうとします。このファイルが利用できない場合は、{{ic|/proc/cmdline}} を代わりに読み込みます。 |
||
| + | * 追加で、{{ic|1=KERNEL_CMDLINE["''kernel name''"]=}} エントリはブートメニュー内の同じ名前のカーネルエントリに対応し、カーネルエントリ毎に別々のカーネルコマンドライン/パラメータを設定することができます。 |
||
| + | }} |
||
| + | |||
| + | 2. 所望の [[initramfs]] ツール (例: [[mkinitcpio]]、[[dracut]]、[[booster]] など) をインストールしてください。 |
||
| + | |||
| + | 3. Limine ブートメニュー内のブートエントリを管理するためにスクリプトを作成してください。例えば、{{ic|limine-entry-tool}} コマンドを使ってカーネルの追加と削除を自動化する [[pacman フック]]などです。 |
||
| + | |||
| + | 詳細は [https://gitlab.com/Zesko/limine-entry-tool/-/blob/master/README.md limine-entry-tool の README] を参照してください。 |
||
| + | |||
| + | === Btrfs の Snapper スナップショットとの統合 === |
||
| + | |||
| + | {{AUR|limine-snapper-sync}} ツールは [[Snapper]] と Limine ブートローダーとを統合します。これは以下の点で便利です: |
||
| + | |||
| + | * ブートする [[Snapper]] スナップショットの選択をサポート。 |
||
| + | * システムのスナップショットから復元する方法として [[rsync]] と [[btrfs]] の2つを提供しています。 |
||
| + | * スナップショットからの復元後、「バックアップ」エントリが Limine ブートローダーに追加されます。これにより、必要になったときにバックアップへの巻き戻しが容易になります。 |
||
| + | * 新しいスナップショットが同じブータブルファイルで作成されている場合、破損したブータブルファイルを ESP 上の古いスナップショットを使って自動的に修復します。 |
||
| + | * ブータブルファイルのハッシュ値が ESP 上にある同じファイルのハッシュ値と一致しない場合、ハードウェアの問題が疑われるエラーメッセージを自動的に記録します。 |
||
| + | * 読み取り専用のスナップショットをテストできる: [[overlayfs]] を使って、イミュータブルのようなシステム上で元のデータを変更することなく、インストールされたパッケージをテストします。これは、ブートパーティションや分離されたホームサブボリューム/パーティションのテストを意図しているものではないことに注意してください。 |
||
| + | |||
| + | ==== 設定 ==== |
||
| + | |||
| + | {{Note|(ブータブルスナップショットの数とインストールしたいカーネルバージョンの数によりますが) [[ESP]] には 1 GiB 以上を割り当てることが推奨されます。}} |
||
| + | |||
| + | 1. {{ic|''esp''/limine.conf}} に {{ic|//Snapshots}} か {{ic|/Snapshots}} キーワードを加えてください。これは、自動生成されるスナップショットエントリに対応します。 |
||
| + | |||
| + | 例: |
||
| + | |||
| + | {{hc|limine.conf|2= |
||
| + | /+Arch Linux |
||
| + | comment: Any comment |
||
| + | comment: machine-id=''yyyyyyyyyyyyyyyyyy'' |
||
| + | |||
| + | //Linux |
||
| + | protocol: linux |
||
| + | kernel_path: boot():/vmlinuz-linux |
||
| + | kernel_cmdline: root=UUID=''xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'' rw rootflags=subvol=/@ |
||
| + | module_path: boot():/initramfs-linux.img |
||
| + | |||
| + | //Snapshots |
||
| + | }} |
||
| + | |||
| + | {{Note| |
||
| + | キーワードは、どちらか一方のみを使用してください: |
||
| + | |||
| + | * {{ic|//Snapshots}} は OS ブートエントリブロック内に記述します。(何も指定されていない場合、'''デフォルト'''。) |
||
| + | '''または''' |
||
| + | * {{ic|/Snapshots}} は OS ブートエントリブロック外に記述します。 |
||
| + | |||
| + | ---- |
||
| + | {{ic|/etc/machine-id}} のマシン ID を含めるのは任意ですが、自動識別に便利です。ブートエントリの名称変更はこのツールには影響しません。 |
||
| + | }} |
||
| + | |||
| + | 2. {{ic|/etc/default/limine}} を編集してください。このファイルに記述された設定は {{ic|/etc/limine-snapper-sync.conf}} を上書きします: |
||
| + | * {{ic|ESP_PATH}} に [[ESP]] へのパスを設定してください。({{ic|bootctl}} が ESP を自動的に検出する場合は、{{ic|ESP_PATH}} を設定する必要はありません。) |
||
| + | * {{ic|LIMIT_NUMBER}} にスナップショットエントリの最大数を設定してください。デフォルトは 8 です。 |
||
| + | * {{ic|LIMIT_USAGE_PERCENT}} には、新しいスナップショットエントリの作成を許可する ESP 使用率の最大値を設定してください。デフォルトは 80 です。 |
||
| + | |||
| + | * '''カスタムの''' Snapper レイアウトを使用する場合は、以下を設定してください: |
||
| + | ** {{ic|ROOT_SUBVOLUME_PATH}} にルートサブボリュームへのパスを設定する。殆どの場合、デフォルトは {{ic|/@}} です。 |
||
| + | ** {{ic|ROOT_SNAPSHOTS_PATH}} にルートスナップショットへのパスを設定する。デフォルトは {{ic|/@/.snapshots}} です (これは、ルートサブボリューム {{ic|/@}} に対する標準的な Snapper レイアウトです)。 |
||
| + | |||
| + | 3. 以下のコマンドを実行して、成功するかエラーメッセージが表示されるか確かめてください: |
||
| + | |||
| + | # limine-snapper-sync |
||
| + | |||
| + | 4. うまく行ったら、systemd サービス {{ic|limine-snapper-watcher.service}} を[[有効化]]してください。このサービスは、Snapper のリストに変更が生じた際にスナップショットエントリをブートメニューに自動的に生成します。 |
||
| + | |||
| + | {{Tip|'''[[dracut]] を使用する場合:''' |
||
| + | {{AUR|limine-dracut-support}} をインストールすることで、ESP 上の {{ic|limine.conf}} 内へのブートエントリの作成を自動化できます。詳細は [[#Dracut サポート]] を参照してください。 |
||
| + | }} |
||
| + | |||
| + | 詳細は [https://gitlab.com/Zesko/limine-snapper-sync limine-snapper-sync README やその他の設定オプション]を参照してください。 |
||
| + | |||
| + | ==== コマンド ==== |
||
| + | |||
| + | * {{ic|limine-snapper-sync}}: Limine のスナップショットエントリを Snapper のリストと同期させます。 |
||
| + | * {{ic|limine-snapper-list}}: 現在の Limine スナップショットエントリを表示します。 |
||
| + | * {{ic|limine-snapper-info}}: バージョンとブータブルスナップショットの総数を表示し、ブータブルファイルの検証を行います。 |
||
| + | * {{ic|limine-snapper-restore}}: 選択したスナップショットから、一致するカーネルのバージョンを含めて、システムを復元します。 |
||
| + | |||
| + | ==== 既知の制限 ==== |
||
| + | |||
| + | * サポートは Snapper レイアウトのみで、Snapper ではない任意の Btrfs レイアウトはサポート外です。 |
||
| + | * ツールがインストールされた時よりも前に作成された古いスナップショットのブータブルスナップショットエントリは生成できません。そのようなスナップショットには、対応するカーネルバージョンがたいてい記録されていないからです。 |
||
== 参照 == |
== 参照 == |
||
| 136行目: | 273行目: | ||
* [https://github.com/limine-bootloader/limine Limine の GitHub リポジトリ] |
* [https://github.com/limine-bootloader/limine Limine の GitHub リポジトリ] |
||
| − | {{TranslationStatus|Limine| |
+ | {{TranslationStatus|Limine|2025-02-03|826039}} |
2025年2月7日 (金) 18:37時点における最新版
Limine は、先進的で、ポータブルな、マルチプロトコルのブートローダーです。元は Limine ブートプロトコルのリファレンス実装として開発されましたが、Linux のブートや他のブートローダのチェインロードもサポートしています。
サポートされているファイルシステム
Limine は FAT12、FAT16、FAT32、ISO9660 をサポートしています。これらに加えて、ext2 から ext4 までの試験的なサポートも存在していますが、上流でのサポートは限られています。サポートされているファイルシステムは、Limine の設計理念に基づいて意図的に制限されています。
インストール
limine をインストールしてください。
Limine ブートローダーをインストールする
BIOS システム
MBR と GPT は両方ともサポートされており、インストール手順は非常に似ています。
デプロイ
コアのブートローダーファイルは /usr/share/limine にあります。BIOS システムにインストールする際に最も重要なのは limine-bios.sys ファイルです。このファイルには、Limine が起動するのに必要なステージ3のコードが含まれています。このファイルは、Limine を導入するディスク上の任意のパーティション上のルートディレクトリか、/boot、/limine、/boot/limine ディレクトリのどれかに置く必要があります。さらに、そのファイルシステムがサポートされている必要があります。
例:
# cp /usr/share/limine/limine-bios.sys /boot/
次に、ステージ1とステージ2をディスクにデプロイする必要があります。Limine は使用されているスキームを自動検出して適切にインストールするので、MBR と GPT のどちらが使用されていようとインストール方法は同じです:
# limine bios-install /dev/sdX
/dev/sdX の部分は、Limine をインストールするディスク(パーティションではありません)に書き換えてください。例えば、/dev/sda や /dev/nvme0n1 です。ブロックデバイス名のスキームについては デバイスファイル#ブロックデバイスの名前 を見てください。
UEFI システム
UEFI システム上に Limine をデプロイするには、/usr/share/limine/BOOTX64.EFI ファイルを EFI システムパーティションにコピーします。通常 esp/EFI/BOOT/BOOTX64.EFI にコピーしますが、別のファイル名を使用することもできます。ただし、UEFI BIOS がそのファイルを検出できる必要があります。GRUB とは異なり、Limine は NVRAM に Limine のブートローダーエントリを追加しません。Limine のエントリをセットアップするには efibootmgr を使用してください。
UEFI+BIOS 起動可能ドライブ
ドライブが GPT でフォーマットされていて、かつ EFI システムパーティション を含んでいる場合、BIOS と UEFI の両方のデプロイ手順を行うことにより、そのドライブをレガシー BIOS と UEFI の両方のシステムで起動できるようになります。これは、例えば、UEFI に対応/非対応の複数のシステム上で使用する USB フラッシュドライブにオペレーティングシステムをインストールする場合や、システムをまたいでハードドライブを使用しやすくする場合に便利です。
設定
limine にはデフォルトの設定ファイルが同梱されていません。なので、作成する必要があります。このファイルは、どのオペレーティングシステムが起動できるかを Limine に指示するために必要です。Limine はカスタマイズ性が高いので、設定ファイルには多くのオプションがあります。設定ファイルのフォーマットやオプションに関する詳細なドキュメントはここで見られます。
設定ファイルは、(limine-bios.sys と同じように) Limine がデプロイされたドライブ上の任意のパーティションにあるルートディレクトリか /boot、/limine、/boot/limine ディレクトリのどれかに置く必要があります。ただし、そのパーティションのファイルシステムがサポートされている必要があります。設定ファイルは limine.conf という名前でなければなりません。
以下は、典型的な Arch Linux カーネルと initramfs の1つのブートメニューエントリを含む設定の例です:
limine.conf
timeout: 5
/Arch Linux
protocol: linux
kernel_path: boot():/vmlinuz-linux
kernel_cmdline: root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw
module_path: boot():/initramfs-linux.img
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx はルートファイルシステムの UUID です。
Windows エントリ
Windows を起動できるようにするには、ESP 内の bootmgfw.efi へのパスを知る必要があります。ESP 内に移動して、以下のコマンドを使用することで可能です:
$ find -name "bootmgfw.efi"
./EFI/Microsoft/Boot/bootmgfw.efi
次にするべきことは、以下の内容を設定に追加することだけです:
limine.conf
/Windows
protocol: efi_chainload
image_path: boot():/EFI/Microsoft/Boot/bootmgfw.efi
他のディスクから起動する
efi_chainload プロトコルを使って UKI をロードし、uuid(partition UUID): でディスクのパスを指定します。UKI#Limine を参照してください。
pacman フック
必須ではありませんが、Limine がアップデートされるたびに Limine をデプロイする pacman フック を設定すれば便利です。
以下は単なる例です。システム構成に合うようにパスやデバイスを編集してください。
BIOS
/etc/pacman.d/hooks/liminedeploy.hook
[Trigger] Operation = Install Operation = Upgrade Type = Package Target = limine [Action] Description = Deploying Limine after upgrade... When = PostTransaction Exec = /bin/sh -c "/usr/bin/limine bios-install /dev/sdX && /usr/bin/cp /usr/share/limine/limine-bios.sys /boot/"
UEFI
/etc/pacman.d/hooks/liminedeploy.hook
[Trigger] Operation = Install Operation = Upgrade Type = Package Target = limine [Action] Description = Deploying Limine after upgrade... When = PostTransaction Exec = /usr/bin/cp /usr/share/limine/BOOTX64.EFI /boot/EFI/BOOT/
ヒントとテクニック
ブートエントリの自動化
Dracut サポート
limine-dracut-supportAUR は、initramfs や UKI の生成に Dracut を使用するユーザーのために開発されました。これは、Limine ブートローダーでのカーネルの追加と削除を自動化することで、カーネルの管理をシンプルにします。
設定:
/etc/limine-entry-tool.conf ではなく /etc/default/limine を変更してください。このファイルは /etc/limine-entry-tool.conf よりも優先されます。
1. /etc/default/limine を編集する
ESP_PATHに ESP へのパスを設定する。(bootctlが ESP を自動的に検出する場合は、ESP_PATHを設定する必要はありません)KERNEL_CMDLINE[default]=に所望のカーネルパラメータを設定する。
- ESP の領域を節約するには、
DRACUT_FALLBACKをnoに設定することで、initramfs あるいは UKI のフォールバックイメージの自動生成を無効化することができます。 - UKI でブートさせたい場合は、
DRACUT_UKIをyesに設定してください。
FIND_BOOTLOADERSをyesに設定すると、systemd-boot や rEFInd、デフォルトの EFI ローダーが同じ ESP 内に存在する場合、それらを検出し、Limine に追加するようになります。
2. 以下のコマンドを実行して initramfs や UKI を生成し、esp/limine.conf を更新します:
# limine-update
その他の設定オプションについては、the configuration of limine-entry-tool を参照してください。
mkinitcpio や他の initramfs ツール
limine-entry-tool-gitAUR には、initramfs ツールも、カーネルの追加と削除を自動化させるための pacman フックも含まれていません。
1. /etc/limine-entry-tool.conf の設定を上書きするには /etc/default/limine を代わりに編集してください。
ESP_PATHに ESP へのパスを設定してください。(bootctlが自動的に ESP を検出する場合は、ESP_PATHを設定する必要はありません。)KERNEL_CMDLINE[default]=に所望のカーネルパラメータを設定してください。
2. 所望の initramfs ツール (例: mkinitcpio、dracut、booster など) をインストールしてください。
3. Limine ブートメニュー内のブートエントリを管理するためにスクリプトを作成してください。例えば、limine-entry-tool コマンドを使ってカーネルの追加と削除を自動化する pacman フックなどです。
詳細は limine-entry-tool の README を参照してください。
Btrfs の Snapper スナップショットとの統合
limine-snapper-syncAUR ツールは Snapper と Limine ブートローダーとを統合します。これは以下の点で便利です:
- ブートする Snapper スナップショットの選択をサポート。
- システムのスナップショットから復元する方法として rsync と btrfs の2つを提供しています。
- スナップショットからの復元後、「バックアップ」エントリが Limine ブートローダーに追加されます。これにより、必要になったときにバックアップへの巻き戻しが容易になります。
- 新しいスナップショットが同じブータブルファイルで作成されている場合、破損したブータブルファイルを ESP 上の古いスナップショットを使って自動的に修復します。
- ブータブルファイルのハッシュ値が ESP 上にある同じファイルのハッシュ値と一致しない場合、ハードウェアの問題が疑われるエラーメッセージを自動的に記録します。
- 読み取り専用のスナップショットをテストできる: overlayfs を使って、イミュータブルのようなシステム上で元のデータを変更することなく、インストールされたパッケージをテストします。これは、ブートパーティションや分離されたホームサブボリューム/パーティションのテストを意図しているものではないことに注意してください。
設定
1. esp/limine.conf に //Snapshots か /Snapshots キーワードを加えてください。これは、自動生成されるスナップショットエントリに対応します。
例:
limine.conf
/+Arch Linux
comment: Any comment
comment: machine-id=yyyyyyyyyyyyyyyyyy
//Linux
protocol: linux
kernel_path: boot():/vmlinuz-linux
kernel_cmdline: root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw rootflags=subvol=/@
module_path: boot():/initramfs-linux.img
//Snapshots
2. /etc/default/limine を編集してください。このファイルに記述された設定は /etc/limine-snapper-sync.conf を上書きします:
ESP_PATHに ESP へのパスを設定してください。(bootctlが ESP を自動的に検出する場合は、ESP_PATHを設定する必要はありません。)LIMIT_NUMBERにスナップショットエントリの最大数を設定してください。デフォルトは 8 です。LIMIT_USAGE_PERCENTには、新しいスナップショットエントリの作成を許可する ESP 使用率の最大値を設定してください。デフォルトは 80 です。
- カスタムの Snapper レイアウトを使用する場合は、以下を設定してください:
ROOT_SUBVOLUME_PATHにルートサブボリュームへのパスを設定する。殆どの場合、デフォルトは/@です。ROOT_SNAPSHOTS_PATHにルートスナップショットへのパスを設定する。デフォルトは/@/.snapshotsです (これは、ルートサブボリューム/@に対する標準的な Snapper レイアウトです)。
3. 以下のコマンドを実行して、成功するかエラーメッセージが表示されるか確かめてください:
# limine-snapper-sync
4. うまく行ったら、systemd サービス limine-snapper-watcher.service を有効化してください。このサービスは、Snapper のリストに変更が生じた際にスナップショットエントリをブートメニューに自動的に生成します。
詳細は limine-snapper-sync README やその他の設定オプションを参照してください。
コマンド
limine-snapper-sync: Limine のスナップショットエントリを Snapper のリストと同期させます。limine-snapper-list: 現在の Limine スナップショットエントリを表示します。limine-snapper-info: バージョンとブータブルスナップショットの総数を表示し、ブータブルファイルの検証を行います。limine-snapper-restore: 選択したスナップショットから、一致するカーネルのバージョンを含めて、システムを復元します。
既知の制限
- サポートは Snapper レイアウトのみで、Snapper ではない任意の Btrfs レイアウトはサポート外です。
- ツールがインストールされた時よりも前に作成された古いスナップショットのブータブルスナップショットエントリは生成できません。そのようなスナップショットには、対応するカーネルバージョンがたいてい記録されていないからです。