パソコンを買った当初にも同じ設定をしたはずなのに、やり方を忘れてしまったのでメモ。
この記事はただのメモです。参考にする方は、自己責任でお願いします。
環境
- laptop: OMEN by HP 15-ax200/intel core i7
- OS: Windows 10(SSD) + Arch Linux(HDD)
何が起こったか
BIOS のアップデートを行なった後にマシンを再起動したら、Arch Linux ではなく Windows が立ち上がった。
解決方法
- Windows の UEFI の設定から boot option を開く
- Arch Linux を起動して、
efibootmgr
から、Arch Linux 用の新しい boot entry を作成 - 再起動して、BIOS の起動設定から boot order を変更
efibootmgr の使い方
efibootmgr を用いて boot order を設定します。以下 sudo
は省略しているので、要求されたら適宜足してください。
ここでは私の環境で打ったコマンド(以下)を例に、efibootmgr のオプションを説明します。
$ efibootmgr -c -d /dev/sda -p 1 -L "Arch Linux" -l "\EFI\boot\bootx64.efi"
詳細は Gentoo wiki を参照。
-c: boot entry の作成
新たに boot entry を作成します。
-d: ディスク
Linux がインストールされているディスクの名前を入力します。lsblk
等で確認できると思います。
私の環境だと Windows が /dev/nvme0n1
、Arch Linux が /dev/sda
にインストールされているので、-d /dev/sda
としました。
-p: EFI システムパーティション(ESP)の番号
fdisk -l
, parted -l
等で確認できます。
私の環境だと 1 だったため、-p 1
としました。
-L: boot entry の名前
いい感じに名前をつけましょう。
-l: efi ファイルのパス
grub 等のブートローダの設定ファイルを作るときに指定した、efi ファイルのパスを入れます。
ただし、パスは/
ではなく\
を用いること。
私の環境だと efi ファイルが /boot/EFI/boot/bootx64.efi
にあったので、 /boot
以下のパスの/
を\
に変更して -l "\EFI\boot\bootx64.efi"
としました。
BIOS の起動設定から順序を変更
私の環境では、パソコンを再起動すると efibootmgr
で設定した boot order がリセットされてしまいました。しかし boot entry 自体は正しく作成されていたため、BIOS の設定から起動順序を変更することができました。
boot entry 自体が見つからない場合は、前述の -l
の値の設定等が間違っている可能性があります。efibootmgr -v
で boot entry が正しく作成できたか確認してみてください。
最後に
間違っている箇所があったら、コメント等でお知らせください。ではでは。