O TianoCore + coreboot é um verdadeiro UEFI de código aberto?

11

Tem havido muita controvérsia em torno do UEFI, mas goste ou não, está se tornando a única opção quando se trata de placas-mãe de desktop geralmente disponíveis. Eu venho evitando mobFs UEFI há algum tempo, mas agora ficou bastante difícil, já que os fornecedores móveis fornecem produtos UEFI com mais recursos do que os da BIOS (ou seja, suportam mais RAM). Com isso em mente, quero ter certeza de que há pelo menos uma opção para usar o código aberto no futuro e, se não houver, posso suportar com menos recursos, mas mais liberdade.

TianoCore é a implementação de interfaces UEFI de código aberto da Intel e Wikipedia tem o que dizer sobre isso :

TianoCore lacks the specialized drivers that initialize chipset functions, which are instead provided by Coreboot, of which TianoCore is one of many payload options. The development of Coreboot requires cooperation from chipset manufacturers to provide the specifications needed to develop initialization drivers.

A minha pergunta é: estes drivers fornecidos pelo coreboot ainda requerem algum tipo de blobs binários de fornecedores de chipsets? Além disso, Ronald G. Minnich tem isto para dizer sobre a EFI:

Accesses to IDE I/O addresses, or certain memory addresses, can be trapped to EFI code and potentially examined and modified or aborted. Many see this as an effort to build a "DRM BIOS".

Em uma configuração do coreboot do TianoCore +, as partes que poderiam fazer esse firmware open source ou binário são fornecidas pelo fornecedor de hardware?

    
por Red 10.11.2013 / 12:04

3 respostas

4

Is TianoCore+coreboot a true open source UEFI?

Para plataformas Intel (desenvolvi placas Intel e não posso falar em AMD, mas acredito que o caso ainda seja o mesmo), não, porque a TianoCore por si só não pode executar inicialização de hardware de baixo nível e requer o coreboot para fazer esse hardware init primeiro. Mas como o coreboot faz isso? O coreboot invoca blobs binários específicos para executar essas funções. Como esses blobs binários (por exemplo, atualizações de microcódigo, binários FSP, binários ME, etc) são gerados? Bem, você não pode construir esses binários porque eles são códigos proprietários da Intel. Na melhor das hipóteses, você pode recuperar os pertinentes à sua plataforma e incluí-los no processo de criação do coreboot. Até que você seja capaz de modificar livremente e abertamente a fonte para esses blobs binários, você não terá uma verdadeira UEFI open source ou coreboot para esse assunto.

My question is, do these drivers provided by coreboot still require some kind of binary blobs from chipset vendors?

Sim

Fontes:

Experiência

código-fonte do coreboot

link

Pacote de suporte de firmware Intel (FSP)
link

Atualização de microcódigo (geralmente aplicada pelo BIOS, mas não precisa). link

    
por 10.07.2015 / 04:25
4

É possível combinar o coreboot (fazendo a inicialização de hardware antecipada) e o TianoCore (fornecer a API da UEFI) para uma implementação completa do firmware UEFI. No entanto, isso ainda está em desenvolvimento. Também não será um UEFI "canônico", já que a camada externa será coreboot.

Uma abordagem, baseada no Duet, pode ser encontrada no link - é um pouco atualizada em hardware real.

Outra tentativa (divulgação: meu projeto) que tenta reutilizar mais de Tiano e ficar mais perto da arquitetura UEFI é no github: link . Este não viu muitos testes em hardware real ainda, apenas Qemu.

Em princípio, ele também pode trabalhar para extrair o código do coreboot e criar pacotes de tianocore, então ele se parece com o UEFI em todos os aspectos (não apenas aqueles visíveis para o usuário e para o SO). Obviamente, os desenvolvedores do coreboot não estão muito interessados nisso.

    
por 10.01.2014 / 22:05
3

A inicialização do chipset e outros códigos específicos de hardware de nível extremamente baixo sempre foram em grande parte fechados. O BIOS / UEFI não altera o fato de que os detalhes da inicialização do controlador de memória, etc., raramente são divulgados pelos fornecedores de placas.

Para ter uma verdadeira placa de código aberto, você terá que procurar por hardware de código aberto, algum fornecedor que expõe todas as especificações de cada componente de hardware na placa-mãe. Isso é difícil de encontrar, para dizer o mínimo.

    
por 12.09.2014 / 13:48