EFIパーティションをめちゃくちゃにして、コンピューターを起動すると、ディスクが消去されたかのように、起動オプションなしでBIOSインターフェイスが開きます。ただし、ライブUSB(正しく認識されて起動される)を使用してgrubコマンドラインを使用すると、主要なOS(Ubuntu)を起動できました。しかし、私はこの問題を修正する方法を知りません。 grub-install/dev/sdaを実行してみましたが、何も変わりませんでした。
EFIパーティションは完全に正常に見えます。正しいフラグ(esp、boot)があり、すべての正しいファイルが内部にあります。
tree /boot/efi/
└── EFI
├── Boot
│ └── bootx64.efi
├── Microsoft
│ ├── Boot
│ .....
└── ubuntu
├── fbx64.efi
├── fw
├── fwupx64.efi
├── grub.cfg
├── grubx64.efi
├── mmx64.efi
└── shimx64.efi
何をチェックすればいいですか?何が欠けていますか?
これは私のパーティションテーブルです:
parted /dev/sda print
Model: ATA Crucial_CT525MX3 (scsi)
Disk /dev/sda: 525GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1612MB 1611MB fat32 EFI System Partition boot, esp
2 1612MB 87.9GB 86.3GB ext4 Ubuntu
3 87.9GB 281GB 193GB ext4 Home
5 290GB 290GB 16.8MB Microsoft reserved partition msftres
6 290GB 405GB 115GB ntfs Basic data partition msftdata
8 405GB 500GB 94.4GB ntfs Data msftdata
9 500GB 525GB 25.3GB ext4 Backup OS
パーティション(ブートフラグを設定したFAT32)をフォーマットし、マウントしてgrub-install
を実行するだけで問題を解決しました。その後、/etc/fstab
のUUIDを更新するだけで済みました。 Windowsの場合、インストーラーでUSBを使用し、ユーティリティbcdboot
を使用してEFIを書き換える必要がありました。
Asus UEFI BIOSが認識できるようにするには、/EFI/my-custom-label/grubx64.efi
を/EFI/boot/bootx64.efi
に名前変更する必要がありました。
/EFI/boot/bootx64.efi
です。この問題は、Asus Maximus VII Impact(Z97チップセット)で発生しました。私の友人は、Z87ベースのAsusマザーボードで同様の問題を抱えています。
私の推測では、EFIシステム変数が正しいブートローダーを指すように設定されていません。これをチェックしたいプログラムはefibootmgr
です。これにより、NVRAMに保存されているすべてのブートエントリが表示されます。
理論的には、grub-install
でこれを処理できますが、正しいオプションを渡していない可能性があります。このサンプルコマンドは動作する必要があります。
grub-install --target=x86_64-efi --efi-directory=ESP_MOUNT_PATH --bootloader-id=grub
ESP_MOUNT_PATH
をEFIディレクトリのパスに変更します。
これが機能しない場合は、efibootmgr
を直接使用してみてください。
efibootmgr --create --disk /dev/sda --part 1 --loader /EFI/ubuntu/grubx64.efi --label "GRUB"
一部のシステムでは/EFI/ubuntu/shimx64.efi
を使用する必要があると思います。したがって、このようなものを試して、何が機能するかを確認してください。
これを引き起こす可能性のある別の問題があり、これは最近発生しました。
この問題を検出するには、Linuxライブから起動してgdisk/dev/sd [whatever-your-disk-is]を実行します。通常は/ dev/sdaまたは/ dev/sdbまたは/ dev/sdcです。
Pコマンドを実行して、パーティションの正しいリストが表示されるようにします(そうでない場合、これはディスクではない可能性があります)。
次にvコマンドを入力します。そしてそれはこれで応答するかもしれません:
Warning: The 0xEE protective partition in the MBR is marked as active. This is
technically a violation of the GPT specification, and can cause some EFIs to
ignore the disk, but it is required to boot from a GPT disk on some BIOS-based
computers. You can clear this flag by creating a fresh protective MBR using
the 'n' option on the experts' menu.
これが応答である場合、コマンドe、n、wを使用します。次に再起動すると、EFIが元に戻る可能性があります。
また、EFIで起動したときにgrubがすべてのパーティションを表示せず、パラメーター--modules="part_gpt part_msdos"
をgrub-install
に追加すると、ls
とls -l
のすべてのパーティションを表示できるようになりました。