「Limine」の版間の差分
(→参照: 翻訳) |
(同期) |
||
(同じ利用者による、間の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 システム == |
||
− | === |
+ | === BIOS システム === |
− | + | [[パーティショニング#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- |
+ | # 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行目: | ||
== 設定 == |
== 設定 == |
||
− | {{ |
+ | {{Pkg|limine}} にはデフォルトの設定ファイルが同梱されていません。なので、作成する必要があります。このファイルは、どのオペレーティングシステムが起動できるかを Limine に指示するために必要です。Limine はカスタマイズ性が高いので、設定ファイルには多くのオプションがあります。設定ファイルのフォーマットやオプションに関する詳細なドキュメントは[https://github.com/limine-bootloader/limine/blob/trunk/CONFIG.md ここ]で見られます。 |
− | ({{ic|limine.sys}} と同じように) |
+ | 設定ファイルは、({{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.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|''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- |
+ | 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 のブートや他のブートローダのチェインロードもサポートしています。
サポートされているファイルシステム
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 レイアウトはサポート外です。
- ツールがインストールされた時よりも前に作成された古いスナップショットのブータブルスナップショットエントリは生成できません。そのようなスナップショットには、対応するカーネルバージョンがたいてい記録されていないからです。