efibootmgr
についてのコマンドを記述していることは多いですが、使い方についてはあまり触れられていないのが多いようなので、Qiitaに書いておくことにしました。
efibootmgr
はLinux上でUEFIブートを表示・管理をするためのコマンドです。
ブート順番を変更したり、次回起動時のブートするOSを決めたりすることができます。
前提・免責
Ubuntu 20.04 LTS、UEFI環境にて動作を確認しています。
efibootmgr
は特に記述がない限り、root権限が必要なコマンドです。
このコマンドはOSの起動などに大きく影響するコマンドです。
コマンドを実行する際は自己責任でお願いいたします。
ブートエントリ一覧などを見る
コマンドefibootmgr
でブート一覧を見ることができます。
root権限がなくても見ることができます。
$ efibootmgr
BootCurrent: 0004
Timeout: 0 seconds
BootOrder: 0002,0004,0001,0003,0006,0007,0000
Boot0000* UiApp
Boot0001* UEFI VBOX CD-ROM VB5-1a2b3c4d
Boot0002* Windows Boot Manager
Boot0003* EFI Internal Shell
Boot0004* ubuntu
Boot0006* UEFI VBOX HARDDISK VBdbe12ec1-fe7f2278
Boot0007* UEFI VBOX HARDDISK VB309bc1ef-8386bd04
Boot0008* bootmgfw.efi
-v
(--verbose
)オプションを付けると、詳細なブートエントリを表示します。
例として、どのデバイス、どのハードディスク、どのファイルのブートなのかが表示されます。
$ efibootmgr -v
BootCurrent: 0004
BootOrder: 0002,0004,0001,0003,0006,0007,0000
Boot0000* UiApp FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(462caa21-7614-4503-836e-8ab6f4662331)
Boot0001 UEFI VBOX CD-ROM VB5-1a2b3c4d PciRoot(0x0)/Pci(0x1f,0x2)/Sata(5,65535,0)N.....YM....R,Y.
Boot0002* Windows Boot Manager HD(1,GPT,b128ff07-7f2e-4112-bc45-83f138bf5eac,0x800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...d................
Boot0003* EFI Internal Shell FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)
Boot0004* ubuntu PciRoot(0x0)/Pci(0x1f,0x2)/Sata(1,65535,0)/HD(1,GPT,6a6ad87d-d217-444f-a37f-28141f6d96ab,0x800,0x5f000)/File(\EFI\ubuntu\shimx64.efi)
Boot0006 UEFI VBOX HARDDISK VBdbe12ec1-fe7f2278 PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0,65535,0)N.....YM....R,Y.
Boot0007 UEFI VBOX HARDDISK VB309bc1ef-8386bd04 PciRoot(0x0)/Pci(0x1f,0x2)/Sata(1,65535,0)N.....YM....R,Y.
Boot0008* bootmgfw.efi PciRoot(0x0)/Pci(0x1f,0x2)/Sata(0,65535,0)/HD(1,GPT,b128ff07-7f2e-4112-bc45-83f138bf5eac,0x800,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)
BootCurrent
現在ブートしているシステムの番号(HEX値)です。
Timeout
ブートマネージャーのタイムアウト秒数です。
BootOrder
ブート順番です。左から順にブートされます。
Boot<番号(HEX値)>
ブートのエントリです。
番号のあとに*
が付いている場合は有効なブートエントリです。
付いていない場合は無効なブートエントリとして扱われます。
次回ブートするエントリを設定する
-n
(--bootnext
)オプションを使用すると次回起動時のブートエントリを指定できます。
# efibootmgr -n <番号(HEX値)>
次回起動時のブートエントリの指定を解除する
-N
(--delete-bootnext
)オプションで次回起動時のブートエントリの指定解除をすることができます。
# efibootmgr -N
ブートエントリを有効にする
-b
(--bootnum
)オプションでブートエントリを指定して、-a
(--active
)オプションでブートエントリを有効化できます。
# efibootmgr -b <番号(HEX値)> -a
ブートエントリを無効にする
-b
(--bootnum
)オプションでブートエントリを指定して、-A
(--inactive
)オプションでブートエントリを無効化できます。
# efibootmgr -b <番号(HEX値)> -A
ブート順番を変更する
-o
(--bootorder
)オプションでブート順番を変更できます。番号はカンマ(,
)で区切ります。
# efibootmgr -o <番号(HEX値)、カンマで区切り>
例:
# efibootmgr -o 0001,0002,0003
ブートエントリを追加する
-c
(--create
)オプションと以下のオプションでブートエントリを追加します。
ブートエントリを追加すると、ブート順番(ブートオーダー)に追加されます。
-L
(--label
)
ブートエントリの表示名を指定します。
-d
(--disk
)
ブートディスクを指定します。例えば、/dev/sda
などを指定することができます。
-l
(--loader
)
efi
ファイルといったブートローダを指定します。
サンプル
以下のようにすると、ブートエントリを追加することができます。
# efibootmgr -c -L Linux -d /dev/sda -l '\EFI\ubuntu\shimx64.efi'
ブートエントリを削除する
-b
(--bootnum
)オプションでブートエントリを指定して、-B
(--delete-bootnum
)オプションでブートエントリを削除します。
# efibootmgr -b <番号(HEX値)> -B
参考など
- man efibootmgr(8)
この記事は自分が書いたScrapboxから作成しました。