2213083

Raspberry-Pi-Duell: IoT 10 Core versus Linux

16.08.2016 | 13:42 Uhr |

Linux läuft überall. Windows auch – meint Microsoft, nachdem 2015 das Windows 10 IoT Core fertiggestellt wurde. Ob dieses Windows für das „Internet of Things“ auf einem Raspberry gegen ein Linux antreten kann, zeigt dieser Beitrag.

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, Weboberfläche, Powershell) und vorwiegend für die Entwicklung eigener Projekte konzipiert. Wir zeigen hier, was mit dem System ohne das Entwicklerwerkzeug Visual Studio 2015 anzustellen ist und wie es sich dabei im Vergleich zu Linux verhält.

Lese-Tipp: Raspberry Pi 3 - Stärkere CPU und integriertes WLAN-Modul

1. Das Image für den Raspberry

Bei der Imageauswahl 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 sein, dass bei Erscheinen dieses Artikels die normale Hauptversion auch den neuesten Raspberry unterstützt. Bei Erstellung war dies noch nicht der Fall und wir mussten auf die Insider Preview ausweichen. Dabei ist es aber nicht nötig, am Insiderprogramm 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.

Die von Microsoft vorgesehene Installationsweise von Windows IoT.
Vergrößern Die von Microsoft vorgesehene Installationsweise von Windows IoT.

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 („ ash.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. 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 Artikels eventuell behoben sein.

Die Installation mit Noobs ist der einfache Weg da so kein Windows benötigt wird.
Vergrößern Die Installation mit Noobs ist der einfache Weg da so kein Windows benötigt wird.

2. 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 vielen Wegen zu erreichen:

Der SSH-Server läuft. Der Raspberry ist von jedem Clientsystem via ssh administrator@192.168.0.22 (Beispiel) und dem Standardkennwort „p@ss0rd“ erreichbar.

Der Webserver läuft: Die Verwaltungsoberfläche des Raspberry ist von jedem Clientsystem im Browser über http://192.168.0.22:8080 erreichbar (Beispiel). Die Standardauthentifizierung lautet wieder „Administrator“ und Kennwort „p@ss0rd“.

Mit der IP-Adresse des Raspberry kommen Sie mit jedem Browser an diese Zentrale.
Vergrößern Mit der IP-Adresse des Raspberry kommen Sie mit jedem Browser an diese Zentrale.

Der FTP-Server läuft: Der Raspberry ist von jedem Client 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 Clientsystem 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 zusätzlich den schon genannten Windows IoT Core Watcher: Der spürt Raspberry-Platinen mit Windows IoT im lokalen Netz auf und bietet per Rechtsklick deren Verwaltungsoberfläche und die Datenfreigaben. Das Tool ist aber entbehrlich, wenn der Raspberry mit fester IP über ein Browserlesezeichen und die Datenfreigaben im Dateimanager des PCs zu erreichen sind.

Überflüssiges Tool unter Windows: Der Core Watcher wird am PC automatisch installiert.
Vergrößern Überflüssiges Tool unter Windows: Der Core Watcher wird am PC automatisch installiert.

3. Windows IoT im 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 geheim

auf der SSH-Konsole erledigen, ist aber auch auf der Verwaltungsoberfläche unter „Home -> Preferencies“ vorgesehen.

Windows IoT kann mit oder ohne Bildschirmoberfläche („headed“ oder „headless“) gestartet werden.

Falls Sie kein eigenes Projekt planen, das eine Bildschirmausgabe vorsieht, sind die Standardoberfläche des Systems und ein am Raspberry angeschlossener Bildschirm reichlich nutzlos. Für die Abschaltung gibt es ein Extraprogramm:

setbootoption.exe headless

Dies und ein Reboot schaltet die Oberfläche ab und bringt etwa 60 MB zusätzlichen Speicher. 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 Remotezugang 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 bekanntzumachen. 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.

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 zehn 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 Kommandos 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 beim Start automatisch berücksichtigt.

Nur für Windows-Clients - Powershell.
Vergrößern Nur für Windows-Clients - Powershell.

Auch interessant:  Mini-PC-Überblick - Die Alternativen zum Raspberry Pi

4. Windows IoT als Datenserver

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 freigeben. Es genügt, den Dienst zunächst mit kill ftpd* zu beenden und dann mit dem gewünschten Pfad neu zu starten (Beispiel):

start 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 Internetzugriff via Portfreigabe scheidet daher aus Sicherheitsgründen aus.

Das Mini-Windows erweist sich als ökonomische Basis für den Raspberry.
Vergrößern Das Mini-Windows erweist sich als ökonomische Basis für den Raspberry.

5. Windows IoT: Viel geht nicht ohne Eigenentwicklung

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, Open Elec und zahlloser Software wie Kodi, Plex, Owncloud, Mediawiki kennen, sind aber nicht 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 Kommandozeilentools unter „\Windows\System32“ und dem 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 ü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 Linux komplett außen vor. Die Entwicklung benötigt einen Windows-10-Rechner mit Visual Studio 2015 (wobei aber die kostenlose Community-Edition ausreicht). Selbst Nutzer, die nur das eine oder andere schon existierende Beispielprojekt ausprobieren wollen, kommen nur mit Windows ans Ziel: Die 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.

Entwicklung nur unter Windows: Ohne Visual Studio 2015 geht gar nichts.
Vergrößern Entwicklung nur unter Windows: Ohne Visual Studio 2015 geht gar nichts.

Ist auf einem Windows-10-PC Visual Studio installiert, ist der Transport von Projekten auf den Raspberry einfach: Die Sammlung mit den Demoprojekten 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 Toolleiste 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 Drop-down-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 bislang vorliegenden Projekte haben Democharakter, 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.

0 Kommentare zu diesem Artikel
2213083