Donnerstag, 23. Juni 2016

Raspbian Konfiguration ohne Monitor und Keyboard

Als intensiver Raspberry Pi Benutzer hat man eigentlich für alle Fälle ein Image mit einem passenden OS rumliegen. Meine Images sind beispielsweise alle für meine privaten Netzwerke vorkonfiguriert und ich muss diese einfach nur auf eine SD Karte kopieren und in den Raspberry stecken. Dann kann es direkt losgehen – mit was auch immer. Die Konfiguration eines neuen Rasbians kann man meist auch erledigen, indem der kleine Einplatinencomputer mit einem Netzwerkkabel ins LAN gebracht wird.

Es gibt aber Gegebenheiten, in welchen diese Ansätze nicht weiterhelfen und die Umstände es nicht ermöglichen den Raspberry über das Netzwerkkabel ins Netz zu bringen und nur WLAN zur Verfügung steht. Es gibt einen einfachen Weg, diese Konfiguration an einem Laptop direkt nach dem Kopieren des Raspbian Image auf die SD Karte vorzunehmen. Die einzelnen Schritte beschreibe ich für Windows, Linux und (bald auch) OSX.
Ich beziehe mich hier auf das Standard Rasbian, das Howto geht NICHT mit Raspbian lite. (Stand 2016-05-27-raspbian-jessie-lite.img)
Das Image wird von https://www.raspberrypi.org/downloads/raspbian/ heruntergeladen.

Konfiguration unter Windows
Konfiguration unter Linux (Ubuntu)

Konfiguration unter Windows

Das heruntergeladene Image wird mit dem WinDiskImager32 auf die SD Karte kopiert.

Anschließend ist ein Teil (eine von zwei Partitionen) des kopierten Images im Windows Explorer sichtbar.

 In diesen Bereich wird eine neue Datei erstellt, die wpa_supplicant.conf genannt wird. In diese Datei werden die folgenden Informationen eingefügt (zum Editieren verwende ich gern Notepad++ oder Textpad)

update_config=1
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

network={
   &nbsp ssid="SSID"
    psk="Passwort"
}

Ist die Datei gespeichert kann diese im Raspberry verwendet werden. Wird der Raspberry gestartet, bekommt er vom WLAN eine IP Adresse zugewiesen über welche auf den Raspberry zugegriffen werden kann. Die meisten Router oder Access Points haben ein Web Frontend über das man die IP Adresse des Raspberry herausfinden kann. Ist das nicht möglich, hilft ein Netzwerkscanner. Mit Windows Bordmitteln ist ein Scann des gesamten Netzwerks nicht (so einfach) möglich. Auf iOS und Android Smartphones habe ich dafür Fing.


Konfiguration unter Linux

Unter Linux kann man das Image mit dd auf die SD Karte kopieren. Zuerst wird geschaut, wie der Gerätename der SD Karte unter Linux ist. Bevor die Karte eingesteckt wird werden die gemounteten Speichergeräte aufgelistet. Dies erfolgt mit dem Befehl:

df -h

Anschliessend wird die SD Karte eingesteckt und der Befehl

df -h

erneut ausgeführt. In der Rückgabe sollte

/dev/mmcblk0p1

oder

/dev/sdd1

stehen. Ich verwende hier weiter den mmcblk0p1. Anschließend wird das Device mit umount ausgehangen. Sollten mehrere Partitionen auf der SD Karte sein (erkenntlich an mmcblk0p2, mmcblk0p3, …), müssen diese auch alle ausgehangen werden.
Anschließend kann das Image auf die SD Karte kopiert werden. Wichtig ist dabei, das hier auf die SD Karte und nicht auf eine Partition kopiert wird. Deswegen ist der Name auf den kopiert wird /dev/mmcblk0 oder /dev/sdd und nicht/dev/mmcblk0p1 bzw /dev/sdd1.
Der Befehl zum Kopieren lautet:

dd bs=4M if=2016-05-27-raspbian-jessie.img of=/dev/mmcblk0

Das Kopieren geht natürlich auch mit einer GUI mit einem aktuellen Ubuntu (16.x) geht dies recht einfach mit dem usb-imagewriter. Dieser muss gegeben falls nach installiert werden.
Nach dem die Karte beschrieben wurde, muss die SD Karte neu gemountet werden. Am einfachsten kurzzeitig entfernen und neu einstecken. Mit

df -h

erkennt man, dass die Karte zwei Partitionen hat. Eine Partition heißt /dev/mmcblk0p1 und die andere /dev/mmcblk0p2. Hier ist die kleinere Partition mit einer Größe von ca 50 bis 100MB interessant. Auf diese werden wir die WLAN Informationen kopieren, die später beim ersten Start von Raspbian im Raspberry an die richtige Stelle verschoben werden.
Im Terminal wird mit dem Befehl:

sudo wpa_passphrase testwifi testpassword >> /dev/ mmcblk0p1/wpa_supplicant.conf

werden die relevanten Informationen in die wpa_supplikant Datei geschrieben. Wer mag kann diese dann öffnen und folgende (fett geschriebenen) Informationen voranstellen, so dass die Datei dann folgenden Inhalt hat.

update_config=1
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
network={
    ssid="testwifi"
    #psk="testpassword"
    psk=d28f6e7bcc45536a1930c0010f1d8a8e16c5dc154cc1309ae97859f2586924df
}

Um sich später mit dem Raspberry verbinden zu können, muss die IP Adresse in Erfahrung gebracht werden. Wenn die MAC Adresse (oder der Herstellercode) bekannt ist, wird der Raspberry gestartet und nach einigen Momenten mit nMap nach dem Raspberry gescannt. Den Herstellercode (OUI genannt) kann man unter http://aruljohn.com/mac.pl herausfinden. Bei der Eingabemaske auf vendor lookup klicken und den Hersteller der Karte eingeben.

Die MAC Adressteil 80:F1:02 steht hier exemplarisch für meinen Edimax WIFI USB Adapter.

nmap -sP 192.168.50.0/24 | awk '/^Nmap/{ip=$NF}/80:F1:02/{print ip}'


Damit hat man alle Informationen, um sich mit SSH auf den Raspberry zu verbinden.