Feed on
Posts
Comments
Nur Freie Software inside

Nur Freie Software inside

Maschinenbefreiung statt Maschinensturm
Der folgende Artikel beschreibt, wie wir praktisch die
Installation eines weitestgehend mit Freier Software laufenden Laptops (inkl. freiem Bootloader „Libreboot“) realisieren. Mit der Anleitung bilanzieren wir einen über mehrere Abende verteilten Workshop Ende 2015/Anfang 2016 und erklären nicht nur die technischen Grundlagen der Durchführung, sondern auch konzeptionell die Bedeutung einer solchen Bastelpraxis: Es geht dabei darum, die Befreiung der Maschinen zu organisieren, damit die sich revanchieren können. 1

Konzeptioneller Hintergrund

Linke Technopolitik und Rechnerarchitekturen

Linke Technopolitik setzt auf organisierte Aneignungs- und Selbstermächtigungsprozesse. Damit weitet sie Zugangsfragen aus auf den Zugang zum Kern der Computertechnik: Die Apps und Programme, das Betriebssystem, die hardware-nahen Treiber, das BIOS und letztlich die Hardware selbst. Dieser Aneignungsprozess lässt sich vorstellen entlang der Schichten, in der sie organisiert ist: Die oberste Schicht bilden die Anwendungsprogramme und Apps, diese greifen auf die Schnittstellen der nächsten Schicht, des Betriebssystems (OS, „Operating System“) zurück. Die diversen OS enthalten die Hardwaretreiber, mit denen die OS mit der in den verschiedenen Bauteilen verbauten Routinen kommunizieren. Beim PC bildet das BIOS eine weitere dem Betriebssystem vorgelagerte Schicht, die nach dem Einschalten der Stromversorgung den Prozessor, den Speicher und weitere Grundfunktionen startet.

Kampffeld BIOS

Das BIOS („basic input/output system“) ist in einem nichtflüchtigen Speicher auf der Hauptplatine eines PC abgelegt und wird unmittelbar nach dessen Einschalten ausgeführt. Aufgabe des BIOS ist es unter anderem, den PC zunächst funktionsfähig zu machen und im Anschluss das Starten eines Betriebssystems einzuleiten. Wir nehmen das BIOS meist nur als kurzes Flackern vor dem Start des eigentlichen OS wahr. Mit bestimmten Tastenkombinationen (oft F2 oder Entf) lässt sich ein Konfigurationsmodus des BIOS aktivieren, in dem wir dann grundlegende Informationen zur Kiste, die vor uns steht, ablesen oder auch Änderungen vornehmen können, wie z.B. die Reihenfolge der Peripheriegeräte, die nach bootbaren OS durchsucht werden. Hier lassen sich USB-Anschlüsse für bootbare USB-Sticks aktivieren. Das BIOS ist sehr hardwarenah programmiert.

Die Prozessoren und damit die zentrale Hardware im PC kommt heute i.d.R. von Intel, einem Konzern, auf dem Prozessor-Markt eine ähnlich dominante Rolle spielt wie Microsoft bei Betriebssystemen und Office-Software und Google/Alphabet bei Suchmaschinen und Smartphones. Auch das auf den Prozessor optimierte BIOS kommt von Intel. Intel behandelt dessen Funktionsweise als Betriebsgeheimnis, beansprucht das exklusive Geistige Eigentum an entscheidenden Teilen des BIOS, und liefert es nur in ausschließlich maschinenlesbarer Binärform aus, nicht jedoch als menschenlesbaren Quellcode, d.h. wir können und dürfen nicht in die Programmierung schauen, daher wissen wir nicht und können auch nicht wissen, was das BIOS sonst noch so tut. Solche Software, die unser bedingungsloses Vertrauen fordert, heißt „proprietär“ im Gegensatz zu „frei“.

Da das BIOS die grundlegende Funktion des Arbeitsspeichers erst herstellt, ist es eine Kleinigkeit für Intel, seine BIOS mit einer Hintertür auszustatten, die den Arbeitsspeicherzustand zu jeder beliebigen Laufzeit auslesen kann. Diese Hintertür existiert und heißt „Intel Management Engine2. Über diese Schnittstelle hat Intel Zugriff auch auf Zugangsdaten und Verschlüsseltungspasswörter und wenn Intel diesen Zugriff hat, dann können den andere auch haben, beabsichtigt oder unabsichtlich. 3 Da ein derartiger Angriff in der Schicht unterhalb der Apps und Programme, aber auch unterhalb der Betriebssystemschicht abläuft, lässt sich mit den gängigen Mitteln, auch mit ausschließlich Freier Software und selbst mit einem auf Sicherheit optimierten Live-OS wie TAILS 4 nichts dagegen machen.

Freiheit für das BIOS: Libreboot

Hier setzen Coreboot– und Libreboot-Projekt an. Das Ziel dieser beiden Projekte entspricht dem Ziel der Freie-Software-Bewegung, wie es das GNU-Projekt formuliert 5, nämlich dass jede_r die Möglichkeit haben soll, die Software zu benutzen, zu untersuchen, zu verändern und weiterzuverteilen. Darin bestehen die vier Freiheiten, die Freie Software grundsätzlich von proprietärer Software unterscheiden und unser Vertrauen in erstere rechtfertigen: (0) das Programm auszuführen, (1) das Programm in Form von Quellcode zu untersuchen und zu ändern, (2) exakte Kopien weiterzuverbreiten und (3) modifizierte Varianten zu verbreiten. Coreboot/Libreboot kommen als Freie Software und bilden einen Ersatz für Intels proprietäres BIOS. Sie ermöglichen die Lektüre und Kontrolle des Quellcodes und die anschließende Herstellung („Kompilierung“) des zum Betrieb nötigen Binärcodes aus exakt dem kontrollierten Quellcode. Damit hat niemand die Möglichkeit, hinter dem Rücken aller anderen versteckte Funktionalitäten und Hintertüren einzubauen bzw. würde mit diesem Vorhaben schnell auffallen und mit einem Shitstorm der Benutzer- und Entwicklercommunity überzogen.

Libreboot ist eine Distribution von Coreboot und ist ausgerichtet auf größtmögliche Benutzerfreundlichkeit, automatischen Kompilierungs- und Installationsprozess, getestete und stabile Versionen sowie Anleitungen, mit denen auch Nicht-Techniker_innen etwas anfangen können. Neben den prinzipiellen Vorteilen Freier Software bringt Libreboot viele ganz konkrete, praktische Vorteile mit sich: Erstmal ist es nicht kompatibel mit Windows („Windows incompatibility is a feature, not a bug.“). Außerdem lässt sich das BIOS selbst durch ein hartes Passwort schützen; ein Linux mit verschlüsseltem /boot/-Verzeichnis installieren; die Signatur und damit die Integrität eines OS-Kerns („Kernels“) prüfen, bevor er started; ein Kernel von einer Speicherkarte starten usw.

Praxishürden

Ein Problem für ein Community-basiertes Freies BIOS wie Libreboot ist die Hardwareunterstützung. Da die meisten Hardwarehersteller ihre Spezifikationen geheimhalten, gibt es volle Unterstützung bisher nur für wenige Computermodelle. Eines dieser Modelle ist das Lenovo ThinkPad X200, das von 2008 bis 2010 hergestellt wurde. Es kostete damals in der Grundausstattung 1300 Euro, derzeit gebraucht oder generalüberholt etwa 150 Euro. Es handelt sich um ein sehr verbreitetes Modell, für das es auch viele Austausch- und Ersatzteile gibt.

Eine praktische Schwierigkeit beim Umstieg von einem proprietären auf ein freies BIOS besteht darin, dass sich die Erstinstallation von Libreboot nicht aus dem laufenden System erledigen lässt. Libreboot muss direkt auf den Speicherchip geschrieben („geflasht“) werden, der werkseitig das BIOS enthält. Dafür muss man das Gerät aufschrauben. Kompliziert ist das nicht, nur die Handballenablage („palm rest“) ist zu entfernen, der Flashchip liegt beim X200 6 gut zugänglich direkt oben auf der Hauptplatine („motherboard“). Ist der Flashchip verkabelt, dann lässt sich Libreboot etwa mittels eines vorkonfigurierten Minicomputers aufspielen. (Hier machen wir es trotz der grundsätzlichen Kritik von libreboot.org mit einem RaspberryPi. Libreboot.org unterstützen den Einplatinencomputer BeagleBoneBlack mir ihrer Anleitung. Hier eine weitere Anleitung für den BBB. Nachtrag 7.2.17: Neuerdings gibt es ein DIY-Gerät zum Flashen auf weitestgehend freier Basis, Software und Hardware: zerocat, mehr dazu ganz unten. Nachtrag Ende) Läuft Libreboot, dann lässt sich jedes OS darüber installieren und einrichten, sinnvollerweise aber eines auf Basis Freier Software, wie z.B. Debian (von dem z.B. das weit verbreitete Ubuntu abstammt) oder Trisquel, ein Ubuntu-Derivat, das streng auf jegliche proprietären Bestandteile verzichtet.

Sicherheitsaspekte

Auch auf der Gebrauchswertebene spricht einiges für Freie Software. Sie gilt prinzipiell als sicherer als proprietäre. Denn im Prinzip kann jeder die Software prüfen, Fehler und Hintertüren finden, verbessern bzw. schließen und die verbesserte Version in Umlauf bringen. So geschehen Ende 2015, als zwei Spezialisten einen Bug in Grubs Passwortsicherung gefunden hatten, die auch bei Libreboot zum Einsatz kommt – und die Fehlerbeseitigung bei ihrer Veröffentlichung gleich mit zum Download anbieten konnten. Bei proprietärer Software sind die Nutzer, selbst die besten Programmierer_innen den Herstellern und der Updates und Patches ausgeliefert, da der Quellcode eben nicht frei, d.h. öffentlich einsehbar ist und da es verboten ist, die Software zu verändern und dann auch noch zu verteilen. Für alle Anwendungsbereiche gibt es mehr oder weniger ausgereifte Programme aus Freier Software. Für unterschiedlichste Einsatzszenarien gibt es Freie Betriebssysteme.

Für den Austausch des BIOS ist das Laptop aufzuschrauben, der BIOS-Speicherchip zu verkabeln und das freie BIOS von einem zweiten Rechner aus aufzukopieren. Warum sollte sich wer diese Mühe machen? Entweder aus Prinzip also, um seinen Rechner so weit wie eben technisch möglich von proprietärer Software zu befreien. Und/oder aus praktischen Erwägungen heraus: Wer sicher kommunizieren will, macht sich die Mühe, auf spezielle Betriebsysteme zurückzugreifen, z.B. das Live-Betriebsystem Tails. Weil BIOS-Software vor und unterhalb des Betriebssystems läuft, können BIOS-Trojaner und -Viren Kommunikation und Passwörter mitlesen – auch wenn das Betriebssystem als sicher gelten kann. 7 Daher stellt auch unter Sicherheitsaspekten ein freies BIOS eine sinnvolle Ergänzung zu einem Live-System wie Tails dar.

 

HOWTO

Wir haben hier das Rad nicht neu erfunden. Hilfreich waren neben der Anleitung für BeagleBoneBlack und RaspberryPi direkt bei libreboot.org die Seiten von bibanon über das X200 und Flashen mit dem Raspi (auch hier nochmal), the_unconventional’s blog (nur noch über Archive.org zu finden) und das Arbeitsprotokoll der Linux User Group Saar. Dort fand ich den entscheidenden Hinweis auf das Experimentieren mit spispeed, dazu unten mehr.

Die folgende Anleitung folgt in ihrer Gliederung dem notwendigen Arbeitsablauf. Die Formulierungen sind oft noch roh und haben eher Notizcharakter für Leute, die mit einem gewissen Vorwissen an die Arbeit gehen. Nach und nach werden Kontexterläuterungen eingearbeitet und möglicherweise unklare Stellen weiter ausformuliert werden.

Ausrüstung

Notwendig:

Hilfreich:

  • Passender Pomona-Test-Clip: Entweder SOIC16– (für 8MB-biosrom-chip) bzw. SOIC8-Klammer (für 4MB-biosrom-chip)
  • Installationsmedium mit einem aktuellen Linux-Live-System (unter Freie-Software-Aspekten empfohlen: Trisquel)
  • Free-Software-kompatible Austausch-MiniPCI-Wlan-Karte (zur Not geht auch eine Atheros AR5B95)
  • Internetverbindung

Informationen sammeln

rom-größe

wenn linux schon installiert ist: linux booten.
wenn nicht: ein linux-live-system von usb starten oder gleich installieren.
später brauchen wir das eh, um unser gerät fertig zu machen.
dazu beim booten mit f12 die liste der bootbaren datenträger aufrufen und usb auswählen.

im terminal eingeben und ausführen:

# sudo dmidecode | grep ROM\ Size

zwei werte sind möglich: entweder 4096 oder 8192 kB
wir haben also einen boot- bzw. biosrom-chip mit der größe von entweder 4mb oder 8mb.

mac-adresse

die mac-adresse entweder auf dem aufkleber auf der rückseite des gehäuses ablesen
oder per

# ifconfig eth0

bzw.

# ifconfig enp0s25

auslesen und notieren.

Raspberry Pi vorbereiten

Raspian aktualisieren und spi aktivieren

# sudo rpi-update
# sudo raspi-config

Advanced Options
SPI Enable/Disable SPI interfaces and automatic loading of the SPI kernel module (detailierte Anleitung)

Notwendige Programme installieren

flashrom per apt installieren:

# sudo apt install flashrom

außerdem ich9gen und ich9show aus den libreboot utilities, die kommen vom git-server der libreboot-entwickerin:

# sudo apt install git ca-certificates
# cd /[your path of choice]    # um repository an einen sinnvollen ort downloaden
# git clone https://notabug.org/libreboot/ich9utils
# cd ich9utils
# make
# ls -la       # zeigt u.a. die eben mit make hergestellten ausführbaren programme

hintergrund zur installation von ich9gen gibts hier: libreboot.org/docs/install/ich9utils.html#ich9utils

ich9deblob wird in den aktuellen libreboot-versionen nicht mehr benötigt (vgl. hintergrund).

Anleitung:
libreboot.org/docs/hcl/gm45_remove_me.html#ich9gen

die benötigten hilfsprogramme (flashrom, ich9gen im ordner ich9deblob)
gibts im je aktuellen libreboot-verzeichnis, z.b. mirror.helium.in-berlin.de/libreboot/20150518/libreboot_util.tar.xz 
die befehle sind vorkompiliert für drei prozessor-architekturen:
arm (einplatinencomputer wie z.b. raspberry pi), 32bit-systeme (ältere pcs und laptops) und 64bit-systeme (neuere pcs und laptops)
die befehle im dateieigenschaftendialog ausfuehrbar machen!

passendes custom rom erstellen

fertige libreboot-rom-vorlagen liegen ebenfalls vor:
mirror.helium.in-berlin.de/libreboot/20150518/rom/
mirror.helium.in-berlin.de/libreboot/stable/20220710/roms/
eine rom-image-dateivorlage aus dem je aktuellen libreboot-ordner downloaden, z.b. wenn der romchip 8mb hat:
mirror.helium.in-berlin.de/libreboot/20150518/rom/libreboot_x200_8mb.tar.xz
mirror.helium.in-berlin.de/libreboot/stable/20220710/roms/libreboot-20220710_x200_8mb.tar.xz
diesem rom-images fehlt nur noch die korrekte mac-adresse.

um die konkrete macadresse in die imagevorlage zu laden:
mit ich9gen und der mac-adresse einen passenden descriptor erstellen:

# sudo ./ich9gen --macaddress XX:XX:XX:XX:XX:XX

anstelle der XX:… die oben ermittelte mac-adresse eingeben.

und den daraus hervorgegangenen descriptor in die vorlage einschreiben:
bei 8mb-rom:

# dd if=ich9fdgbe_8m.bin of=<pfad zur vorlage> bs=12k count=1 conv=notrunc

bzw. 4mb:

# dd if=ich9fdgbe_4m.bin of=<pfad zur vorlage> bs=12k count=1 conv=notrunc

Verkabelung zum Flashen

X200 aufschrauben

Anleitung: X200-Hardware-Maintenance-Manual.pdf
tastatur hochklappen
anleitung pdf-seite 83 (seitennummer 77)
handballenablage hochklappen
anleitung seite 86 (seitennummer 80)

bei der gelegenheit gleich noch die intel-wlan-karte gegen eine austauschen, die ohne proprietäre treiberblobs auskommt
ryf.fsf.org/index.php/categories/wireless-adapters
(eine atheros ohne fsf-zertifizierung geht auch, z.b. AR5B95).
anleitung seite 89 (seitennummer 83)

und wenn wir schon einmal dabei sind: auch für den ausbau des lautsprechers  und der wwan-karte gibt es gute gründe und falls vorhanden, den fingerabdruckscanner disconnecten. bluetooth braucht auch niemand, das modul liegt aber etwas umständlicher unten mittig hinter der blende der monitorumrandung. die profis machen das auch so.

raspberry pi mit dem romchip verkabeln

Jetzt gehts an die Verkabelung der GPIO-Pins am Raspberry Pi mit den Pins des Pomona-Test-Clips.
Die Zahlen entsprechen den Nummern der Pins am Pi, Details dazu: pinout.xyz
NC steht für „not connected“.

8MB

Clip: POMONA 5252

 === front (display) on your X200 ====
 NC         --   21 orange
 25 schwarz --   24 rot
 NC         --   NC
 NC         --   NC
 NC         --   NC
 NC         --   NC
 19 braun   --   1/17 3.3V (PSU) blau
 23 weiß    --   NC - this is pin 1 on the flash chip
 === back (palmrest) on your X200 ===

4MB

Clip: POMONA 5250

 === left side of the X200 (where the VGA port is) ====
 19 braun             --      25 schwarz
 23 weiß              --      NC
 NC                   --      21 orange
 1/17 3.3V (PSU) blau --      24 rot - this is pin 1 on the flash chip.
 === right side of the X200 (where the audio jacks are) ===

Die Verkabelung am RaspberryPi ist in beiden Fällen identisch.

Stromversorgung des Rom-Chips, zwei Möglichkeiten: X200-Netzgerät anschließen (ohne das Laptop einzuschalten) oder mit dem 3.3V-Pin des Raspi verbinden (hier im Beispiel der blau verkabelte). Coreboot zu dem Thema: „I have found that the SST chips work best with the 8th [3.3V] pin, while the Macronix chips require an AC Adapter to power up. Never connect both the 8th pin and the AC adapter at the same time.

Achtung: X200S und X200Tablet gehen viel schwerer, weil der ROM-chip auf der unterseite des Mainboards liegt und es keine passenden kontaktklammern gibt, also löten auf dem mainboard nötig wird…

Anmerkung: Wie auf den Fotos zu sehen ist, verwenden wir den Raspberry Pi aus einem PiTop heraus. Was zunächst erst einmal schick und komfortabel aussieht, ist nicht zu empfehlen: Im PiTop ist eine extrem minderwertige Tastatur verbaut, angesichts derer der Preis des Geräts schon fast eine Frechheit darstellt. Im Nachhinein weiß ichs besser und rate denjenigen, die gerade keinen passenden Monitor (oder Beamer) rumstehen haben (daran hängts meist): Lieber den Raspberry Pi über ssh von einem weiteren Rechner aus bedienen, Anleitungen gibts zuhauf, z.B. diese hier.

BIOS flashen

inhalt des romchips sichern

ROM-chip-Typen:
8mb/SOIC16: MX25L6405D
4mb/SOIC8 : MX25L3205D/MX25L3208D

das original rom mit dem passenden der beiden folgenden befehle mindestens 3 mal auslesen.

8mb

# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=128 -c "MX25L6405D" -r romread1.rom

4mb

# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=128 -c "MX25L3205D/MX25L3208D" -r romread1.rom

dann die checksummen vergleichen:

# sha512sum romread*.rom

wenn das identische ergebnisse bringt, dann flashen mit dem oben erstellten rom-images mit der
charakteristischen ethernet-mac-adresse.


custom rom aufspielen (flashen)

So sieht eine Erfolgsmeldung aus

So sieht eine Erfolgsmeldung aus

solange probieren, bis eine erfolgsmeldung kommt.

ggf. die spispeed verringern.

ein flashvorgang dauert gerne einige minuten und mit niedrigerer geschwindigkeit entsprechend länger.

8mb

# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -c "MX25L6405D" -w <pfad zur rom-image-datei>

4mb

# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 -c "MX25L3205D/MX25L3208D" -w <pfad zur rom-image-datei>

 

betriebssystem installieren

für die weitergabe an andere: OEM-Installation

wiki.ubuntuusers.de/OEM_Installation/

als linux-variante empfiehlt sich trisquel, eine auf ubuntu basierende,
ausschließlich aus freier software bestehende distro.
www.gnu.org/distros/free-distros.de.html
zur installation image downloaden und auf einen stick kopieren.
damit booten, beim erscheinen des boot-logos mit beliebiger Taste unterbrechen, dann:
sprache wählen
mit f4 auf oem-installation
und „installieren“

sollte libreboot schon laufen, dann kommt der textstartbildschirm
dort die bootparameter anzeigen lassen („e“) und oem-config/enable=true ergänzen
dann mit f10 booten

oem user: oem
oem pwd: **********************

sollte das nicht funktionieren (multiboot z.B. schluckt den zu unterbrechenden bootschritt):
normale installation und dann

# sudo apt install oem-config-gtk

und wenns dann soweit ist:

# oem-config-prepare

dann wird der oem-user gelöscht und beim nächsten neustart ein frischer hauptuser eingerichtet.

Nachtrag 16.6.16: Einen interessanten Thread zu Kompatibilitätsfragen (Welche Distributionen funktionieren über welche Installationsmedien mit dem libreboot-payload-grub?) gibts in Reaktion zu diesem Beitrag hier im Mailarchiv der Free Software Foundation Europe.

alternativ: vollverschlüsselte installation

Übersicht über die Partitionierung bei Vollverschlüsselung

Übersicht über die Partitionierung bei Vollverschlüsselung

bootvorgang/grub mit passwort sichern (das ist nochmal was anderes als die vollverschlüsselung der festplatte mit dem betriebssystem), macht aber auf jeden fall sinn, da dann das libreboot nicht einfach nach dem systemstart mit einem live-system manipuliert werden kann, sondern entweder das passwort bekannt sein oder wieder zugang über hardware-verkabelung laufen muss.

dann das eigentliche betriebssystem: partitionierung, installation und manuelles booten:
libreboot.org/docs/gnulinux/encrypted_debian.html

nachtrag 20.5.2018: wer lieber mit ubuntu arbeitet, da gibt es das für eine verschlüsselte installation (inkl. /boot) notwendige alternate-install-image nur noch bei lubuntu. die schritte im einzelnen beschreibt die libreboot-seite am beispiel trisquel, wobei es sich empfiehlt, die partitionierung aus dem debian-beispiel zu übernehmen:

Create volume group:
* Name: matrix (use this exact name)
* Select crypto partition
Create logical volume, select matrix (use this exact name)
* name: rootvol (use this exact name)
* size: default, minus 2048 MB
Create logical volume, select matrix (use this exact name)
* name: swap (user this exact name)
* Size: press enter
dann weiter in der trisquel-anleitung. wenn die installation durch ist und das ganze nicht automatisch bootet (nach zweimaliger eingabe des cryptodisk-passworts startet – dieses passwort nicht mit dem user- oder dem grub-passwort verwechseln, unterschiedliche passwörter benutzen! – dann manuell booten (strg-c am libreboot-grub-menü) mit:
grub> cryptomount -a
grub> set root=’lvm/matrix-rootvol‘
grub> linux /vmlinuz root=/dev/mapper/matrix-rootvol cryptdevice=/dev/mapper/matrix-rootvol:root
grub> initrd /initrd.img
grub> boot
mit dem lubuntu-installer am besten nur das minimale system installieren und dann nach neustart (und ggf. konfiguration der apt-quellen in /etc/apt/sources.list nach dem muster deb de.archive.ubuntu.com/ubuntu bionic main restricted universe multiverse) eine oberfläche installieren, z.b. mit sudo apt update && sudo apt install ubuntu-mate-desktop.

nachtrag ende

grub für automatisches booten umkonfigurieren:

libreboot.org/docs/gnulinux/grub_cbfs.html#tools
bis einschl. „testing“ reicht. dann über das grubmenü mit „change to grubtest.cfg“ starten

libreboot.org/docs/gnulinux/
libreboot.org/docs/gnulinux/grub_cbfs.html
libreboot.org/docs/gnulinux/grub_hardening.html

—– veraltet und nicht mehr nötig, 20221010 anfang ——–

beim booten:
grub-user/passwort eingeben (englische keyboardbelegung!)

das luks-passwort wird zweimal abgefragt, beim ersten mal in der tastaturbelegung von libreboot (englisch), das zweite mal ggf. in der tastaturbelegung der linuxinstallation (deutsch). Hilfreich ist hier ein Überblick über die englisch/US-Tastaturbelegung.
workaround: luks schluckt bis zu 8 Passwörter. es lässt sich also das gleiche Passwort (gleiche Tastenfolge) nochmal im amerikanischen Layout hinterlegen. Dann wird das Passwort akzeptiert, egal welches Tastaturlayout gerade eingestellt ist (beim passwort-ändern an BEIDE versionen des passwortes denken!):

# setxkbmap de
# cryptsetup luksAddKey /dev/<gerätename>

Altes Passwort: xyz
jetzt in einem anderen Terminal:

# setxkbmap us

Neues Passwort: xyz (tatsächlich xzy)
Neues Passwort wiederholen: xyz (tatsächlich xzy)

—– veraltet und nicht mehr nötig, 20221010 ende ——–

Tipp:

# lsblk

und

# sudo cryptsetup luksDump /dev/sdXY

sind hilfreich, um die geräteadresse zu ermitteln.

userlogin kann dann automatisch passieren.

Wer komplett auf Nummer sicher gehen will, zieht sich mit flashrom -r ganz zum Schluss (nach der Einrichtung des automatischen Entschlüsselns und Bootens von der Grub-Payload in Libreboot aus) nochmal eine Backup-Kopie des Inhalts des Boot-ROM-Chips. Wenn dann etwa nach einer Beschlagnahme des Rechners das Risiko besteht, dass am Boot-ROM manipuliert wurde, lässt sich der Stand nach dem Fremdzugriff auslesen und mit dem Backup vergleichen (sha512sum). Kommen wirklich unterschiedliche Checksummen zum Vorschein, dann das Backup drüberflashen. Ganz Paranoide nehmen diese Prüfung von außen vor, per Prüfklemme, wie bei der Erstinstallation.

caveat: SSD mit GPT statt MBR

GPT ist unter den Partitionstabellen der Nachfolger von MBR.

Problem: Die Installation auf einer GPT-formatierten Festplatte/SSD funktioniert zwar, aber libreboot-grub findet nach dem Restart den zu bootenden Kernel nicht automatisch, sondern nur nach manuellem Auswählen von „Search for Grub Configuration on internal storage“ und Auswahl des richtigen Laufwerks.

Lösung: Partitionstabellentyp umstellen. Das passiert mit dem Tool gdisk. Für die Eiligen sind hier die Schritte ohne weitere Erklärung angegeben: www.ehow.com/how_12119053_convert-gpt-mbr-linux.html

todo: Grub findet Live-USB-Medium nicht

Ein eigenartiges Verhalten stellte sich bei einem vollverschlüsseltem, grub-passwort-gesicherten Gerät ein: grub findet (oder sucht?) keine Bootsektoren auf USB-Medien mehr, d.h. Live-Systeme lassen sich nicht mehr ohne weiteres starten.

anbei die grubtest.cfg  (verlinkte Datei grubtest.cfg_.pdf mit Rechtsklick downloaden, umbenennen in grubtest.cfg und mit Texteditor öffnen! ging nicht anders upzuloaden im WordPress) die ich als grub.cfg mit

# sudo cbfstool/x86_64/cbfstool libreboot.rom add -n grub.cfg -f grubtest.cfg -t raw

eingespielt habe. Vielleicht kann mir ja wer weiterhelfen, gerne über die Kommentarfunktion!

das problem nochmal im Detail: nach eingabe des grubpassworts kann ich zwar booten (erfordert noch die zweimalige luks-passwort-eingabe), dann läuft linux von der hd. aber ich kann nach eingabe des grubpassworts zwar ins grubmenü kommen und sehe die punkte ‚von usb‘, ‚von cd‘, ‚grub außerhalb suchen‘. aber wenn ich einen von denen anwähle, dann passiert nichts und es kommt wieder das menü.
von hd booten geht immer.

vielleicht wirds noch klarer mit der kompletten befehlsreihe, mit der ich mit grubtest.cfg und grub.cfg hantiert habe:

# cd Schreibtisch/x200/libreboot_util/
# sudo cbfstool/x86_64/cbfstool libreboot.rom remove -n grubtest.cfg
# sudo cbfstool/x86_64/cbfstool libreboot.rom remove -n grub.cfg
# sudo cbfstool/x86_64/cbfstool libreboot.rom add -n grub.cfg -f grubtest.cfg -t raw
# cbfstool/x86_64/cbfstool x200_8mb_usqwerty_vesafb.rom extract -n grubtest.cfg -f grubtest_original.cfg
# sudo cbfstool/x86_64/cbfstool libreboot.rom add -n grubtest.cfg -f grubtest_original.cfg -t raw
# cbfstool/x86_64/cbfstool libreboot.rom print
# cd Schreibtisch/x200/libreboot_util/
# sudo ./flash update libreboot.rom

mir ist klar, dass ich nicht wechseln kann von grub.cfg auf grubtest.cfg, da es den entsprechenden menüeintrag bei mir gar nicht mehr gibt. ich hatte ja eine grubtest als vorlage, die ich dann als grub.cfg eingespielt habe ohne diesen meiner meinung nach nebensächlichen menüeintrag zu überarbeiten, mit dem ergebnis, dass dieser verweis jetzt auf sich selbst geht. aber da dran kanns ja nicht liegen, oder?

 

nachinstallationsarbeiten

# sudo apt-get update
# sudo apt-get upgrade

strg+super+s schaltet den bildschirmleser aus
vielleicht noch das recht schnelle bildschirmschloss (5′) umstellen

falls es keine graphische oberfläche gibt:

# sudo apt-get install ubuntu-mate-desktop

wichtige hardwarekonfigurationsdaten auslesen

www.binarytides.com/linux-commands-hardware-info/
www.cyberciti.biz/faq/linux-list-hardware-information/

# lshw
# dmidecode

akkuzustand:

# acpi -V

wenn der akku schon zu schwach ist und nach jedem neustart eine warnung nervt, dann lässt die sich auch dauerhaft abschalten: im dconf-editor in org –> unity (bzw. gnome) –> settings-daemon –> plugins –> power
bei notify-perhaps-recall das häkchen entfernen.
askubuntu.com/questions/663973/disable-low-battery-notifications-warning-on-15-04

thinklight testen

zur weitergabe fertig machen

wiki.ubuntuusers.de/OEM_Installation/#Konfiguration-zur-Auslieferung

nützliche erweiterungen

RAM-Erweiterung bis 2x4GB

Tastatur mit QWERTZ-Tastenbelegung (deutschsprachig)

Ersatz der internen Festplatte durch eine SSD

Höherwertiges Displaypanel einsetzen

ExpressCard-Slot

Dockingstation/Ultrabase

Vgl. auch h-node: Datenbank Freier-Software-kompatibler Hardwarekomponenten

 

Nachmachen oder kaufen

Wer jetzt angeleitet selber machen will, kann sich melden und bei unseren regelmäßig-unregelmäßigen Bastelstunden vorbeikommen, wegen wann und wo genügt eine mail an m-at-euse.de per pgp/gpg.

Zu kaufen gibts Libreboot-fertige X200 Thinkpads derzeit nur im englischsprachigen Raum:

  • minifree.org/product/libreboot-x200/ (Dieser Webshop wurde vom Gründer und Hauptentwickler von libreboot gegründet. Über Aufkleberkauf kann man das Projekt direkt finanziell unterstützen.)
  • shop.libiquity.com/product/taurinus-x200 (Kommentar zu diesem Angebot bei heise.de)
  • neuerdings zerocat in Berlin
    Anmerkung: Den in der Anzeige erwähnten Chipflasher konnte ich leider nirgendwo finden. Er und das Know-How zu seiner Benutzung scheinen also nicht „frei“ zu sein. Angesichts dessen und angesichts der schwachen Hardwareausstattung halte ich dieses Angebot für etwas überteuert.
  • Und ab und zu bei ebay-kleinanzeigen.

Update 7.2.2017: Übers Zerocat-Projekt teilt mir der Macher mit:

  • Der von mir entwickelte Chipflasher für den X200 ist ein Do-it-Yourself Projekt. Die Quellen des Chipflashers sind als  git-repository für jedermann erhältlich. Es gibt noch viel zu tun, auch lizenztechnisch, aber eines steht bereits fest: Wir  wollen es gut dokumentiert und so frei wie möglich gestalten.
  • Für den Chipflasher verwenden wir einen echten open-hardware chip, dessen Design unter der GPLv3 veröffentlicht wurde. Dadurch unterscheidet sich der Zerocat Chipflasher positiv vom BeagleBone oder RasPi und stellt die Freiheit und Nutzerrechte in den Vordergrund.
  • In unserem Shop bieten wir rund um den Chipflasher passende Services an, z.B.: Flash-Service, Tandem-Workshop, oder den von Hand angefertigten Flasher selbst, oder gar den verwendeten Open-Hardware-Controller als sofort verfügbare Lagerware.
  • Unsere Preise sind vielleicht etwas hoch, aber bitte ziehe folgendes in Betracht:
    • Wir unterstützen fairmondo.
    • Wir befürworten das faire prozent für gemeinnützige Institutionen.
    • Wir verwenden ausschliesslich Freie-Software und stehen mit anderen Entwicklern und Projekten im gegenseitigen Austausch.
    • Wir entwickeln Open-Hardware, die Quellen sind für jedermann gratis erhältlich.
    • Wir wollen Wissen miteinander teilen, und nicht gewinnbringend den Anderen vorenthalten.
    • Wir meiden zentralisierte Dienste, wie z.B. Github, und pflegen einen eigenen (virtuellen) Server.
    • Für dieses Projekt wechselte ich zur GLS-Bank, um generell eine integre Umgebung für den Bezahlvorgang anbieten zu können.
    • Das Projekt hat zur Zeit außerhalb des Freundeskreises keinen weiteren Geldgeber.

Nachtrag 18.2.2020: Alternative Coreboot/Skulls auf dem X230:
Mittlerweile ist es auch möglich, die Intel-Hintertür auf dem Lenovo Thinkpad X230 los zu werden. Die Sache ist etwas angenehmer, weil das Coreboot-Image nicht mit der eigenen spezifischen MAC-Adresse geimpft werden muss, sondern so wie von der Skulls-Distribution vorbereitet geflasht werden kann. Der Flashvorgang selbst ist vergleichbar mit dem, was wir beim X200 gelernt haben und wird in einer englischsprachigen Anleitung sehr genau beschrieben.

 

 



Anmerkungen

  1. frei nach D. Dath; vgl. auch Euskirchen 2016[]
  2. heise.de über die Kritik der Libreboot-MacherInnen an Intel und AMD[]
  3. Hacking BIOS Chips Isn’t Just the NSA’s Domain Anymore[]
  4. Tails schützt nicht vor BIOS- oder Firmware-Angriffen[]
  5. www.gnu.org/philosophy/philosophy.de.html[]
  6. Achtung: X200S und X200Tablet gehen viel schwerer, weil der ROM-Chip auf der Unterseite des Mainboards liegt und es keine passenden Kontaktklammern gibt, also Löten auf dem Mainboard nötig wird.[]
  7. Exemplarisch: legbacore.com/Research.html[]

Diesen Artikel drucken Diesen Artikel drucken

2 Responses to “Howto: Libreboot auf Lenovo Thinkpad X200”

  1. Raik sagt:

    Ich hab mir mit nem Biosupdate das T400-Board zerschossen und müsste erst wieder ein lauffähiges (Lenovo-)Bios draufflashen, um den EC updaten zu können. Kann ich die aus dem Lenovo-Biosupdate entpackte *.rom einfach so anstatt der libreboot.rom zum Flashen verwenden, oder muß da noch was angepasst (Größe?) werden?

    • beim umgekehrten schritt muss ja die konkrete ethernet-mac-adresse eingeschrieben werden vor dem flashen. könnte mir vorstellen, dass das auch beim wiederherstellen der fall ist, wenn du ein generisches rom ranziehst und kein backup hast.

Leave a Reply