Limine
Limine は先進的なマルチプロトコルの x86/x86_64 BIOS と UEFI 用ブートローダー で、元は stivale ブートプロトコルのリファレンス実装として開発されました。しかし、その後、Linux を起動したり、他のブートローダーをチェインロードしたりする機能が追加されました。
目次
サポートされるファイルシステム
Limine は ext2、ext3、ext4、FAT12、FAT16、FAT32、NTFS、 ISO9660、そして echfs をサポートします。
インストール
limineAUR をインストールしてください。このパッケージをインストールしても、ブートローダーは導入されません。パッケージのファイルとブートローダーのインストーラーがインストールされるだけです。
BIOS システム
MBR vs. GPT
レガシーな PC BIOS は、GPT または MBR でパーティショニングされたデバイスから起動することができます。Limine はこれら両方をサポートしており、インストール手順は非常に似ています。さらに、GRUB とは違って、GPT でパーティショニングされたデバイスにインストールする際に、生のデータを含む追加のパーティションを作成する必要はありません。
GPT では 2TiB 以上のパーティションをディスクに配置することができるし、パーティションやディスクの GUID を利用できたりなどの利点があるので、大きいドライブにおいて良い選択です。
一方、MBR はより古く、多くの制限があります。しかし、GPT パーティションのメディアから起動できない、風変わりな BIOS に対する互換性を確保できます。
デプロイ
limineAUR パッケージをインストールすると、コアのブートローダーファイルが /usr/share/limine
にインストールされます。BIOS システムにインストールする際に最も重要なのは limine.sys
ファイルです。このファイルには、Limine が起動するのに必要なステージ3のコードが含まれています。このファイルは、Limine を導入するディスク上のどれかのパーティション上の root ディレクトリか、/boot
ディレクトリに置く必要があります。さらに、そのファイルシステムがサポートされている必要があります。
例:
# cp /usr/share/limine/limine.sys /boot/
次に、ステージ1とステージ2をディスクにデプロイする必要があります。そうするには、limine-deploy
ユーティリティを使用してください。limineAUR パッケージの一部としてインストールされます。limine-deploy
が、使用されているスキームを自動検出して適切にインストールするので、MBR と GPT のどちらが使用されていようとインストール方法は同じです。
以下のように limine-deploy
を実行してください:
# limine-deploy /dev/sdX
/dev/sdX
の部分は、Limine をインストールするディスク(パーティションではありません)に書き換えてください。例えば、/dev/sda
や /dev/nvme0n1
です。ブロックデバイス名のスキームについては デバイスファイル#ブロックデバイスの名前 を見てください。
UEFI システム
デプロイ
Deploying Limine on UEFI systems involves copying the /usr/share/limine/BOOTX64.EFI
file to an EFI system partition, usually to 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).
UEFI+BIOS 起動可能ドライブ
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.
設定
limineAUR 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 here.
The configuration file, just like limine.sys
, can reside on either the root, or the /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 limine.cfg
Here follows a simple example configuration that contains 1 boot menu entry that describes a typical Arch Linux kernel and initramfs:
TIMEOUT=5 :Arch Linux PROTOCOL=linux KERNEL_PATH=boot:///vmlinuz-linux CMDLINE=root=UUID=root-uuid rw loglevel=3 quiet MODULE_PATH=boot:///initramfs-linux.img
where root-uuid
is to be replaced with the root filesystem's UUID that can be obtained by running (as root):
blkid -s UUID -o value /dev/sdX1
where /dev/sdX1
is the Arch Linux install's root partition. For example /dev/sda1
or /dev/nvme0n1p2
. See Device file#Block device names for a description of the block device naming scheme.
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
/etc/pacman.d/hooks/liminedeploy.hook
[Trigger] Operation = Upgrade Type = Package Target = limine [Action] Description = Deploying Limine after upgrade... When = PostTransaction Exec = /bin/sh -c "limine-deploy /dev/sdX && cp /usr/share/limine/limine.sys /boot/"
UEFI
/etc/pacman.d/hooks/liminedeploy.hook
[Trigger] 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/