Por que meu firmware do uefi ignora a ordem de inicialização?

1

Meu Toshiba Tecra R950 suporta principalmente UEFI. Ele tem um bom sistema de configurações de firmware azul baseado em texto à moda antiga que ele chama de "BIOS", em vez da configuração gráfica sofisticada que os sistemas UEFI mais adequados têm. O menu de ordem de inicialização (na configuração ou quando eu o atualizo no momento da inicialização pressionando F12) não permite a seleção de sistemas operacionais, apenas dispositivos. O sistema parece ser incapaz de inicializar a menos que a partição efi contenha um carregador de fallback em /efi/boot/bootx64.efi - embora, de acordo com o que eu li, isso seja necessário apenas para volumes removíveis.

A ferramenta efibootmgr do Linux pode ser usada para acessar ou modificar a prioridade real de inicialização do efi (em termos de qual sistema operacional carregar primeiro), mas o firmware ignora o que você definir aqui quando inicializa e confia na prioridade de hardware definido na configuração do BIOS / firmware e usa o carregador de fallback encontrado no primeiro volume acessível. A única exceção a isso parece ser quando voltando do S4 (hibernate), ele repentinamente olha para essa lista e inicializa o loader superior em vez do carregador de fallback.

Este é apenas um caso de uma má implementação do UEFI? É possível ter um BIOS / UEFI híbrido com suporte limitado dos recursos UEFI? Como meu sistema parece saber como lidar com a prioridade de inicialização no currículo do S4, há alguma maneira de fazer isso funcionar em geral?

    
por gordonmleigh 03.03.2016 / 21:11

1 resposta

1

Resposta curta: Com base na sua descrição, acho que seu firmware está com defeito.

Resposta longa: Primeiro, a especificação EFI (ou UEFI, que é apenas EFI 2.x) diz NADA sobre interfaces de usuário. Assim, você pode criar uma interface de usuário EFI em modo de texto puro que ainda é 100% compatível com as especificações EFI / UEFI. BIOS não tem uma especificação oficial, mas tem havido tentativas de utilitários de configuração gráfica para BIOSes. Assim, você não deve usar um utilitário de configuração gráfica, ou a falta dele, como um indicador de se algo é um EFI ou um BIOS, ou de quão "completa" é uma implementação. O colírio para os olhos é completamente irrelevante ao ponto e à sua pergunta.

Como uma nota lateral, muitos fabricantes referem seus EFIs como BIOSes. IMHO, isso é uma prática ruim, porque cria confusão nas mentes dos usuários sobre a distinção entre o tradicional BIOS de 16 bits e as modernas EFIs de 32 ou 64 bits, que são muito diferentes nos detalhes mais importantes .

Dito isto, a especificação da EFI é bastante clara de que as variáveis de ordem de inicialização (que são definidas via efibootmgr no Linux) devem ser honradas. Se o seu firmware está ignorando essas variáveis, então está violando a especificação. Infelizmente, essas violações continuam sendo angustiantemente comuns, embora tenham sido mais comuns há alguns anos. Um rápido Google sugere que o seu modelo pode ter sido introduzido em 2012, então pode não ser surpreendente que ele tenha um EFI antigo e com falhas. Você pode querer verificar o site da Toshiba para ver se há uma atualização de firmware disponível. Isso pode ou não consertar qualquer coisa, mas vale a pena verificar.

Você também pode tentar usar uma ferramenta diferente de efibootmgr , como EasyUEFI no Windows ou bcfg em um shell EFI. Em teoria, qualquer uma dessas ferramentas deve fazer o trabalho. Na prática, observei que efibootmgr às vezes falha quando outras ferramentas funcionam.

Quanto a um "BIOS / UEFI híbrido", essas coisas existem. Eu conheço duas grandes categorias:

  • EFI no BIOS - A especificação EFI não cobre alguns dos recursos de inicialização de hardware de nível mais baixo. Para lidar com essa tarefa, algumas EFIs antigas para x86 / x86-64, como o Hybrid EFI da Gigabyte, usaram BIOS tradicional, colocando a EFI "acima" disso. Minha única experiência com isso (descrita no link) foi dolorosa, mas isso pode ter tido mais a ver com a implementação do que com a abordagem geral. AFAIK, essa abordagem foi abandonada em favor de outro código de inicialização de hardware que interage melhor com a EFI acima dela.
  • EFI bloqueado no CSM - O CSM (Compatibility Support Module) é um recurso opcional do EFI que permite que o EFI inicialize carregadores de inicialização antigos no modo BIOS. Ouvi dizer que alguns "BIOS" nos últimos anos de computadores baseados em BIOS usaram EFIs com seus CSMs permanentemente habilitados. Esses computadores não podiam inicializar da maneira normal do EFI e se pareciam com computadores comuns baseados em BIOS. Eu não sei o quão comum esta prática era, e na verdade eu nunca verifiquei que a alegação é verdadeira - poderia ser uma lenda urbana. Tal configuração é certamente teoricamente possível, independentemente de tal firmware ter ou não sido realmente escrito.

Nenhuma das abordagens explicaria seu problema, que parece ser melhor descrito como uma EFI gravemente quebrada.

    
por 03.03.2016 / 22:09