「Systemd-boot」の版間の差分
(同期) |
|||
| 4行目: | 4行目: | ||
[[en:Systemd-boot]] |
[[en:Systemd-boot]] |
||
[[es:Gummiboot]] |
[[es:Gummiboot]] |
||
| − | [[ru: |
+ | [[ru:Systemd-boot]] |
| − | [[zh- |
+ | [[zh-cn:Systemd-boot]] |
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|Arch ブートプロセス}} |
{{Related|Arch ブートプロセス}} |
||
| 24行目: | 24行目: | ||
まず、[[Unified_Extensible_Firmware_Interface#UEFI 変数のサポートを正しく動作させるための必要条件|EFI 変数にアクセスできるかチェック]]して UEFI モードで起動していることを確認してください。また、EFI System Partition が正しくマウントされて、カーネルと initramfs が ESP にコピーされていないと、systemd-boot は他のパーティションから EFI バイナリをロードすることができません。以上のことから systemd-boot を使う時は ESP を {{ic|/boot}} にマウントすることを強く推奨します。ESP を {{ic|/boot}} 以外に作りたい場合、[[#アップデート]] を見て下さい。 |
まず、[[Unified_Extensible_Firmware_Interface#UEFI 変数のサポートを正しく動作させるための必要条件|EFI 変数にアクセスできるかチェック]]して UEFI モードで起動していることを確認してください。また、EFI System Partition が正しくマウントされて、カーネルと initramfs が ESP にコピーされていないと、systemd-boot は他のパーティションから EFI バイナリをロードすることができません。以上のことから systemd-boot を使う時は ESP を {{ic|/boot}} にマウントすることを強く推奨します。ESP を {{ic|/boot}} 以外に作りたい場合、[[#アップデート]] を見て下さい。 |
||
| − | 以下のコマンドを実行することで systemd-boot のバイナリがあなたの EFI System Partition にコピーされ、EFI Boot Manager によってロードされるデフォルトの EFI アプリケーション (デフォルトブートエントリ) として systemd-boot が追加されます。UEFI モードで起動していない場合、また、EFI 変数にアクセスできないときは、ブートエントリの作成は失敗します。ただし systemd-boot のバイナリは ESP 内にある EFI バイナリのデフォルトの配置場所 (x64 環境では {{ic|$esp/EFI/ |
+ | 以下のコマンドを実行することで systemd-boot のバイナリがあなたの EFI System Partition にコピーされ、EFI Boot Manager によってロードされるデフォルトの EFI アプリケーション (デフォルトブートエントリ) として systemd-boot が追加されます。UEFI モードで起動していない場合、また、EFI 変数にアクセスできないときは、ブートエントリの作成は失敗します。ただし systemd-boot のバイナリは ESP 内にある EFI バイナリのデフォルトの配置場所 (x64 環境では {{ic|$esp//EFI/systemd/systemd-bootx64.efi}} あるいは {{ic|$esp/EFI/Boot/BOOTX64.EFI}}) にコピーされるので systemd-boot を起動すること自体は可能です。 |
# bootctl --path=''$esp'' install |
# bootctl --path=''$esp'' install |
||
| 34行目: | 34行目: | ||
* ファームウェアのインターフェイスから起動時にロードされる EFI ファイルを設定する。 |
* ファームウェアのインターフェイスから起動時にロードされる EFI ファイルを設定する。 |
||
{{Note|Dell の Latitude シリーズなどでは、EFI ブートを設定するために必要な全てがファームウェアのインターフェイスに揃っており、EFI シェルではコンピュータの ROM に書き込みを行えません。}} |
{{Note|Dell の Latitude シリーズなどでは、EFI ブートを設定するために必要な全てがファームウェアのインターフェイスに揃っており、EFI シェルではコンピュータの ROM に書き込みを行えません。}} |
||
| − | 設定できる場合、インストールは簡単です: EFI シェルやファームウェアの設定インターフェイスを開いて、マシンのデフォルトの EFI ファイルを {{ic| |
+ | 設定できる場合、インストールは簡単です: EFI シェルやファームウェアの設定インターフェイスを開いて、マシンのデフォルトの EFI ファイルを {{ic|$esp/EFI/systemd/systemd-bootx64.efi}} (i686 環境の場合 {{ic|systemd-bootia32.efi}}) に変更してください。 |
=== アップデート === |
=== アップデート === |
||
| 44行目: | 44行目: | ||
ESP が {{ic|/boot}} にマウントされていない場合、{{ic|1=--path=}} オプションで指定します。例: |
ESP が {{ic|/boot}} にマウントされていない場合、{{ic|1=--path=}} オプションで指定します。例: |
||
| − | # bootctl --path= |
+ | # bootctl --path=''$esp'' update |
== 設定 == |
== 設定 == |
||
| 103行目: | 103行目: | ||
==== LVM root インストール ==== |
==== LVM root インストール ==== |
||
| + | |||
| + | {{Warning|LVM の外に {{ic|/boot}} ファイルシステムを分割しないと systemd-boot を使用することはできません。}} |
||
[[LVM|論理ボリュームマネージャ]]を使う root パーティションのエントリ例: |
[[LVM|論理ボリュームマネージャ]]を使う root パーティションのエントリ例: |
||
| 131行目: | 133行目: | ||
上記の例では UUID を使っています。必要であれば、PARTUUID で UUID を置き換えることもできます。{{ic|<luks-UUID>}} は暗号化を解除した後の実際の root ファイルシステムの UUID を示しています ({{Ic|/dev/mapper/<mapped-name>}})。デバイスの UUID ではありません。[[Dm-crypt/システム設定#ブートローダー]]を見て下さい。 |
上記の例では UUID を使っています。必要であれば、PARTUUID で UUID を置き換えることもできます。{{ic|<luks-UUID>}} は暗号化を解除した後の実際の root ファイルシステムの UUID を示しています ({{Ic|/dev/mapper/<mapped-name>}})。デバイスの UUID ではありません。[[Dm-crypt/システム設定#ブートローダー]]を見て下さい。 |
||
| + | |||
| + | LVM を使用する場合、cryptdevice 行は以下のようになります: |
||
| + | {{hc|''$esp''/loader/entries/arch-encrypted-lvm.conf|2= |
||
| + | title Arch Linux Encrypted LVM |
||
| + | linux /vmlinuz-linux |
||
| + | initrd /initramfs-linux.img |
||
| + | options cryptdevice=UUID=<UUID>:MyVolGroup root=/dev/mapper/MyVolGroup-MyVolRoot quiet rw |
||
| + | }} |
||
{{ic|\EFI\arch\grub.efi}} など他の EFI プログラムを追加することもできます。 |
{{ic|\EFI\arch\grub.efi}} など他の EFI プログラムを追加することもできます。 |
||
2016年5月7日 (土) 19:27時点における版
systemd-boot (旧名 gummiboot) は設定済みの EFI イメージを実行できるシンプルな UEFI ブートマネージャです。デフォルトのエントリは設定したパターン (glob) または画面上のメニューで選択されます。systemd-boot は systemd 220-2 から systemd に同梱されるようになりました。
systemd-boot は簡単に設定することができ、Linux カーネルの EFISTUB や UEFI シェル、grub.efi などの EFI 実行可能ファイルだけを起動できます。
インストール
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/systemd/systemd-bootx64.efi あるいは $esp/EFI/Boot/BOOTX64.EFI) にコピーされるので systemd-boot を起動すること自体は可能です。
# bootctl --path=$esp install
レガシーブート
レガシーな OS を起動したいときも systemd-boot をインストールすることは可能です。ただし、起動時に systemd-boot の EFI ファイルを実行するようにファームウェアを設定する必要があります:
- EFI シェルを使用する。
- ファームウェアのインターフェイスから起動時にロードされる EFI ファイルを設定する。
設定できる場合、インストールは簡単です: EFI シェルやファームウェアの設定インターフェイスを開いて、マシンのデフォルトの EFI ファイルを $esp/EFI/systemd/systemd-bootx64.efi (i686 環境の場合 systemd-bootia32.efi) に変更してください。
アップデート
systemd-boot (bootctl(1), systemd-efi-boot-generator(8)) はあなたの EFI System Partition が /boot にマウントされていると予め事前設定されています。新しいパッケージがリリースされたら post_install スクリプトによって自動的にアップデートされていた、昔の gummiboot パッケージと違って、systemd-boot では手動でアップデートするようになっています:
# bootctl update
ESP が /boot にマウントされていない場合、--path= オプションで指定します。例:
# bootctl --path=$esp update
設定
基本設定
基本的な設定は /boot/loader/loader.conf に記述します、3つの設定オプションが使えます:
default– 選択するデフォルトエントリ (.confを付けない);arch-*のようにワイルドカードを使うことができます
timeout– メニューのタイムアウト秒数。この値が設定されていない場合、起動中にスペースキーを押した時だけメニューが表示されます。
editor- カーネルパラメータの編集を可能にするかどうか設定。1(デフォルト) は可能になり、0は無効になります。init=/bin/bashを加えることで root パスワードを回避して root 権限を得ることが出来てしまうため、このオプションは0に設定することが強く推奨されています。
例:
$esp/loader/loader.conf
default arch timeout 4 editor 0
最初の2つのオプションは両方ともブートメニューで変更するこができ、EFI 変数として保存されます。
ブートエントリの追加
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=efipathとroot=devが最低限必要になります。
Linux では、linux path-to-vmlinuz と initrd path-to-initramfs を指定することができます。この値は自動で efi path と options 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 rw
上記の例では UUID を使っています。必要であれば、PARTUUID で UUID を置き換えることもできます。<luks-UUID> は暗号化を解除した後の実際の root ファイルシステムの UUID を示しています (/dev/mapper/<mapped-name>)。デバイスの UUID ではありません。Dm-crypt/システム設定#ブートローダーを見て下さい。
LVM を使用する場合、cryptdevice 行は以下のようになります:
$esp/loader/entries/arch-encrypted-lvm.conf
title Arch Linux Encrypted LVM linux /vmlinuz-linux initrd /initramfs-linux.img options cryptdevice=UUID=<UUID>:MyVolGroup root=/dev/mapper/MyVolGroup-MyVolRoot quiet rw
\EFI\arch\grub.efi など他の EFI プログラムを追加することもできます。
btrfs サブボリューム root インストール
btrfs のサブボリュームを root として起動する場合、options 行を rootflags=subvol=<root subvolume> に変更してください。以下の例では、'ROOT' という名前の btrfs のサブボリュームを root としてマウントしています (例: mount -o subvol=ROOT /dev/sdxY /mnt):
$esp/loader/entries/arch-btrfs-subvol.conf
title Arch Linux linux /vmlinuz-linux initrd /initramfs-linux.img options root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw rootflags=subvol=ROOT
以上のように設定していないと次のエラーメッセージが表示されます: ERROR: Root device mounted successfully, but /sbin/init does not exist.。
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
ハイバネーション
サスペンドとハイバネートの記事を参照してください。
ブートメニュー
キー一覧
メニューの中では以下のキーが使われます:
Up/Down- エントリの選択Enter- 選択したエントリの起動d- (不揮発の EFI 変数に保存された) デフォルトエントリを選択して起動t/T- (不揮発の EFI 変数に保存された) タイムアウトを調整e- カーネルコマンドラインを編集。editorオプションが0に設定されている場合は使えませんq- 終了v- systemd-boot と UEFI のバージョンを表示p- 現在の設定を表示h- キーマップを表示h/?- ヘルプ
以下のホットキーを、起動中やメニューで押すことで、特定のエントリを直接起動します:
l- Linuxw- Windowsa- OS Xs- EFI Shell1-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 のグループポリシーを入力して起動時にバッチファイル (.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 から保存したファイルを参照してください。