LoginSignup
9
5

More than 1 year has passed since last update.

efibootmgrを使ってブート順番などを弄くろう

Posted at

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から作成しました。

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5