プロンプト
朝PCを起動させようとスイッチを押したところ,これまで見たことのないGrubプロンプト画面になっていた。
再起動しても同じだった。仕方がないのでBiosからいつも使っているシステムを立ち上げたのだが,それで特にエラーが起こるわけでもない。
エラー
ところが,ターミナルで grub-install を実行しようとすると,EFIが見付からないというエラーが返ってくる。
$ sudo grub-install /dev/sda Installing for x86_64-efi platform. grub-install: エラー: cannot find EFI directory.
つまり,正常にGrubが設定されていないことになる。それで,思い付く限りのことをやってみたのだが,未だに原因と対処方法がわからない。
Boot Repair Disk
最終的に,“Boot Repair Disk” を作成し,起動して対話的にGrubを修復・再インストールして様子を見ることにした。
EFIパーティションの削除
長い間 Windows7 とのデュアルブート環境で /dev/sda1 を EFI システムパーティションとして使い続けてきたため,これを一旦削除してみることにした。
そのため,NVMe (Non-Volatile Memory Express) にインストールされている Windows11 を立ち上げ,diskpart コマンドを使用することにした。
以下がその行程である。
“Windows + R”を押し,「ファイル名を指定して実行」ボックスを表示。“cmd”と入力し,OKを押すと,プロンプトが表示される。 C:\... >diskpart DISKPART> list disk (PCにマウントされているディスクを表示する。) DISKPART> sel disk 0 (ディスクを選択する,ここで0が選択済みのディスクのディスクレター。) DISKPART> list partition (選択したディスクにあるパーティションを表示する。) DISKPART> sel partition 1 (パーティションを選択する。) DISKPART> set id=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7(ベーシック・データ・パーティションにする型のフィールドを設定する。) DISKPART> delete partition override(選択したパーティション1を削除。) DISKPART> create partition primary size=X
ディスク順序
新たにパーティションを作ると,領域テーブル項目がディスクの順序と対応しなくなる。ところが Linux システムでは,fdisk を用いるとこれを簡単に修正できる。
$ sudo -i # fdisk -l # fdisk /dev/sda コマンド (m でヘルプ): x 上級者コマンド (m でヘルプ): f 上級者コマンド (m でヘルプ): r コマンド (m でヘルプ): p コマンド (m でヘルプ): w パーティションテーブルは変更されました! # reboot