Como posso reinstalar o GRUB na partição EFI?

32

Quero reinstalar o GRUB 2 e encontrei estas instruções: Como reparar, restaurar ou reinstalar o Grub 2 com um CD ou Ubuntu Live do Ubuntu . No meu caso, o carregador de inicialização está instalado na partição EFI. Se eu usar os comandos fornecidos neste guia, o GRUB será reinstalado automaticamente na partição EFI ou será instalado na partição raiz onde o Ubuntu está instalado? Obviamente, não quero que isso aconteça.

Generoso
fonte
3
As instruções no link fornecido são válidas para reinstalar o GRUB apenas no modo herdado da BIOS, isso não funcionará no seu caso. Para reinstalar o GRUB em uma instalação do Ubuntu no modo EFI BIOS, leia minha resposta. :)
cl-netbox 29/09
Muito obrigado! :) Tenho algumas perguntas: quando instalei o Ubuntu no meu sistema UEFI, encontrei duas entradas na bios. Existe uma maneira de ter uma entrada unic ubuntu? No caso da tabela de partição MBR (portanto, nenhuma EFI ou qualquer outra partição de inicialização), posso usar os mesmos comandos, exceto: sudo mount / dev / sd ** / mnt / boot / efi?
Generoso
Você pode tentar remover a segunda entrada do Ubuntu com: sudo efibootmgr (lista todas as entradas) | sudo efi bootmgr -b <número-de-entrada> -B .... e para reinstalar o GRUB no modo BIOS herdado, execute estes comandos: sudo mount / dev / sd ** / mnt | sudo grub-install - diretório de inicialização = / mnt / boot / dev / sd * (* = disk | ** = partição do sistema)! :)
cl-netbox
Perfeito :) De qualquer forma, ter um sistema UEFI e, portanto, uma partição EFI, existe uma maneira de evitar que o grub seja substituído quando executo uma nova instalação do Windows?
Generoso
Bem, a Microsoft não cuida de mais nada além de seus próprios produtos, para que você possa instalar sistemas Linux sem prejudicar o Windows - infelizmente esse não é o caso inverso -, então quando você instala o Windows após a instalação Ubuntu, você precisa restaurar o carregador de inicialização GRUB posteriormente. :)
cl-netbox

Respostas:

54

Reinstale o carregador de inicialização GRUB para a instalação do Ubuntu no modo EFI desta maneira ...

Inicialize a partir da mídia de instalação do Ubuntu e selecione 'Experimente o Ubuntu sem instalar'.
(Inicialize sua mídia de instalação no modo EFI, selecione a entrada Ubuntu com UEFI na frente.)

Quando estiver na área de trabalho ao vivo, abra um terminal e execute estes comandos:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub  

Nota: sdX= disco | sdXX= partição efi | sdXXX= partição do sistema

Para identificar as partições que usam GParted, a ferramenta está incluída no meio de instalação.
Depois de executar os comandos, o GRUB será instalado na partição EFI separada.

cl-netbox
fonte
+1, mas por que você não instala a partir do próprio Ubuntu?
1
@ MarkYisri: Muito obrigado! :) Porque é a maneira mais segura de reinstalar o carregador de inicialização GRUB sem danificar as coisas e, caso o sistema não inicialize corretamente ... a única maneira de fazê-lo! :)
cl-netbox
1
Nesta solução, como o 'grub-install' sabe que é necessário instalar no modo EFI?
user334639
3
O ponto importante é inicializar a mídia de instalação no modo de inicialização correto; se queremos reinstalar grub-efi, precisamos inicializar no modo UEFI; se queremos reinstalar grub-pc, precisamos inicializar no modo herdado.
mook765
1
Isso funcionou para mim, exceto com uma alteração: eu fiz grub-install /dev/sdXX, ou seja, não o disco, mas a partição EFI foi usada para instalar o grub e funcionou.
Duck Dodgers
3

esta é a única maneira que funcionou para mim: (Sistema: sdb8, boot: sdb6, efi: sdb2)

sudo mount /dev/sdb8 /mnt 
sudo mount /dev/sdb6 /mnt/boot 
sudo mount /dev/sdb2 /mnt/boot/efi

sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

sudo chroot /mnt

grub-install --target=x86_64-efi /dev/sdb

grub-install --recheck /dev/sdb

exit &&
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt
Chilu Pereira
fonte
O que --recheckfaz? O manual diz delete device map if it already exists?
MrCalvin 27/03
Se eu chamar a entrada de inicialização algo diferente do padrão, por exemplo, --bootloader-id=Ubuntu_02a inicialização falhará. É só inicializar no console grub ... alguma solução?
MrCalvin 27/03
sim. parece que grub-install --rechecké necessário. Consertou meu EFI USB HDD que não funcionava.
solsTiCe 19/08
2

Obrigado a @ cl-netbox pelas instruções!

Após a atualização (Linux Mint 18.2 Sonya para 18.3 Sylvia), meu sistema não inicializou, então segui as instruções acima, mas ainda não obtive sucesso. Notei, no entanto, que minha máquina possui / inicializa em uma partição separada (possivelmente porque estou usando LVM); portanto, meu processo ligeiramente modificado foi:

sudo mount /dev/sdXXX /mnt
sudo mount /dev/sdXY /mnt/boot
sudo mount /dev/sdXX /mnt/boot/efi
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sdX
update-grub 

Nota: sdX = disco | sdXX = partição efi | sdXY = partição de inicialização | sdXXX = partição do sistema

Rob Pearman
fonte
Eu tinha um sistema Ubuntu Bionic em execução no qual acidentalmente fiz rm -Rf / boot / efi! Meu sistema ainda estava em execução, então tentei usar os dois últimos comandos (grub-install / dev / mapper / ubuntu - vg-root AND update-grub). Reinicializado, e tudo funciona perfeitamente. Phewy e obrigado :) #
Roel Van de Paar
2

Além disso, se inicializando a partir do live cd para recuperar, pode acontecer que esteja faltando o pacote grub-efi-amd64-bin e, em seguida, forre

"grub-install --target=x86_64-efi /dev/sdb" 

falha com a mensagem de erro: "grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh não existe. Por favor, especifique --target ou --directory."

Nesse caso, execute isso fora do chroot

sudo apt get grub-efi-amd64-bin

e adicione / usr / lib / grub / x86_64-efi às montagens chroot.

O parâmetro "/ dev / sdb" do BTW está obsoleto e está sendo ignorado.

mprot
fonte
0

além da resposta do ci-netbox.
Se a sua versão do sistema operacional pendrive não corresponder à instalada no disco, o grub-install poderá ter dificuldades para identificar a instalação correta do grub:

$ sudo chroot /mnt
# grub-install /dev/sdX
grub-install: error: /usr/lib/grub/i386-pc/modinfo.sh doesn't exist. 
Please specify --target or --directory.

Tente identificar manualmente a instalação a ser usada

# ls /usr/lib/grub/
grub-mkconfig_lib  x86_64-efi  x86_64-efi-signed

Em seguida, reinicie o grub-install:

# grub-install --target=x86_64-efi /dev/sdX 
Installing for x86_64-efi platform.
Installation finished. No error reported.
Emmanuel
fonte
0

Se você perder a partição EFI, é fácil recuperá-la. Você pode usar fdiskou partedcriar uma nova partição GPT com o tipo "Partição EFI (1)" e formatá-la com:

sudo mkfs.msdos /dev/sdX

depois monte-o e você poderá seguir executar:

sudo grub-install /dev/sdX

como em outras soluções.

cengique
fonte
0

então, meu palpite é que a razão do problema é que a instalação do Ubuntu não está montando a partição efi se o fstab. e atualiza o grub. em atualização.

Shimon Doodkin
fonte