テスト用に OS を複数回同じ機材にインストールするとEFIブートエントリーが NVRAM に残ったままになり、どれがどれなのかわかりにくくなってしまいます。そこで不要なエントリーをしらべ整理したいと思ったのですが、意外とまとまった記事がなかったので、備忘録として挙げてみることにしました。
まず最初にエントリーを表示させます。
さらに、BootOrder (ブート順): エントリ#0000 は、一番目にあるので、起動時に自動的に実行されることもわかります。このようにして、ブートエントリとpartuuidを比較すると不要なブートエントリがわかるので、整理できます。
さて実際の整理ですが、ブートエントリを削除するには、一旦登録を解除(*印を外す)してから、削除します。具体的には以下のようになります。
最後ですが、ブート順をかえるには、以下のようにします。なおカンマでエントリを区切ります。
今回は以上です。それでは。
まず最初にエントリーを表示させます。
efibootmgr -v BootOrder: 0000,0015,0014,0012,0006,0007,0009,000A,000B,000C,0011 Boot0000* Debian_01 HD(1,GPT,XXXXXXXX-23f7-4f5e-b436-260e5fd276a7,0x800,0x100000)/File(\EFI\DEBIAN\GRUBX64.EFI) Boot0006* UEFI: PXE IP4 Mellanox Network Adapter - 50:6B:WW:WW:XX:XX PciRoot(0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/MAC(506bWWWWXXXX,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO Boot0007* UEFI: PXE IP4 Mellanox Network Adapter - 50:6B:WW:WW:XX:XX PciRoot(0x1)/Pci(0x0,0x0)/Pci(0x0,0x1)/MAC(506bWWWWXXXX,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO Boot0009* UEFI: PXE IP4 Intel(R) I350 Gigabit Network Connection PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/MAC(901bWWWWXXXX,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO Boot000A* UEFI: PXE IP6 Intel(R) I350 Gigabit Network Connection PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x0)/MAC(901bWWWWXXXX,1)/IPv6([::]:<->[::]:,0,0)..BO Boot000B* UEFI: PXE IP4 Intel(R) I350 Gigabit Network Connection PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x1)/MAC(901bWWWWXXXX,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO Boot000C* UEFI: PXE IP6 Intel(R) I350 Gigabit Network Connection PciRoot(0x0)/Pci(0x1c,0x0)/Pci(0x0,0x1)/MAC(901bWWWWXXXX,1)/IPv6([::]:<->[::]:,0,0)..BO Boot0011* UEFI OS HD(1,MBR,0x2f352443,0x800,0x1cc7c8)/File(\EFI\BOOT\BOOTX64.EFI)..BO Boot0012* debian HD(1,GPT,XXXXXXXX-dc47-439e-80dc-b77cc9036f7d,0x800,0x100000)/File(\EFI\DEBIAN\SHIMX64.EFI) Boot0014* debian HD(1,GPT,XXXXXXXX-5c72-4141-9548-04f94059678a,0x800,0x100000)/File(\EFI\DEBIAN\GRUBX64.EFI)..BO Boot0015* debian HD(1,GPT,XXXXXXXX-dc47-439e-80dc-b77cc9036f7d,0x800,0x100000)/File(\EFI\DEBIAN\GRUBX64.EFI)..BO MirrorStatus: DIMM configuration does not allow mirror DesiredMirroredPercentageAbove4G: 0.00 DesiredMirrorMemoryBelow4GB: falseUUIDらしきものが見えますが、これはファイルシステムのUUIDではなくパーティションUUIDというものでblkidコマンドで確認できます。
blkid #そのままだとわかりにくいので並べ替えと改行を入れています。 /dev/nvme0n1p1: UUID="XXXX-4DB7" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="XXXXXXXX-dc47-439e-80dc-b77cc9036f7d" /dev/nvme0n1p2: LABEL="deb12-nvme01" UUID="XXXXXXXX-4ddf-4741-a568-441e93bc80c0" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="XXXXXXXX-3506-4ecc-b56e-dedaff73f14d" /dev/nvme0n1p3: UUID="XXXXXXXX-ecd9-44de-a3ad-918436f243db" TYPE="swap" PARTUUID="XXXXXXXX-dad0-43e5-887c-8f62a0862ee9" /dev/sdb1: UUID="XXXX-6971" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="XXXXXXXX-23f7-4f5e-b436-260e5fd276a7" /dev/sdb2: LABEL="Debian_01" UUID="XXXXXXXX-8747-4bf6-8f26-c41ab5fc3545" BLOCK_SIZE="4096" TYPE="xfs" PARTUUID="XXXXXXXX-7e38-4a84-b641-91b9f99af272" /dev/sdb3: UUID="XXXXXXXX-03bb-4b3d-b834-fde5c95eed4c" TYPE="swap" PARTUUID="XXXXXXXX-53fd-4276-8daa-af0d0cef21a4" /dev/sdd1: LABEL="share01" UUID="XXXXXXXX-0298-4fa8-b156-40634477d96c" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="XXXXXXXX-bdc0-4d4c-8a80-99797831b8eb" /dev/sde1: LABEL="share02" UUID="XXXXXXXX-6938-4338-9f16-ceb01eb568c9" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="XXXXXXXX-7be7-c\44d-\a68e-fd\a7db08f451" /dev/sdg1: UUID="XXXX-33F6" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="XXXXXXXX-5c72-4141-9548-04f94059678a" /dev/sdg2: UUID="XXXXXXXX-6176-4182-8db5-bbd65c86340a" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="XXXXXXXX-e4ab-4001-adbb-b85bf635231e" /dev/sdg3: UUID="XXXXXXXX-85a5-4555-8ae3-a1260b648fc4" TYPE="swap" PARTUUID="XXXXXXXX-e468-4a15-b98a-2cf13289ae7b" /dev/sdc1: LABEL="DEBIAN 12_9" UUID="XXXX-06D6" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="XXXXXXXX-01"uefi boot では デビアンの場合、vfatでフォーマットされたパーティション #1の /efi/debian/grubx64.efiを読み込みに行きます。(redhatなら/efi/redhat/grubx64.efi, ubuntuなら/efi/ubuntu/grubx64.efi )なので、先に書いた efiboomgr -v のブートエントリ Boot0000* Debian_01のpart uuid 下四桁 "76a7"が /dev/sdb1のpart uuid下四桁 "76a7"と一致しているので、このブートエントリは /dev/sdbのものだというのがわかります。
さらに、BootOrder (ブート順): エントリ#0000 は、一番目にあるので、起動時に自動的に実行されることもわかります。このようにして、ブートエントリとpartuuidを比較すると不要なブートエントリがわかるので、整理できます。
さて実際の整理ですが、ブートエントリを削除するには、一旦登録を解除(*印を外す)してから、削除します。具体的には以下のようになります。
sudo efibootmgr --bootnum 0012 --inactive sudo efibootmgr --bootnum 0012 --delete-bootnumもしくは以下のようにして削除もできます。
sudo efibootmgr -b 0012 -A sudo efibootmgr -b 0012 -Bまた、ブートエントリを追加する場合は、blkidで確認したデバイスとefiパーテイション番号(通常は#1)と名称を指定して以下のようにします。(円マークは実際はバックスラッシュです。)
efibootmgr -c -d /dev/sda -p 1 -L "Debian_00" -l "\EFI\DEBIAN\GRUBX64.EFI"2025/05/19 追記:セキュアブートの場合は、以下のようにします。
efibootmgr -c -d /dev/sdb -p 1 -L Debian_01 -l "\EFI\DEBIAN\SHIMX64.EFI"なお、ブート番号は空きの内、小さなものから順に割り当てられるようです。
最後ですが、ブート順をかえるには、以下のようにします。なおカンマでエントリを区切ります。
efibootmgr -o 0000,0001,0015,0014,0012,0006,0007,0009,000A,000B,000C,0011参考までにdeviceのファイルシステム UUIDとデバイス名を表示するには以下のようにします。
ls /dev/disk/by-uuid -laefibootmgrは取っ付きが分かりにくいのですが、わかってしまえばエントリを間違って消しても復活できますので、覚えておいて損はないとおもいます。
今回は以上です。それでは。
コメント
コメントを投稿