coreboot - coreboot
| Alkuperäinen kirjoittaja | Ronald G.Minnich, Eric Biederman, Li-Ta (Ollie) Lo, Stefan Reinauer ja coreboot-yhteisö |
|---|---|
| Ensimmäinen julkaisu | 1999 |
| Vakaa julkaisu | 4.14 / 10.5.2021
|
| Varasto | |
| Kirjoitettu sisään | Enimmäkseen C ja noin 1% kokoonpanossa . Valinnaisesti Ada |
| Alusta | IA-32 , x86-64 , ARMv7 , ARMv8, MIPS , RISC-V , POWER8 |
| Tyyppi | Laiteohjelmisto |
| Lisenssi | GPLv2 |
| Verkkosivusto |
www |
Ohjelmistoprojektiliiketoiminta coreboot , joka tunnettiin aiemmin nimellä LinuxBIOS , tarkoituksena on korvata oma firmware ( BIOS tai UEFI ) esiintyy useimmissa tietokoneissa kevyellä firmware suunniteltu suorittamaan vain vähimmäismäärä tarvittavat tehtävät ladata ja suorittaa moderni 32-bittinen tai 64 -bittinen käyttöjärjestelmä .
Koska coreboot alustaa paljaan laitteiston, se on siirrettävä kaikkiin sen tukemiin piirisarjoihin ja emolevyihin . Tämän seurauksena coreboot on saatavana vain rajoitetulle määrälle laitteistoalustoja ja emolevymalleja.
Yksi coreboot varianttien on Libreboot , eli ohjelmistojen jakeluun täysin vailla omaa läiskä , jonka tarkoituksena on loppukäyttäjille.
Historia
Coreboot -projekti alkoi talvella 1999 Los Alamosin kansallisen laboratorion (LANL) Advanced Computing Laboratory -laboratoriossa , jonka tavoitteena oli luoda BIOS, joka käynnistyy nopeasti ja käsittelee virheet älykkäästi. Se on lisensoitu GNU General Public License (GPL) -ehtojen mukaisesti. Tärkeimpiä tekijöitä ovat LANL , SiS , AMD , Coresystems ja Linux Networx, Inc sekä emolevyjen toimittajat MSI , Gigabyte ja Tyan , jotka tarjoavat corebootin vakio -BIOSin rinnalla tai tarjoavat joidenkin emolevyjen laitteistoliittymien eritelmät. Google sponsoroi osittain coreboot -projektia. CME Group , futuuripörssien klusteri , aloitti coreboot -hankkeen tukemisen vuonna 2009.
Coreboot on hyväksytty seitsemän peräkkäisen vuoden aikana (2007–2014) Googlen kesäkoodiksi . Kolme ensimmäistä mallia lukuun ottamatta kaikissa Chromebookeissa on ydinkäynnistys. Das U-Bootin koodi on yhdistetty mahdollistamaan prosessorien tuki ARM-käskyjoukon perusteella .
Kesäkuussa 2019 Coreboot alkoivat käyttää NSA ohjelmistoa Ghidra sen reverse engineering ponnistelunsa firmware-erityisiä ongelmia seuraamalla avoimen lähdekoodin vapauttamista on ohjelmistopaketti.
Tuetut alustat
Corebootin tukemat suoritinarkkitehtuurit ovat IA-32 , x86-64 , ARM , ARM64 , MIPS ja RISC-V . Tuettu system-on-a-chip (SOC) alustat ovat AMD Geode , alkaen Geode GX prosessori kehitetty OLPC . Artec Group lisäsi Geode LX -tuen ThinCan -malliin DBE61; AMD hyväksyi koodin ja paransi sitä edelleen OLPC: lle sen jälkeen, kun se oli päivitetty Geode LX -alustaksi, ja ydinkäynnistysyhteisö kehittää sitä edelleen tukemaan muita Geode -muunnelmia. Coreboot voidaan väläyttää Geode -alustalle Flashromin avulla .
Tästä AMD Geode -pohjaisten alustojen kehityksestä lähtien ydinkäynnistystukea on laajennettu moniin AMD -prosessoreihin ja piirisarjoihin. Prosessoriluettelo sisältää Family 0Fh ja 10h ( K8 -ydin) ja äskettäin Family 14h ( Bobcat -ydin, Fusion APU ). Coreboot -tuki ulottuu myös AMD -piirisarjoihin: RS690 , RS7xx , SB600 ja SB8xx.
AMD Generic Encapsulated Software Architecture ( AGESA ) boot - käynnistysprotokolla , jolla AMD64 -emolevyjen järjestelmälaitteet alustetaan - avattiin vuoden 2011 alussa. Tällaiset julkaisut eivät kuitenkaan koskaan olleet AMD: n tulevan kehityksen perusta, ja ne lopetettiin myöhemmin.
Laitteita, joita voidaan esiladattu coreboot tai jokin sen johdannaisista ovat joitakin x86 Chromebookeihin , Libreboot X200 ja T400 (nimetty uudelleen ThinkPad X200 ja T400, joita on saatavissa Minifree, joka aiemmin tunnettiin nimellä Gluglug), OLPC XO päässä Kannettava tietokone kohti lapsi aloitteestaan ThinCan malleja DBE61, DBE62 ja DBE63, ja ilman tuuletinta palvelimen / reitittimen laitteisto valmistama PC Moottorit . Kaikissa Librem -kannettavissa on coreboot.
Jotkut System76 -tietokoneet käyttävät Coreboot TianoCore -laiteohjelmistoa, mukaan lukien avoimen lähdekoodin sulautetun ohjaimen laiteohjelmisto.
Design
Coreboot lataa yleensä Linux-ytimen , mutta se voi ladata minkä tahansa muun itsenäisen ELF- suoritustiedoston, kuten iPXE: n , gPXE: n tai Etherbootin, joka voi käynnistää Linux-ytimen verkon kautta , tai SeaBIOSin, joka voi ladata Linux-ytimen, Microsoft Windows 2000: n ja uudemmat ja BSD: t (aiemmin ADLO tarjosi Windows 2000/XP- ja OpenBSD -tuen). Coreboot voi myös ladata ytimen mistä tahansa tuetusta laitteesta, kuten Myrinet-, Quadrics- tai SCI -klusteriyhteyksistä . Myös muiden ytimien , kuten Plan 9 -ydin, käynnistäminen suoraan on mahdollista . Sen sijaan, että ydin ladataan suoraan, coreboot voi siirtää ohjauksen omistetulle käynnistyslataimelle, kuten GNU GRUB 2: n coreboot-yhteensopivalle versiolle .
Coreboot on kirjoitettu pääasiassa C -kirjaimella , ja siinä on pieni määrä kokoonpanokoodia . C: n valitseminen ensisijaiseksi ohjelmointikieleksi helpottaa koodin tarkastusta verrattuna nykyaikaiseen PC BIOSiin, joka on yleensä kirjoitettu kokoonpanossa, mikä parantaa turvallisuutta. On olemassa rakentamis- ja ajonaikaista tukea ydinkäynnistyksen osien kirjoittamiseen Adassa, jotta turvakenttää voidaan nostaa entisestään, mutta sitä käytetään tällä hetkellä vain satunnaisesti. Lähdekoodi on julkaistu GNU GPL version 2 lisenssillä.
Coreboot suorittaa ehdottoman pienen määrän laitteiston alustuksia ja siirtää sitten ohjauksen käyttöjärjestelmään . Tämän seurauksena coreboot -koodi ei ole käynnissä, kun käyttöjärjestelmä on ottanut hallinnan. Corebootin ominaisuus on, että x86- versio toimii 32-bittisessä tilassa vain kymmenen käskyn suorittamisen jälkeen (lähes kaikki muut x86-BIOSit toimivat yksinomaan 16-bittisessä tilassa). Tämä on samanlainen kuin nykyaikainen UEFI -laiteohjelmisto, jota käytetään uudemmissa PC -laitteissa.
Coreboot ei itsessään tarjoa BIOS -puhelupalveluja . SeaBIOS hyötykuorma voidaan käyttää antamaan BIOS puhelut ja siten mahdollistaa coreboot ladata käyttöjärjestelmiin , jotka vaativat näitä palveluita, kuten Windows 2000 / XP / Vista / 7 ja BSDs. Useimmat nykyaikaiset käyttöjärjestelmät käyttävät kuitenkin laitteistoa toisella tavalla ja käyttävät BIOS -puheluita vain varhaisen alustuksen aikana ja varamekanismina.
Coreboot -vaiheet
- Bootblock -vaihe: Valmistaudu saamaan Flash -käyttöoikeus ja etsi käytettävä ROM -vaihe
- ROM -vaihe: Muisti ja varhainen piirisarjan init (vähän kuin PEI UEFI: ssä)
- RAM -vaihe: suoritin, piirisarja, emolevy ja oheislaite init, PCI -resurssien määritys, ACPI -taulukon luominen, SMM -käsittelijä (vähän kuin DXE -vaihe UEFI: ssä)
- Hyötykuorma.
Alustetaan DRAM -muistia
Vaikein laitteisto, jonka coreboot alustaa, on DRAM -ohjaimet ja DRAM . Joissakin tapauksissa teknisen dokumentaation tästä aiheesta on NDA rajoitettu tai sitä ei ole. RAM -muistin alustaminen on erityisen vaikeaa, koska sitä ei voida käyttää ennen RAM -muistin alustamista. Siksi DRAM-ohjaimien ja DRAM -muistin alustamiseksi alustuskoodissa voi olla vain suorittimen yleiskäyttörekistereitä tai välimuistia RAM-muistina väliaikaisena tallennustilana.
romcc , C -kääntäjä, joka käyttää rekistereitä RAM -muistin sijaan, helpottaa tehtävää. Käyttäen romcc, se on suhteellisen helppo tehdä SMBus sisäänkäyntien SPD ROM DRAM DIMM , jonka avulla RAM voidaan käyttää.
Uudemmissa x86 -suorittimissa prosessorin välimuistia voidaan käyttää RAM -muistina, kunnes DRAM alustetaan. Prosessorin välimuisti on myös alustettava välimuisti-RAM-tilaan, mutta tämä vaatii vähemmän ohjeita kuin DRAM-muistin alustaminen. Myös välimuisti-RAM-tilan alustus on spesifinen CPU-arkkitehtuureille, joten se on yleisempi kuin DRAM-alustus, joka on ominaista kullekin piirisarjalle ja emolevylle.
Useimmissa moderneissa x86-alustoissa DRAM-asennuksessa käytetään toimittajan toimittamia vain suljetun lähdekoodin binäärikomponentteja. Intel-järjestelmissä tarvitaan FSP-M, kun taas AMD: llä ei ole nykyistä tukea. Binaarista AGESAa käytetään tällä hetkellä omistettuun UEFI-laiteohjelmistoon AMD-järjestelmissä, ja tämän mallin odotetaan siirtyvän kaikkiin tuleviin AMD: hen liittyviin coreboot-tukiin.
Corebootin kehittäminen ja virheenkorjaus
Koska corebootin on alustettava pelkkä laitteisto, se on siirrettävä kaikkiin sen tukemiin piirisarjoihin ja emolevyihin . Ennen RAM -muistin alustamista coreboot alustaa sarjaportin (vain välimuisti ja rekisterit), jotta se voi lähettää virheenkorjaustekstiä liitettyyn päätelaitteeseen . Se voi myös lähettää tavukoodeja porttiin 0x80, jotka näkyvät yhdistetyn POST-kortin kaksinumeroisella näytöllä .
Toinen siirtoapu oli kaupallinen RD1 BIOS Savior -tuote osoitteesta www.ioss.com.tw (ei pidä sekoittaa Yhdysvaltain Interagency OPSEC -tukipalveluun osoitteessa www.iad.gov/ioss/), joka oli kahden käynnistysmuistin yhdistelmä laitteet, jotka kytketään käynnistysmuistiliitäntään ja joissa on manuaalinen kytkin kahden laitteen välillä. Tietokone voi käynnistyä yhdestä laitteesta, ja sitten kytkin voidaan vaihtaa, jotta tietokone voi ohjelmoida uudelleen tai "vilkuttaa" toisen laitteen. Kalliimpi vaihtoehto on ulkoinen EEPROM / NOR -flash -ohjelmoija.
On myös suorittimen emulaattoreita, jotka joko korvaavat suorittimen tai muodostavat yhteyden JTAG -portin kautta , esimerkiksi Sage SmartProbe. Koodi voidaan rakentaa tai ladata BIOS -emulaattoreihin BIOS -laitteen vilkkumisen sijaan.
Hyötykuormat
Coreboot voi ladata hyötykuorman, joka voidaan kirjoittaa käyttämällä libpayload -apukirjastoa . Olemassa olevat hyötykuormat sisältävät seuraavat:
- SeaBIOS , pieni x86-BIOS-toteutus, kirjoitettu enimmäkseen 16-bittiseen C- versioon GNU C-kääntäjää käyttäen
- TianoCore , ilmainen ja avoimen lähdekoodin UEFI -toteutus
- OpenBIOS , ilmainen ja avoimen lähdekoodin toteutus avoimesta laiteohjelmistosta
- GNU GRUB , käynnistyslatain
- FILO, GRUB-kaltainen käynnistyslatain, jossa on USB-käynnistystuki
- Etherboot , se voi käynnistää käyttöjärjestelmän verkon kautta
- gPXE / iPXE , Etherbootin seuraaja, toimii käytettäessä SeaBIOS- tai TianoCore -käyttöjärjestelmää
- Google käyttää Depthchargea Chrome -käyttöjärjestelmässä
- Haara Das U-Boot käytti Google Kromi OS aiemmin
Euroopan Coreboot -konferenssi
Yksi fyysinen kokous on Euroopan Coreboot -konferenssi, joka järjestettiin lokakuussa 2017 ja kesti 3 päivää.
Konferenssin historia
| Tapahtuma ja vuosi | Päivämäärä | Isäntäkaupunki | Tapahtumapaikka | Resurssit | Teemat |
|---|---|---|---|---|---|
| ECC2017 | 26.10. - 29.10 | Bochum , Saksa | RUB -kokouskeskus | https://ecc2017.com |
Vaihtoehdot
Corebootilla on useita muunnelmia alkuperäisestä koodikannastaan, joista jokaisella on hieman erilaiset tavoitteet:
- librecore - Muunnos enemmän keskitytään vapauden , kuin x86- käskykannan tietokoneisiin, ja firmware kehitysyhteistyöjärjestelyihin.
- Libreboot - Muunnelma, jonka ensisijainen tavoite on poistaa kaikki binaariset läiskät.
Libreboot on perustettu ydinkäynnistyksen jakeluna ilman omia binäärimäreitä . Libreboot ei ole corebootin suora haarukka ; sen sijaan se on rinnakkaispyrkimys, joka toimii läheisessä yhteistyössä ja perustaa aina silloin tällöin uusimman ydinkäynnistyksen alkupään toimittajaksi, ja korjaustiedostot yhdistetään aina ennen mahdollisuutta. Omien ohjelmistojen poistamisen lisäksi libreboot yrittää myös tehdä corebootista helppokäyttöisen automatisoimalla rakennus- ja asennusprosessit.
Libreboot hanke mahdollisti tarvittavat muutokset on täysin libre variantteja joidenkin ThinkPad , MacBook ja ARM Chromebook kannettavat tietokoneet.
Katso myös
Viitteet
Lue lisää
- Linuxin käynnistysprosessin sisällä , M. Jones, IBM
- Avaa BIOSes for Linux , kirjoittanut Peter Seebach (vain arkisto)
- LinuxBIOS valmis pääsemään valtavirtaan , Bruce Byfield
- Ensimmäinen työpöydän emolevy, jota tukee LinuxBIOS: GIGABYTE M57SLI-S4 , Brandon Howard
- Videotallenne Ron Minnichin LinuxBIOS -keskustelusta FOSDEM 2007: ltä
- Coreboot Your Service , Linux Journal , lokakuu 2009
- media.ccc.de - Hae "Peter Stuge"
Ulkoiset linkit
-
Corebootiin liittyvä media Wikimedia Commonsissa -
Virallinen nettisivu