Libreboot

From EIK wiki

Autor

Hanno-Ivar Ilves AK11 2015/2016

Viimane versioon: 2016-01-08


Mis on Libreboot?

Libreboot on Coreboot distributsioon[1]. Coreboot on vaba tarkvara püsivara asendamaks toetatud süsteemidel BIOSi ja EFI püsivara. Libreboot viib asja veel kaugemale, lubatud on ainult avatud lähtekoodiga vaba tarkvara, lubatud ei ole suletud lähtekoodiga binary blobid (firmware, microcode).

Erinevalt Corebootist toetab Libreboot tunduvalt vähem erinevaid süsteeme (sülearvutid, emaplaadid), sest lubatud on ainult blobide mitte kasutav vaba kood. Libreboot annab aga võrreldes Corebootiga tavakasutajale ühe vägagi tähtsa eelise, teda on tunduvalt lihtsam paigaldada toetatud süsteemidele. Lisaks lähtekoodile on olemas juba valmiskompileeritud tarkvara, olemas on abiprogrammid ja juhendid kuidas konkreetsele arvutile Librebooti paigaldada. Kui Corebooti rolling release, siis Librebooti väljalase on mingi hetke stabiilselt toimiv ja testitud kood, mis eelduste kohaselt toimib korrektselt.


Paigaldamise eeldused

Librebooti paigaldamine ei ole sellest kõigest hoolimata mitte igaühele. Osade süsteemide BIOSid on lihtsalt root kasutaja õigustes käsurealt ümberkirjutatavad, osad vajavad välise SPI (Serial Peripheral Interface) programmaatori kasutamist, millega siis kirjutatakse arvuti BIOSi kiibis olev süsteem üle. Vaja võib minna ka jootejaama ning jootmisoskusi. Samuti tuleb arvestada, et kõik ametlikud juhendid lähtuvad vaba tarkvara ja vaba riistvara kasutamisest. Samas neid annab ümbermõtestada enda kasutatavale Linuxi distributsioonile (näiteks Trisquel = Ubuntu, Parabola = Arch) ning Internetis leiab ka teisi süsteeme kasutavaid juhendeid.

Igaljuhul on eelduseks, et arvutis kuhu tahate Librebooti paigaldada kõvakettal/välkmälu kettal on toimiv GNU/Linux distributsioon või paigaldate protsessi edu lõpetamise järel selle. MS Windowsid ei ole Librebooti paigaldamise järel enam konkreetses arvutis käivitusvõimelised ning BSD-de võimalik käivitamine nõuab oskusi.

Kontrollida tuleb, kas teie sülearvuti ja/või emaplaat on toetatud riistvara nimekirjas[2], ei piisa ainult sellest, et ta on seal nimekirjas, tuleb lugeda täpselt konkreetse mudeli kohta käivat dokumentatsiooni, sest olenevalt emaplaadist, selle revisionist, kiibistikust, protsessorist, videokaardist tulenevalt eksisteerib eripärasid.

Kui kõik klapib, siis tuleb tõmmata oma arvutile sobiv Librebooti versioon ning alustada juhendi või juhendite järgi toimetamist.


Juhend eeldab, et kasutajal on kõigis mainitavates süsteemides kasutusel mingi GNU/Linux distributsioon, milles tal on administraatori (root või sudo piisavate õigustega) õigused. Kõik käsklused seda ei vaja, kuid protsessi ei ole võimalik läbiviia lõpuni ilma juurkasutaja õigusteta.


Protsessi algus

Edasiste näideta aluseks on Lenovo Thinkpad X200s (Celeron 847 protsessor) tootja poolse BIOSi sisu asendamine Libreboot r20150518 versiooniga.

Raspberry Pi'st on kasutusel Raspberry Pi B rev 2 512MiB mudel[3]


Kõigepealt läheb vaja välist programmeerijat. Libreboot projekt soovitab BeagleBone Black miniarvutit[4], kuid kuna see on Eestis vähe levinud, aga Raspberry Pi miniarvuteid leidub rohkem, siis konkreetses näites on kasutsel just nimelt sellel põhjusel viimati nimetatu.

Librebooti kodulehelt Raspberry Pi kasutamise juhendit ei leia, sest Raspberry Pi ei ole riistvara mis toimiks vabalt ilma binary blobideta[5] [6].

Kuid Internetis on olemas vajalik info, et paigaldada Libreboot ThinkPad X200si sülearvutile kasutades Raspberry Pi B välise SPI flashijana [7] [8] [9]

Kasutades nendelt linkidelt pärit informaatsiooni saab kasutada ametliku Libreboot juhendit asendades seal BeagleBone Black kohta käiva Raspberry Pi spetsiifilise infoga.


Alustuseks tuleb kirjutada ules Lenovo ThinkPad X200s võrgukaardi MAC aadress. Kõige kindlam on kasutada ip addr või ifconfig käsku ning kirjutada võrgukaardi MAC aadress üles.

Seejärel tuleb kindlaks teha BIOSi flashi kiibi mahutavus[10]. See on vajalik, et valida õige suurusega Libreboot'i fail.

dmidecode | grep ROM\ Size


Seejärel valida Librebooti allalaadimise[11] lehelt sobiv peegel ja laadida 20150518 kataloogist alla libreboot_util.tar.xz faili ja rom kaustast süsteemile sobiva faili, antud juhul libreboot_x200_8mb.tar.xz.

Kasulik oleks kontrollida ega allalaaditud failidega miskit juhtunud pole. Selleks avada 20150518 kataloogis oleva sha512sum.txt faili ning kontrollida sha512sum <failinimi> programmiga kas allalaaditud failide räsid vastavad kirjas olevatele.

Kui kõik korras, siis pakida mõlemad allalaaditud lahti meelepärase ja sobiva tarkvaraga.


Tuleb luua sülearvuti võrgukaardi MAC aadressi siseldava ROM fail. MAC aadress on sama, mis enne üles kirjutatud.[12]

./ich9gen --macaddress XX:XX:XX:XX:XX:XX


Seejärel tuleb lisada see valmis kujul olevasse Libreboot püsivara faili.[13] Soovituslik on võtta konkreetse sülearvuti füüsilisele klahvipaigutusele vastav versioon. See omab tähtsust Librebooti Grubi käsureal, kus klahvipaigutus vastab valitule. Konkreetsel sülearvutil on skandinaavia klahvipaigutus seega:

dd if=ich9fdgbe_8m.bin of=x200_8mb_svenska_vesafb.rom bs=1 count=12k conv=notrunc


Seejärel kopeerida konkreetse Libreboot püsivara faili Raspberry Pi mälukaardile (kas kasutades scp käsklust või USB mälupulga vahendusel või kuidas kellegil vahendeid ja soovi).


Protsessi jätk: Raspberry Pi ja ThinkPad X200s riistvaraliselt valmis seadmine

Seadmete füüsiline paigutus on valmis.

Seda annab teha korralikumalt või siis lihtsamalt või vahepealselt. Valik on teostaja teha vastavalt olemasolevatele vahenditele.

ThinkPad X200s BIOSi kiibi on WSON kujul, mille jalgade ühendused vastavad ThinkPad X200 SOIC-8 omadele.[14]. Kuna BIOSi kiib asub emaplaadi alumisel küljel tuleb sülearvuti lahti võtta ja emaplaat väljavõtta.

Konkreetse näite puhul sai valitud robustne teostus ja juhtmed lihtsalt joodetud.


"X200 X201 Hardware Flashing"[15] lehel on joonisel kirjas Pinide asukohad, mida on vaja ThinkPad X200s BIOSi poolel ühendada. Seejärel teha kindlaks "RPi Low-level peripherals" lehelt [16] Raspberry Pi poolel kasutatavad P1 Headeri Pin-id. Seadmed paigutada enam-vähem elektrit (väga) mitte juhtivale alusele (näites mullikile).

Seejärel lõigata kuus sobiva pikkusega juhtmejuppi, üldiselt on niimoodi, et mida lühem juhe seda parem, samas tuleb arvestada, et neid juhtmeid peab saama joota mõlemast otsast.


Joota tuleb üks juhtmeots vastava BIOSi kiibi jala külge ja teine Raspberry Pi vastava pin külge, niimoodi kõik kuus juhet. Konkreetses näites sai kõigepealt joodetud juhtmed BIOSi kiib jalgade külge, seejärel jootekohad kuuma liimiga üleliimitud, et paremini püsiksid ning seejärel joodetud vabad juhtmeotsad Raspberry Pi vastavate pinide külge.



Protsess jätkub: Tarkvaralise poolega tegutsemine

Nüüd toimub kõik kas otse või üle ssh Raspberry Pi Raspbian[17] GNU/Linux distributsiooni käsureal.

Alustuseks tuleks uuendada Raspbainil tarkvara sudo apt-get update && sudo apt-get dist-upgrade && sudo reboot.[18].

Seejärel tuleks uuendada Raspberry Pi püsivaraga seonduv sudo rpi-update.[19] Seejärel Raspberry Pi taaskäivitamine.

Lõpetuseks tuleb lubada Raspberry Pi SPI liidese kasutamine, kõige lihtsam on seda teha raspi-config vahendusel.[20]


Vaja läheb flashrom[21] nimelist programmi. Praeguse näite puhul sai allalaetud flashrom 0.9.8 versiooni lähtekood[22] ja kompileeritud Raspberry Pi. Allalaadimise lehel[23] on kirjas, kõik mis vaja, et saaks kompileerida.

Peale edukat kompileerimist tuleks testida flashromi toimimist.[24]

./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512

Infoks peaks saama ülevaate, mis flash kiibiga on Raspberry Pi ThinkPad X200s sülearvuti emaplaadil ühendatud. Seal valikus võib olla mitmeid variante, mis võivad natuke omavahel erineda.

Seejärel tuleks varundada ThinkPad X200s BIOS kiibi originaal sisu, see toimib ka ühenduse testimisena (seetõttu soovitatakse seda sooritada kolm korda).[25]

./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -r factory1.rom

./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -r factory2.rom

./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -r factory3.rom

Tuleks genereerida ja võrrelda kõigi kolme salvestatud faili räsi.

sha512sum factory*.rom


Kui need on samad, siis on kõik suurepärane. Kui räsides on erinevused, siis eksisteerib ühenduses probleem ning edasine jätkamine on riskante. Kontrollige joodetud juhtmete ühendusi, paigutage natuke Raspberry Pi ümber ja proovige uuesti olemasoleva BIOSi salvestamist ning võrrelge räsisid.

Kui räsid vastavad, siis jätkake.

Nüüd toimub Librebooti püsivara reaalselt BIOSi kiibile kirjutamine.[26]

./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -w x200_8mb_svenska_vesafb.rom -V

Vajadusel tuleb -c võtmega määrata algsest flashrom käsu testimisel (./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512) nähtud kiipide nimekirjast sobiva tähis (kui neid oli seal mitu). Kui täpselt ei ole teada, milline on õige (on ununenud ülesmärkida BIOSi kivilt), siis võib neid järjest proovida, sest eelduste kohaselt neist vähemalt üks toimib.

Ekraanil toimub palju, kuid kõige tähtsam on, et kõige lõpus oleks kiri:

Verifying flash... VERIFIED

Eduka Librebooti paigalduse kordamine.

Kiri "Chip content is identical to the requested image." on ka väga hea, seda saab juhul kui Librebooti püsivara on juba varem BIOSi kiibile edukalt kirjutatud ja toimub sama Librebooti püsivara faili uuesti edukas sinna kirjutamine.

Suurepärane, sülearvuti emaplaadi BIOSi kiibile on nüüd Libreboot paigaldatud, juhtmed võib lahtijoota, sülearvuti kokku panna ning hakata Librebooti kasutamist avastama.


Kui lõpus on failed või midagi muud sarnast, siis tuleb uuesti proovida, kui ikka ebaõnnestub, siis kontrollida juhtmeid ning proovida uuesti. Variandid ongi uuesti proovida protsessi mingist kohast alates või mõelda kuhu just valminud elektroonilise jäätme objekt panna.



Kokkuvõte

Libreboot'i projekt on väga kasulik. Ta näitab meile, kui väga me tegelikult vaikimisi usaldame arvutite ja nutiseadmete tootjaid kelle tooteid me kasutame igapäevaselt. Samuti saab selgeks kui raske on tegelikult võta kasutusel vaba lähtekoodiga ja suletud püsivarade vabasid süsteeme. Millised on piirangud, milliseid kompromisse tuleb teha valikutes ja milliseid piiranguid see kehtestab meile.

Lisaks õpime palju oma arvuti riistvara kohta. Kõige enam saame teada aga oma arvuti BIOSi ülesehituse kohta, mis seal on, miks on ning mida seal on sellist, ilma milleta saame arvuti ja meie ilusti hakkama.

Protsessi eduka läbimise järel on meil olemas vabavaralise püsivaraga sülearvuti.



Kasutatud materjalid

  1. "About the libreboot project". Libreboot.org. Vaadatud 2016-01-08
  2. "Hardware compatibility list". Libreboot.org. Vaadatud 2016-01-08
  3. "Raspberry Pi Board Revisions". Embedded Linux Wiki. Vaadatud 2016-01-08
  4. "How to program an SPI flash chip with the BeagleBone Black". Libreboot.og. Vaadatud 2016-01-08
  5. "How do I program an SPI flash chip with the Raspberry Pi?". Libreboot.og. Vaadatud 2016-01-08
  6. "Single-board computers". The Free Software Foundation. Vaadatud 2016-01-08
  7. "SPI". Raspberry Pi.org. Vaadatud 2016-01-08
  8. "X200 X201 Hardware Flashing". Bibliotheca Anonoma GitHub. Vaadatud 2016-01-08
  9. RPi Low-level peripherals#P1 Header. Embedded Linux Wiki. Vaadatud 2016-01-08
  10. "Installing libreboot". Libreboot.org. Vaadatud 2016-01-08
  11. "Download libreboot (stable releases)". Libreboot.org. Vaadatud 2016-01-08
  12. "ICH9 gen utility". Libreboot.org. Vaadatud 2016-01-08
  13. "ICH9 gen utility". Libreboot.org. Vaadatud 2016-01-08
  14. "Initial BBB configuration". Libreboot.org. Vaadatud 2016-01-08
  15. "X200 X201 Hardware Flashing". Bibliotheca Anonoma GitHub. Vaadatud 2016-01-08
  16. "RPi Low-level peripherals#P1 Header". Embedded Linux Wiki. Vaadatud 2016-01-08
  17. "Raspbian". Raspbian.org. Vaadatud 2016-01-08
  18. "X200 X201 Hardware Flashing with Raspeberry Pi". Bibliotheca Anonoma GitHub. Vaadatud 2016-01-08
  19. "rpi-update".Hexxeh GitHub. Vaadatud 2016-01-08
  20. "raspi-config". Raspberry Pi.org- Vaadatud 2016-01-08
  21. "flashrom". flashrom.org. Vaadatud 2016-01-08
  22. "flashrom 0.9.8 lähtekood". flashrom.org. Vaadatud 2016-01-08
  23. "flashrom Downloads". flashrom.org. Vaadatud 2016-01-08
  24. "Initial BBB configuration". Libreboot.org. Vaadatud 2016-01-08
  25. "X200 X201 Hardware Flashing with Raspeberry Pi". Bibliotheca Anonoma GitHub. Vaadatud 2016-01-08
  26. "X200 X201 Hardware Flashing with Raspeberry Pi". Bibliotheca Anonoma GitHub. Vaadatud 2016-01-08