coreboot - coreboot
| Autor (es) original (is) | Ronald G. Minnich, Eric Biederman, Li-Ta (Ollie) Lo, Stefan Reinauer e a comunidade coreboot |
|---|---|
| lançamento inicial | 1999 |
| Versão estável | 4,14 / 10 de maio de 2021
|
| Repositório | |
| Escrito em | Principalmente C , e cerca de 1% na montagem . Opcionalmente Ada |
| Plataforma | IA-32 , x86-64 , ARMv7 , ARMv8, MIPS , RISC-V , POWER8 |
| Modelo | Firmware |
| Licença | GPLv2 |
| Local na rede Internet |
www |
O projeto de software coreboot , anteriormente conhecido como LinuxBIOS , tem como objetivo substituir o firmware proprietário ( BIOS ou UEFI ) encontrado na maioria dos computadores por um firmware leve projetado para executar apenas o número mínimo de tarefas necessárias para carregar e executar um computador moderno de 32 ou 64 bits sistema operacional de bits .
Uma vez que o coreboot inicializa o hardware vazio, ele deve ser transferido para cada chipset e placa - mãe que suporte. Como resultado, o coreboot está disponível apenas para um número limitado de plataformas de hardware e modelos de placa-mãe.
Uma das variantes do coreboot é o Libreboot , uma distribuição de software totalmente livre de blobs proprietários , voltada para usuários finais.
História
O projeto coreboot começou no inverno de 1999 no Laboratório de Computação Avançada do Laboratório Nacional de Los Alamos (LANL), com o objetivo de criar um BIOS que iniciasse rapidamente e tratasse os erros de forma inteligente. Ele é licenciado sob os termos da GNU General Public License (GPL). Os principais contribuidores incluem LANL , SiS , AMD , Coresystems e Linux Networx, Inc, bem como fornecedores de placas-mãe MSI , Gigabyte e Tyan , que oferecem coreboot junto com seu BIOS padrão ou fornecem especificações das interfaces de hardware para algumas de suas placas-mãe. O Google patrocina parcialmente o projeto coreboot. O CME Group , um cluster de bolsas de futuros , começou a apoiar o projeto coreboot em 2009.
Coreboot foi aceito em sete anos consecutivos (2007–2014) para o Google Summer of Code . Com exceção dos três primeiros modelos, todos os Chromebooks executam coreboot. O código do Das U-Boot foi assimilado para habilitar o suporte para processadores baseados no conjunto de instruções ARM .
Em junho de 2019, a Coreboot começou a usar o software Ghidra da NSA para seus esforços de engenharia reversa em problemas específicos de firmware após o lançamento de código aberto do pacote de software.
Plataformas suportadas
As arquiteturas de CPU suportadas pelo coreboot incluem IA-32 , x86-64 , ARM , ARM64 , MIPS e RISC-V . As plataformas de sistema em um chip (SOC) com suporte incluem AMD Geode , começando com o processador Geode GX desenvolvido para o OLPC . Artec Group adicionou suporte Geode LX para seu modelo ThinCan DBE61 ; esse código foi adotado pela AMD e melhorado para o OLPC depois que foi atualizado para a plataforma Geode LX, e é desenvolvido pela comunidade coreboot para suportar outras variantes do Geode. Coreboot pode ser instalado em uma plataforma Geode usando Flashrom .
A partir desse desenvolvimento inicial em plataformas baseadas em AMD Geode, o suporte coreboot foi estendido para muitos processadores e chipsets AMD. A lista de processadores inclui a família 0Fh e 10h ( núcleo K8 ) e, recentemente, a família 14h ( núcleo Bobcat , Fusion APU ). O suporte ao Coreboot também se estende aos chipsets AMD: RS690 , RS7xx , SB600 e SB8xx.
AMD Generic Encapsulated Software Architecture ( AGESA ) — um protocolo de bootstrap pelo qual os dispositivos do sistema em placas-mãe AMD64 são inicializados — foi aberto o código no início de 2011, com o objetivo de fornecer a funcionalidade necessária para inicialização do sistema coreboot no hardware AMD64. No entanto, esses lançamentos nunca se tornaram a base para o desenvolvimento futuro da AMD e foram posteriormente interrompidos.
Dispositivos que podem ser pré-carregados com coreboot ou um de seus derivados incluem alguns Chromebooks baseados em x86 , o Libreboot X200 e T400 (renomeados ThinkPad X200 e T400, respectivamente, disponível na Minifree, anteriormente conhecido como Gluglug), OLPC XO da One Laptop por Iniciativa infantil , modelos ThinCan DBE61, DBE62 e DBE63 e hardware de servidor / roteador fanless fabricado pela PC Engines . Todos os laptops Librem vêm com coreboot.
Alguns PCs System76 usam firmware coreboot TianoCore, incluindo firmware de controlador integrado de código aberto .
Projeto
Coreboot normalmente carrega um kernel Linux , mas pode carregar qualquer outro executável ELF autônomo , como iPXE , gPXE ou Etherboot que pode inicializar um kernel Linux em uma rede , ou SeaBIOS que pode carregar um kernel Linux, Microsoft Windows 2000 e posterior e BSDs (anteriormente, o suporte para Windows 2000 / XP e OpenBSD era fornecido pela ADLO). Coreboot também pode carregar um kernel de qualquer dispositivo compatível, como Myrinet, Quadrics ou interconexões de cluster SCI . Também é possível inicializar outros kernels diretamente, como um kernel do Plan 9 . Em vez de carregar um kernel diretamente, o coreboot pode passar o controle para um carregador de boot dedicado, como uma versão compatível com coreboot do GNU GRUB 2.
Coreboot é escrito principalmente em C , com uma pequena quantidade de código assembly . A escolha de C como a linguagem de programação primária permite auditorias de código mais fáceis quando comparada ao BIOS de PC contemporâneo que geralmente foi escrito em assembly, o que resulta em segurança aprimorada. Há suporte de compilação e tempo de execução para escrever partes do coreboot em Ada para aumentar ainda mais a barreira de segurança, mas atualmente é usado apenas esporadicamente. O código-fonte é lançado sob a licença GNU GPL versão 2 .
Coreboot executa a quantidade mínima absoluta de inicialização de hardware e, em seguida, passa o controle para o sistema operacional . Como resultado, não há código de coreboot em execução depois que o sistema operacional assume o controle. Um recurso do coreboot é que a versão x86 é executada no modo de 32 bits depois de executar apenas dez instruções (quase todos os outros BIOS x86 são executados exclusivamente no modo de 16 bits ). Isso é semelhante ao firmware UEFI moderno , que é usado em hardware de PC mais recente.
Por si só, o coreboot não fornece serviços de chamada de BIOS . A carga útil SeaBIOS pode ser usada para fornecer chamadas de BIOS e, assim, permitir que o coreboot carregue sistemas operacionais que requerem esses serviços, como Windows 2000 / XP / Vista / 7 e BSDs. No entanto, a maioria dos sistemas operacionais modernos acessa o hardware de outra maneira e usa chamadas do BIOS apenas durante a inicialização e como um mecanismo de fallback.
Estágios Coreboot
- Estágio de bootblock: Prepare-se para obter acesso ao Flash e procure o estágio de ROM a ser usado
- Estágio da ROM: memória e início do chipset inicial (um pouco como PEI em UEFI)
- Estágio de RAM: CPU, chipset, placa-mãe e init periférico, atribuição de recursos PCI, criação de tabela ACPI, manipulador SMM (um pouco como estágio DXE em UEFI)
- Carga útil.
Inicializando DRAM
O hardware mais difícil que o coreboot inicializa são os controladores DRAM e DRAM . Em alguns casos, a documentação técnica sobre este assunto é restrita ao NDA ou não está disponível. A inicialização da RAM é particularmente difícil porque antes que a RAM seja inicializada, ela não pode ser usada. Portanto, para inicializar controladores DRAM e DRAM, o código de inicialização pode ter apenas os registros de uso geral da CPU ou Cache-as-RAM como armazenamento temporário.
romcc , um compilador C que usa registradores em vez de RAM, facilita a tarefa. Usando romcc, é relativamente fácil fazer acessos SMBus aos SPD ROMs dos DRAM DIMMs , que permitem o uso de RAM.
Com processadores x86 mais novos, o cache do processador pode ser usado como RAM até que a DRAM seja inicializada. O cache do processador também deve ser inicializado no modo Cache-as-RAM, mas isso requer menos instruções do que a inicialização da DRAM. Além disso, a inicialização do modo Cache-as-RAM é específica para arquiteturas de CPU, portanto, mais genérica do que a inicialização DRAM, que é específica para cada chipset e placa-mãe.
Para a maioria das plataformas x86 modernas, componentes binários de código fechado fornecidos pelo fornecedor são usados para configuração de DRAM. Para sistemas Intel, o FSP-M é necessário, enquanto a AMD não tem suporte atual. O binário AGESA é usado atualmente para firmware UEFI proprietário em sistemas AMD e espera-se que este modelo seja transportado para qualquer suporte de coreboot futuro relacionado à AMD.
Desenvolvendo e depurando coreboot
Uma vez que o coreboot deve inicializar o hardware vazio, ele deve ser transferido para cada chipset e placa - mãe que suporte. Antes de inicializar a RAM , o coreboot inicializa a porta serial (endereçando cache e registradores apenas), para que possa enviar texto de depuração para um terminal conectado . Ele também pode enviar códigos de byte para a porta 0x80 que são exibidos em um display de dois dígitos hexadecimais de uma placa POST conectada .
Outra ajuda de portabilidade foi o produto comercial "RD1 BIOS Savior" de www.ioss.com.tw, (não deve ser confundido com US Interagency OPSEC Support Staff em www.iad.gov/ioss/), que era uma combinação de duas memórias de inicialização dispositivos que se conectam ao soquete de memória de inicialização e tem uma chave manual para selecionar entre os dois dispositivos. O computador pode inicializar a partir de um dispositivo e, em seguida, a chave pode ser alternada para permitir que o computador reprograme ou "atualize" o segundo dispositivo. Uma alternativa mais cara é um programador de flash EEPROM / NOR externo .
Existem também emuladores de CPU que substituem a CPU ou se conectam através de uma porta JTAG , com o Sage SmartProbe sendo um exemplo. O código pode ser criado ou baixado para emuladores BIOS, em vez de atualizar o dispositivo BIOS.
Cargas
Coreboot pode carregar uma carga útil, que pode ser escrita usando a biblioteca auxiliar libpayload . As cargas úteis existentes incluem o seguinte:
- SeaBIOS , uma pequena implementação do BIOS x86, escrita principalmente em C de 16 bits usando o compilador GNU C
- TianoCore , uma implementação gratuita e de código aberto da UEFI
- OpenBIOS , uma implementação gratuita e de código aberto do Open Firmware
- GNU GRUB , um bootloader
- FILO, um bootloader semelhante ao GRUB com suporte para inicialização USB
- Etherboot , ele pode inicializar um sistema operacional pela rede
- gPXE / iPXE , o sucessor do Etherboot, funciona quando executado no SeaBIOS ou TianoCore
- Depthcharge é usado pelo Google para Chrome OS
- Uma ramificação do Das U-Boot foi usada pelo Google para o Chromium OS no passado
European Coreboot Conference
Uma reunião física é a European Coreboot Conference, que foi organizada em outubro de 2017 e durou 3 dias.
História da conferência
| Evento e ano | Encontro | Cidade sede | Local | Recursos | Temas |
|---|---|---|---|---|---|
| ECC2017 | 26,10. - 29,10 | Bochum , Alemanha | Centro de convenções RUB | https://ecc2017.com |
Variantes
Coreboot tem uma série de variantes de sua base de código original, cada uma com objetivos ligeiramente diferentes:
- librecore - Uma variante com mais foco na liberdade , computadores com conjunto de instruções não x86 e estruturas de desenvolvimento de firmware.
- Libreboot - Uma variante com foco principal para remover todos os blobs binários.
Libreboot foi estabelecido como uma distribuição de coreboot sem blobs binários proprietários . Libreboot não é um fork direto do coreboot; em vez disso, é um esforço paralelo que trabalha de perto e se refaz de vez em quando no coreboot mais recente como o fornecedor de upstream, com patches mesclados de upstream sempre que possível. Além de remover o software proprietário, o libreboot também tenta tornar o coreboot fácil de usar, automatizando os processos de construção e instalação.
O projeto Libreboot possibilitou as modificações necessárias para variantes completamente libre de alguns laptops ThinkPad , MacBook e ARM Chromebook .
Veja também
Referências
Leitura adicional
- Por dentro do processo de inicialização do Linux , por M. Jones, IBM
- Open BIOSes for Linux , por Peter Seebach (arquivo apenas)
- LinuxBIOS pronto para entrar no mercado , por Bruce Byfield
- Primeira placa-mãe de desktop compatível com LinuxBIOS: GIGABYTE M57SLI-S4 , de Brandon Howard
- Gravação de vídeo da palestra de Ron Minnich sobre LinuxBIOS no FOSDEM 2007
- Coreboot Your Service , Linux Journal , outubro de 2009
- media.ccc.de - Pesquise por "Peter Stuge"
links externos
-
Mídia relacionada ao Coreboot no Wikimedia Commons -
Website oficial