Estou tendo problemas para definir a ordem de inicialização como desejo no meu computador de inicialização múltipla contendo Windows 10 - Ubuntu 15.10 - Fedora 23.
Aqui está o que eu fiz: eu costumava ter apenas um dualboot com Windows 10 e Ubuntu 15.10 que funcionava conforme o esperado:
- Eu poderia configurá-lo e, por exemplo, configurar um tema.
- Eu poderia facilmente inicializar em um USBLive.
Como queria experimentar outras distribuições Linux, instalei o Fedora 23.
Ocorreu que o Fedora assumiu o poder na inicialização. Primeiro precisei alterar a configuração de inicialização do Fedora, substituindo linux e initrd por linuxefi e initrdefi para inicializar no Ubuntu, conforme explicadoaqui.
Posso então acessar todos os sistemas operacionais instalados no meu computador. Mas quero devolver o poder de inicialização ao Ubuntu.
Então, primeiro tentei o reparo de inicialização lançado no Ubuntu, mas não é eficiente.
Então tentei usar efibootmgr :
$ sudo efibootmgr
Mot de passe [sudo] pour xavier :
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0004,0006,0000,0007,0001,0002,0003
Boot0000* Windows Boot Manager
Boot0001* ubuntu
Boot0002 UEFI: IP4 Qualcomm Atheros PCIe Network Controller
Boot0003 UEFI: IP6 Qualcomm Atheros PCIe Network Controller
Boot0004* Fedora
Boot0006* grub
Boot0007* ubuntu
Então tentei no Ubuntu e no Fedora alterar a ordem:
$ sudo efibootmgr --bootorder 0006,0004,0000,0001,0007,0002,0003
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0006,0004,0000,0001,0007,0002,0003
Boot0000* Windows Boot Manager
Boot0001* ubuntu
Boot0002 UEFI: IP4 Qualcomm Atheros PCIe Network Controller
Boot0003 UEFI: IP6 Qualcomm Atheros PCIe Network Controller
Boot0004* Fedora
Boot0006* grub
Boot0007* ubuntu
Mas na reinicialização, a alteração que fiz com o efibootmgr não se aplica, e se eu pedir novamente ao efibootmgr o bootorder, ele me dará aquele com o Fedora ...
Acho que o problema pode vir de parâmetros diferentes que realmente não entendo, como:
- Qual é a diferença entre efi boot, grub e grub2
- Qual é o impacto do secureboot?
- Qual é a inicialização legada?
Obrigado a qualquer pessoa que possa me ajudar a obter uma configuração limpa.
EDIT: A resposta de Rod Smith me fez perceber que posso obter mais informações com o argumento -v:
$ sudo efibootmgr -v
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0004,0006,0000,0007,0001,0002,0003
Boot0000* Windows Boot Manager HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/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.}...3................
Boot0001* ubuntu HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\UBUNTU\SHIMX64.EFI)
Boot0002 UEFI: IP4 Qualcomm Atheros PCIe Network Controller PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(448a5b4783b6,0)/IPv4(0.0.0.0:0<->0.0.0.0:0,0,0)..BO
Boot0003 UEFI: IP6 Qualcomm Atheros PCIe Network Controller PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(448a5b4783b6,0)/IPv6([::]:<->[::]:,0,0)..BO
Boot0004* Fedora HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\FEDORA\SHIM.EFI)
Boot0006* grub HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\GRUB\SHIMX64.EFI)
Boot0007* ubuntu HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\UBUNTU\GRUBX64.EFI)
Graças a istopublicarde Rod Smith, entendi o papel de ambas as entradas do Ubuntu. Mas o grub parece indesejado porque o arquivo não existe:
$ ls -a
. .. Boot fedora Microsoft MSI ubuntu
Talvez eu devesse apagá-lo?
Eu então tentei uma ordem diferente:
$ sudo efibootmgr --bootorder 0001,0004,0000,0006,0007,0002,0003
Mas, infelizmente, as mudanças não funcionam.
Então, se eu entendi bem a resposta de Rod Smith, a solução única é limpar a entrada do fedora? Isso talvez causaria alguns problemas se um dia eu quisesse manter apenas o fedora, mas até então me permitiria inicializar no USBLive?
Agradeço mais uma vez !
Responder1
Começarei respondendo às perguntas no final da sua postagem:
- A inicialização no modo EFI usa o modo de inicialização nativo do firmware, enquanto a inicialização no modo BIOS/CSM/legado usa o Módulo de suporte de compatibilidade, que permite inicializar carregadores de inicialização no modo BIOS mais antigos. Veresta pergunta e minha resposta em superuser.compara saber mais sobre este assunto.
- GRUB é um dosvários carregadores de inicialização no modo EFI para Linux.(Também existem versões do GRUB para BIOS e outros tipos de firmware.) GRUB Legacy, também conhecido como GRUB 1, nunca foi oficialmente suportado para EFI, embora o Fedora tivesse uma versão fortemente corrigida que agora é abandonware. Assim, a maioria das referências ao GRUB em um contexto EFI refere-se ao GRUB 2.
- Secure Boot é um recurso EFI opcional destinado a melhorar a segurança do sistema, impedindo que um EFI inicie binários que não sejam assinados criptograficamente por uma autoridade confiável. Em princípio, esta autoridade poderia ser você; ou pode ser outra pessoa. Na prática, a Microsoft detém as únicas chaves comumente disponíveis para inicialização segura e, portanto, controla o processo. Felizmente, a Microsoft assinará binários de terceiros, e o Ubuntu usou isso para que a Microsoft assinasse um binário chamadoCalçoisso, por sua vez, inclui a chave da Canonical, que é usada para assinar o GRUB e o kernel Linux no Ubuntu. Observe que, ao inicializar duas distribuições Linux, o Shim de nenhuma distribuição incluirá a chave da outra distribuição. Assim, você deve registrar a chave da outra distribuição na lista Machine Owner Key (MOK), o que pode ser feito com o
MokManager.efi
utilitário em EFI. Acho que osb-updatevar
utilitário também pode fazer isso no Linux, mas tenho menos experiência com ele. Veraquipara várias chaves em um local acessível; você precisaria.cer
de.der
chaves. Verminha página no Secure Bootpara saber mais sobre este assunto.
Quanto ao seu problema principal, o comando efibootmgr -o
(ou )efibootmgr --bootorder
devedê controle a qualquer programa de inicialização que você especificar. Observe, no entanto, que você provavelmente pretendia dar controle a Boot0001
or Boot0007
, not Boot0006
- o Ubuntu usa o nome ubuntu
, not grub
, para descrever suas próprias entradas de inicialização. Você pode identificar melhor cada um deles digitando sudo efibootmgr -v
, que produz caminhos completos para as entradas de inicialização (identificadas usando identificadores de caminho EFI, que são longos e complexos e referem-se, entre outras coisas, aos números GUID das partições, que você pode obter com gdisk
ou algum versões de blkid
). Portanto, antes de fazer qualquer outra coisa, você pode tentar alterar a ordem de inicialização para o valor correto, em vez de Boot0004
.
Na prática, efibootmgr
as alterações às vezes não funcionam devido a EFIs com erros ou dados corrompidos na NVRAM da máquina (que é onde os dados que são efibootmgr
exibidos e ajustados são armazenados). Três soluções para tais problemas são comumente empregadas:
- Limpe entradas indesejadas- Às vezes, excluir uma entrada indesejada ou duplicada, como
sudo efibootmgr -b 0004 -B
excluirBoot0004
, resolverá um problema. (No entanto, você pode ou não querer excluir esta entrada.) Às vezes, pode ser necessário excluir várias entradas de inicialização para que o sistema funcione novamente.Nãoexclua as entradas que você precisa para inicializar. Além disso, a maioria dos computadores possui entradas que o próprio firmware cria, como as duasNetwork Controller
entradas na sua saída. Excluir essas entradas geralmente é desaconselhável. - Redefinir o firmware para seus padrões-- A maioria das EFIs oferece uma opção para redefinir todas as configurações para seus padrões no utilitário de configuração do firmware. (O que algumas pessoas chamam de "telas de configuração do BIOS" ou algo semelhante - embora EFIs não sejam tecnicamente BIOSes, apesar do fato de muitas pessoas, e até mesmo fabricantes, frequentemente se referirem a elas como tal.) A desvantagem dessa abordagem é que é provavelmente acabarátodosas entradas EFI, tornando o sistema não inicializável até que você use um disco de emergência para restaurar pelo menos uma entrada funcional.
- Pegue carona no seu gerenciador de inicialização em outra entrada- Esta abordagem envolve copiar ou mover/renomear o carregador de inicialização desejado para usar o nome de arquivo de qualquer coisa que a EFI insista em iniciar. Geralmente é usado quando um EFI se recusa a iniciar qualquer coisa que não seja o gerenciador de inicialização do Windows, portanto não deve ser necessário no seu caso.
Recuando um pouco mais, direi que realmente não deveria importar qual GRUB você usa (Fedora ou Ubuntu); eles são basicamente o mesmo software. Se você estiver tendo problemas para configurar o GRUB do Fedora para fazer o que deseja, você sempre pode ajustar suas configurações - mas OTOH, a configuração do GRUB 2 é notoriamente difícil quando você vai além de algumas coisas muito básicas. Por esse motivo, muitas pessoas que fazem inicialização dupla em várias distribuições Linux preferem ter um carregador de inicialização independente de distribuição - seja seu próprio GRUB ou qualquer outra coisa. Meu própriogerenciador de inicialização rEFIndtem várias vantagens para tais configurações, como a falta de dependência de arquivos de configuração para detectar atualizações do kernel e sua independência de qualquer script de configuração do sistema operacional. Dito isto, se você estiver tendo problemas para efibootmgr
mudar de um GRUB para outro, também poderá ter problemas para iniciar o rEFInd (ou qualquer outro carregador de inicialização). Além disso, se estiver usando o Secure Boot, pode ser necessário registrar pelo menos uma chave do Secure Boot com seu MOK para que o rEFInd funcione. Por falar nisso, se o motivo pelo qual você deseja mudar para o GRUB do Ubuntu é que o GRUB do Fedora não inicia os kernels do Ubuntu, então o problema provavelmente é a inicialização segura; adicionar a chave Secure Boot para Canonical/Ubuntu deve superar esse problema.
EDITAR:
Boot0001
é a entrada com maior probabilidade de fazer o que você deseja, portanto deve aparecer no início da sua lista de inicialização; mas parece que isso não está funcionando para você.
Se você consegue deixar o Fedora encarregado do processo de inicialização, talvez seja melhor fazê-lo, para não acabar criando uma cascata de novos problemas. Certamente excluir completamente a entrada do Fedora é arriscado, pois se você não conseguir fazer mais nada funcionar, poderá não conseguir inicializar nada.
Você pode tentardesabilitando inicialização segura,presumindo que esteja ativado no momento, pois esse recurso pode causar problemas, principalmente em configurações complexas.
Responder2
Finalmente, graças à ajuda de Rod Smith, encontrei uma solução para escolher a ordem de inicialização que desejo.
Como ele mencionou para desabilitar o Secure Boot, eu acessei as configurações da bios, e como esperado, o Secure Boot já estava desabilitado, mas aproveitei para estar nas configurações da bios/uefi para alterar sem efibootmgr a ordem de boot .
Então eu escolhi inicializar primeiro no dispositivo USB, e então configurei uma ordem para a inicialização no disco rígido, primeiro com o Ubuntu, e funcionou!
Então eu penso claramente que quando o efibootmgr não é capaz, por qualquer motivo, de alterar a ordem, ir diretamente para as configurações do BIOS/uefi pode ser a melhor opção, e não realmente difícil.
Espero que isso possa ajudar outras pessoas.
Obrigado novamente por sua ajuda.
Xavier