「Limine」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(「Limine」を作成(英語版より))
 
(同期)
 
(同じ利用者による、間の17版が非表示)
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 のブートや他のブートローダのチェインロードもサポートしています。
   
  +
{{Note|記事全体で、{{ic|''esp''}} は [[EFI システムパーティション]](別名 ESP) のマウントポイントを示します。}}
[https://limine-bootloader.org Limine] is an advanced multiprotocol x86/x86_64 BIOS and [[UEFI]] [[boot loader]] originally developed as a reference implementation for the [https://github.com/stivale/stivale stivale] boot protocol, but later expanded with the ability to boot Linux as well as chainload other boot loaders.
 
   
  +
== サポートされているファイルシステム ==
{{Note|In the entire article {{ic|''esp''}} denotes the mountpoint of the [[EFI system partition]] aka 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 supports ext2, [[ext3]], [[ext4]], [[FAT12]], [[FAT16]], [[FAT32]], [[NTFS]], ISO9660, and [https://github.com/echfs/echfs echfs].
 
   
 
== インストール ==
 
== インストール ==
   
  +
{{Pkg|limine}} をインストールしてください。
{{AUR|limine}} is available as an [[AUR]] package. Installing the package will not deploy the boot loader for usage; it will just install its files and installation program.
 
   
  +
== Limine ブートローダーをインストールする ==
== BIOS システム ==
 
   
=== MBR vs. GPT ===
+
=== BIOS システム ===
   
  +
[[パーティショニング#GPT か MBR の選択|MBR と GPT]] は両方ともサポートされており、インストール手順は非常に似ています。
Legacy PC BIOS is capable of booting from either [[GPT]] or [[MBR]] partitioned devices. Limine supports both, with a very similar installation procedure. Furthermore, unlike [[GRUB]], it does not require creating an extra partition containing raw data when installing to a GPT partitioned device.
 
   
  +
==== デプロイ ====
Choosing GPT is beneficial for larger drives as it allows placing partitions further than 2TiB on disk, alongside additional benefits such as partition and disk [[GUID|GUIDs]].
 
   
  +
コアのブートローダーファイルは {{ic|/usr/share/limine}} にあります。BIOS システムにインストールする際に最も重要なのは {{ic|limine-bios.sys}} ファイルです。このファイルには、Limine が起動するのに必要なステージ3のコードが含まれています。このファイルは、Limine を導入するディスク上の任意のパーティション上のルートディレクトリか、{{ic|/boot}}、{{ic|/limine}}、{{ic|/boot/limine}} ディレクトリのどれかに置く必要があります。さらに、そのファイルシステムがサポートされている必要があります。
On the other hand, MBR is older and more limited, but it will ensure compatibility with quirky BIOSes which refuse to boot from GPT partitioned media.
 
   
  +
例:
=== 導入 ===
 
   
  +
# cp /usr/share/limine/limine-bios.sys /boot/
After installing the {{AUR|limine}} package, core bootloader files will be installed to {{ic|/usr/share/limine}}; most important for installing to BIOS systems is the {{ic|limine.sys}} file, which contains stage 3 code that Limine needs to boot. This file needs to reside on either the root, or a {{ic|/boot}} directory of any partition on the disk onto which Limine will be deployed, as long as the filesystem is supported.
 
   
  +
次に、ステージ1とステージ2をディスクにデプロイする必要があります。Limine は使用されているスキームを自動検出して適切にインストールするので、MBR と GPT のどちらが使用されていようとインストール方法は同じです:
For example:
 
   
  +
# limine bios-install /dev/sdX
# cp /usr/share/limine/limine.sys /boot/
 
   
  +
{{ic|''/dev/sdX''}} の部分は、Limine をインストールする'''ディスク'''('''パーティションではありません''')に書き換えてください。例えば、{{ic|/dev/sda}} や {{ic|/dev/nvme0n1}} です。ブロックデバイス名のスキームについては [[デバイスファイル#ブロックデバイスの名前]] を見てください。
Once that is done, stage 1 and 2 need to be deployed on disk. This is achieved by means of the {{ic|limine-deploy}} utility, installed as part of the {{AUR|limine}} package. Installation is identical regardless of whether MBR or GPT is used, as {{ic|limine-deploy}} will auto-detect what scheme is used and install itself appropriately.
 
   
  +
=== UEFI システム ===
Run {{ic|limine-deploy}} as such:
 
   
  +
UEFI システム上に Limine をデプロイするには、{{ic|/usr/share/limine/BOOTX64.EFI}} ファイルを [[EFI システムパーティション]]にコピーします。通常 {{ic|''esp''/EFI/BOOT/BOOTX64.EFI}} にコピーしますが、別のファイル名を使用することもできます。ただし、UEFI BIOS がそのファイルを検出できる必要があります。[[GRUB]] とは異なり、Limine は NVRAM に Limine のブートローダーエントリを追加しません。Limine のエントリをセットアップするには [[efibootmgr]] を使用してください。
# limine-deploy /dev/sdX
 
   
  +
=== UEFI+BIOS 起動可能ドライブ ===
where {{ic|''/dev/sdX''}} is the '''disk''' ('''not a partition''') where Limine is to be installed. For example {{ic|/dev/sda}} or {{ic|/dev/nvme0n1}}. See [[Device file#Block device names]] for a description of the block device naming scheme.
 
   
  +
ドライブが [[GPT]] でフォーマットされていて、かつ [[EFI システムパーティション]] を含んでいる場合、BIOS と UEFI の両方のデプロイ手順を行うことにより、そのドライブをレガシー BIOS と UEFI の両方のシステムで起動できるようになります。これは、例えば、UEFI に対応/非対応の複数のシステム上で使用する USB フラッシュドライブにオペレーティングシステムをインストールする場合や、システムをまたいでハードドライブを使用しやすくする場合に便利です。
== UEFI システム ==
 
   
=== 導入 ===
+
== 設定 ==
   
  +
{{Pkg|limine}} にはデフォルトの設定ファイルが同梱されていません。なので、作成する必要があります。このファイルは、どのオペレーティングシステムが起動できるかを Limine に指示するために必要です。Limine はカスタマイズ性が高いので、設定ファイルには多くのオプションがあります。設定ファイルのフォーマットやオプションに関する詳細なドキュメントは[https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md ここ]で見られます。
Deploying Limine on UEFI systems involves copying the {{ic|/usr/share/limine/BOOTX64.EFI}} file to an EFI system partition, usually to {{ic|''esp''/EFI/BOOT/BOOTX64.EFI}}, but it can be given other filenames, as long as the UEFI BIOS is aware of them (see [[UEFI#efibootmgr]]).
 
   
  +
設定ファイルは、({{ic|limine-bios.sys}} と同じように) Limine がデプロイされたドライブ上の任意のパーティションにあるルートディレクトリか {{ic|/boot}}、{{ic|/limine}}、{{ic|/boot/limine}} ディレクトリのどれかに置く必要があります。ただし、そのパーティションのファイルシステムがサポートされている必要があります。設定ファイルは {{ic|limine.conf}} という名前でなければなりません。
== UEFI+BIOS 起動可能ドライブ ==
 
   
  +
{{Note| Limine の設定では、{{ic|boot():/}} は {{ic|limine.conf}} が存在するパーティションを表しています。{{ic|/boot}} のあるパーティションが分離されておらず、{{ic|limine.conf}} が代わりにルートパーティションにある場合、{{ic|boot():/}} は {{ic|boot():/boot/}} のように書き換える必要があります。}}
As long as a drive is [[GPT]] formatted, and it contains an EFI system partition, it is possible to follow both the BIOS and UEFI deployment procedures in order to create a drive capable of booting on both legacy BIOS as well as UEFI systems. This is useful, for example, for installing an operating system on a USB flash drive which is to be used on multiple systems which may, or may not support UEFI, or to ease moving hard drives across systems.
 
   
  +
以下は、典型的な Arch Linux カーネルと initramfs の1つのブートメニューエントリを含む設定の例です:
== 設定 ==
 
   
  +
{{hc|limine.conf|2=
{{AUR|limine}} does not ship a default configuration file, it is therefore necessary to create one. This file is necessary to teach Limine which operating systems are available for boot. The configuration file has a lot of options as Limine allows for a fair degree of customisation. A detailed documentation of the configuration file, its format, and its keys can be found [https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md here].
 
  +
timeout: 5
   
  +
/Arch Linux
The configuration file, just like {{ic|limine.sys}}, can reside on either the root, or the {{ic|/boot}} directory of a partition on the drive on which Limine is deployed, as long as the file system of said partition is supported. The configuration file has to be named {{ic|limine.cfg}}
 
  +
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]] です。
{{Note|In a Limine config, {{ic|boot:///}} represents the partition on which {{ic|limine.cfg}} is located. In case there is no separate {{ic|/boot}} partition, and {{ic|limine.cfg}} resides on the root partition instead, then, in the following example, {{ic|boot:///}} should instead be {{ic|boot:///boot/}}.}}
 
   
  +
{{Tip|[[セキュアブート]]が有効化されている UEFI システムでブートする場合は、Limine の設定ファイルとリソースファイル (カーネルやモジュールなど) の両方をセキュアにしておくことを検討してください。実際、これらの設定ファイルとリソースファイルが格納されている FAT パーティションにアクセスできる人物は、セキュアブートが有効化されている場合でもこれらのファイルを変更できてしまいます。
Here follows a simple example configuration that contains 1 boot menu entry that describes a typical Arch Linux kernel and initramfs:
 
{{bc|1=
 
TIMEOUT=5
 
   
  +
これらのファイルを守るには、まず、すべてのリソースファイルの {{ic|b2sum}} チェックサムを設定ファイル内に記述しておく必要があります。Limine でのファイルパスには、ファイルの {{ic|b2sum}} チェックサムを記述するための任意のフィールドが存在します。このフィールドは、ファイルパスの後に {{ic|#}} 文字を追加し、さらにその後に '''128 文字'''のチェックサムを追加することで指定できます:
:Arch Linux
 
   
  +
{{hc||2=
PROTOCOL=linux
 
  +
boot():/''path''#''checksum''
KERNEL_PATH=boot:///vmlinuz-linux
 
CMDLINE=root=UUID=''root-uuid'' rw loglevel=3 quiet
 
MODULE_PATH=boot:///initramfs-linux.img
 
 
}}
 
}}
  +
where {{ic|''root-uuid''}} is to be replaced with the root filesystem's UUID that can be obtained by running (as root):
 
  +
設定ファイルを守るには、{{ic|limine enroll-config}} コマンドで EFI 実行ファイル内に設定ファイルの {{ic|b2sum}} チェックサムを埋め込んでおく必要があります。}}
{{bc|
 
  +
blkid -s UUID -o value ''/dev/sdX1''
 
  +
=== Windows エントリ ===
  +
  +
Windows を起動できるようにするには、ESP 内の {{ic|bootmgfw.efi}} へのパスを知る必要があります。[[ESP]] 内に移動して、以下のコマンドを使用することで可能です:
  +
  +
{{hc|$ find -name "bootmgfw.efi"|
  +
./EFI/Microsoft/Boot/bootmgfw.efi
 
}}
 
}}
  +
where {{ic|''/dev/sdX1''}} is the Arch Linux install's root partition. For example {{ic|/dev/sda1}} or {{ic|/dev/nvme0n1p2}}. See [[Device file#Block device names]] for a description of the block device naming scheme.
 
  +
次にするべきことは、以下の内容を設定に追加することだけです:
  +
  +
{{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 フック ==
   
  +
必須ではありませんが、Limine がアップデートされるたびに Limine をデプロイする [[pacman フック]] を設定すれば便利です。
While not mandatory, it may be useful to set up a [[pacman hook]] to deploy Limine whenever it is upgraded.
 
   
  +
以下は単なる例です。システム構成に合うようにパスやデバイスを編集してください。
The following are just examples. Edit paths and devices to match the system's configuration.
 
   
 
=== BIOS ===
 
=== BIOS ===
   
  +
{{Note|デバイスを接続/除去したり、別のマシンにインストール環境を移動したり、または他の原因により、デバイスのパスは変わるかもしれないことに注意してください。これにより、BIOS のフックが意図しないデバイスに誤って Limine をインストールするかもしれません。}}
{{Note|Keep in mind that the device paths may change with the addition or removal of devices, moving the installation to different machines, and other factors. This may cause the BIOS hook to accidentally install Limine on an unwanted device.}}
 
  +
 
{{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
99行目: 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/"
 
}}
 
}}
   
106行目: 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
115行目: 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 レイアウトはサポート外です。
  +
* ツールがインストールされた時よりも前に作成された古いスナップショットのブータブルスナップショットエントリは生成できません。そのようなスナップショットには、対応するカーネルバージョンがたいてい記録されていないからです。
   
 
== 参照 ==
 
== 参照 ==
   
* [https://limine-bootloader.org Limine's website]
+
* [https://limine-bootloader.org Limine のウェブサイト]
* [https://github.com/limine-bootloader/limine Limine's GitHub repository]
+
* [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 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。