Archiv der Kategorie: Server

Raspberry Pi: Linux gegen Windows

503_0_Win_IoT_GUI

Falls sich bei dem Namen „Windows“ ganz konkrete Vorstellungen einstellen, sollte man sich davon bei Windows 10 IoT Core erst einmal radikal verabschieden. Etwas mehr als den Kernel bringt dieses Windows „Core“ zwar schon mit, aber es ist von einem Desktop-Windows wesentlich weiter entfernt als etwa ein Raspbian von einem Ubuntu. Unterm Strich ist Windows IoT ausschließlich für die Headless-Steuerung via Netzwerk (SSH, Web-Oberfläche, Powershell) und vorwiegend für die Entwicklung eigener Projekte konzipiert. Wir erklären hier, was mit dem System auch ohne Programmierung mit dem Entwicklerwerkzeug Visual Studio 2015 anzustellen ist und wie es sich dabei im Vergleich zu Linux verhält.

1. System-Image für den Raspberry

Bei der Image-Auswahl und Bestückung der SD-Karte muss sich Windows IoT Core schon mal einige Punkteabzüge gefallen lassen. Den diversen, bereits funktional spezialisierten Linux-Varianten für den Raspberry steht genau ein Windows gegenüber und dessen Installation ist nicht überall trivial. Eine erste Hürde ist die nicht klar kommunizierte Tatsache, dass das aktuelle „Windows 10 IoT Core Release Image“ auf dem jüngsten Raspberry 3 noch nicht läuft. Wer die Downloadseite https://ms-iot.github.io/content/en-US/Downloads.htm ganz genau liest, kann dies vermuten, weil der Raspberry Pi 3 nur unter der Vorversion „Windows 10 IoT Core Insider Preview“ namentlich aufgeführt ist. Es kann gut sein, dass demnächst die normale Hauptversion auch den neuesten Raspberry unterstützt, aber Anfang Mai 2016 war dies noch nicht der Fall und wir mussten auf die Insider Preview ausweichen. Dabei ist es aber nicht nötig, am Insider-Programm von Microsoft teilzunehmen, weil auch der bewährte NOOBS-Installer der Raspberry Foundation diese Insider Preview einrichten kann (Download unter www.raspberrypi.org/downloads/noobs). Wenn Sie den Raspberry mit NOOBS booten und dann die Option „Windows 10 IoT Core“ wählen, holt sich NOOBS die aktuellste Preview von Windows IoT aus dem Netz. Eine flotte Internetverbindung ist ratsam, weil der Download circa 1825 MB umfasst.

503_2_NOOBS
Installation mit NOOBS: Der Weg ist einfacher, benötigt kein Windows und umgeht das aktuelle Problem, dass der Raspberry 3 nur von der Windows IoT „Insider Preview“ unterstützt wird.

Wichtige Anmerkung: Beachten Sie, dass die beschriebene Einrichtung über NOOBS nicht die von Microsoft vorgesehene Installationsweise darstellt. Microsoft zielt nämlich auf eine enge Zusammenarbeit eines Windows-10-PCs mit der Raspberry-Platine. Beim Download des „Windows 10 IoT Core Release Image“ von https://ms-iot.github.io/content/en-US/Downloads.htm erhalten Sie ein ISO-Image, das Sie unter Windows 10 „Bereitstellen“ (Mounten) sollen, um anschließend die dort enthaltene MSI-Datei auszuführen. Dabei wird am Windows-Rechner das eigentliche Image (flash.ffu) entpackt, ferner zwei Hilfsprogramme eingerichtet – eines zum Schreiben des ffu-Images (IoTCoreImageHelper.exe), ein weiteres (WindowsIoTCoreWatcher.exe) zur besonders einfachen Verwaltung einer oder mehrerer Raspberry-Platinen mit Windows IoT.

503_4_Windows_IoT_Core_Watcher
Überflüssiges Tool unter Windows: Der „Core Watcher“ wird am PC automatisch installiert, wenn Windows IoT via Windows auf SD-Karte geschrieben wird.

Dies mag den Eindruck erwecken, dass sich ein Raspberry mit Windows IoT nur über ein Windows 10 einrichten und bedienen lasse. Das ist aber falsch: Richtig ist nur, dass die Entwicklung eigener Programmierprojekte ein Windows 10 mit Visual Studio 2015 voraussetzen. Die Nutzung und Fernwartung eines Raspberry mit Windows Core funktioniert hingegen auch ohne diese Hilfsprogramme und ohne Windows-PC.

Hinweis zur Hardware: Der WLAN-Chip auf dem neuen Raspberry 3 wird von der Windows IoT Insider Preview nicht erkannt. Dieses Manko kann bei Erscheinen dieses Heft eventuell behoben sein. Wann genau das der Fall sein wird, das lässt sich der vagen Aussage „coming soon“ auf http://ms-iot.github.io nicht entnehmen.

503_1_Win_IOT_6
Die von Microsoft vorgesehene Installationsweise von Windows IoT: Hier ist ein Windows-Rechner notwendig, der mit einem speziellen Flash-Tool ausgestattet wird.

2. Erster Start: Was läuft auf dem Raspberry?

Falls am Raspberry Monitor und Maus angeschlossen sind, erscheint nach dem Start eine einfache Oberfläche, die nur eine wesentliche Information anbietet, nämlich die lokale IP-Adresse. Über das Zahnradsymbol ist nicht mehr zu erreichen als die Einstellung der Sprache. Der Punkt „Lernprogramme“ gibt auch nicht viel her. Generell ist die hübsche, aber praktisch funktionslose Oberfläche entbehrlich bis nutzlos. Der Raspberry mit Windows IoT wird komplett über das Netzwerk verwaltet.

Bei den automatisch gestarteten Standarddiensten hat Microsoft nichts Wesentliches ausgelassen. Das System und die Dateien auf dem System sind auf viele Wege zu erreichen:

* Der SSH-Server läuft. Der Raspberry ist von jedem Client-System via ssh administrator@192.168.0.22 (Beispiel) und dem Standardkennwort „p@ssw0rd“ erreichbar (Zahl 0 statt Buchstabe o!).

* Der Web-Server läuft: Die Verwaltungsoberfläche des Raspberry ist von jedem Client-System im Browser über http://192.168.0.22:8080 erreichbar (Beispiel). Die Standardauthentifizierung lautet wieder „Administrator“ und Kennwort „p@ssw0rd“

* Der FTP-Server läuft: Der Raspberry ist von jedem Client-System via FTP über seine IP-Adresse erreichbar. Hier ist der anonyme Zugriff ohne Authentifizierung vorgesehen. Freigegeben ist standardmäßig das Systemlaufwerk (C:\).

* Der Lanmanserver läuft: Spezielle Freigaben sind per SSH leicht einzurichten, die dann von jedem Client-System erreichbar sind. Sofort ab Installation, also ohne jede Einrichtung, sind die typischen administrativen Standardfreigaben (C$, D$) erreichbar – allerdings nur mit Windows-Clients.

* Das Windows Remote Management läuft: Somit kommen Windows-Client auch über die Windows Powershell an den Raspberry, die mehr Möglichkeiten bietet als die normale Kommandozeile Cmd (die bei SSH-Verbindung startet).

* Wer Windows IoT über einen Windows-10-Rechner installiert hat, erhält auf diesem Rechner zusätzlich den schon genannten „Windows IoT Core Watcher“ als Hilfsprogramm: Der spürt Raspberry-Platinen mit Windows IoT im lokalen Netz auf und bietet per Rechtsklick deren Verwaltungsoberfläche und die administrativen Datenfreigaben. Das Tool ist aber vollständig entbehrlich, wenn der Raspberry mit fester IP über ein Browser-Lesezeichen und die Datenfreigaben im Dateimanager des PCs zu erreichen sind.

503_3_Win10_iot_2
Verwaltungsoberfläche für Windows IoT: Mit der IP-Adresse des Raspberry kommen Sie mit jedem Browser an diese Zentrale. Sie informiert nicht nur, sondern erlaubt viele zentrale Eingriffe.

3. Windows IoT im praktischen Einsatz

Die ersten Maßnahmen auf einem Windows IoT unterscheiden sich nicht grundsätzlich von einem Linux-System auf dem Raspberry: Eine der wichtigsten Aktionen ist ein feste IP-Adresse für das Gerät, was Sie am besten zentral im Router erledigen. Damit ist das System per SSH oder Browser zuverlässig zu erreichen. Ob der Zugriff dann unter Linux mit (Beispiel)

ssh administrator@192.168.0.22

oder mit Putty/Kitty unter Windows erfolgt, spielt keine Rolle.

Zu empfehlen ist ferner ein individuelles Kennwort für das „Administrator“-Konto (vergleichbar mit root unter Linux). Dies kann der Befehl

net user administrator meinkennwort

auf der SSH-Konsole erledigen, ist aber auch auf der Verwaltungsoberfläche unter „Home -> Preferencies“ vorgesehen. An gleicher Stelle können Sie auch den Standard-Hostnamen „minwinpc“ individuell einstellen.

Windows IoT kann mit oder ohne Bildschirmoberfläche („headed“ oder „headless“) gestartet werden. Falls Sie kein eigenes Projekt planen, das eine Bildschirmausgabe vorsieht: Die Standardoberfläche des Systems und ein am Raspberry angeschlossener Bildschirm sind reichlich nutzlos. Für die Abschaltung gibt es ein Extra-Programm:

setbootoption.exe headless

Dies und ein Reboot schaltet die Oberfläche ab und bringt etwa 60 MB zusätzlichen Speicher (der Parameter „headed“ schaltet die Oberfläche jederzeit wieder ein). Einen Reboot lösen Sie am bequemsten über die gleichnamige Schaltfläche in der Verwaltungsoberfläche aus, aber natürlich funktioniert auch ein shutdown /r /t 0 auf der SSH-Konsole.

Neben dem überall funktionierenden SSH-Zugriff gibt es unter Windows auch noch den Remote-Zugang via Powershell (Beispiel):

net start WinRM
Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.0.22
Enter-PSSession -ComputerName 192.168.0.22 -Credential 192.168.0.22\Administrator

Die zweite Befehlszeile ist nur ein einziges Mal notwendig, um den Raspberry dem Windows-PC bekannt zu machen. Der erste Befehl ist nur einmal innerhalb einer Windows-Sitzung notwendig. Für die Eingabe des Kennworts nach dem dritten Befehl erscheint dann ein grafischer Dialog.

503_5_Win_IoT_Powershell_Remote
Nur für Windows-Clients: Die Powershell kann sich am Raspberry anmelden und bietet etwas mehr Kommandozeilenkomfort als eine SSH-Verbindung (auf die Cmd-Shell).

Die Verwaltungsoberfläche liefert unter „Processes“ und „Performance“ einen guten Überblick über die Systemauslastung und über laufende Tasks, die sich hier auch beenden lassen. Ohne Monitorausgabe („headless“) sollte das pure Standardsystem deutlich unter 200 MB liegen. Bei Aufgaben als einfacher Datenserver liegt die CPU-Last bei 10 bis maximal 30 Prozent. Das sind Werte, die auch ein schlanker Debian-Server nicht signifikant unterbieten kann.

Auf der Seite „Processes“ lassen sich unter „Run command“ einzelne Kommandozeilen direkt übergeben, ohne dafür eine SSH- oder Powershell-Verbindung aufbauen zu müssen. Wenn es sich um einen Befehl des Kommandointerpreters Cmd handeln soll, muss dies in der Form „cmd /c [Befehl]“ erfolgen.

Wenn Sie beim Systemstart automatisch Programme starten (oder beenden) oder Umgebungsvariablen setzen wollen, nutzen Sie vorzugsweise die Datei IoTStartupOnBoot.cmd unter \Windows\System32. Diese wird, wie der Name anzeigt, beim Start automatisch berücksichtigt.

Leistungsmonitor der Verwaltungsoberfläche
Leistungsmonitor der Verwaltungsoberfläche: Das Mini-Windows erweist sich als ökonomische Basis für den Raspberry. Hier läuft ein Datentransfer; CPU und RAM zeigen noch viel Reserven.

4. Einrichtung eines einfachen Datenservers

Die Rolle eines einfachen lokalen Datenservers kann Windows IoT problemlos und mit sehr geringem Konfigurationsaufwand übernehmen. Dazu eignen sich externe USB-Geräte an den vier verfügbaren Ports. USB-Datenträger sind „hot plugable“, werden also im laufenden Betrieb gemountet – in aufsteigender Reihe der Windows-typischen Laufwerksbuchstaben. Um ein komplettes USB-Laufwerk E: für das Standardkonto „Administrator“ freizugeben, genügt ein einziger Befehl (Beispiel):

net share USB_2TB=e:\ /grant:administrator,full

Weitere Konten sind etwa mit

net user /add Sepp geheim

schnell eingerichtet und Netzfreigaben analog dem obigen Befehl zu gestatten, nur mit geändertem Kontonamen. Für die Korrektur eventuell fehlender lokaler Rechte auf Datenträgern ist das Tool icacls.exe an Bord.

Der FTP-Server, der standardmäßig Laufwerk C: anbietet, kann jeden beliebigen Pfad per FTP freigeben. Es genügt, den Dienst zunächst mit

kill ftpd*

zu beenden und dann mit der gewünschten Pfadangabe neu zu starten (Beispiel):

start c:\windows\system32\ftpd.exe e:\daten

Es gibt aber offenbar keine Möglichkeit, den FTP-Server auf ein bestimmtes Konto zu beschränken. Eine Öffnung für den Internet-Zugriff via Portfreigabe scheidet daher aus Sicherheitsgründen aus, und für den Zugriff im lokalen Netz reichen an sich die normalen Freigaben aus.

5. Windows IoT: Ohne Eigenentwicklung geht nicht viel

Die voranstehenden Abschnitte zeigen, dass Windows IoT auf dem Raspberry wesentliche Dienste automatisch mitbringt und mit etwas Erfahrung auf der Windows-Kommandozeile (Cmd) oder der Windows-Powershell gut übers Netzwerk zu verwalten ist – und zwar nicht nur über Windows, sondern auch über Linux oder Mac OS X (SSH und Browser). Alltagstaugliche Einsatzmöglichkeiten, wie wir sie von Linux-Systemen wie Raspbian, Open Media Vault, Openelec und zahlloser Software wie Kodi, Plex, Owncloud, Mediawiki kennen, sind aber nicht annähernd in Sicht. Die skizzierte Einrichtung als lokaler Datenserver (Punkt 4) ist das einzige alltagstaugliche Szenario, das sich mit dem purem Windows-IoT-System umstandslos realisieren lässt. Batch-Frickler können sich mit den angebotenen Kommandozeilen-Tools unter \Windows\System32 und dem Cron-ähnlichen Scheduler Schtasks sicher noch einige zusätzliche Komfortfunktionen hinzubasteln. Ein Hemmschuh ist dabei, dass nicht einmal ein Texteditor an Bord ist und somit Änderungen an Batch- oder Konfigurationsdateien immer über die Freigaben am Remote-PC erfolgen müssen.

Über diese engen Grenzen hinaus führt nur die Entwicklung eigener Programmierprojekte. Hier steht man allerdings mit einem Linux-Rechner komplett außen vor. Die Entwicklung benötigt einen Windows-10-Rechner mit Visual Studio 2015 (wobei aber die kostenlose Community-Edition ausreicht: www.visualstudio.com/de-de/downloads). Selbst Nutzer, die nur das eine oder andere schon existierende Beispielprojekt auf ihrem Raspberry ausprobieren wollen, kommen nur mit Hilfe von Windows ans Ziel: Die überall verfügbare Verwaltungsoberfläche im Browser sieht zwar unter „Apps -> Install package“ das Laden von Projekten auf den Raspberry vor, dazu müssen diese aber als Appx-Pakete vorliegen, was wiederum Visual Studio oder zumindest das Windows-Tool Makeappx erfordert.

Ist auf einem Windows-10-PC Visual Studio installiert, ist der Transport von Projekten auf den Raspberry hingegen recht einfach: Die Sammlung mit den Demo-Projekten unter https://github.com/ms-iot/samples lässt sich mit der Schaltfläche „Download ZIP“ rechts oben komplett herunterladen. Nach dem Entpacken des Archivs genügt ein Doppelklick auf die SLN-Datei des gewünschten Projekts, der das verknüpfte Visual Studio startet und dort automatisch den Debug-Modus und die ARM-Systemarchitektur einstellt (in der Tool-Leiste oben). Daneben muss dann nur noch unter „Device“ die Option „Remotecomputer“ gewählt werden, wobei der Raspberry erkannt und automatisch angeboten wird und ein Klick auf „Auswählen“ das Ziel festlegt. Danach genügt „Erstellen -> [Projektname] erstellen“ zum Kompilieren des Projekt und anschließendes „Erstellen -> [Projektname] bereitstellen“, um das Projekt auf den Raspberry zu befördern. Die Verwaltungsoberfläche zeigt unter „Apps -> Installed Apps“ alle Projekte in einer Dropdown-Liste an. Das jeweils ausgewählte starten Sie dort mit der Schaltfläche „Start“ oder löschen es wieder mit der Schaltfläche „Remove“.

Die meisten der bislang vorliegenden Projekte haben Demo-Charakter, um die technischen Möglichkeiten und den zuständigen Programmcode anzuzeigen. Praxistaugliche und für größere Zielgruppen zu empfehlende Lösungen sind bislang nicht in Sicht.

503_7_Sample_VS_Remotecomputer
Entwicklung nur unter Windows: Ohne Visual Studio 2015 geht gar nichts. Die bisher vorliegenden Projekte sind eher didaktische Bastlerdemos als massentaugliche Alltagslösungen.