Como inicializar via grub2 rescue promt no sistema UEFI?

3

Eu instalei o Ubuntu 16.04 inicializando de um USB, escolhendo "Tentar o Ubuntu sem instalar", e depois inserindo outro USB e direcionando o instalador para instalar lá. Eu disse ao instalador para instalar o bootloader em /dev/sdc2 , que é o ESP. Eu sei que o bootloader foi de fato instalado porque eu posso ver os arquivos shim e GRFI EFI naquela partição agora.

No entanto, quando tentei inicializar após a instalação, em vez de fornecer o menu de inicialização, ele apenas inicializou para o prompt de recuperação:

grub rescue>

Descobri então que minha partição ESP é hd0,gpt2 enquanto esperava hd1,gpt2 (usando o esquema de nomeação do grub aqui).

Examinei questões semelhantes, mas infelizmente só encontrei informações sobre os sistemas BIOS e não sobre o EFI, em que / também contém /boot(/efi) . Eu estou procurando uma maneira de continuar com / on hd0,gtp3 e os arquivos grub efi no outro disco. O kernel e o initrd estão localizados dentro do ESP, o problema deve estar em outro ponto.

Como posso corrigir isso?

Saída de 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)

saída de ls (hd0,gpt2)/ :

syslininux/ vmlinuz.efi inird.lz efi/

conteúdo de /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  }  

Atualização: Eu reinstalei com grub-install /dev/sdb2 grub em / dev / sdb2 mas a maioria dos grubfiles ainda estão em / dev / sdb3, então o grub não pode acessá-lo porque não sabe como carregar o ext2.mod. Parte da saída estava usando x86_64-efi arch.

Eu baguncei um pouco o console de resgate e fiquei devagar, mas eu posso ter encontrado a causa, por que não posso acessá-lo. O modo de recuperação do grub só aceita apenas os modfiles do i386-pc, mas todos os modfiles instalados são x86_64-efi.

    
por Kupferdrache 02.07.2016 / 16:51

1 resposta

2

Tudo isso simplesmente porque alguém não implementou totalmente a especificação UEFI.

Tudo o que você precisa fazer é inicializar um sistema ao vivo e:

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/

e depois desligue, remova o sistema ao vivo e reinicie.

Mais informações sobre o caminho usado podem ser encontradas aqui .

    
por 03.07.2016 / 17:43