「Limine」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎参照: 翻訳)
(同期)
 
(同じ利用者による、間の13版が非表示)
7行目: 7行目:
 
{{Related|Unified Extensible Firmware Interface}}
 
{{Related|Unified Extensible Firmware Interface}}
 
{{Related articles end}}
 
{{Related articles end}}
  +
[https://limine-bootloader.org Limine] は、先進的で、ポータブルな、マルチプロトコルの[[ブートローダー]]です。元は Limine ブートプロトコルのリファレンス実装として開発されましたが、Linux のブートや他のブートローダのチェインロードもサポートしています。
 
[https://limine-bootloader.org Limine] は先進的なマルチプロトコルの x86/x86_64 BIOS と [[UEFI]] 用[[ブートローダー]] で、元は [https://github.com/stivale/stivale stivale] ブートプロトコルのリファレンス実装として開発されました。しかし、その後、Linux を起動したり、他のブートローダーをチェインロードしたりする機能が追加されました。
 
   
 
{{Note|記事全体で、{{ic|''esp''}} は [[EFI システムパーティション]](別名 ESP) のマウントポイントを示します。}}
 
{{Note|記事全体で、{{ic|''esp''}} は [[EFI システムパーティション]](別名 ESP) のマウントポイントを示します。}}
   
== サポートされるファイルシステム ==
+
== サポートされているファイルシステム ==
   
  +
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 の設計理念に基づいて意図的に制限されています]。
Limine は ext2、[[ext3]]、[[ext4]]、[[FAT|FAT12]]、[[FAT|FAT16]]、[[FAT32]]、[[NTFS]]、 ISO9660、そして [https://github.com/echfs/echfs echfs] をサポートします。
 
   
 
== インストール ==
 
== インストール ==
   
  +
{{Pkg|limine}} をインストールしてください。
{{AUR|limine}} をインストールしてください。このパッケージをインストールしても、ブートローダーは導入されません。パッケージのファイルとブートローダーのインストーラーがインストールされるだけです。
 
   
  +
== Limine ブートローダーをインストールする ==
== BIOS システム ==
 
   
=== MBR vs. GPT ===
+
=== BIOS システム ===
   
レガシーな PC BIOS は、[[GPT]] または [[MBR]] でパーティショニングされたデバイスら起動するこができます。Limineこれら両方サポートており、インストール手順は非常に似ています。さらに、[[GRUB]] とは違って、GPT でパーティショニングされたデバイスにインストールする際に、生のデータを含む追加のパーティションを作成する必要はありません
+
[[パーティショニング#GPT MBR の選択|MBR GPT]] は両方ともサポートされており、インストール手順は非常に似ています。
   
  +
==== デプロイ ====
GPT では 2TiB 以上のパーティションをディスクに配置することができるし、パーティションやディスクの [[パーティショニング#GUID Partition Table|GUID]] を利用できたりなどの利点があるので、大きいドライブにおいて良い選択です。
 
   
  +
コアのブートローダーファイルは {{ic|/usr/share/limine}} にあります。BIOS システムにインストールする際に最も重要なのは {{ic|limine-bios.sys}} ファイルです。このファイルには、Limine が起動するのに必要なステージ3のコードが含まれています。このファイルは、Limine を導入するディスク上の任意のパーティション上のルートディレクトリか、{{ic|/boot}}、{{ic|/limine}}、{{ic|/boot/limine}} ディレクトリのどれかに置く必要があります。さらに、そのファイルシステムがサポートされている必要があります。
一方、MBR はより古く、多くの制限があります。しかし、GPT パーティションのメディアから起動できない、風変わりな BIOS に対する互換性を確保できます。
 
 
=== デプロイ ===
 
 
{{AUR|limine}} パッケージをインストールすると、コアのブートローダーファイルが {{ic|/usr/share/limine}} にインストールされます。BIOS システムにインストールする際に最も重要なのは {{ic|limine.sys}} ファイルです。このファイルには、Limine が起動するのに必要なステージ3のコードが含まれています。このファイルは、Limine を導入するディスク上のどれかのパーティション上の root ディレクトリか、{{ic|/boot}} ディレクトリに置く必要があります。さらに、そのファイルシステムがサポートされている必要があります。
 
   
 
例:
 
例:
   
# cp /usr/share/limine/limine.sys /boot/
+
# cp /usr/share/limine/limine-bios.sys /boot/
 
次に、ステージ1とステージ2をディスクにデプロイする必要があります。そうするには、{{ic|limine-deploy}} ユーティリティを使用してください。{{AUR|limine}} パッケージの一部としてインストールされます。{{ic|limine-deploy}} が、使用されているスキームを自動検出して適切にインストールするので、MBR と GPT のどちらが使用されていようとインストール方法は同じです。
 
   
  +
次に、ステージ1とステージ2をディスクにデプロイする必要があります。Limine は使用されているスキームを自動検出して適切にインストールするので、MBR と GPT のどちらが使用されていようとインストール方法は同じです:
以下のように {{ic|limine-deploy}} を実行してください:
 
   
# limine-deploy /dev/sdX
+
# limine bios-install /dev/sdX
   
 
{{ic|''/dev/sdX''}} の部分は、Limine をインストールする'''ディスク'''('''パーティションではありません''')に書き換えてください。例えば、{{ic|/dev/sda}} や {{ic|/dev/nvme0n1}} です。ブロックデバイス名のスキームについては [[デバイスファイル#ブロックデバイスの名前]] を見てください。
 
{{ic|''/dev/sdX''}} の部分は、Limine をインストールする'''ディスク'''('''パーティションではありません''')に書き換えてください。例えば、{{ic|/dev/sda}} や {{ic|/dev/nvme0n1}} です。ブロックデバイス名のスキームについては [[デバイスファイル#ブロックデバイスの名前]] を見てください。
   
== UEFI システム ==
+
=== UEFI システム ===
   
  +
UEFI システム上に Limine をデプロイするには、{{ic|/usr/share/limine/BOOTX64.EFI}} ファイルを [[EFI システムパーティション]]にコピーします。通常 {{ic|''esp''/EFI/BOOT/BOOTX64.EFI}} にコピーしますが、別のファイル名を使用することもできます。ただし、UEFI BIOS がそのファイルを検出できる必要があります。[[GRUB]] とは異なり、Limine は NVRAM に Limine のブートローダーエントリを追加しません。Limine のエントリをセットアップするには [[efibootmgr]] を使用してください。
=== デプロイ ===
 
   
  +
=== UEFI+BIOS 起動可能ドライブ ===
UEFI システム上に Limine をデプロイするには、{{ic|/usr/share/limine/BOOTX64.EFI}} ファイルを [[EFI システムパーティション]]にコピーします。通常 {{ic|''esp''/EFI/BOOT/BOOTX64.EFI}} にコピーしますが、別のファイル名を使用することもできます。ただし、UEFI BIOS がそのファイルを検出できる必要があります([[UEFI#efibootmgr]] を参照)。
 
 
== UEFI+BIOS 起動可能ドライブ ==
 
   
 
ドライブが [[GPT]] でフォーマットされていて、かつ [[EFI システムパーティション]] を含んでいる場合、BIOS と UEFI の両方のデプロイ手順を行うことにより、そのドライブをレガシー BIOS と UEFI の両方のシステムで起動できるようになります。これは、例えば、UEFI に対応/非対応の複数のシステム上で使用する USB フラッシュドライブにオペレーティングシステムをインストールする場合や、システムをまたいでハードドライブを使用しやすくする場合に便利です。
 
ドライブが [[GPT]] でフォーマットされていて、かつ [[EFI システムパーティション]] を含んでいる場合、BIOS と UEFI の両方のデプロイ手順を行うことにより、そのドライブをレガシー BIOS と UEFI の両方のシステムで起動できるようになります。これは、例えば、UEFI に対応/非対応の複数のシステム上で使用する USB フラッシュドライブにオペレーティングシステムをインストールする場合や、システムをまたいでハードドライブを使用しやすくする場合に便利です。
58行目: 49行目:
 
== 設定 ==
 
== 設定 ==
   
{{AUR|limine}} にはデフォルトの設定ファイルが同梱されていません。なので、作成する必要があります。このファイルは、どのオペレーティングシステムが起動できるかを Limine に指示するために必要です。Limine はカスタマイズ性が高いので、設定ファイルには多くのオプションがあります。設定ファイルのフォーマットやキーに関する詳細なドキュメントは[https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md ここ]で見られます。
+
{{Pkg|limine}} にはデフォルトの設定ファイルが同梱されていません。なので、作成する必要があります。このファイルは、どのオペレーティングシステムが起動できるかを Limine に指示するために必要です。Limine はカスタマイズ性が高いので、設定ファイルには多くのオプションがあります。設定ファイルのフォーマットやオプションに関する詳細なドキュメントは[https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md ここ]で見られます。
   
({{ic|limine.sys}} と同じように)設定ファイルは、Limine がデプロイされたドライブ上のパーティションにある root ディレクトリか {{ic|/boot}} に置くことできます。ただし、そのパーティションのファイルシステムがサポートされている必要があります。設定ファイルは {{ic|limine.cfg}} という名前でなければなりません。
+
設定ファイルは、({{ic|limine-bios.sys}} と同じように) Limine がデプロイされたドライブ上の任意のパーティションにあるルートディレクトリか {{ic|/boot}}、{{ic|/limine}}、{{ic|/boot/limine}} ディレクトリのどれかに置く必要あります。ただし、そのパーティションのファイルシステムがサポートされている必要があります。設定ファイルは {{ic|limine.conf}} という名前でなければなりません。
   
{{Note| Limine の設定では、{{ic|boot:///}} は {{ic|limine.cfg}} が存在するパーティションを表しています。{{ic|/boot}} のあるパーティションが分離されておらず、{{ic|limine.cfg}} が代わりに root パーティションにある場合、{{ic|boot:///}} は {{ic|boot:///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つのブートメニューエントリを含む設定の例です:
   
{{bc|1=
+
{{hc|limine.conf|2=
  +
timeout: 5
TIMEOUT=5
 
   
:Arch Linux
+
/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|''xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx''}} はルートファイルシステムの [[UUID]] です。
PROTOCOL=linux
 
  +
KERNEL_PATH=boot:///vmlinuz-linux
 
  +
{{Tip|[[セキュアブート]]が有効化されている UEFI システムでブートする場合は、Limine の設定ファイルとリソースファイル (カーネルやモジュールなど) の両方をセキュアにしておくことを検討してください。実際、これらの設定ファイルとリソースファイルが格納されている FAT パーティションにアクセスできる人物は、セキュアブートが有効化されている場合でもこれらのファイルを変更できてしまいます。
CMDLINE=root=UUID=''root-uuid'' rw loglevel=3 quiet
 
  +
MODULE_PATH=boot:///initramfs-linux.img
 
  +
これらのファイルを守るには、まず、すべてのリソースファイルの {{ic|b2sum}} チェックサムを設定ファイル内に記述しておく必要があります。Limine でのファイルパスには、ファイルの {{ic|b2sum}} チェックサムを記述するための任意のフィールドが存在します。このフィールドは、ファイルパスの後に {{ic|#}} 文字を追加し、さらにその後に '''128 文字'''のチェックサムを追加することで指定できます:
  +
  +
{{hc||2=
  +
boot():/''path''#''checksum''
 
}}
 
}}
   
  +
設定ファイルを守るには、{{ic|limine enroll-config}} コマンドで EFI 実行ファイル内に設定ファイルの {{ic|b2sum}} チェックサムを埋め込んでおく必要があります。}}
{{ic|''root-uuid''}} の部分は root ファイルシステムの UUID に置き換えてください。以下を root として実行することで得られます:
 
  +
  +
=== Windows エントリ ===
  +
  +
Windows を起動できるようにするには、ESP 内の {{ic|bootmgfw.efi}} へのパスを知る必要があります。[[ESP]] 内に移動して、以下のコマンドを使用することで可能です:
   
  +
{{hc|$ find -name "bootmgfw.efi"|
{{bc|
 
  +
./EFI/Microsoft/Boot/bootmgfw.efi
blkid -s UUID -o value ''/dev/sdX1''
 
 
}}
 
}}
   
  +
次にするべきことは、以下の内容を設定に追加することだけです:
{{ic|''/dev/sdX1''}} の部分は Arch Linux がインストールされた root パーティションです。例えば、{{ic|/dev/sda1}} や {{ic|/dev/nvme0n1p2}} です。ブロックデバイス名のスキームについては [[デバイスファイル#ブロックデバイスの名前]] を見てください。
 
   
  +
{{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 フック ==
99行目: 111行目:
 
{{hc|/etc/pacman.d/hooks/liminedeploy.hook|2=
 
{{hc|/etc/pacman.d/hooks/liminedeploy.hook|2=
 
[Trigger]
 
[Trigger]
  +
Operation = Install
 
Operation = Upgrade
 
Operation = Upgrade
 
Type = Package
 
Type = Package
106行目: 119行目:
 
Description = Deploying Limine after upgrade...
 
Description = Deploying Limine after upgrade...
 
When = PostTransaction
 
When = PostTransaction
Exec = /bin/sh -c "limine-deploy ''/dev/sdX'' && cp /usr/share/limine/limine.sys /boot/"
+
Exec = /bin/sh -c "/usr/bin/limine bios-install ''/dev/sdX'' && /usr/bin/cp /usr/share/limine/limine-bios.sys /boot/"
 
}}
 
}}
   
113行目: 126行目:
 
{{hc|/etc/pacman.d/hooks/liminedeploy.hook|2=
 
{{hc|/etc/pacman.d/hooks/liminedeploy.hook|2=
 
[Trigger]
 
[Trigger]
  +
Operation = Install
 
Operation = Upgrade
 
Operation = Upgrade
 
Type = Package
 
Type = Package
122行目: 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 レイアウトはサポート外です。
  +
* ツールがインストールされた時よりも前に作成された古いスナップショットのブータブルスナップショットエントリは生成できません。そのようなスナップショットには、対応するカーネルバージョンがたいてい記録されていないからです。
   
 
== 参照 ==
 
== 参照 ==
127行目: 272行目:
 
* [https://limine-bootloader.org Limine のウェブサイト]
 
* [https://limine-bootloader.org Limine のウェブサイト]
 
* [https://github.com/limine-bootloader/limine Limine の GitHub リポジトリ]
 
* [https://github.com/limine-bootloader/limine Limine の GitHub リポジトリ]
  +
  +
{{TranslationStatus|Limine|2025-02-03|826039}}

2025年2月7日 (金) 18:37時点における最新版

関連記事

Limine は、先進的で、ポータブルな、マルチプロトコルのブートローダーです。元は Limine ブートプロトコルのリファレンス実装として開発されましたが、Linux のブートや他のブートローダのチェインロードもサポートしています。

ノート: 記事全体で、espEFI システムパーティション(別名 ESP) のマウントポイントを示します。

サポートされているファイルシステム

Limine は FAT12FAT16FAT32ISO9660サポートしています。これらに加えて、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 という名前でなければなりません。

ノート: Limine の設定では、boot():/limine.conf が存在するパーティションを表しています。/boot のあるパーティションが分離されておらず、limine.conf が代わりにルートパーティションにある場合、boot():/boot():/boot/ のように書き換える必要があります。

以下は、典型的な 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 です。

ヒント: セキュアブートが有効化されている UEFI システムでブートする場合は、Limine の設定ファイルとリソースファイル (カーネルやモジュールなど) の両方をセキュアにしておくことを検討してください。実際、これらの設定ファイルとリソースファイルが格納されている FAT パーティションにアクセスできる人物は、セキュアブートが有効化されている場合でもこれらのファイルを変更できてしまいます。

これらのファイルを守るには、まず、すべてのリソースファイルの b2sum チェックサムを設定ファイル内に記述しておく必要があります。Limine でのファイルパスには、ファイルの b2sum チェックサムを記述するための任意のフィールドが存在します。このフィールドは、ファイルパスの後に # 文字を追加し、さらにその後に 128 文字のチェックサムを追加することで指定できます:


boot():/path#checksum
設定ファイルを守るには、limine enroll-config コマンドで EFI 実行ファイル内に設定ファイルの b2sum チェックサムを埋め込んでおく必要があります。

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

ノート: デバイスを接続/除去したり、別のマシンにインストール環境を移動したり、または他の原因により、デバイスのパスは変わるかもしれないことに注意してください。これにより、BIOS のフックが意図しないデバイスに誤って Limine をインストールするかもしれません。
/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 は、initramfsUKI の生成に Dracut を使用するユーザーのために開発されました。これは、Limine ブートローダーでのカーネルの追加と削除を自動化することで、カーネルの管理をシンプルにします。

ノート: x86_64 アーキテクチャの UEFI システムにおいては、Limine を更新あるいは再インストールすると、Limine の EFI イメージは自動的に ESP へと配置されます。

設定:

/etc/limine-entry-tool.conf ではなく /etc/default/limine を変更してください。このファイルは /etc/limine-entry-tool.conf よりも優先されます。

1. /etc/default/limine を編集する

  • ESP_PATHESP へのパスを設定する。(bootctl が ESP を自動的に検出する場合は、ESP_PATH を設定する必要はありません)
  • KERNEL_CMDLINE[default]= に所望のカーネルパラメータを設定する。
ヒント:
  • KERNEL_CMDLINE[default]=KERNEL_CMDLINE= が設定されていない場合、ツールはまず /etc/kernel/cmdline を読み込もうとします。このファイルが利用できない場合は、/proc/cmdline を代わりに読み込みます。
  • 任意で、KERNEL_CMDLINE[fallback]=fallback という名前を含むカーネルエントリに対してカーネルパラメータを設定することができます。
  • 追加で、KERNEL_CMDLINE["kernel name"]= エントリはブートメニュー内の同じ名前のカーネルエントリに対応し、カーネルエントリ毎に別々のカーネルコマンドライン/パラメータを設定することができます。例えば、KERNEL_CMDLINE["linux-lts"]=linux-lts カーネルエントリに対応します。
  • ESP の領域を節約するには、DRACUT_FALLBACKno に設定することで、initramfs あるいは UKI のフォールバックイメージの自動生成を無効化することができます。
  • UKI でブートさせたい場合は、DRACUT_UKIyes に設定してください。
ヒント: UKI の利点:
  • systemd-bootrEFInd は、このツールによって生成された UKI を自動的にロードすることができます。
  • sbctl がインストールされ有効化されている場合、このツールは、カーネルを更新あるいはインストールする際に、UKI をセキュアブート鍵で自動的に署名します。
  • FIND_BOOTLOADERSyes に設定すると、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_PATHESP へのパスを設定してください。(bootctl が自動的に ESP を検出する場合は、ESP_PATH を設定する必要はありません。)
  • KERNEL_CMDLINE[default]= に所望のカーネルパラメータを設定してください。
ヒント:
  • KERNEL_CMDLINE[default]=KERNEL_CMDLINE= が設定されていない場合、ツールはまず /etc/kernel/cmdline を読み込もうとします。このファイルが利用できない場合は、/proc/cmdline を代わりに読み込みます。
  • 追加で、KERNEL_CMDLINE["kernel name"]= エントリはブートメニュー内の同じ名前のカーネルエントリに対応し、カーネルエントリ毎に別々のカーネルコマンドライン/パラメータを設定することができます。

2. 所望の initramfs ツール (例: mkinitcpiodracutbooster など) をインストールしてください。

3. Limine ブートメニュー内のブートエントリを管理するためにスクリプトを作成してください。例えば、limine-entry-tool コマンドを使ってカーネルの追加と削除を自動化する pacman フックなどです。

詳細は limine-entry-tool の README を参照してください。

Btrfs の Snapper スナップショットとの統合

limine-snapper-syncAUR ツールは Snapper と Limine ブートローダーとを統合します。これは以下の点で便利です:

  • ブートする Snapper スナップショットの選択をサポート。
  • システムのスナップショットから復元する方法として rsyncbtrfs の2つを提供しています。
  • スナップショットからの復元後、「バックアップ」エントリが Limine ブートローダーに追加されます。これにより、必要になったときにバックアップへの巻き戻しが容易になります。
  • 新しいスナップショットが同じブータブルファイルで作成されている場合、破損したブータブルファイルを ESP 上の古いスナップショットを使って自動的に修復します。
  • ブータブルファイルのハッシュ値が ESP 上にある同じファイルのハッシュ値と一致しない場合、ハードウェアの問題が疑われるエラーメッセージを自動的に記録します。
  • 読み取り専用のスナップショットをテストできる: overlayfs を使って、イミュータブルのようなシステム上で元のデータを変更することなく、インストールされたパッケージをテストします。これは、ブートパーティションや分離されたホームサブボリューム/パーティションのテストを意図しているものではないことに注意してください。

設定

ノート: (ブータブルスナップショットの数とインストールしたいカーネルバージョンの数によりますが) ESP には 1 GiB 以上を割り当てることが推奨されます。

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
ノート:

キーワードは、どちらか一方のみを使用してください:

  • //Snapshots は OS ブートエントリブロック内に記述します。(何も指定されていない場合、デフォルト。)

または

  • /Snapshots は OS ブートエントリブロック外に記述します。

/etc/machine-id のマシン ID を含めるのは任意ですが、自動識別に便利です。ブートエントリの名称変更はこのツールには影響しません。

2. /etc/default/limine を編集してください。このファイルに記述された設定は /etc/limine-snapper-sync.conf を上書きします:

  • ESP_PATHESP へのパスを設定してください。(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 のリストに変更が生じた際にスナップショットエントリをブートメニューに自動的に生成します。

ヒント: dracut を使用する場合:

limine-dracut-supportAUR をインストールすることで、ESP 上の limine.conf 内へのブートエントリの作成を自動化できます。詳細は #Dracut サポート を参照してください。

詳細は limine-snapper-sync README やその他の設定オプションを参照してください。

コマンド

  • limine-snapper-sync: Limine のスナップショットエントリを Snapper のリストと同期させます。
  • limine-snapper-list: 現在の Limine スナップショットエントリを表示します。
  • limine-snapper-info: バージョンとブータブルスナップショットの総数を表示し、ブータブルファイルの検証を行います。
  • limine-snapper-restore: 選択したスナップショットから、一致するカーネルのバージョンを含めて、システムを復元します。

既知の制限

  • サポートは Snapper レイアウトのみで、Snapper ではない任意の Btrfs レイアウトはサポート外です。
  • ツールがインストールされた時よりも前に作成された古いスナップショットのブータブルスナップショットエントリは生成できません。そのようなスナップショットには、対応するカーネルバージョンがたいてい記録されていないからです。

参照

翻訳ステータス: このページは en:Limine の翻訳バージョンです。最後の翻訳日は 2025-02-03 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。