Inicialização UEFI quebrada, Como prosseguir com segurança?

1

Tenho um laptop que inicializa o Windows 10 (atualização do Windows 8.1) e meu sistema operacional principal, o Ubuntu 14.04. Eu tinha o sistema configurado para a inicialização do UEFI e até esta manhã, tinha funcionado bem.

Eu usei o Windows ontem à noite para algo, o que é raro nesta máquina. Esta manhã, o computador inicializou diretamente no Windows. Eu suspeitava que o Windows mexesse nas configurações de inicialização, então usei 'escape' na inicialização para selecionar manualmente a unidade que tem meu grub instalado.

A partição grub / boot padrão que o computador verifica primeiro nos pontos de inicialização diretamente na inicialização do Windows agora --nenhum menu grub. Felizmente, usei o reparo de inicialização durante a instalação inicial e selecionei a opção para que as outras partições do 1º setor apontassem para a partição grub / boot. Quando selecionei a partição raiz, recebi uma notificação do BIOS de que não era seguro.

Antes de pensar no assunto, entrei na BIOS e na inicialização segura desativada e tentei inicializar a partir da partição raiz. O GRUB surgiu bem, então eu selecionei o Ubuntu e cheguei à minha tela de senha do LUKS.

Neste momento, pensei que desabilitar a inicialização segura e tentar carregar o Ubuntu pode ser um erro. Afinal, qual é o objetivo do UEFI se ele desativou o segundo, algo está bagunçado com um gerenciador de inicialização assinado perfeitamente e funcionando perfeitamente?

Eu meio que fico sem saber qual é a maneira correta de prosseguir com segurança. Existe uma maneira de restaurar o Ubuntu sem inicializar de forma insegura? Sugestões?

-Obrigado

    
por Joe 12.11.2015 / 14:59

1 resposta

7

Quero abordar alguns equívocos na sua pergunta antes de prosseguir para uma resposta mais direta ao seu ponto principal. Por favor, tenha paciência comigo ...

% bl0ck_qu0te%

Em um computador baseado em EFI, os carregadores de boot são armazenados como arquivos comuns na partição do sistema EFI (ESP) . O computador sabe qual arquivo (s) deve ser iniciado quando iniciado devido a entradas armazenadas na NVRAM, que identificam a (s) partição (s) e o (s) arquivo (s) a serem executados. Não existe uma "partição de inicialização padrão" no EFI; é assim que o BIOS é inicializado, não o EFI.

% bl0ck_qu0te%

Sob o EFI, os "setores de inicialização" não existem - ou, para ser mais preciso, o código de inicialização não é armazenado nos primeiros setores de discos ou partições. Tudo é tratado por meio de arquivos e referenciado por entradas na NVRAM.

% bl0ck_qu0te%

Você não selecionou uma partição; você selecionou um arquivo do carregador de inicialização. De sua descrição, meu palpite é que você selecionou EFI/ubuntu/grubx64.efi no seu ESP. Isso começa a chegar ao problema, mas vou voltar a esse ponto ....

% bl0ck_qu0te%

Você não possui um BIOS; você tem um EFI. Eu sei que muitas pessoas, e até fabricantes, se referem a EFIs como BIOS, mas isso apenas leva a confusão, porque encoraja as pessoas a arrastar as suposições do BIOS sobre o processo de inicialização, como você fez.

% bl0ck_qu0te%

Não confunda o EFI (ou UEFI, que é apenas o EFI 2.x) e o Secure Boot. Secure Boot é apenas um recurso opcional do UEFI. A EFI, por sua vez, é uma substituição para o BIOS. Muitas EFIs (e até mesmo UEFIs) não têm suporte ao Boot Seguro - mas o Boot Seguro requer UEFI.

% bl0ck_qu0te%

Para suportar o Secure Boot, o Ubuntu usa um programa chamado Shim. No Ubuntu, tem um nome de arquivo de shimx64.efi . Shim é codificado para iniciar o GRUB ( grubx64.efi ), que pode então chamar o Shim para autenticar os kernels do Linux.

Note que anteriormente eu escrevi que você provavelmente lançou grubx64.efi . Isso funcionará bem com o Secure Boot desativado; mas se você ativar a Inicialização Segura, as chances são de que grubx64.efi não corresponda aos requisitos padrão de Inicialização Segura, por isso ela falhará. shimx64.efi , OTOH, é assinado pela Microsoft (cujas chaves estão presentes em praticamente todos os computadores) e, portanto, funcionará. Esta é a chave (trocadilho não desejado, mas é a melhor palavra) para a solução: Reconfigurar seu sistema para inicializar via Shim. Você pode fazer isso no Ubuntu usando o utilitário efibootmgr . Primeiro, veja suas opções disponíveis usando sudo efibootmgr -v :

$ sudo efibootmgr -v
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0007,0003,2003,0001,2001,2002
Boot0000* ubuntu    HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\ubuntu\shimx64.efi)
Boot0001* Lenovo Recovery System    HD(3,276800,1f4000,de3b7563-97f5-48c6-ab7f-2f5d6d57c644)File(\EFI\Microsoft\Boot\LrsBootMgr.efi)RC
Boot0002* EFI Network 0 for IPv4 (08-9E-01-FF-CA-4D)    ACPI(a0341d0,0)PCI(1c,0)PCI(0,0)MAC(089e01ffca4d,0)IPv4(0.0.0.0:0<->0.0.0.0:0,0, 0RC
Boot0003* ubuntu    HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\ubuntu\grubx64.efi)RC
Boot0004* EFI Network 0 for IPv6 (08-9E-01-FF-CA-4D)    ACPI(a0341d0,0)PCI(1c,0)PCI(0,0)MAC(089e01ffca4d,0)030d3c000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000RC
Boot0007* Windows Boot Manager  HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................

Este é apenas um exemplo, e é provável que o seu seja diferente de maneiras significativas. Observe, no entanto, que existem duas entradas ubuntu , uma das quais se refere a shimx64.efi e a outra se refere a grubx64.efi . É provável que você esteja inicializando por meio da entrada grubx64.efi , conforme mostrado na linha BootCurrent . A entrada grubx64.efi provavelmente é a primeira na linha BootOrder também. Para mudar isso, você deve criar um novo BootOrder usando a opção -o para efibootmgr , como em:

sudo efibootmgr -o 0000,0007

Você também pode adicionar outras opções, que o computador usará se as duas primeiras falharem. É claro, você deve especificar os números associados às suas entradas Shim e GRUB, não 0000,0007 (a menos que esses sejam os números). Note também que eu especifiquei a entrada Shim primeiro com a entrada GRUB como um fallback no caso de uma falha; em teoria, especificando somente a entrada Shim deve funcionar bem. É melhor incluir seu valor atual de BootCurrent como segunda (ou posterior), já que você sabe que ele funciona com o Secure Boot desativado. Dessa forma, se você cometer um erro ou se o seu binário Shim estiver quebrado, você ainda deve ser capaz de desabilitar o Secure Boot e voltar ao seu sistema operacional usando o gerenciador de boot interno do computador ou ajustando a ordem de inicialização em outro maneira.

Uma vez que você tenha feito isso, reinicialize seu firmware e reative o Secure Boot. deve funcionar bem a partir desse ponto.

    
por Rod Smith 12.11.2015 / 16:01