Libreboot – Installation auf einem Thinkpad X200

März 19th, 2018 § 0 comments § permalink

Was ist Libreboot?

Libreboot ist ein Fork des etwas bekannteren Coreboot. Beide sind freier, open-source Ersatz für proprietäre BIOS (aka das Ding, was immer kommt, wenn ihr euren PC bootet).

Und warum das ganze?

Ihr habt also auf eurem Rechner Linux laufen, und denkt jetzt seid ihr sicher vor Trojanern und Rootkits? Tja, da muss ich euch enttäuschen. Auf so einem BIOS-Chip sind meist mindestens 4MB Platz. Manchmal auch 8MB, manchmal 16MB. Da passt verdammt viel drauf – zur Visualisierung: Auf einem Freifunk-Router mit 4MB läuft ein komplettes Linux. Und was ist jetzt auf diesem doofen Chip? Das weiß leider niemand außer dem Hersteller, denn so ist das nunmal mit proprietärer Software. Auf fast allen Thinkpads ist da schonmal Computrace – eine nette kleine Spyware mit Rootkit und eigenem TCP/IP-Stack. Die telefoniert nach Hause und fragt regelmäßig einen Server in Kalifornien, ob das Thinkpad als gestohlen gemeldet wurde. Tolles Feature für Firmenkunden. Doofer Bug für alle, die Datenschutz cool finden. Mit einer einfachen Neuinstallation eures Systems werdet ihr die nicht los – denn die ist auf dem BIOS-Chip. Und die hat immer Root – denn sie ist noch eine Ebene über dem System. Allein das war für mich genug um den Mist zu ersetzen.

Dann ist da noch die nette Sache mit den whitelists: An sich ist miniPCI ein Standard. Ihr solltet also jegliche miniPCI-Karte in euren Rechner einbauen können, und das muss laufen. Tut es aber nicht – weil euer BIOS nach der Lenovo-Herstellerkennung sucht – und wenn es die nicht findet, verweigert es den Bootvorgang. Und wenn ihr jetzt die serienmäßige Broadcom-WLAN-Karte durch eine bessere ersetzen wollt? Tja, doof gelaufen.

Und wie mache ich das jetzt?

Tja, das ist jetzt der schwierige Part. Denn ihr müsst direkt an die Hardware – theoretisch könntet ihr den Chip auch einfach über Software neu beschreiben, aber leider hat der (zumindest bei Lenovo) einen Schreibschutz, der nur extern umgangen werden kann. Wenn ihr dann erst mal Libreboot installiert habt, könnt ihr den Schreibschutz auch deaktiveren – und in Zukunft direkt auf den Chip zugreifen.

Ihr braucht also ein passendes Programmiergerät – das kann z.B. ein Raspberry Pi sein, oder ein Bus Pirate.

In diesem Beispiel benutze ich einen Raspberry, weil der eben gerade da war. :) Mittlerweile gibt im Maschinenraum aber auch wieder einen Bus Pirate.

Raspberry vorbereiten:

- Raspbian Lite runterladen: https://www.raspberrypi.org/downloads/raspbian/
- auf SD-Karte (>4gb) kopieren, z.B. $ dd bs=1M if=[IMG] of=[DEVICE]
- SSH aktivieren: Datei namens SSH in Boot-Partition anlegen
- SD-Karte in den Raspberry stecken, Ethernet anschließen, Netzteil anschließen
- die IP rausfinden (z.B. auf der Oberfläche des Routers nachschauen)
- Terminal öffnen und verbinden: ssh pi@your.pi.address -p 22 (passwort: raspberry)
- $ sudo raspi-config
- Expand Filesystem, Change Locale (de_DE.UTF-8 UTF-8), en_GB.UTF-8, timezone einstellen, aktivieren: SSH server, SPI, I2C
- $ sudo apt-get update && sudo apt-get dist-upgrade && reboot
- $ sudo apt-get update && sudo apt-get install libftdi1 libftdi-dev libusb-dev libpci-dev subversion libusb-1.0-0-dev
Flashrom installieren:
- $ svn co https://code.coreboot.org/svn/flashrom/trunk flashrom
- $ cd flashrom
- $ make
- $ sudo make install

Libreboot-ROM-Image vorbereiten (auf dem PC):

- Utils & ROMs runterladen: http://mirror.helium.in-berlin.de/libreboot/stable/20160907/
- Ordner erstellen als Zwischenspeicher: # mkdir ~/work
- Entpacken: # cd ~/work && tar -xvJf ~/Downloads/libreboot_r20160907_util.tar.xz
- Bios-Chip-Größe rausfinden: # sudo dmidecode | grep ROM\ Size

- dementsprechend dafür passendes ROM aussuchen
- MAC-Adresse des Rechner finden: ifconfig eth0
- MAC-Adresse passend einfügen: # cd ~/work/libreboot_r20160907_util/ich9deblob/x86_64 ; # sudo ./ich9gen --macaddress XX:XX:XX:XX:XX:XX
- ins ROM kopieren: bei 8mb-rom: # dd if=ich9fdgbe_8m.bin of=<pfad zur vorlage> bs=1 count=12k conv=notrunc ; bzw. 4mb: # dd if=ich9fdgbe_4m.bin of=<pfad zur vorlage> bs=1 count=12k conv=notrunc
- auf den Pi kopieren: # scp ~/work/libreboot.rom pi@your.pi.address:~/flashrom/libreboot.rom

Pi ausschalten:
pi# sudo shutdown now -hP

Installation:

Thinkpad zerlegen, Chip finden, Nummer/Typ aufschreiben, entsprechend anschließen: http://netzfueralle.blog.rosalux.de/2016/05/15/libreboot-auf-lenovo-thinkpad-x200/#raspberry_pi_mit_dem_romchip_verkabeln
https://github.com/bibanon/Coreboot-ThinkPads/wiki/X200-X201-Hardware-Flashing-with-Raspeberry-Pi
(Chip-Namen: https://www.flashrom.org/Supported_hardware)

Pi booten, per ssh anmelden
pi# cd ~/flashrom
pi# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 --chip <your_chip_name> -r romread1.rom
pi# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 --chip <your_chip_name> -r romread2.rom
pi# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 --chip <your_chip_name> -r romread3.rom
pi# sha512sum romread*.rom
-> checksum gleich? -> cool, rom speichern als backup
-> dann flashen:
pi# ./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=512 --chip <your_chip_name> -w libreboot.rom
-> ok? -> dann Pi aus, alles gut! Ansonsten eben nochmal.

Yeah! Freiheit!

Mehr Infos und das ganze in live und Farbe gibt's am 18.04. in unserem Workshop zum Thema.

Uni-Weimar VPN Client unter Linux mit OpenConnect

März 2nd, 2018 § 0 comments § permalink

Seit einiger Zeit gibt es ein neues VPN-Setup an der BUW, die Technik dahinter nennt sich Cisco AnyConnect und für Linux-Nutzer gibt es zwar einen closed-source Client von Cisco, der auch manchmal funktioniert (Anleitung hier, Client gibt es hier) - aber idealerweise möchte man sein VPN direkt in den NetworkManager integrieren und möglichst auf proprietäre Software verzichten.

Glücklicherweise gibt es eine Lösung dafür - OpenConnect - Normalerweise lässt sich das für jede Distribution installieren, wenn es entsprechende Pakete gibt. Für Arch Linux z.B.

pacman -S networkmanager-openconnect wget

Ubuntu/Debian:

apt install network-manager-openconnect network-manager-openconnect-gnome wget

UPDATE 04/2021: 'Cisco Desktop Trojaner erlauben' ist nicht mehr notwendig. 

Damit kann man sich auch ohne die nervige Cisco-Software mit dem VPN verbinden - zumindest in der Theorie - denn bei der Konfiguration gibt es ein interessantes Häkchen "Cisco Desktop Trojaner erlauben", was gesetzt werden muss:

Die OpenConnect Website klärt auf:

The 'Cisco Secure Desktop' is a bit of a misnomer — it works by downloading a trojan binary from the server and running it on your client machine to perform some kind of 'verification' and post its approval back to the server. This seems anything but secure to me, especially given their history of trivially-exploitable bugs.

It's also fairly easy to subvert, by running your own modified binary instead of the one you download from the server. Or by running their binary but poking at it with gdb.

We support this idiocy, but because of the security concerns the trojan will be executed only if a userid is specified on the command line using the --csd-user= option, or the --csd-wrapper= option is used to handle the script in a 'safe' manner.

Bei Cisco liest sich das so:

The AnyConnect Posture Module provides the AnyConnect Secure Mobility Client the ability to identify the operating system, antivirus, antispyware, and firewall software installed on the host. The Host Scan application, which is among the components delivered by the posture module, is the application that gathers this information.

In the adaptive security appliance (ASA), you can create a prelogin policy that evaluates endpoint attributes such as operating system, IP address, registry entries, local certificates, and filenames. Based on the result of the prelogin policy’s evaluation, you can control which hosts are allowed to create a remote access connection to the security appliance.

Wieso ist das überhaupt aktiv? Es funktioniert jedenfalls auch ohne Virenscanner und Firewall...

Hier ist das entsprechende Script was für den BUW-VPN funktioniert - zusätzlich muss wget noch installiert sein.

Das muss im entsprechenden Formular angegeben werden: csd-wrapper.sh - herunterladen und ausführbar machen z.B. so:

wget -O ~/csd-wrapper.sh https://gitlab.bau-ha.us/snippets/4/raw

chmod +x ~/csd-wrapper.sh

Dann noch im Network-Manager Dialogfeld auswählen und dann sollte es funktionieren.

Testen kann man via

$ openconnect vpngate.uni-weimar.de --csd-wrapper ./csd-wrapper.sh

Damit kann man sich dann mit NetworkManager mit dem VPN verbinden.

 

Und dann kann man direkt bei der Netzwerkauswahl den VPN anschalten ohne Umwege über den Cisco-Client.

Links:

https://web.archive.org/web/20161006072143/http://blog.yunak.eu/2013/07/19/openconnect/

http://kozelj.org/anyconnect-picket-fence-torn-down

Labornetzteil Korad KD6005P unter Linux verwenden

Januar 24th, 2018 § 0 comments § permalink

Der Maschinenraum hat seit Dezember auch ein todschickes Labornetzteil für all eure Projekte!

Wir haben uns damals bewusst für ein Modell mit serieller Schnittstelle (inkl. USB-Anschluss) entschieden, weil wir gerne mit sowas spielen. :)
Das Netzteil kann also live-Daten ausgeben (ihr könnt den Stromverbrauch verfolgen usw.) und ist komplett vom Rechner aus fernsteuerbar.

Hier mal eine kleine Dokumentation, wie das unter Linux so läuft (theoretisch auch auf Mac OS und Windows, aber das ist euer Problem):

Die Original-Software ist...nunja, Original-Software eben. Die bauen Hardware, nicht Software. Das zeigt sich. Außerdem läuft die nur unter Windows 98.
Aber da haben nette Leute was schönes gebaut! Freie Software ist doch was tolles.
Heißt LabPowerQT, könnt ihr hier runterladen:
https://github.com/crapp/labpowerqt/releases
Zum direkt benutzen gibt's die AppImage-Version. Die muss nach Download evtl. noch ausführbar gemacht werden, also ab ins terminal eures vertrauens und
chmod +x /pfadzurdatei/LabPowerQt-x86_64.AppImage
Und wenn ihr schonmal im Terminal seit, könnt ihr gleich kucken ob ihr auf das Netzteil zugreifen dürft:
- Netzteil über USB anschließen, Netzteil einschalten
dmesg | tail (falls das nicht läuft, muss noch ein sudo davor - zumindest bei debian)
- da seht ihr dann, als was das Netzteil angesprochen wird, bei mir z.B. ttyACM0

- mal kucken, welche Benutzergruppen da drauf zugreifen dürfen:
ls -l /dev/ttyACM0

- hier müsste ich also in der Gruppe dialout sein, also:
usermod -a -G dialout euer-benutzername

Jetzt das Programm starten, dann direkt zu File->Settings->Device->Add.
Ein bisschen klicken, dann kommen die Einstellungen:

Die Spannung könnt ihr auf 61 setzen, der Rest müsste den Voreinstellungen entsprechen.

Im nächsten Schritt auf "Test Connection" klicken -> läuft!

Zum Verbindung aufbauen müsst ihr jetzt noch im Programm auf das Steckersymbol oben links doppelklicken.
Und dann läufts! Alles was orange ist, lässt sich über Doppelklick auswählen und einstellen, z.B. auch akustische Warnungen beim Überschreiten eines bestimmten Wertes, etc..

Viel Spaß beim Rumspielen!

Schwarzpläne selber erstellen

Oktober 29th, 2017 § 3 comments § permalink

Schwarzpläne sind immer mal wieder von Urbanisten und Architekten gefragt. Zwecks Hilfe zur Selbsthilfe habe ich mal ein Script geschrieben, das einen Schwarzplan aus einer OSM-Karte generiert. Leider ging es irgendwann nicht mehr und ich konnte es auch nicht reparieren (CookiesameoriginAPIwasauchimmer, hier falls ihr daran basteln wollt).

Gestern habe ich einen Programmierer von Mapbox getroffen, und der hat mir Folgendes gezeigt… in knapp weniger als 10 Schritten* zum eigenen Schwarzplan (*also 9).

  1. Ladet und installiert das freie qGis http://www.qgis.org/en/site/forusers/download.html
  2. Open Streetmap (OSM) Dateien von http://download.geofabrik.de, z.B. http://download.geofabrik.de/europe/germany/berlin.html laden. Ladet die ERSI-kompatiblen mit der Endung .shp.zip
  3. In der  .zip Datei sind u.A. drei ..._buildings_…-Dateien. Die zieht ihr auf euren Desktop.
  4. Jetzt klickt ihr auf dem Desktop die .shp Datei an und öffnet sie in qGis (siehe Schritt 1).
  5. Das öffnet eine Karte, auf der nur die Gebäude zu sehen sind. Ihr könnt nun zoomen und rumfahren auf der Karte zum gewünschten Ausschnitt.
  6. Momentan habt ihr einen Blau-, Grün-, oder Orangeplan. Um einen Schwarzplan zu bekommen unten links bei „Layers“ auf das farbige Rechteck klicken und das im aufpoppenden Fenster auf schwarz stellen:
  7. Dann im Menü “Project/new print composer” anklicken, OK klicken.
  8. In dem erscheindenden Fenster links 5. knopf von oben, „add new map” klicken und ein Rechteck auf der Seite aufziehen.
  9.  Jetzt nur noch mit den knöpfen oben als pdf oder svg exportieren oder direkt drucken.

Das Ergebnis könnt ihr sogar für andere bereitstellen. Bedingung:   CC-BY-SA-Lizenz d.h. es gehört der Hinweis „© OpenStreetMap contributors (http://www.openstreetmap.org/copyright)“ auf den Plan.

OK, das sind ein ganzer Haufen Klicks mehr als mit dem alten Script. Andererseits kann man mit der Lösung hier Schwarzpläne beliebiger Größe erstellen und man hat mit qGis ein praktisches Open- Source-Programm kennengelernt.

(Gastbeitrag von Jan, der von… hmm, 2009 bis 2014 in Weimar studiert hat und sich nun auf Konferenzen erzählen lässt, wie man Schwarzpläne erstellt.)

2. Verstärker-Reparatur-Workshop

April 9th, 2017 § 0 comments § permalink

Der 2. Verstärker-Reparatur-Workshop, steht in den Starlöchern und wird am Dienstag den 11.04.2017 ab 19:00 im Maschinenraum stattfinden.

Da der erste Workshop so gut verlief, war die Nachfrage derrer die nicht teilnehmen konnten so groß, dass Katrin und Christian sich bereit erklärt haben direkt noch einen Workshop hinterherzuschieben.

Wenn ihr also nächsten Dienstag noch nichts vorhabt, technisch interessiert seit oder ein spezielles Problem mit eurem Verstärker habt, kommt einfach vorbei. Eventuell können wir dem Problem gemeinsam auf den Grund gehen und anderen Hilfe zur Selbsthilfe geben.

 

Where Am I?

You are currently browsing the howto category at maschinenraum.