Limine

提供: ArchWiki
2022年5月19日 (木) 21:14時点におけるAshMyzk (トーク | 投稿記録)による版 (「Limine」を作成(英語版より))
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

Limine is an advanced multiprotocol x86/x86_64 BIOS and UEFI boot loader originally developed as a reference implementation for the stivale boot protocol, but later expanded with the ability to boot Linux as well as chainload other boot loaders.

ノート: In the entire article esp denotes the mountpoint of the EFI system partition aka ESP.

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

Limine supports ext2, ext3, ext4, FAT12, FAT16, FAT32, NTFS, ISO9660, and echfs.

インストール

limineAUR 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.

BIOS システム

MBR vs. 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 GUIDs.

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.

導入

After installing the limineAUR package, core bootloader files will be installed to /usr/share/limine; most important for installing to BIOS systems is the limine.sys file, which contains stage 3 code that Limine needs to boot. This file needs to reside on either the root, or a /boot directory of any partition on the disk onto which Limine will be deployed, as long as the filesystem is supported.

For example:

# cp /usr/share/limine/limine.sys /boot/

Once that is done, stage 1 and 2 need to be deployed on disk. This is achieved by means of the limine-deploy utility, installed as part of the limineAUR package. Installation is identical regardless of whether MBR or GPT is used, as limine-deploy will auto-detect what scheme is used and install itself appropriately.

Run limine-deploy as such:

# limine-deploy /dev/sdX

where /dev/sdX is the disk (not a partition) where Limine is to be installed. For example /dev/sda or /dev/nvme0n1. See Device file#Block device names for a description of the block device naming scheme.

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

ノート: In a Limine config, boot:/// represents the partition on which limine.cfg is located. In case there is no separate /boot partition, and limine.cfg resides on the root partition instead, then, in the following example, boot:/// should instead be boot:///boot/.

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

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

参照