coreboot | |
---|---|
Typ | vestavěný software , zavaděč operačního systému a bezplatný a otevřený software |
Autor | Ronald G. Minnich, Eric Biederman, Li-Ta (Ollie) Lo, Stefan Reinauer a komunita corebootů |
Zapsáno v | C a jazyk symbolických instrukcí |
První vydání | září 1999 [2] |
Hardwarová platforma | ARM , IA-32 a x86_64 |
Nejnovější verze | |
Stát | aktuální, ve vývoji |
Licence | GNU GPL 2 |
webová stránka | coreboot.org _ |
Mediální soubory na Wikimedia Commons |
coreboot (dříve LinuxBIOS [3] ) je projekt bezplatného firmwaru pro řadu počítačů schválený Free Software Foundation . Cílem projektu je nahradit proprietární a uzavřené systémy BIOS a UEFI používané většinou osobních počítačů odlehčenými systémy určenými výhradně pro spouštění a provoz moderních 32bitových a 64bitových operačních systémů .
Protože coreboot inicializuje hardware, musí být návrh přizpůsoben pro každou čipovou sadu a každou základní desku . Výsledkem je, že coreboot je dostupný pouze pro omezený počet hardwarových platforem a modelů základních desek.
Jednou z variant corebootu je Libreboot , varianta corebootu, která si klade za cíl zcela eliminovat proprietární firmware (Bloby) .
Typickým úkolem corebootu je načíst linuxové jádro , ale kromě toho může coreboot načítat a spouštět spustitelné soubory ELF , běžně označované jako payloads . Užitnou zátěží může být například Etherboot , který je schopen nabootovat Linux přes síť, nebo SeaBIOS , bezplatná implementace BIOSu, která umožňuje nabootovat systémy Windows 2000/XP/Vista/7 a *BSD (dříve se používala zátěž ADLO pro toto ). Coreboot může zavést operační systém z jakéhokoli podporovaného zařízení, jako je Myrinet , QsNet nebo SCSI .
Coreboot provede hardwarovou inicializaci, kterou operační systém nemůže plně provést, po které předá řízení modulu Payload, který může provádět další načítání OS, případně provádět některé další užitečné akce.
Coreboot podporuje architektury x86 , x86-64 , ARM , ARM64, MIPS a RISC-V .
Rozdíl mezi corebootem a Legacy BIOSem je ten, že x86 verze se spustí v chráněném režimu po provedení pouhých šestnácti instrukcí procesoru, zatímco typické x86 BIOSy běží většinou v reálném režimu procesoru. Díky kombinaci těchto faktorů a jednoduchosti vnitřního designu je bootování z Corebootu velmi rychlé (v současné době je záznam studeného startu s CoreBootem asi 3 sekundy).
Přestože měl LinuxBIOS ve svém názvu slovo Linux, LinuxBIOS mohl načítat i jiná jádra operačního systému. LinuxBIOS by například mohl přímo načíst jádro Plan 9 . Proto byl přejmenován na coreboot .
Samotný Coreboot je jen malý program, který inicializuje hardware na základní desce a poté se řízení přenese do jednoho z programů užitečného zatížení:
Protože coreboot musí inicializovat hardware, musí být přizpůsoben tak, aby podporoval každý systémový řadič ( čipset ) a každou desku založenou na takovém řadiči. Přidání podpory pro jakoukoli novou desku je komplikované potížemi s laděním: informace o ladění jsou vydávány pomocí toho či onoho hardwaru, ale jak uspořádat výstup, když výstupní prostředky ještě nebyly inicializovány?
Coreboot používá několik zařízení a triků, které usnadňují ladění:
Nejsložitější částí corebootu je kód, který inicializuje RAM a řadič RAM. Faktem je, že dokud není RAM inicializována, nelze ji používat. Zřejmým způsobem, jak inicializovat řadič RAM a samotnou RAM bez přístupu k nim, je použití obecných registrů procesoru. Pro zjednodušení tohoto složitého úkolu byl vyvinut speciální kompilátor jazyka C - romcc ( angl. romcc ) , který generuje kód, který během své práce nezpřístupňuje RAM. romcc zkompiluje kód, který inicializuje RAM přístupem k SPD ROM na DIMM přes SMBus . Po provedení tohoto kódu lze použít RAM.