Archiv Februar 2018

Samstag, 10. Februar 2018

PC von einem USB-Stick booten meldet „Missing Operating System“ (oder: Lenovo Thinkpad BIOS Updates ohne Windows)

Kürzlich habe ich dank der Funktion dmidecode nicht nur herausgefunden, wie ich aus der Ferne feststellen kann, um welchen Gerätetyp es sich bei einem Laptop-Server konkret handelt …

...
Handle 0x000E, DMI type 1, 27 bytes
System Information
	Manufacturer: LENOVO
	Product Name: 4236MBG
	Version: ThinkPad T420
	Serial Number: XXXXXXX
	UUID: 045E0181-510B-110B-BEFD-D0C20D7188AE
	Wake-up Type: Power Switch
	SKU Number: Not Specified
	Family: ThinkPad T420
...

… sondern auch, dass die BIOSse meiner Thinkpad-Flotte wohl mal aktualisiert werden sollten:

...
BIOS Information
	Vendor: LENOVO
	Version: 6QET69WW (1.39 )
	Release Date: 04/26/2012
...

Erstaunlicherweise unterhält Lenovo seine Support-Seiten vorzüglich und es fanden sich innert weniger Minuten alle Seiten mit BIOS-Updates für meine Thinkpads X200s, X201, T400 und T420.

Da auf den Dingern kein Windows läuft, kann man das Update über diesen Weg vergessen. Glücklicherweise bietet Lenovo auch noch CD-Images (sog. ISOs) an, mit welchem die ca. 40MB Updatedaten auf CDs gebrannt werden können. Der Laptop kann dann von dieser CD gestartet und die Updates installiert werden, d.h. die Anforderung Windows entfällt so.

Erstes Problem: Die Links auf die ISO-Images auf den Seiten mit dem „BIOS Update Utility for Windows“ funktionieren nicht. Hier hilft Google jeweils kurzerhand weiter: „X200s BIOS Update Bootable CD“ findet dann den korrekten Link der Seite.

Nachdem man sich von dort die ISOs heruntergeladen hat und sie bspw. (graphisch) mit Etcher (oder auf dem CLI mit dd) unter macOS auf einen USB-Stick schreiben will, ein weiterer Showstopper: Etcher meldet nach dem Transfer, dass der USB-Stick kein gültiges Dateisystem enthält.

Wie sich mit etwas googeln herausstellt verwendet Lenovo für seine Boot-CDs den El Torito-Standard. Deshalb muss man aus dem .iso mit dem Perl-Script geteltorito.pl das eigentliche Image extrahieren. geteltorito.pl findet sich unter Debian GNU/Linux im Paket genisoimage. Aus der Boot-CD des BIOS-Updates für ein Lenovo Thinkpad X201 extrahiert man das eigentliche ISO-Image folgendermassen:

#!/bin/bash

/Users/mario/Scripts/cd-dvd/geteltorito.pl -o 6quj19us.img 6quj19us.iso

exit 0

Auf der Kommandozeile liest man dann ungefähr Folgendes:

$ extract.sh 
Booting catalog starts at sector: 20 
Manufacturer of CD: NERO BURNING ROM
Image architecture: x86
Boot media type is: harddisk
El Torito image starts at sector 24 and has 65536 sector(s) of 512 Bytes

Image has been written to file "6quj19us.img".

Anschliessend schreibt man das .img folgendermassen auf einen USB-Stick, welcher als /dev/rdisk5 gemountet ist:

#!/bin/bash

dd if=6quj19us.img of=/dev/rdisk5 bs=512k

exit 0

Auf der Kommandozeile liest man dann ungefähr Folgendes:

# write.sh
32+0 records in
32+0 records out
33554432 bytes transferred in 6.970957 secs (4813461 bytes/sec)

Einige der folgenden Links waren für die Auskundschaftung dieser Alternative essentiell, andere (weiter unten) Sackgassen:

Die Grösse des USB-Sticks scheint eine Rolle zu spielen

Während einer Stunde habe ich mir dann die Zähne ausgebissen — sowohl mit Etcher als auch mit dd habe ich diverse Images auf einen uralten SanDisk Cruzer USB-Stick mit 512MB geschrieben. Doch jedes Mal, als ich mein Testgerät, ein Lenovo Thinkpad T400, damit booten wollte, erschien die Fehlermeldung „Missing Operating System“.

Erst als ich den USB-Stick auswechselt und einen LaCie itsaKey mit 4GB verwendete, klappte das booten und updaten der Thinkpads reibungslos.

Derzeit bin ich der Meinung, dass dies irgendwie damit zu tun hat, dass der erste USB-Stick mit 512MB kleiner als eine CD mit 640MB ist und dadurch Probleme mit dem Boot-Programm im MBR entstehen. Oder aber dass vom SanDisk-Stick schlicht und einfach nicht gebootet werden kann, weil die Hardware des USB-Sticks das aus mir unerfindlichen Gründen nicht unterstützt.

Zum Schluss noch ein Screenshot, wie die Partition im Disk Utility.app angezeigt wird — mich erstaunt, dass „Bootable“ als „No“ angegeben wird, wobei ich nicht weiss, ob damit gemeint ist, dass Macs gebootet werden können:

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Samstag, 10. Februar 2018

UniFi AC Mesh AP als Bridge nutzen

Die Web-Site und Online-Shops sind in dem Punkt nicht explizit respektive klar, doch ich kann bestätigen, dass man einen UniFi AC Mesh AP einerseits per WLAN mit einem bestehenden UniFi Access Point verbinden und so die Reichweite des originalen Access Points steigern kann, aber andererseits (gleichzeitig) auch ein Netzwerkkabel vom Mesh Access Point zu einem PC ziehen und diesen PC mit einem Netzwerkzugang ausstatten kann.

Aus Sicht des PCs befindet er sich im lokalen Ethernet-Netzwerk; die Pakete werden per WLAN vom Mesh Access Point zum originalen Access Point übertragen und gelangen von dort zu anderen Geräten im Intranet respektive ins Internet.

Ich gehe davon aus, dass man anstelle eines PCs auch einen Switch an den Ethernet-Eingang eines Mesh Access Points hängen und so mehrere Geräte respektive ein ganzes isoliertes LAN mit dem Original-LAN bridgen kann, versucht habe ich das im Gegensatz zum alleinstehenden PC nicht.

Tags: , , ,
Labels: IT

8 Kommentare | neuen Kommentar verfassen

Samstag, 10. Februar 2018

UniFi Controller erkennt einen Repeater als Rogue Access Point

Im letzten Jahr hat ein Bekannter von mir in seinem Haus eine neue Wärmepumpe der Firma Waterkotte installiert, welche Wärme aus einer Quellwasserleitung extrahiert, die das Grundstück durchquert.

Die Wärmepumpe verfügt zeitgemäss auch über einen eingebauten Industrie-Computer (PCEngines APU2C2) mit Netzwerkanschluss, auf welchem ein Web-Server läuft. Darüber lassen sich nicht nur die Vitaldaten des Geräts abfragen, sondern dieses auch steuern.

Wie es aber in älteren Gebäuden so ist, hat im Boilerraum natürlich niemand einen Netzwerkanschluss installiert und auch keine Netzwerkkabel hingezogen. Wie bringt man das Gerät somit ins lokale Netzwerk?

Der lokale Lieferant hatte die Lösung: Der Industrie-PC ist mit einem Ethernet-Kabel an einen D-Link DIR-809 angeschlossen. Der Access Point wiederum ist per WLAN mit dem UniFi Access Point der Wohnung im oberen Stockwerk verbunden. Dies, indem der D-Link Access Point in den Repeater-Modus geschaltet wurde und die WLAN-Zugangsdaten statisch einprogrammiert wurden.

Der Bekannte klagte in der Folge aber über instabile Netzwerkverbindungen — mal war die Wärmepumpe erreichbar, aber oftmals nicht. Nach einigem Debugging dann die Erkenntnis: Der UniFi-Controller im LAN erkennt den Repeater nicht als „normalen“ Client, sondern als Rogue Access Point, d.h. als ein Access Point, der vorgibt, ein anderer Access Point zu sein.

Hat man bei einer ähnlichen Installation dieselbe Vermutung, überprüft man das in der Web-Oberfläche des UniFi-Controllers. Einerseits warnt einem der Controller sowohl in der Oberfläche (Nachrichten-Pop-Up) als auch per E-Mail über Rogue Access Points, die in der Empfangsreichweite von UniFi Access Points mit derselben SSID funken …

… andererseits werden solche Geräte in der Rubrik „Insights“ auch markant mit einem roten Punkt in der Spalte „Rogue“ dargestellt:

Das Problem ist in dem Fall, dass Rogue Access Points vom UniFi Controller automatisch geblockt werden. Dies führte zum Symptom mit den Verbindungsabbrüchen.

Ich habe dann die Funktion benutzt, Rogue Access Points als bekannt zu markieren und den D-Link whitegelistet. Die UniFi-Firmware besitzt diese Funktion offenbar seit Version 5.5.19.

Leider half das aber auch nur temporär; der D-Link Access Point wurde regelmässig wieder als Rogue Access Point klassifiziert und geblockt.

Schlussendlich entschied ich mich dazu, den D-Link Access Point dem Installateur zurückzugeben, (damals) 120 CHF zu investieren und einen UniFi AC Mesh AP im Boilerraum zu installieren.

Am Netzwerkanschluss des Mesh Access Points hängt neben dem PoE-Injektor der Industrie-PC und der Mesh Access Point verbindet sich nun seit Monaten reibungslos mit dem UniFi AP AC Pro.

Keine Unterbrüche, keine Sorgen — mitsamt dem Vorteil, dass im Untergeschoss nun besserer WLAN-Empfang herrscht.

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Samstag, 10. Februar 2018

Eine Eaton 3S550IEC USV an Turris Omnia anschliessen

Vor einiger Zeit habe ich mir für unsere Wohnung hier in Bern zwei USVs angeschafft.

Als IT-Supporter der alten Schule kommt mir beim Begriff USV spontan APC in den Sinn. Doch diese Teile sind teuer, weshalb ich mich im letzten Jahr je für eine Eaton 3S550IEC (550VA) sowie eine Eaton 3S700IEC (700VA) entschieden habe.

Im Büro hängt die USV an meiner Synology DS413, welche es mir erlaubt, die Vitaldaten mit Cacti aufzuzeichnen sowie das NAS herunterzufahren, wenn der Strom für längere Zeit ausfällt.

Im Wohnzimmer hatte ich ursprünglich keinen Server stehen, sondern nur einen Turris Omnia. Wie sollte ich also die Daten dieser USV aufzeichnen? Alsbald stellte sich heraus, dass das überhaupt keine Hexerei ist:

Man schliesst die USV per USB-Kabel (B auf A) an einen der USB-Port des Turris Omnia an, installiert über das LuCI-Interface die Pakete nut (Network UPS Tools) sowie nut-driver-usbhid-ups (beide in der Version 2.7.4-2) auf dem Turris Omnia.

Installiert man nut-driver-usbhid-ups nicht, sieht man in den Logs (ich glaube unter /tmp/log/messages, bin mir aber nicht mehr sicher) folgende Fehlermeldung:

2017-10-22T11:00:47+02:00 info upsd[30497]: listening on 0.0.0.0 port 3493
2017-10-22T11:00:47+02:00 warning upsd[30497]: /var/run is world readable
2017-10-22T11:00:47+02:00 err upsd[30497]: Can't connect to UPS [ups] (usbhid-ups-ups): No such file or directory
2017-10-22T11:00:47+02:00 info upsd[30498]: Startup successful

Sobald der Treiber installiert ist, lesen sich die Logs beruhigender:

2017-10-22T11:05:17+02:00 info usbhid-ups[558]: Startup successful
2017-10-22T11:05:17+02:00 info upsd[559]: listening on 0.0.0.0 port 3493
2017-10-22T11:05:17+02:00 warning upsd[559]: /var/run is world readable
2017-10-22T11:05:17+02:00 info upsd[559]: Connected to UPS [ups]: usbhid-ups-ups
2017-10-22T11:05:17+02:00 info upsd[560]: Startup successful

Der wichtigste Part kommt jetzt aber: Nun gilt es, von einem Linux-System die folgenden Konfigurationsdateien als Basis zu nehmen, zu kopieren und für den Turris Omnia zu adaptieren:

/etc/nut/hosts.conf
/etc/nut/nut.conf
/etc/nut/ups.conf
/etc/nut/upsd.conf
/etc/nut/upsd.users
/etc/nut/upsmon.conf
/etc/nut/upsset.conf

Angepasst habe ich schlussendlich nur folgende Dateien:

/etc/nut/upsd.users

[monuser]
		password = s1kr1t
		upsmon master

Mit diesem Benutzer und Passwort kann ich über das Netzwerk mit nut kommunizieren.

/etc/nut/upsd.conf

LISTEN 0.0.0.0

Dank dieser Konfigurationsdatei akzeptiert nut Anfragen von beliebigen Hosts im Netzwerk.

/etc/nut/ups.conf

pollinterval = 5

[ups]
	driver = usbhid-ups
	port = auto

Hier wähle ich den richtigen Treiber für die Kommunikation zwischen Turris Omnia und USV aus sowie lege fest, wie oft der Status der USV abgefragt wird.

/etc/nut/nut.conf

MODE=netserver

Sobald die Dateien installiert sind, startet man nut unter LuCI > System > Startup mit „Restart“ neu.

Der erste Ernstfall

Lustigerweise produzierte ich erst vorgestern Abend den ersten mir bewussten Ernstfall, als ich das Netzteil eines FLEXSON 3 INPUT HDMI SWITCH & AUDIO CONVERTER FOR SONOS PLAYBAR / PLAYBASE in die Steckerleiste einsteckte, den runden, geräteseitigen Ausgang aber noch nicht im Flexson-Gerät selber stecken hatte, sondern irgendwo auf unserem Fernsehmöbel herumliegen hatte – wo es wahrscheinlich mit irgendeinem einem Leiter Kontakt herstellte und so nicht nur das Netzteil grillte (mhmmm, dieser Geruch), sondern auch die Sicherung auslöste und das ganze Wohnzimmer ohne Strom war.

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Samstag, 10. Februar 2018

An welchem Port eines UniFi Switches hängt ein Netzwerkgerät?

Hierzu öffnet man die Web-Oberfläche des UniFi-Controllers, wählt „Clients“ an, sucht das Netzwerkgerät in der Liste und klickt es an. In den Detailinfos am rechten Browserrand steht unter „Overview“ nicht nur, dass das Gerät am Switch angeschlossen ist, sondern auch an welchem Port: #Portnummer. Im nachfolgenden Beispiel hängt mein Apple TV an einem Netzwerkkabel, welches an Port 5 meines Switches eingestöpselt ist:

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen