Diferença entre o firmware U-Boot e UEFI

1

Estou lendo um livro (Mastering Embedded Linux Programming, 2ª ed). No capítulo sobre bootloaders, ele explica o processo de inicialização com o U-Boot e com o firmware UEFI.

Parece que as etapas de inicialização são exatamente as mesmas, com exceção de que, na última etapa, o firmware U-Boot ou UEFI assume e carrega uma imagem do Linux na RAM.

Então, qual é a diferença exata? Por que escolheria o U-Boot pela UEFI ou vice-versa?

    
por flashburn 23.03.2018 / 15:35

2 respostas

2

A maior diferença é que o UEFI é essencialmente um sistema operacional, enquanto o U-Boot é apenas um gerenciador de inicialização. O U-Boot faz apenas o suficiente para tornar o sistema inicializável e fornece um pouco mais para simplificar a depuração dos problemas de inicialização. Por outro lado, o UEFI fornece um grande conjunto de APIs de tempo de execução que fazem o MS-DOS parecer simples em comparação e, ao contrário do U-Boot, que em grande parte sai do seu caminho assim que é executado, o UEFI fica por perto.

Além disso, há diferenças de licenciamento (o U-Boot é um pouco mais aberto que o UEFI), diferenças de formato de arquivo (o U-Boot usa um formato de arquivo personalizado e minimalista, o UEFI usa executáveis PE32 +) e as diferenças reais estado do sistema no handoff de execução e os meios de configuração (o UEFI geralmente possui opções de configuração de firmware integradas, enquanto o U-Boot normalmente requer a recriação do firmware e o novo flash).

    
por 23.03.2018 / 20:08
2

A especificação UEFI descreve uma API que um firmware pode expor. Esta API pode ser usada por aplicativos e drivers carregados pelo firmware.

O firmware de código aberto Das U-Boot contém uma implementação parcial da especificação UEFI. Uma implementação completa de código aberto é oferecida por TianoCore EDK II . Empresas como Phoenix oferecem firmware UEFI de código fechado.

Na arquitetura ARM de 64 bits, as distribuições do Linux Suse e o Fedora usam o U-Boot para carregar o GRUB como um aplicativo UEFI a partir do U-Boot que, por sua vez, carrega e inicia o kernel do Linux por meio de chamadas de API UEFI. O próprio Linux tem um stub UEFI para que possa ser iniciado como um aplicativo UEFI.

A especificação UEFI define um tempo de execução que permanece na memória até que o sistema seja reinicializado. O tempo de execução do UEFI oferece serviços, incluindo a alteração de variáveis UEFI, o upload de novo firmware e a reinicialização do sistema. Compatível com a especificação UEFI O U-Boot também contém um tempo de execução UEFI. Mas a partir de hoje a funcionalidade é limitada a reinicializar o sistema.

    
por 23.09.2018 / 10:21