USBから起動し、「インストールせずにUbuntuを試す」を選択し、別のUSBを挿入して、インストーラーにインストールするように指示することで、Ubuntu16.04をインストールしました。 ESPである_/dev/sdc2
_にブートローダーをインストールするようにインストーラーに指示しました。そのパーティションにシムとGRUB EFIファイルが表示されているので、ブートローダーが実際にインストールされていることがわかります。
ただし、インストール後に起動しようとすると、起動メニューが表示されず、レスキュープロンプトが表示されるだけでした。
_grub rescue>
_
次に、私のESPパーティションは_hd0,gpt2
_ですが、_hd1,gpt2
_を期待していました(ここではgrubの命名スキームを使用)。
同様の質問を調べましたが、残念ながらBIOSシステムに関する情報しか見つかりませんでした。EFIではなく、_/
_には/boot(/efi)
も含まれています。 _/
_の_hd0,gtp3
_と他のディスクのgrubefiファイルを処理する方法を探しています。カーネルとinitrdはどちらもESPの内部にあり、問題は別の場所にあるはずです。
どうすればこれを修正できますか?
ls
の出力:
_(hd0) (hd0,gpt5) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) (hd1) (hd1,gpt8) (hd1,gpt7) (hd1,gpt6) (hd1,gpt5) (hd1,gpt4) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1)
_
ls (hd0,gpt2)/
の出力:
_syslininux/ vmlinuz.efi inird.lz efi/
_
_/media/ubuntu/ba6e9aff-b9b7-4c4f-8441-98db8ec7a08a/boot/grub/grub.cfg
_の内容:
_menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-ba6e9aff-b9b7-4c4f-8441-98db8ec7a08a' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd2,gpt3'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,gpt3 --hint-efi=hd2,gpt3 --hint-baremetal=ahci2,gpt3 ba6e9aff-b9b7-4c4f-8441-98db8ec7a08a
else
search --no-floppy --fs-uuid --set=root ba6e9aff-b9b7-4c4f-8441-98db8ec7a08a
fi
linux /boot/vmlinuz-4.4.0-28-generic.efi.signed root=UUID=ba6e9aff-b9b7-4c4f-8441-98db8ec7a08a ro quiet splash $vt_handoff
initrd /boot/initrd.img-4.4.0-28-generic }
_
更新:_grub-install /dev/sdb2
_ grubを使用して/ dev/sdb2に再インストールしましたが、ほとんどのgrubfileはまだ/ dev/sdb3にあるため、ext2.modのロード方法がわからないため、grubはアクセスできません。出力の一部は_x86_64-efi
_ Archを使用していました。
レスキューコンソールを少しいじってゆっくりと良くなっていきましたが、原因がわかったのかもしれません。なぜアクセスできないのか。 grubレスキューモードはi386-pcmodfileのみを受け入れますが、インストールされているすべてのmodfileはx86_64-efiのものです。
これはすべて、誰かがUEFI仕様を完全に実装していなかったためです。
あなたがしなければならないのは、ライブシステムを起動することと:
Sudo mount -U <UUID of your ESP> /mnt
Sudo mkdir /mnt/EFI/BOOT
Sudo cp -v /mnt/boot/<your-vendor>/grubx64.efi /mnt/EFI/BOOT/
次にシャットダウンし、稼働中のシステムを削除して再起動します。
使用されるパスの詳細については、 ここ を参照してください。