Como posso evitar que meu bootloader desapareça?

Como posso evitar que meu bootloader desapareça?

Inicializei duas vezes o Manjaro e o Windows, via Grub e UEFI em um Lenovo Yoga C930, que usa Bitlocker e Secure Boot. Posso inicializar com êxito no Manjaro se desabilitar a inicialização segura no BIOS e também posso inicializar no Windows se reativar a inicialização segura no BIOS. Por razões desconhecidas e aparentemente aleatórias, vou perder meu bootloader Linux. Não sei se ele está sendo excluído ou de repente não pode ser reconhecido, ou o quê, mas não consigo inicializar a partir dele e ele não aparece como uma opção no BIOS.

Consigo reinstalar o Grub seguindo as instruções do Wiki, mas eventualmente ele simplesmente desaparecerá. O que está acontecendo e como posso evitar que isso aconteça?

Responder1

Presumo que o Windows esteja mantendo seu sistema "livre de câncer".

[EDITAR] Você tem duas soluções, dependendo do método de inicialização usado, legado e UEFI.

Legado:

Você pode usar bcdcomo gerenciador de inicialização para iniciar o Windows ou Linux.

Supondo que você tenha o grub instalado /dev/sdae /dev/sda1seja a partição EFI do Windows

No Linux:

mount /dev/sda1 /mnt
dd if=/dev/sda of=/mnt/linux.bin bs=512 count=1

No Windows:

bcdedit /create /d "Linux" /application bootsector

BCDEdit retornará um identificador alfanumérico para esta entrada, que chamarei de {ID} nas etapas restantes. Você precisará substituir {ID} pelo identificador real retornado. Um exemplo de {ID} é {d7294d4e-9837-11de-99ac-f3f3a79e3e93}. A seguir, vamos especificar qual partição hospeda uma cópia do arquivo linux.bin:

bcdedit /set {ID} device partition=c:

O caminho para nosso arquivo linux.bin:

bcdedit /set {ID}  path \linux.bin

Uma entrada no menu exibido durante a inicialização:

bcdedit /displayorder {ID} /addlast

e por fim, vamos especificar por quanto tempo as opções do menu serão exibidas:

bcdedit /timeout 30

É isso! Agora reinicie e será apresentado um menu onde você pode escolher inicializar no Windows ou Linux. Ao escolher o Linux, você será levado ao menu do bootloader, onde poderá escolher inicializar o Linux.

https://www.iceflatline.com/2009/09/how-to-dual-boot-windows-7-and-linux-using-bcdedit/

[EDITAR] UEFI

Seu sistema Windows possui uma partição EFI a partir da qual é inicializado. No Linux, você monta isso em /boot. Em seguida, certifique-se de que você grub.cfgestá procurando a partição raiz usando uuid (por padrão): como, por exemplo: linux /vmlinuz-4.4.0-1-default root=UUID=6159e15d-f224-499d-88e0-437b5538f0f1 quiet splash=silent, se não estiver, você usa blkidpara listar o UUID de sua partição raiz e adaptar a configuração do grub em /etc/grub.d.

Você escreve sua configuração do grub para/boot/boot/efi/EFI/manjaro/grub.cfg

grub2-mkconfig -o /boot/boot/efi/EFI/manjaro/grub.cfg

Reinicie, você "deveria" estar pronto para prosseguir.

Responder2

Tive um problema semelhante a este há quase dois anos, com uma inicialização dupla do Trisquel Linux com Windows 8. Postei uma pergunta/respostaaquino Superusuário (me disseram na época que as questões de inicialização dupla estavam fora do assunto no U&L, por algum motivo).

Como você verá nessas postagens, o problema não era o Windows estar excluindo ou sobrescrevendo o GRUB, mas sim alterando periodicamente as configurações de UEFI para instruí-lo a usar o gerenciador de inicialização do Windows, em vez do GRUB. A solução foi usar o bcdedit no Windows, para definir o caminho padrão do bootloader para GRUB, o que resolveu meu problema.

Não sei se a mesma solução funcionará para você, mas talvez valha a pena tentar?

(além disso, não acredito que você precise ter a inicialização segura habilitada para inicializar o Windows. Eu inicializo no Windows 8 com ele desabilitado perfeitamente.)

Responder3

Na verdade, eu descobri isso sozinho. Acontece que tive que efibootmgrcriar manualmente uma nova entrada de inicialização e dar a ela alta prioridade. Até agora tudo bem.

informação relacionada