Info
- Beschreibung
- Libreboot is a free BIOS or UEFI replacement (free as in freedom); libre boot firmware that initializes the hardware and starts a bootloader for your operating system.
- Kategorie
- Basteln / Sicherheit
- Beteiligte
- Status
- Thinkpad X60s: 1
- Start-Datum
- 2016-03
- Letzte Aktivität
- 2017-02
Inhaltsverzeichnis
Projekthintergrund/Motivation
Wir wollen unsere kompatiblen Geraete vom mitgelieferten unfreien BIOS/UEFI befreien und somit die Anzahl an potentiellen Backdoors an unserem Geraet zu reduzieren.
Materialien
- "kaputtes" X200 zum Testen
- ein X60s
- Pomona 5252 (16-Pin)
- Pomona 5250 (8-Pin)
- SPI-Schnittstelle:
- SPI-Host der spi-dev Schnittstelle bereitstellt (z.B. Raspberry-Pi)
- vorhanden: Buspirate v4 -- Nutzbarkeit mit flashrom ist fuer BP v3 gegeben
Ablauf
Mit phyischem Zugang zum EEPROM-Chip
- Gerät ("target") öffnen, Chip freilegen
- auf Überträger ("host") flashrom installieren
- prüfen ob Kommunikation mit EEPROM-Chip möglich ist
- libreboot herunterladen und kompilieren
- libreboot-utils installieren (oder vorhandenes flashrom verwenden)
- Sicherungen:
- alten Flash-Inhalt sichern (mehrach herunterladen und sicherheitshalber vergleichen)
- MACs von allen Netzwerkschnittstellen aufschreiben
- Flashen des Libreboot's
- Freuen!
Software
libreboot-util
flashrom
- Verwendung mit Buspirate ist möglich (als SPI/USB-Umsetzer)
- mindestens Buspirate v3 wird unterstützt
Version 4 geht wohl auch: http://dangerousprototypes.com/forum/viewtopic.php?f=40&t=6668&sid=ae113e6422dbcbc77421faf6ee12c1c5
http://code.coreboot.org/p/flashrom/source/tree/HEAD/trunk/buspirate_spi.c
- mindestens Buspirate v3 wird unterstützt
Wissensquellen
Anleitungen und Erfahrungen
Befreiung eines X60s
Download
download libreboot_src.tar.xz from libreboot.org/download
- Build-Dependencies via $libreboot/resources/scripts/helpers/build/dependencies/{parabola|trisquel7} installieren (als root - oder die Paketliste extrahieren)
extrahieren der Build-Dependencies für Debian/Trisquel: sed -n 's/^.*apt-get .* install//p' resources/scripts/helpers/build/dependencies/trisquel7 | tr '\n' ' '
aktuell (2016) sind es: wget git base-devel libstdc++5 arm-none-eabi-gcc libpciaccess ncurses doxygen iasl gdb flex bison autogen m4 autoconf help2man freetype2 automake fuse fuse-exfat xz gawk device-mapper libtool python bdf-unifont pciutils zlib libftdi libftdi-compat
get all the source code and patch: ./download -y all
EEPROM auslesen
- flashrom -p internal -r original.bin
falls es einen mmap-Fehler gibt, dann folge der flashrom-FAQ: füge zur Kernel-Kommandozeile iomem=relaxed hinzu
da die EEPROM-Flash-Erkennung mit dem Lenovo-Original-BIOS nicht spontan funktioniert, müssen wir entweder das mit libreboot mitgeliefert flashrom verwenden (hier: flashrom/i686/flashrom_lenovosst_macronix) oder die ID manuell angeben: flashrom -f -c MX25L1605
- Schreibzugriff (im X60s direkt) scheint mit dem generischen flashrom-Werkzeug nicht möglich zu sein; mit dem libreboot-flashrom klappt es wohl
Praktische Durchführung
ersten Teil des Flash (bis auf die letzten 64k) überschreiben:
./flash i945lenovo_firstflash ../libreboot_r20160907_grub_x60/x60_deqwertz_txtmode.rom
- sich über die scheinbare Fehlermeldung wundern (welche nur einer Besonderheit des Schreibschutzes für en EEPROM-Chips aufgrund des alten Lenovo-BIOS geschuldet ist)
- ausschalten, kurz warten, wieder anschalten
- großartige Erleichterung, weil wunderbar flott das neue grub des coreboot-BIOS sichtbar wird
auch die letzten 64k des Flash überschreiben:
./flash i945lenovo_secondflash ../libreboot_r20160907_grub_x60/x60_deqwertz_txtmode.rom
- ausschalten, kurz warten, wieder anschalten
- weiterhin läuft alles ganz wunderbar
Wechsel vom Text-Modus auf den Vesa-Modus (mehr Buntheit beim Booten):
./flash update ../libreboot_r20160907_grub_x60/x60_deqwertz_vesafbmode.rom
- ausschalten, kurz warten, wieder anschalten
Fazit: das war ganz schön aufregend - aber die coreboot- und libreboot-Menschen haben den Ablauf wirklich sehr leicht gemacht!
Befreiung eines X200
Eine Anleitung dafür gibt es beim Libreboot-Projekt.
- das X200 muss wohl aufgeschraubt werden, um an das BIOS zu kommen
Spezifika zu X200'ern: https://libreboot.org/docs/hcl/x200.html#x200s
es gibt drei verschiedene BIOS-Chip-Gehäuseformen: SOIC-16, SOIC-8 (Notebook aufschrauben und nachsehen) und WSON (beim X200S und beim X200Tablet)
- bei SOIC-16 und SOIC-8 müssen entsprechende IC-Kontaktierungsklammern verwendet werden
- bei WSON müssen Kabel angelötet werden
unterschiedliche Beschaltung der Klammern mit Signalen vom Flashgerät
als Flashgerät wird in der Anleitung ein Beagle Bone Black (BBB) verwendet – dies muss für seine Aufgabe vorbereitet werden