「Limine」の版間の差分
(同期) |
(同期) |
||
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 に対する互換性を確保できます。 |
||
==== デプロイ ==== |
==== デプロイ ==== |
||
55行目: | 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 |
|
}} |
}} |
||
77行目: | 71行目: | ||
{{Tip|[[セキュアブート]]が有効化されている UEFI システムでブートする場合は、Limine の設定ファイルとリソースファイル (カーネルやモジュールなど) の両方をセキュアにしておくことを検討してください。実際、これらの設定ファイルとリソースファイルが格納されている FAT パーティションにアクセスできる人物は、セキュアブートが有効化されている場合でもこれらのファイルを変更できてしまいます。 |
{{Tip|[[セキュアブート]]が有効化されている UEFI システムでブートする場合は、Limine の設定ファイルとリソースファイル (カーネルやモジュールなど) の両方をセキュアにしておくことを検討してください。実際、これらの設定ファイルとリソースファイルが格納されている FAT パーティションにアクセスできる人物は、セキュアブートが有効化されている場合でもこれらのファイルを変更できてしまいます。 |
||
− | これらのファイルを守るには、まず、すべてのリソースファイルの {{ic|b2sum}} チェックサムを設定ファイル内に記述しておく必要があります。ファイル |
+ | これらのファイルを守るには、まず、すべてのリソースファイルの {{ic|b2sum}} チェックサムを設定ファイル内に記述しておく必要があります。Limine でのファイルパスには、ファイルの {{ic|b2sum}} チェックサムを記述するための任意のフィールドが存在します。このフィールドは、ファイルパスの後に {{ic|#}} 文字を追加し、さらにその後に '''128 文字'''のチェックサムを追加することで指定できます: |
{{hc||2= |
{{hc||2= |
||
− | boot: |
+ | boot():/''path''#''checksum'' |
}} |
}} |
||
95行目: | 89行目: | ||
次にするべきことは、以下の内容を設定に追加することだけです: |
次にするべきことは、以下の内容を設定に追加することだけです: |
||
− | {{hc|limine. |
+ | {{hc|limine.conf|2= |
− | + | /Windows |
|
− | + | protocol: efi_chainload |
|
− | + | image_path: boot():'''/EFI/Microsoft/Boot/bootmgfw.efi''' |
|
}} |
}} |
||
138行目: | 132行目: | ||
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 の生成に [[Dracut]] を使用するユーザーのために開発されました。これは、Limine ブートローダーでのカーネルのインストールと削除を自動化することで、カーネルの管理をシンプルにします。 |
||
+ | |||
+ | {{Note|x86_64 アーキテクチャの UEFI システムにおいては、Limine を更新あるいは再インストールすると、Limine の EFI イメージは自動的に ESP へと配置されます。}} |
||
+ | |||
+ | {{ic|/etc/limine-entry-tool.conf}} を以下のように編集してください: |
||
+ | |||
+ | * {{ic|KERNEL_CMDLINE}} に所望の[[カーネルパラメータ]]を設定する。 |
||
+ | {{Tip|{{ic|KERNEL_CMDLINE}} が設定されていない場合、このツールはまず {{ic|/etc/kernel/cmdline}} ファイルから読み取ろうとします。このファイルも利用できない場合、代わりに {{ic|/proc/cmdline}} から読み取ります。}} |
||
+ | * ESP のスペースを節約するために、{{ic|DRACUT_FALLBACK}} を {{ic|no}} に設定して [[initramfs]] フォールバックイメージの自動生成を無効化する。 |
||
+ | |||
+ | 設定ファイルを編集したら、以下のコマンドを root 権限で実行して initramfs を生成し、{{ic|''esp''/limine.conf}} を更新します。 |
||
+ | |||
+ | # dracut-rebuild |
||
+ | |||
+ | あるいは、このコマンドのエイリアスを使ってもよいです: |
||
+ | |||
+ | # limine-update |
||
+ | |||
+ | その他の情報は [https://gitlab.com/Zesko/limine-entry-tool limine-entry-tool の README と設定オプション]を参照してください。 |
||
+ | |||
+ | === Btrfs の Snapper スナップショットとの統合 === |
||
+ | |||
+ | {{AUR|limine-snapper-sync}} ツールは [[Snapper]] と Limine ブートローダーとを統合します。これは以下の点で便利です: |
||
+ | |||
+ | * ブートする [[Snapper]] スナップショットの選択をサポート。 |
||
+ | * システムのスナップショットから復元する方法として [[rsync]] と [[btrfs]] の2つを提供しています。 |
||
+ | * 読み取り専用スナップショットのテスト: [[overlayfs]] を使用してイミュータブルなシステムで実験を行い、システム上のオリジナルデータを変更せずに問題を再現することができます。 |
||
+ | * スナップショットからの復元後、「バックアップ」エントリが Limine ブートローダーに追加されます。これにより、必要になったときにバックアップへの巻き戻しが容易になります。 |
||
+ | * 新しいスナップショットが同じブータブルファイルで作成されている場合、破損したブータブルファイルを ESP 上の古いスナップショットを使って自動的に修復します。 |
||
+ | * ブータブルファイルのハッシュ値が ESP 上にある同じファイルのハッシュ値と一致しない場合、ハードウェアの問題が疑われるエラーメッセージを自動的に記録します。 |
||
+ | |||
+ | ==== セットアップ ==== |
||
+ | |||
+ | {{Note|(ブータブルスナップショットの数とインストールしたいカーネルバージョンの数によりますが) [[EFI システムパーティション|ESP]] には 1GB 以上を割り当てることが推奨されます。}} |
||
+ | |||
+ | 1. [[Snapper]] にルートサブボリュームの構成が存在することを確認してください。 |
||
+ | |||
+ | 2. {{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 を含めるのは任意ですが、自動識別に便利です。ブートエントリの名称変更はこのツールには影響しません。 |
||
+ | ---- |
||
+ | |||
+ | '''カスタム'''のフラット Snapper レイアウトを使用する場合は、{{ic|/etc/limine-snapper-sync.conf}} 設定ファイルを変更することを忘れないでください: |
||
+ | |||
+ | * ルートサブボリュームへのパスは {{ic|ROOT_SUBVOLUME_PATH}} で指定してください。 |
||
+ | * ルートスナップショットへのパスは {{ic|ROOT_SNAPSHOTS_PATH}} で指定してください。 |
||
+ | }} |
||
+ | |||
+ | 3. 次に、{{ic|limine-snapper-watcher.service}} システムサービスを[[有効化]]してください。これは、Snapper リストが変更された場合にブートメニューにスナップショットエントリを自動的に生成します。 |
||
+ | |||
+ | {{Tip| |
||
+ | スナップショットからブートした際にワンクリックで復元できる[[デスクトップ通知]]を X11 または Wayland で受け取りたい場合は、[[dunst]] をインストールしてください。 |
||
+ | ---- |
||
+ | '''[[dracut]] の場合:''' |
||
+ | |||
+ | 1. ESP 上の {{ic|limine.conf}} のブートエントリの作成を自動化するには {{AUR|limine-dracut-support}} をインストールしてください。詳細は [[#Dracut サポート]] を見てください。 |
||
+ | |||
+ | 2. 自動生成されたスナップショットエントリを示す {{ic|//Snapshots}} キーワードか {{ic|/Snapshots}} キーワードを {{ic|''esp''/limine.conf}} に追加してください。 |
||
+ | }} |
||
+ | |||
+ | 詳細は [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 レイアウトはサポート外です。 |
||
+ | * ツールがインストールされた時よりも前に作成された古いスナップショットのブータブルスナップショットエントリは生成できません。そのようなスナップショットには、対応するカーネルバージョンがたいてい記録されていないからです。 |
||
== 参照 == |
== 参照 == |
||
144行目: | 241行目: | ||
* [https://github.com/limine-bootloader/limine Limine の GitHub リポジトリ] |
* [https://github.com/limine-bootloader/limine Limine の GitHub リポジトリ] |
||
− | {{TranslationStatus|Limine|2024- |
+ | {{TranslationStatus|Limine|2024-11-23|821167}} |
2024年11月23日 (土) 11: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
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 の生成に Dracut を使用するユーザーのために開発されました。これは、Limine ブートローダーでのカーネルのインストールと削除を自動化することで、カーネルの管理をシンプルにします。
/etc/limine-entry-tool.conf
を以下のように編集してください:
KERNEL_CMDLINE
に所望のカーネルパラメータを設定する。
- ESP のスペースを節約するために、
DRACUT_FALLBACK
をno
に設定して initramfs フォールバックイメージの自動生成を無効化する。
設定ファイルを編集したら、以下のコマンドを root 権限で実行して initramfs を生成し、esp/limine.conf
を更新します。
# dracut-rebuild
あるいは、このコマンドのエイリアスを使ってもよいです:
# limine-update
その他の情報は limine-entry-tool の README と設定オプションを参照してください。
Btrfs の Snapper スナップショットとの統合
limine-snapper-syncAUR ツールは Snapper と Limine ブートローダーとを統合します。これは以下の点で便利です:
- ブートする Snapper スナップショットの選択をサポート。
- システムのスナップショットから復元する方法として rsync と btrfs の2つを提供しています。
- 読み取り専用スナップショットのテスト: overlayfs を使用してイミュータブルなシステムで実験を行い、システム上のオリジナルデータを変更せずに問題を再現することができます。
- スナップショットからの復元後、「バックアップ」エントリが Limine ブートローダーに追加されます。これにより、必要になったときにバックアップへの巻き戻しが容易になります。
- 新しいスナップショットが同じブータブルファイルで作成されている場合、破損したブータブルファイルを ESP 上の古いスナップショットを使って自動的に修復します。
- ブータブルファイルのハッシュ値が ESP 上にある同じファイルのハッシュ値と一致しない場合、ハードウェアの問題が疑われるエラーメッセージを自動的に記録します。
セットアップ
1. Snapper にルートサブボリュームの構成が存在することを確認してください。
2. 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
3. 次に、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 レイアウトはサポート外です。
- ツールがインストールされた時よりも前に作成された古いスナップショットのブータブルスナップショットエントリは生成できません。そのようなスナップショットには、対応するカーネルバージョンがたいてい記録されていないからです。