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

12

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

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

O TianoCore não possui os drivers especializados que inicializam as funções do chipset, que são fornecidas pelo Coreboot, das quais o TianoCore é uma das muitas opções de carga útil. O desenvolvimento do Coreboot requer cooperação dos fabricantes de chipset para fornecer as especificações necessárias para desenvolver drivers de inicialização.

Minha pergunta é: esses drivers fornecidos pelo coreboot ainda exigem algum tipo de blobs binários dos fornecedores de chipset? Além disso, Ronald G. Minnich tem a dizer sobre a EFI:

Os acessos aos endereços de E / S IDE, ou a determinados endereços de memória, podem ser presos ao código EFI e potencialmente examinados, modificados ou abortados. Muitos vêem isso como um esforço para criar um "DRM BIOS".

Na configuração do TianoCore + coreboot, existem peças que poderiam fazer esse firmware de código aberto ou binário fornecido pelo fornecedor do hardware?

Vermelho
fonte

Respostas:

4

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

Para plataformas Intel (desenvolvi as placas Intel e não posso falar pela AMD, embora acredite que o caso ainda seja o mesmo), não, porque o TianoCore por si só não pode executar uma inicialização de hardware de baixo nível e exige que o coreboot execute primeiro esse hardware. Mas como o coreboot faz isso? O coreboot chama blobs binários específicos para executar essas funções. Como são gerados esses blobs binários (por exemplo, atualizações de microcódigo, binários FSP, binários ME, etc.)? Bem, você mesmo não pode criar 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ê possa modificar livre e abertamente a fonte desses blobs binários, você não terá um verdadeiro UEFI ou coreboot de código aberto.

Minha pergunta é: esses drivers fornecidos pelo coreboot ainda exigem algum tipo de blobs binários dos fornecedores de chipset?

sim

Fontes:

Experiência

código fonte coreboot

http://www.coreboot.org/TianoCore

Pacote de suporte de firmware da Intel (FSP)
http://www.intel.com/content/www/us/en/intelligent-systems/intel-firmware-support-package/intel-fsp-overview.html

Atualização de microcódigo (geralmente aplicada pelo BIOS, mas não precisa.)
Https://wiki.debian.org/Microcode

penguin4hire
fonte
2
O Milind R também enfatiza que o hardware aberto é um requisito necessário.
Penguin4hire
4

É possível combinar o coreboot (inicializando o hardware antecipadamente) e o TianoCore (fornecendo a API 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á a inicialização principal.

Uma abordagem, baseada no Duet, pode ser encontrada em http://notabs.org/coreboot/duet-payload/ - inicializa um pouco em hardware real.

Outra tentativa (divulgação: meu projeto) que tenta reutilizar mais Tiano e ficar mais próxima da arquitetura UEFI está no github: https://github.com/pgeorgi/edk2/ . Este ainda não viu muitos testes em hardware real, apenas o Qemu.

Em princípio, também poderia funcionar para tirar o código do coreboot e criar pacotes tianocore deles, para que pareça e UEFI em todos os aspectos (não apenas aqueles visíveis para o usuário e o sistema operacional). Obviamente, os desenvolvedores do coreboot não estão muito interessados ​​nisso.

Patrick Georgi
fonte
3

A inicialização do chipset e esse outro código específico de hardware de nível extremamente baixo sempre foram principalmente de código fechado. 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 da placa.

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

Milind R
fonte