「Systemd-boot」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Kusakata がページ「Gummiboot」をリダイレクトの「Systemd-boot」に移動しました)
1行目: 1行目:
  +
{{lowercase title}}
{{DISPLAYTITLE:gummiboot}}
 
 
[[Category:ブートローダー]]
 
[[Category:ブートローダー]]
 
[[de:Gummiboot]]
 
[[de:Gummiboot]]
10行目: 10行目:
 
{{Related|Unified Extensible Firmware Interface}}
 
{{Related|Unified Extensible Firmware Interface}}
 
{{Related articles end}}
 
{{Related articles end}}
  +
'''systemd-boot''' (旧名 '''gummiboot''') は設定済みの EFI イメージを実行できるシンプルな UEFI ブートマネージャです。デフォルトのエントリは設定したパターン (glob) または画面上のメニューで選択されます。systemd-boot は systemd 220-2 から [[systemd]] に同梱されるようになりました。
[http://freedesktop.org/wiki/Software/gummiboot/ gummiboot のホームページ] より:
 
:''gummiboot は設定済みの EFI イメージを実行できるシンプルな UEFI ブートマネージャです。デフォルトのエントリは設定したパターン (glob) または画面上のメニューで選択されます。''
 
   
gummiboot は簡単に設定することができ、Linux カーネルの [[EFISTUB]] や UEFI シェル、grub.efi などの EFI 実行可能ファイルだけを起動できます。
+
systemd-boot は簡単に設定することができ、Linux カーネルの [[EFISTUB]] や UEFI シェル、grub.efi などの EFI 実行可能ファイルだけを起動できます。
   
{{Warning|gummiboot は EFISTUB カーネルのブートメニューを提供します。{{Bug|33745}} にあるように EFISTUB カーネルの起動に問題が起こる場合は、[[GRUB]] や [[Syslinux]]、または [[ブートローダー#ELILO|ELILO]] といった EFISTUB を使用しないブートローダーを使ってください。}}
+
{{Warning|systemd-boot は EFISTUB カーネルのブートメニューを提供します。{{Bug|33745}} にあるように EFISTUB カーネルの起動に問題が起こる場合は、[[GRUB]] や [[Syslinux]]、または [[ブートローダー#ELILO|ELILO]] といった EFISTUB を使用しないブートローダーを使ってください。}}
   
 
{{Note|この記事では [[UEFI#EFI System Partition|EFI System Partition]] (ESP) のマウントポイントを {{ic|$esp}} で示します。}}
 
{{Note|この記事では [[UEFI#EFI System Partition|EFI System Partition]] (ESP) のマウントポイントを {{ic|$esp}} で示します。}}
 
{{Note|systemd 220-2 から Gummiboot は systemd-boot として [[systemd]] にマージされています。{{ic|bootctl install}} を使ってインストールしてください。}}
 
   
 
== インストール ==
 
== インストール ==
{{Pkg|gummiboot}} をインストールしてから次のコマンドを実行して gummiboot をあなたのブートローダとしてインストールしてください:
 
   
  +
=== EFI ブート ===
# gummiboot install
 
  +
まず、[[Unified_Extensible_Firmware_Interface#UEFI 変数のサポートを正しく動作させるための必要条件|EFI 変数にアクセスできるかチェック]]して UEFI モードで起動していることを確認してください。また、EFI System Partition が正しくマウントされて、カーネルと initramfs が ESP にコピーされていないと、systemd-boot は他のパーティションから EFI バイナリをロードすることができません。以上のことから systemd-boot を使う時は ESP を {{ic|/boot}} にマウントすることを強く推奨します。ESP を {{ic|/boot}} 以外に作りたい場合、[[#アップデート]] を見て下さい。
   
のコマンドで自動的に gummiboot のバイナリがあなたの EFI System Partition にコピーされ EFI Boot Manager にブートエントリが作成されます。EFI で起動していない場合、ブートエントリの作成は失敗します。ただし gummiboot のバイナリ ESP 内にある EFI バイナリのデフォルトの配置場所 (x64 環境では {{ic|/boot/EFI/Boot/BOOTX64.EFI}}) にコピー gummiboot を起動することは可能です。インストール作業を一度でも完了すれば、パッケージのアップデート中 {{Pkg|gummiboot}} の post_install スクリプトによって自動で更新がなされます。
+
以下のコマンドを実行することsystemd-boot のバイナリがあなたの EFI System Partition にコピーされEFI Boot Manager によってロードされるデフォルトの EFI アプリケーション (デフォルトブートエントリ) として systemd-boot 追加されます。UEFI モードで起動していない場合、また、EFI 変数にアクセスできないときは、ブートエントリの作成は失敗します。ただし systemd-boot のバイナリ ESP 内にある EFI バイナリのデフォルトの配置場所 (x64 環境では {{ic|$esp/EFI/boot/bootx64.efi}}) にコピーるので systemd-boot を起動すること自体は可能です。
   
  +
# bootctl --path=''$esp'' install
{{Note|
 
* gummiboot コマンドはあなたの EFI System Partition が {{ic|/boot}} にマウントされているとみなします。あなたの ESP が {{ic|/boot/efi}} にマウントされているときは {{ic|--path}} スイッチを追加して gummiboot のインストールコマンドを呼び出して下さい。また、マウントポイントが異なると gummiboot は自動で更新できないので、パッケージを更新した後は {{ic|1=gummiboot --path=/boot/efi update}} を実行する必要があります。さらにカーネルや initramfs が ESP にコピーされているか確認してください、gummiboot は他のパーティションから EFI バイナリをロードすることができません。以上のことから gummiboot を使う時は ESP を {{ic|/boot}} にマウントすることを強く推奨します。この記事ではあなたの ESP が {{ic|/boot}} にマウントされていると仮定しています。
 
   
  +
=== レガシーブート ===
* {{ic|gummiboot}} がブートエントリの作成に失敗したときは、[[Unified_Extensible_Firmware_Interface#Requirements_for_UEFI_Variables_support_to_work_properly|ここ]]に記述されている要件が全て満たされているか確認してください。}}
 
  +
{{Warning|こちらの起動方法は推奨されません。}}
  +
レガシーな OS を起動したいときも systemd-boot をインストールすることは可能です。ただし、起動時に systemd-boot の EFI ファイルを実行するようにファームウェアを設定する必要があります:
  +
* EFI シェルを使用する。
  +
* ファームウェアのインターフェイスから起動時にロードされる EFI ファイルを設定する。
  +
{{Note|Dell の Latitude シリーズなどでは、EFI ブートを設定するために必要な全てがファームウェアのインターフェイスに揃っており、EFI シェルではコンピュータの ROM に書き込みを行えません。}}
  +
設定できる場合、インストールは簡単です: EFI シェルやファームウェアの設定インターフェイスを開いて、マシンのデフォルトの EFI ファイルを {{ic|/<EFI boot partition>/EFI/systemd/systemd-bootx64.efi}} に変更してください。
  +
  +
=== アップデート ===
  +
  +
systemd-boot はあなたの EFI System Partition が {{ic|/boot}} にマウントされていると予め事前設定されており、新しい systemd-boot がインストールされた場合、インストールスクリプトの {{ic|post_install}} によって {{ic|1=bootctl --path=/boot update}} コマンドが自動的に実行されます。ESP が {{ic|/boot}} にマウントされていないときは、手動でコマンドを実行する必要があります。
   
 
== 設定 ==
 
== 設定 ==
  +
  +
=== 基本設定 ===
   
 
基本的な設定は {{ic|/boot/loader/loader.conf}} に記述します、2つの設定オプションが使えます:
 
基本的な設定は {{ic|/boot/loader/loader.conf}} に記述します、2つの設定オプションが使えます:
43行目: 51行目:
 
例:
 
例:
   
{{hc|/boot/loader/loader.conf|
+
{{hc|$esp/loader/loader.conf|
 
default arch
 
default arch
 
timeout 4
 
timeout 4
50行目: 58行目:
 
オプションは両方ともブートメニューで変更するこができ、EFI 変数として保存されます。
 
オプションは両方ともブートメニューで変更するこができ、EFI 変数として保存されます。
   
  +
{{Note|タイムアウトが設定されてなかった場合、デフォルトのエントリがすぐさま起動します。}}
== ブートエントリの追加 ==
 
  +
Gummiboot は {{ic|/boot/loader/entries/*.conf}} にあるブートメニューのアイテムを検索します – それぞれのファイルにはひとつのブートエントリを含めなくてはなりません。利用できるオプションは:
 
  +
=== ブートエントリの追加 ===
  +
{{Note|bootctl は自動的に "Windows Boot Manager" ({{ic|\EFI\Microsoft\Boot\Bootmgfw.efi}}), "EFI Shell" ({{ic|\shellx64.efi}}), "EFI Default Loader" ({{ic|\EFI\Boot\bootx64.efi}}) をチェックします。これらが検出された場合、自動的に適切なエントリが生成されます。ただし、([[rEFInd]] など) 他の EFI アプリケーションは自動検出されないため、カーネルを起動するには、手動で設定してエントリを作成する必要があります。Windows とデュアルブートする場合、Windows のデフォルトオプションである[[Windows と Arch のデュアルブート#高速スタートアップ|高速スタートアップ]]を無効にすることを強く推奨します。}}
  +
  +
{{Tip|{{ic|1=blkid -s PARTUUID -o value /dev/sdxY}} コマンドを使うことで root パーティションの PARTUUID を確認できます。'x' はデバイス文字、'Y' はパーティション番号に置き換えて下さい。確認するのは root パーティションだけで大丈夫です。$esp は確認する必要がありません。}}
  +
  +
bootctl は {{ic|$esp/loader/entries/*.conf}} にあるブートメニューのアイテムを検索します – 1つのファイルに1つのブートエントリを記述します。利用できるオプションは:
   
 
* {{ic|title}} – オペレーティングシステムの名前。'''必須。'''
 
* {{ic|title}} – オペレーティングシステムの名前。'''必須。'''
65行目: 79行目:
 
Linux では、{{ic|linux ''path-to-vmlinuz''}} と {{ic|initrd ''path-to-initramfs''}} を指定することができます。この値は自動で {{ic|efi ''path''}} と {{ic|1=options initrd=''path''}} に翻訳されます – この文法は利便性のためにサポートされており機能に違いはありません。
 
Linux では、{{ic|linux ''path-to-vmlinuz''}} と {{ic|initrd ''path-to-initramfs''}} を指定することができます。この値は自動で {{ic|efi ''path''}} と {{ic|1=options initrd=''path''}} に翻訳されます – この文法は利便性のためにサポートされており機能に違いはありません。
   
  +
==== 標準的な root インストール ====
Arch Linux のエントリのサンプル:
 
  +
  +
LVM や LUKS がない root パーティションを使用するエントリの例:
   
 
{{hc|/boot/loader/entries/arch.conf|2=
 
{{hc|/boot/loader/entries/arch.conf|2=
76行目: 92行目:
 
上の例にある PARTUUID/PARTLABEL は GPT パーティションを識別しています。ファイルシステムを識別する UUID/LABEL とは異なっていることに注意してください。PARTUUID/PARTLABEL には他のファイルシステムでパーティションをフォーマットしなおしても値が変わらないという利点があります。またパーティションにファイルシステムがない (もしくは LABEL をサポートしていない LUKS を使っている) 場合などにも有用です。
 
上の例にある PARTUUID/PARTLABEL は GPT パーティションを識別しています。ファイルシステムを識別する UUID/LABEL とは異なっていることに注意してください。PARTUUID/PARTLABEL には他のファイルシステムでパーティションをフォーマットしなおしても値が変わらないという利点があります。またパーティションにファイルシステムがない (もしくは LABEL をサポートしていない LUKS を使っている) 場合などにも有用です。
   
  +
==== LVM root インストール ====
また、{{ic|\EFI\arch\grub.efi}} など他の EFI プログラムを追加することもできます。
 
   
  +
[[LVM|論理ボリュームマネージャ]]を使う root パーティションのエントリ例:
{{Note|Gummiboot は Windows のインストール ({{ic|\EFI\Microsoft\Boot\Bootmgfw.efi}}) や UEFI Shell ({{ic|\shellx64.efi}}) のバイナリを自動でチェックして表示します。従って手動でこれらのエントリを作成する必要はありません。}}
 
  +
  +
{{hc|$esp/loader/entries/arch-lvm.conf|2=
  +
title Arch Linux (LVM)
  +
linux /vmlinuz-linux
  +
initrd /initramfs-linux.img
  +
options root=/dev/mapper/<VolumeGroup-LogicalVolume> rw
  +
}}
  +
  +
{{ic|<VolumeGroup-LogicalVolume>}} は実際の VG や LV の名前に置き換えて下さい (例: {{ic|1=root=/dev/mapper/volgroup00-lvolroot}})。また、UUID を使うこともできます:
  +
....
  +
options root=UUID=<UUID identifier> rw
  +
  +
LVM や LUKS がない root パーティションで使っていた {{ic|1=root='''PARTUUID'''=}} の代わりに {{ic|1=root='''UUID'''=}} を使っていることに注意してください。
  +
  +
==== 暗号化 root インストール ====
  +
  +
root パーティションを暗号化している場合の設定ファイルの例 ([[Dm-crypt|DM-Crypt / LUKS]]):
  +
  +
{{hc|$esp/loader/entries/arch-encrypted.conf|2=
  +
title Arch Linux Encrypted
  +
linux /vmlinuz-linux
  +
initrd /initramfs-linux.img
  +
options cryptdevice=UUID=<UUID>:<mapped-name> root=UUID=<luks-UUID> quiet ro
  +
}}
  +
  +
上記の例では UUID を使っています。必要であれば、PARTUUID で UUID を置き換えることもできます。{{ic|<luks-UUID>}} は暗号化を解除した後の実際の root ファイルシステムの UUID を示しています ({{Ic|/dev/mapper/<mapped-name>}})。デバイスの UUID ではありません。[[Dm-crypt/システム設定#ブートローダー]]を見て下さい。
  +
  +
{{ic|\EFI\arch\grub.efi}} など他の EFI プログラムを追加することもできます。
  +
  +
==== EFI シェルや他の EFI アプリ ====
  +
  +
EFI シェルなどの EFI アプリケーションを ESP にインストールしている場合、以下のスニペットを使うことができます:
  +
  +
{{hc|$esp/loader/entries/uefi-shell-v1-x86_64.conf|2=
  +
title UEFI Shell x86_64 v1
  +
efi /EFI/shellx64_v1.efi
  +
}}
  +
  +
{{hc|$esp/loader/entries/uefi-shell-v2-x86_64.conf|2=
  +
title UEFI Shell x86_64 v2
  +
efi /EFI/shellx64_v2.efi
  +
}}
  +
  +
=== セキュリティ ===
  +
  +
{{ic|e}} を押すことで systemd-boot のブートメニューからカーネルコマンドラインのパラメータを編集することができますが ([[#キー一覧]]を参照)、これは場合によってセキュリティ上の欠陥となることがあるので注意してください。例えば {{ic|1=init=/bin/bash}} のように {{ic|1=init=}} を再定義することで、設定された root パスワードを迂回して、直接 root としてマシンを起動することが出来てしまいます。いまのところ systemd-boot にはパスワード機能がないためカーネルパラメータの変更を防ぐことはできません。コンピュータが起動されないようにするためには、ハードウェアレベル (UEFI/BIOS) でパスワードを設定する必要があります。
  +
  +
セキュリティはいくつかのレベルからなり、物理的なアクセスによってセキュリティが破られることもあるため、ディスクを [[dm-crypt]] で暗号化すると良いかもしれません (特にマシンがノートパソコンの場合)。これについては systemd-boot とは関係ありません。
  +
  +
=== ハイバネーション ===
  +
  +
[[サスペンドとハイバネート]]の記事を参照してください。
   
 
== ブートメニュー ==
 
== ブートメニュー ==
91行目: 159行目:
 
* {{ic|e}} - カーネルコマンドラインを編集
 
* {{ic|e}} - カーネルコマンドラインを編集
 
* {{ic|q}} - 終了
 
* {{ic|q}} - 終了
* {{ic|v}} - gummiboot と UEFI のバージョンを表示
+
* {{ic|v}} - systemd-boot と UEFI のバージョンを表示
 
* {{ic|p}} - 現在の設定を表示
 
* {{ic|p}} - 現在の設定を表示
 
* {{ic|h}} - キーマップを表示
 
* {{ic|h}} - キーマップを表示
  +
* {{ic|h/?}} - ヘルプ
   
 
以下のホットキーを、起動中やメニューで押すことで、特定のエントリを直接起動します:
 
以下のホットキーを、起動中やメニューで押すことで、特定のエントリを直接起動します:
100行目: 169行目:
 
* {{ic|a}} - OS X
 
* {{ic|a}} - OS X
 
* {{ic|s}} - EFI Shell
 
* {{ic|s}} - EFI Shell
* {{ic|1-9}} - エントリの数字
+
* {{ic|1-9}} - エントリの番号
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
106行目: 175行目:
 
==== efibootmgr を使って手動エントリを追加する ====
 
==== efibootmgr を使って手動エントリを追加する ====
   
{{ic|gummiboot install}} コマンドが失敗した場合、{{ic|efibootmgr}} ユーティリティを使って EFI ブートエントリを手動で作成することができます:
+
{{ic|bootctl install}} コマンドが失敗した場合、{{ic|efibootmgr}} ユーティリティを使って EFI ブートエントリを手動で作成することができます:
   
# efibootmgr -c -d /dev/sdX -p Y -l /EFI/gummiboot/gummibootx64.efi -L "Gummiboot"
+
# efibootmgr -c -d /dev/sdX -p Y -l /EFI/systemd/systemd-bootx64.efi -L "Linux Boot Manager"
   
 
=== Windows をアップグレードした後にメニューが表示されない ===
 
=== Windows をアップグレードした後にメニューが表示されない ===
115行目: 184行目:
 
* Secure Boot (UEFI 設定) と Fast Startup (Windows の電源オプション設定) が両方とも無効になっていることを確認してください。
 
* Secure Boot (UEFI 設定) と Fast Startup (Windows の電源オプション設定) が両方とも無効になっていることを確認してください。
 
* Windows Boot Manager よりも Linux Boot Manager が UEFI で優先されていることを確認してください (Hard Drive Disk Priority などの UEFI 設定)。
 
* Windows Boot Manager よりも Linux Boot Manager が UEFI で優先されていることを確認してください (Hard Drive Disk Priority などの UEFI 設定)。
  +
  +
{{Note|Windows 8.x 以上 (Windows 10 も含む) では、起動するたびにインストールした UEFI のエントリが上書きされてしまい、Windows が一番優先して起動されます。たとえ UEFI のファームウェアでブートの順番を変えたとしても、一度 Windows 10 を起動してしまえばそれで Windows が一番上に戻ります。マザーボードの 'Change Boot Option' キーが何なのか知っておいて下さい。}}
  +
Windows 8.x 以上で、設定したブートの順番を守るようにさせたい場合、Windows のグループポリシーを入力して起動時にバッチファイル (.bat) を起動するようにしてください。Windows 上で以下を実行:
  +
* 管理者権限でコマンドプロンプトを開いて下さい。そして {{ic|bcdedit /enum firmware}} と入力します。
  +
* 説明に "Linux" と付いているファームウェアアプリケーションを探して下さい。例: "Linux Boot Manager"。
  +
* 括弧も含めて Identifier をコピーします。例: {{ic|<nowiki>{31d0d5f4-22ad-11e5-b30b-806e6f6e6963}</nowiki>}}。
  +
* gpedit から ローカルコンピュータポリシー-> コンピューターの構成-> Windows の設定-> スクリプト(スタートアップ/シャットダウン) を開いて "スタートアップ" を選択してください。"スタートアップのプロパティ" という名前のウィンドウが開きます。
  +
* "スクリプト"タブの、追加ボタンを押して下さい。
  +
* スクリプトに名前を付けます。例: {{ic|bootorder.bat}}。
  +
* "スクリプトのパラメーター" には {{ic|<nowiki>bcdedit /set {fwbootmgr} DEFAULT {先にコピーした identifier}</nowiki>}} と入力します (例: {{ic|<nowiki>bcdedit /set {fwbootmgr} DEFAULT {31d0d5f4-22ad-11e5-b30b-806e6f6e6963}</nowiki>}})。
  +
  +
上記の設定が上手く行かない場合、Windows 環境のどこかに {{ic|<nowiki>bcdedit /set {fwbootmgr} DEFAULT {先にコピーした identifier}</nowiki>}} と記述したバッチファイルを作成して、gpedit から保存したファイルを参照してください。
   
 
== 参照 ==
 
== 参照 ==

2015年7月8日 (水) 10:55時点における版

関連記事

systemd-boot (旧名 gummiboot) は設定済みの EFI イメージを実行できるシンプルな UEFI ブートマネージャです。デフォルトのエントリは設定したパターン (glob) または画面上のメニューで選択されます。systemd-boot は systemd 220-2 から systemd に同梱されるようになりました。

systemd-boot は簡単に設定することができ、Linux カーネルの EFISTUB や UEFI シェル、grub.efi などの EFI 実行可能ファイルだけを起動できます。

警告: systemd-boot は EFISTUB カーネルのブートメニューを提供します。FS#33745 にあるように EFISTUB カーネルの起動に問題が起こる場合は、GRUBSyslinux、または ELILO といった EFISTUB を使用しないブートローダーを使ってください。
ノート: この記事では EFI System Partition (ESP) のマウントポイントを $esp で示します。

インストール

EFI ブート

まず、EFI 変数にアクセスできるかチェックして UEFI モードで起動していることを確認してください。また、EFI System Partition が正しくマウントされて、カーネルと initramfs が ESP にコピーされていないと、systemd-boot は他のパーティションから EFI バイナリをロードすることができません。以上のことから systemd-boot を使う時は ESP を /boot にマウントすることを強く推奨します。ESP を /boot 以外に作りたい場合、#アップデート を見て下さい。

以下のコマンドを実行することで systemd-boot のバイナリがあなたの EFI System Partition にコピーされ、EFI Boot Manager によってロードされるデフォルトの EFI アプリケーション (デフォルトブートエントリ) として systemd-boot が追加されます。UEFI モードで起動していない場合、また、EFI 変数にアクセスできないときは、ブートエントリの作成は失敗します。ただし systemd-boot のバイナリは ESP 内にある EFI バイナリのデフォルトの配置場所 (x64 環境では $esp/EFI/boot/bootx64.efi) にコピーされるので systemd-boot を起動すること自体は可能です。

# bootctl --path=$esp install

レガシーブート

警告: こちらの起動方法は推奨されません。

レガシーな OS を起動したいときも systemd-boot をインストールすることは可能です。ただし、起動時に systemd-boot の EFI ファイルを実行するようにファームウェアを設定する必要があります:

  • EFI シェルを使用する。
  • ファームウェアのインターフェイスから起動時にロードされる EFI ファイルを設定する。
ノート: Dell の Latitude シリーズなどでは、EFI ブートを設定するために必要な全てがファームウェアのインターフェイスに揃っており、EFI シェルではコンピュータの ROM に書き込みを行えません。

設定できる場合、インストールは簡単です: EFI シェルやファームウェアの設定インターフェイスを開いて、マシンのデフォルトの EFI ファイルを /<EFI boot partition>/EFI/systemd/systemd-bootx64.efi に変更してください。

アップデート

systemd-boot はあなたの EFI System Partition が /boot にマウントされていると予め事前設定されており、新しい systemd-boot がインストールされた場合、インストールスクリプトの post_install によって bootctl --path=/boot update コマンドが自動的に実行されます。ESP が /boot にマウントされていないときは、手動でコマンドを実行する必要があります。

設定

基本設定

基本的な設定は /boot/loader/loader.conf に記述します、2つの設定オプションが使えます:

  • default – 選択するデフォルトエントリ (.conf を付けない); arch-* のようにワイルドカードを使うことができます
  • timeout – メニューのタイムアウト秒数。この値が設定されていない場合、起動中にスペースキーを押した時だけメニューが表示されます。

例:

$esp/loader/loader.conf
default  arch
timeout  4

オプションは両方ともブートメニューで変更するこができ、EFI 変数として保存されます。

ノート: タイムアウトが設定されてなかった場合、デフォルトのエントリがすぐさま起動します。

ブートエントリの追加

ノート: bootctl は自動的に "Windows Boot Manager" (\EFI\Microsoft\Boot\Bootmgfw.efi), "EFI Shell" (\shellx64.efi), "EFI Default Loader" (\EFI\Boot\bootx64.efi) をチェックします。これらが検出された場合、自動的に適切なエントリが生成されます。ただし、(rEFInd など) 他の EFI アプリケーションは自動検出されないため、カーネルを起動するには、手動で設定してエントリを作成する必要があります。Windows とデュアルブートする場合、Windows のデフォルトオプションである高速スタートアップを無効にすることを強く推奨します。
ヒント: blkid -s PARTUUID -o value /dev/sdxY コマンドを使うことで root パーティションの PARTUUID を確認できます。'x' はデバイス文字、'Y' はパーティション番号に置き換えて下さい。確認するのは root パーティションだけで大丈夫です。$esp は確認する必要がありません。

bootctl は $esp/loader/entries/*.conf にあるブートメニューのアイテムを検索します – 1つのファイルに1つのブートエントリを記述します。利用できるオプションは:

  • title – オペレーティングシステムの名前。必須。
  • version – カーネルバージョン、同じ title のエントリが複数存在する場合にのみ表示されます。任意。
  • machine-id/etc/machine-id のマシン識別子、title と version が同じエントリが複数存在する場合にのみ表示されます。任意。
  • efi – 起動する EFI プログラム、ESP (/boot) からの相対パス; 例: /vmlinuz-linux。このオプションか linux (下を参照) のどちらか一方が必須です。
  • options – EFI プログラムに渡すコマンドラインオプション。任意ですが、Linux を起動する場合 initrd=efipathroot=dev が最低限必要になります。

Linux では、linux path-to-vmlinuzinitrd path-to-initramfs を指定することができます。この値は自動で efi pathoptions initrd=path に翻訳されます – この文法は利便性のためにサポートされており機能に違いはありません。

標準的な root インストール

LVM や LUKS がない root パーティションを使用するエントリの例:

/boot/loader/entries/arch.conf
title          Arch Linux
linux          /vmlinuz-linux
initrd         /initramfs-linux.img
options        root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw

上の例にある PARTUUID/PARTLABEL は GPT パーティションを識別しています。ファイルシステムを識別する UUID/LABEL とは異なっていることに注意してください。PARTUUID/PARTLABEL には他のファイルシステムでパーティションをフォーマットしなおしても値が変わらないという利点があります。またパーティションにファイルシステムがない (もしくは LABEL をサポートしていない LUKS を使っている) 場合などにも有用です。

LVM root インストール

論理ボリュームマネージャを使う root パーティションのエントリ例:

$esp/loader/entries/arch-lvm.conf
title          Arch Linux (LVM)
linux          /vmlinuz-linux
initrd         /initramfs-linux.img
options        root=/dev/mapper/<VolumeGroup-LogicalVolume> rw

<VolumeGroup-LogicalVolume> は実際の VG や LV の名前に置き換えて下さい (例: root=/dev/mapper/volgroup00-lvolroot)。また、UUID を使うこともできます:

....
options  root=UUID=<UUID identifier> rw

LVM や LUKS がない root パーティションで使っていた root=PARTUUID= の代わりに root=UUID= を使っていることに注意してください。

暗号化 root インストール

root パーティションを暗号化している場合の設定ファイルの例 (DM-Crypt / LUKS):

$esp/loader/entries/arch-encrypted.conf
title Arch Linux Encrypted
linux /vmlinuz-linux
initrd /initramfs-linux.img
options cryptdevice=UUID=<UUID>:<mapped-name> root=UUID=<luks-UUID> quiet ro

上記の例では UUID を使っています。必要であれば、PARTUUID で UUID を置き換えることもできます。<luks-UUID> は暗号化を解除した後の実際の root ファイルシステムの UUID を示しています (/dev/mapper/<mapped-name>)。デバイスの UUID ではありません。Dm-crypt/システム設定#ブートローダーを見て下さい。

\EFI\arch\grub.efi など他の EFI プログラムを追加することもできます。

EFI シェルや他の EFI アプリ

EFI シェルなどの EFI アプリケーションを ESP にインストールしている場合、以下のスニペットを使うことができます:

$esp/loader/entries/uefi-shell-v1-x86_64.conf
title  UEFI Shell x86_64 v1
efi    /EFI/shellx64_v1.efi
$esp/loader/entries/uefi-shell-v2-x86_64.conf
title  UEFI Shell x86_64 v2
efi    /EFI/shellx64_v2.efi

セキュリティ

e を押すことで systemd-boot のブートメニューからカーネルコマンドラインのパラメータを編集することができますが (#キー一覧を参照)、これは場合によってセキュリティ上の欠陥となることがあるので注意してください。例えば init=/bin/bash のように init= を再定義することで、設定された root パスワードを迂回して、直接 root としてマシンを起動することが出来てしまいます。いまのところ systemd-boot にはパスワード機能がないためカーネルパラメータの変更を防ぐことはできません。コンピュータが起動されないようにするためには、ハードウェアレベル (UEFI/BIOS) でパスワードを設定する必要があります。

セキュリティはいくつかのレベルからなり、物理的なアクセスによってセキュリティが破られることもあるため、ディスクを dm-crypt で暗号化すると良いかもしれません (特にマシンがノートパソコンの場合)。これについては systemd-boot とは関係ありません。

ハイバネーション

サスペンドとハイバネートの記事を参照してください。

ブートメニュー

キー一覧

メニューの中では以下のキーが使われます:

  • Up/Down - エントリの選択
  • Enter - 選択したエントリの起動
  • d - (不揮発の EFI 変数に保存された) デフォルトエントリを選択して起動
  • t/T - (不揮発の EFI 変数に保存された) タイムアウトを調整
  • e - カーネルコマンドラインを編集
  • q - 終了
  • v - systemd-boot と UEFI のバージョンを表示
  • p - 現在の設定を表示
  • h - キーマップを表示
  • h/? - ヘルプ

以下のホットキーを、起動中やメニューで押すことで、特定のエントリを直接起動します:

  • l - Linux
  • w - Windows
  • a - OS X
  • s - EFI Shell
  • 1-9 - エントリの番号

トラブルシューティング

efibootmgr を使って手動エントリを追加する

bootctl install コマンドが失敗した場合、efibootmgr ユーティリティを使って EFI ブートエントリを手動で作成することができます:

# efibootmgr -c -d /dev/sdX -p Y -l /EFI/systemd/systemd-bootx64.efi -L "Linux Boot Manager"

Windows をアップグレードした後にメニューが表示されない

Windows 8 から Windows 8.1 にアップグレードした場合などに、ブートメニューが表示されなくなることがあります:

  • Secure Boot (UEFI 設定) と Fast Startup (Windows の電源オプション設定) が両方とも無効になっていることを確認してください。
  • Windows Boot Manager よりも Linux Boot Manager が UEFI で優先されていることを確認してください (Hard Drive Disk Priority などの UEFI 設定)。
ノート: Windows 8.x 以上 (Windows 10 も含む) では、起動するたびにインストールした UEFI のエントリが上書きされてしまい、Windows が一番優先して起動されます。たとえ UEFI のファームウェアでブートの順番を変えたとしても、一度 Windows 10 を起動してしまえばそれで Windows が一番上に戻ります。マザーボードの 'Change Boot Option' キーが何なのか知っておいて下さい。

Windows 8.x 以上で、設定したブートの順番を守るようにさせたい場合、Windows のグループポリシーを入力して起動時にバッチファイル (.bat) を起動するようにしてください。Windows 上で以下を実行:

  • 管理者権限でコマンドプロンプトを開いて下さい。そして bcdedit /enum firmware と入力します。
  • 説明に "Linux" と付いているファームウェアアプリケーションを探して下さい。例: "Linux Boot Manager"。
  • 括弧も含めて Identifier をコピーします。例: {31d0d5f4-22ad-11e5-b30b-806e6f6e6963}
  • gpedit から ローカルコンピュータポリシー-> コンピューターの構成-> Windows の設定-> スクリプト(スタートアップ/シャットダウン) を開いて "スタートアップ" を選択してください。"スタートアップのプロパティ" という名前のウィンドウが開きます。
  • "スクリプト"タブの、追加ボタンを押して下さい。
  • スクリプトに名前を付けます。例: bootorder.bat
  • "スクリプトのパラメーター" には bcdedit /set {fwbootmgr} DEFAULT {先にコピーした identifier} と入力します (例: bcdedit /set {fwbootmgr} DEFAULT {31d0d5f4-22ad-11e5-b30b-806e6f6e6963})。

上記の設定が上手く行かない場合、Windows 環境のどこかに bcdedit /set {fwbootmgr} DEFAULT {先にコピーした identifier} と記述したバッチファイルを作成して、gpedit から保存したファイルを参照してください。

参照