Coreboot

Coreboot
logo
ilustracja
Aktualna wersja stabilna 4.13
Platforma sprzętowa x86, PowerPC, ARM, MIPS, RISC-V
Rodzaj firmware
Licencja GPL
Strona internetowa

Coreboot (dawniej LinuxBIOS) – projekt programistyczny, którego celem jest zastąpienie tradycyjnego BIOS-u lżejszym, otwartym oprogramowaniem. Coreboot jest w stanie ładować bezpośrednio jądro Linuxa oraz programy rozruchowe, implementację BIOS (SeaBIOS[1]) oraz implementację UEFI (TianoCore[2]). Coreboot nie obsługuje funkcji BIOS lub UEFI bez SeaBIOS[1] lub TianoCore[2] i nie może załadować systemów operacyjnych, które ich wymagają.

Projekt rozpoczął się podczas zimy 1999 roku w Los Alamos National Laboratory[3]. Jest opublikowany na licencji GNU General Public License. Wsparcia udzielało między innymi LANL, AMD, coresystems GmbH oraz Linux Networx, Inc. Producenci płyt głównych, w tym MSI, Gigabyte oraz Tyan, dostarczyli dokumentacje sprzętu lub zaoferowali Coreboot jako zamiennik standardowego BIOSu.

Działanie

Coreboot potrafi załadować jądro Linuksa lub plik ELF – w tym również Etherboot, pozwalający załadować jądro poprzez sieć, i SeaBIOS pozwalający załadować Windows 2000/XP/Vistę/7 oraz *BSD. Potrafi on załadować prawie każdy system operacyjny. Systemy korzystające z funkcji BIOS wymagają SeaBIOS.

Rozwijanie Coreboot

Ponieważ Coreboot musi zainicjalizować sprzęt, musi być portowany na każdy chipset i płytę główną z osobna. Przed uruchomieniem pamięci RAM inicjalizuje port szeregowy, aby móc przesyłać informacje o procesie uruchamiania do podłączonego terminala. Może również wysyłać kody błędu do portu 0x80, aby były wyświetlone przez kartę. Przydatny przy portowaniu jest RD1 BIOS Savior, łączący dwie pamięci zmieniane za pomocą przełącznika. Komputer może być uruchomiony z pomocą jednej z pamięci, po czym druga pamięć może zostać zmieniona po przełączeniu. Inną metodą jest użycie zewnętrznego programatora EEPROM. Można skorzystać również z emulatora CPU, który zastępuje procesor lub łączy się przez port JTAG.

Inicjalizacja pamięci dynamicznej

Najtrudniejszym zadaniem wykonywanym przez Coreboot jest inicjalizacja kontrolera DRAM i DRAM-u. W pewnych przypadkach dokumentacja techniczna jest chroniona przez tajemnicę handlową lub nie jest dostępna. Dodatkowym utrudnieniem jest to, że nie można użyć pamięci dynamicznej przed jej inicjalizacją – dlatego żeby uruchomić kontroler pamięci oraz RAM kod musi używać wyłącznie rejestrów procesora. Istnieje jednak kompilator C, romcc, który ułatwia to zadanie, kompilując kod tak, aby nie używał pamięci dynamicznej, w tym stosu. Względnie łatwo można uzyskać dostęp do ROMu SPD pamięci DIMM używając SMBus co pozwala na użycie RAM-u. Na nowoczesnych procesorach x86 pamięć podręczna może być używana jako RAM dopóki DRAM nie jest uruchomiona. Wymaga to przestawienia jej w odpowiedni tryb – wymaga to mniejszej ilości instrukcji. O ile jest to zależne od architektury procesora, to jest ogólniejsze od inicjalizacji DRAMu, która jest zależna od chipsetu i płyty głównej.

Przypisy

  1. a b https://www.seabios.org/SeaBIOS SeaBIOS] (ang.) – otwarta implementacja starych funkcji BIOS
  2. a b TianoCore (ang.) – otwarta implementacja UEFI
  3. Coreboot FAQ: Who is working on coreboot?

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.