Coreboot

De la Viquipèdia, l'enciclopèdia lliure
Coreboot
Modifica el valor a Wikidata
Modifica el valor a Wikidata
Tipusmicroprogramari, bootloader i programari lliure i de codi obert Modifica el valor a Wikidata
Versió inicial
setembre 1999 Modifica el valor a Wikidata
Versió estable
24.02.1 (1r març 2024) Modifica el valor a Wikidata
LlicènciaGNU GPL 2.0 Modifica el valor a Wikidata
Part deSoftware Freedom Conservancy Modifica el valor a Wikidata
Característiques tècniques
Plataformax86
Escrit enC i Llenguatge assemblador Modifica el valor a Wikidata
Equip
Creador/sRonald G. Minnich, Eric Biederman, Olli Lo, Stefan Reinauer, comunidad coreboot
Més informació
Lloc webcoreboot.org (anglès) Modifica el valor a Wikidata
Free Software Directorycoreboot Modifica el valor a Wikidata

Twitter (X): coreboot_org Mastodon: coreboot@fosstodon.org Modifica el valor a Wikidata

El coreboot (abans anomenat LinuxBIOS) és un projecte dirigit a reemplaçar el firmware no lliure dels BIOS propietaris, que porten la majoria dels computadors, per un BIOS lliure i lleuger dissenyat per realitzar solament el mínim de tasques necessàries per carregar i córrer un sistema operatiu modern de 32 bits o de 64 bits. Coreboot està recolzat per la Free Software Foundation (FSF).[1]

La seva existència no es basa en una necessitat tecnològica, sinó en un motiu ètic, ja que per als membres de la FSF és important que tot el programari del PC sigui lliure, i el BIOS ha estat l'únic que ha quedat oblidat. Els autors esperen que en els propers anys alguns fabricants estiguin disposats a distribuir-lo en les seves màquines, atès el seu caràcter gratuït.

Història[modifica]

Creixement de coreboot des de 2002 a 2007.

El projecte coreboot va ser iniciat l'hivern de 1999 en el Advanced Computing Laboratory de Los Alamos National Laboratory, i el 2006 es va alliberar la seva primera versió estable, llista per a la seva producció.[2] Està llicenciat sota la GNU GPL. Els contribuents principals han estat LANL, AMD, coresystems gmbH i Linux Networx, Inc, així com els fabricants de plaques base MSI, Gigaoctet i Tyan, oferint coreboot al costat del BIOS propietari estàndard o proporcionant les especificacions de les interfícies del maquinari per algunes de les seves plaques base recents. No obstant això, Tyan sembla haver abandonat el suport per coreboot, però en canvi cal dir que Google és patrocinador del projecte coreboot.[3]

Informació general[modifica]

El coreboot va ser creat al principi per arrencar sistemes operatius amb nucli Linux, però actualment pot carregar qualsevol altre executable stand-alone (independent) d'ELF, com per exemple Etherboot, que pot carregar Linux des d'un servidor de carregador o ADLO que pot carregar Microsoft Windows 2000, OpenBSD. Coreboot també pot carregar gestors d'arrencada, com LILO, GNU GRUB o altres firmware com OpenBIOS, Open Firmware o SmartFirmware, i gairebé qualsevol sistema operatiu de qualsevol dispositiu suportat, com Myrinet, Quadrics, o interconnexions de cluster SCI. Alguns sistemes operatius requereixen funcions heretades del BIOS (com Windows XP) i no correran sense una adaptació.

El Coreboot fa qualsevol inicialització del maquinari que Linux no fa i deixa al Linux finalitzar la inicialització del maquinari.

Una notable característica única de coreboot és que la versió x86 corre en mode 32 bits després d'executar solament setze instruccions (gairebé tots els altres BIOS de x86 corren exclusivament en mode de 16 bits). S'ha creat amb la intenció que realitzi la seva comesa en el mínim d'instruccions possible. En treballar en mode de 32 bits fa que corri molt ràpid, el seu rècord actual d'arrencada en fred és de 3 segons fins a la interfície de comandament.

El Coreboot pot carregar altres nuclis que no siguin Linux, o, en lloc d'això, pot passar el control a un carregador per arrencar un nucli o imatge. coreboot també pot carregar directament el nucli Pla 9.

Desenvolupament i depuració de coreboot[modifica]

Ja que el coreboot ha d'inicialitzar des del maquinari, ha de ser adaptat a tots els chipset de plaques base que suport. Abans d'inicialitzar la RAM, coreboot inicialitza el port seriï (adreçant solament el cache i els registres), de tal mode que pugui enviar text de depuració a un emulador de terminal connectat. El coreboot també pot enviar codis de bytes al port 0x80 que són mostrats en una pantalla de dos dígits hexadecimals d'una targeta POST connectada. Una altra ajuda és el BIOS Savior, que és una combinació de dos dispositius de BIOS que s'endollen en el sòcol del BIOS i tenen un interruptor manual per poder seleccionar un d'ells. Una alternativa més costosa és un programador de memòria EPROM. Hi ha també emuladors de CPU que, o bé substitueixen la CPU, o bé es connecten mitjançant un port JTAG. El codi es pot construir o descarregar-lo en els emuladors del BIOS en lloc de programar-lo en el dispositiu que suporta el BIOS.

Inicialització de la memòria DRAM[modifica]

El maquinari més difícil que inicialitza coreboot és el controlador de DRAM i la pròpia memòria DRAM. En alguns casos, la documentació tècnica de com fer això no està disponible o està protegida per un NDA (acord de confidencialitat), per això, esdevé impossible construir un coreboot. La disposició de la memòria RAM és particularment difícil perquè fins que la RAM és inicialitzada, no hi ha RAM disponible per ser usada. La forma d'inicialitzar els controladors de la DRAM sense usar la memòria RAM (pel programa) és utilitzar els registres de propòsit general de la unitat central de processament. Per facilitar aquesta tasca, es va desenvolupar un compilador de C, anomenat romcc, que usa els registres en comptes de la RAM. Emprant només la rom, és relativament fàcil fer els accessos de SMBus a les ROMs de SPD dels mòduls de DRAM, fet que al final permet utilitzar la RAM. Amb recents processadors x86, el cache del processador pot ser usat com a RAM fins que és inicialitzada la DRAM. El cache del processador també ha de ser inicialitzat en el mode cache-RAM, però això necessita menys instruccions que la inicialització de la DRAM.

Vegeu també[modifica]

Referències[modifica]

Enllaços externs[modifica]