Mini-PC

Windows auf dem Raspberry Pi 2 installieren

27.06.2015 von Markus Mizgalski
Es ist wahrscheinlich der Traum vieler User schlechthin – Windows auf dem Raspberry Pi. Kaum Energieverbrauch, aber dennoch maximale Kompatibilität sowie nahezu volle grafische Bedienbarkeit. Nur leider sah es da bisher recht mau aus. Das wird aber anders.

Der Raspberry Pi der ersten Generation hat sich bislang allen Versuchen einer Windows-Installation hartnäckig widersetzt. Die Erklärung ist relativ simpel, aber auch vielschichtig. Denn zumindest theoretisch verfügt Microsoft mit Windows RT ja über ein Betriebssystem, das für ARM-Plattformen konzipiert ist. Da steht aber zunächst einmal eine technische Hürde im Weg, denn Windows RT verlangt nach 1 GB RAM und einer 1GHz ARM V7-CPU.

Raspberry Pi 2
Auf dem neuen Raspberry Pi 2 lässt sich sogar Windows 10 betreiben.
Raspberry Pi 2
Der Raspberry Pi 2 soll sechs Mal schneller arbeiten als der Raspberry Pi 1 Model B+.
Raspberry Pi 2
Der neue Raspberry Pi 2 bietet eine 4-Kern-CPU und 1 GB Arbeitsspeicher. Der Grafik-Chip bleibt der selbe wie beim Vorgänger.
Raspberry Pi 2
Die übrige Ausstattung bleibt auch wie beim "B+"-Vorgänger. Es sind keine neuen Ports mehr hinzugekommen.
Raspberry Pi 2
Der Preis bleibt ebenfalls der selbe, dieser liegt bei 35 US-Dollar.

Der Raspberry Pi 2 ist dank 900 MHz Quadcore ARM-V7-Prozessor und 1 GB RAM technisch in der Lage, auch Windows 10 zu nutzen. Microsoft arbeitet an einer entsprechenden Version

Mit beidem kann der Raspberry Pi 1 nicht aufwarten. Hinzu kommt, dass Windows RT closed source ist, also keine freie Community solange an Kernel oder Treibern herumfeilen kann, bis alles funktioniert. Es hat 2013 ein Projekt gegeben, bei dem eine Entwicklergruppe versucht hat, Windows CE auf den Raspberry zu portieren. Nur partiell von Erfolg gekrönt und seit Ende 2013 ist da auch nichts mehr passiert. In der Zwischenzeit ist es zwar mit einigen Tricks gelungen, Windows RT auf dem HTC HD2 zu installieren, aber auch hier blieb es bei einer grundsätzlichen Machbarkeitsstudie, sodass de facto Arm-CPUs und Windows außerhalb der von Microsoft abgesteckter Welt bislang nicht zusammengekommen sind. Zudem sind letztlich viele der Experimente echte Hacks, also Modifikationen an Teilen des dafür nicht freigegeben Codes.

Mit Raspberry Pi 2 wird alles besser

Bislang läuft das Entwicklungsprogramm IoT auf dem Intel Galileo; es gibt keine grafische Ausgabe, er wird per Telnet angesprochen

Nun gibt es aber den Raspberry Pi 2, der von allem mehr zu bieten hat als der Vorgänger. Mehr Speicher (1 GB), höhere Teakfrequenz (900 MHz) und eine ARM Cortex-A7 CPU mit vier Kernen. Und dieser Raspberry ist die Schnittstelle zu Windows, denn Microsoft hat angekündigt, eine Windows 10-Version für die Platine zu entwickeln. Und die soll auch noch kostenlos bereitgestellt werden. Allerdings ist von Microsoft im Entwicklerportal bislang nicht mehr als eine entsprechende Absichtserklärung zu finden und dazu die Möglichkeit, sich der „early adaptor community“ anzuschließen. Das Projekt, Windows 10 auf den Raspberry Pi 2 zu bringen, gehört zu Microsofts IoT (Internet of Things) Developer Program, das im Hinblick auf Windows 10 bislang vor allem auf die zweite Generation des Intel Galileo-Boards aufbaut. Für die erste Galileo-Generation hatte Microsoft im vergangenen Jahr eine kostenlose Entwickler-Version von Windows 8.1 verteilt. Allerdings darf man hier keine zu hohen Erwartungen an den Tag legen, weil das Galileo-Board keine grafische Ausgabe besitzt. Es gibt bei Youtube ein Video, das den Windows 8-Bootvorgang eines mit einer Grafikkarte erweiterten Galileo zeigt. Hier ist klar zu erkennen, dass der Mini-Computer keine grafische Oberfläche startet, sondern lediglich die Eingabeaufforderung zeigt. Tatsächlich basiert die ganze Entwicklung beim Galileo auch aus einem Zusammenspiel aus Visual Studio und Microsoft Connect, was im Prinzip vergleichbar damit ist, den Raspberry per Putty zu konfigurieren. Aber es wird eben auch klar, wo die Reise hingehen soll. Auch Microsoft möchte die Einplatinencomputer als Interfaces für den Zugriff auf alle möglichen Geräte nutzen. Und womöglich die Konfiguration über etablierte grafische Wege zu ermöglichen, damit eben auch Anwender, die mit Shell und Kommandozeileneingabe nicht so vertraut sind, beispielsweise eine Heizungssteuerung aufsetzen können. Aber noch ist das eben etwas Zukunftsmusik und bis dahin bleibt zunächst einmal Linux das Betriebssystem der Wahl für den Raspberry Pi, auch in der zweiten Generation.

Ein bisschen Windows

Bislang muss man sich noch mit dem Trick des Remote-Zugriffs begnügen, wenn man auf dem Pi einen Windows-Desktop nutzen möchte

Trotz allen Beschränkungen ist es nicht ganz unmöglich, über den Raspberry Pi 2 schon jetzt Windows zu nutzen. Wobei die Betonung hier auf „über“ liegt, denn Im Prinzip dient der Raspberry in Verbindung mit einem Monitor, einer Tastatur und einer Maus nur als Fernzugriffskonsole für einen PC. Allerdings mit einer Ergänzung: Man kann mit einem Trick auch am Raspberry USB-Geräte anschließen, die dann wiederum über den Windows-Rechner angesteuert werden. Dazu ist es nötig, den Raspberry zunächst als USB-Server einzurichten.

Die Treiber für den USB-Server erstellen

Die folgenden Beschreibungen funktionieren ohne größere Änderungen nur zusammen mit Raspbian und der 64-Bit-Version von Ubuntu. Obwohl wir nur drei zusätzliche Kernel-Module (Treiber) benötigen, ist es kaum empfehlenswert, diese auf dem Raspberry Pi zu erstellen. Das dauert unverhältnismäßig lange. Deutlich schneller geht es mit einem anderen Linux-System, das Sie entweder auf dem PC oder in einer virtuellen Maschine einrichten, etwa mit Virtualbox . Sie können dafür Mythbuntu verwenden. Öffnen Sie ein Terminal-Fenster. In Mythbuntu gehen Sie dazu im Menü auf „Applications > System > Xfce Terminal“. Führen Sie die folgenden zwei Befehlszeilen aus:

cd ~ && wget www.pcwelt.de/oyhy -O raspi_crosstools.sh

chmod 755 raspi_crosstools.sh

Achten Sie bei der wget-Zeile darauf, ein großes „-O“ zu verwenden. Starten Sie das Script dann mit der Zeile

sudo ./raspi_crosstools.sh

Neben dem VNC-Server unter Windows muss auf dem Raspberry ein VNC-Viewer installiert werden

Geben Sie das root-Passwort ein, wenn Sie dazu aufgefordert werden. Das Script installiert zuerst die Versionsverwaltung Git, über die es den Raspbian-Kernel und einige Tools herunterlädt. Die Tool-Sammlung enthält alles, was Sie benötigen, um auf einem PC mit Intel/AMD-Prozessor (x86/x64) einen Kernel beziehungsweise Kernel-Module für den Raspberry Pi (ARM-Prozessor) zu kompilieren. Nach erfolgreichem Download erstellt das Script die Kernel-Module „usbip-core.ko“, „usbip-host.ko“ und „vhcihcd.ko“ im Verzeichnis „~/raspi_cross/kernel_mod/lib/modules/ 3.12.28+/extra“. Sollte der Kernel inzwischen neue Optionen bieten, ermöglicht das Konfigurations-Script die Modulauswahl. Bestätigen Sie hier einfach die Vorgaben so oft wie nötig mit der Enter-Taste. Sobald das Script seine Arbeit abgeschlossen hat, kopieren Sie die erzeugten ko-Dateien auf Ihren Raspberry Pi in das Verzeichnis „/lib/modules/3.12.28+/extra“. Führen Sie auf diesem in einem Terminalfenster den Befehl sudo depmod aus, damit die neuen Kernel-Module eingebunden werden. Das Script „raspi_crosstools.sh“ erstellt auch das Tool usbip im Verzeichnis „/usr/local/sbin“. Dabei handelt es sich um die Client-Anwendung für Ubuntu, mit der Sie USB-Geräte einbinden können. In das Verzeichnis „~/raspi_cross/Windows“ lädt das Script Treiber und Client-Anwendung für Windows 7 und 8 herunter. Kopieren Sie die Dateien „usbip_windows_ v0.2.0.0_signed.zip“ und „usbipv0.2.0. zip“ auf Ihren Windows-PC.

USB-Server auf dem Pi einrichten

Auf dem Raspberry Pi müssen Sie jetzt die Tools für die Verwaltung der USB-Geräte installieren. Führen Sie dazu in einem Terminalfenster folgende zwei Zeilen aus:

sudo apt-get update

sudo apt-get install usbip

Jetzt ist Zeit für einen ersten Testlauf. Schließen Sie das USB-Gerät, das Sie im Netzwerk verwenden wollen, an den Raspberry Pi an. Führen Sie die folgenden zwei Befehlszeilen aus:

sudo modprobe usbip-host

sudo usbipd -d

Damit laden Sie das nötige Kernel-Modul mit und starten den Usbip-Daemon im Debug-Modus. Wenn Sie die Software ausführlich getestet haben, tragen Sie beide Zeilen für den automatischen Start in die Datei „/etc/rc.local“ oberhalb von „exit 0“ ein, ersetzen aber „-d“ durch „-D“. Öffnen Sie ein zweites Terminalfernster. Der Befehl

sudo usbip list -l

gibt Ihnen hier die Liste der verfügbaren USB-Geräte aus. Sie sehen deren USB-IDs beispielsweise in der Form „busid 1–1.3(0424:ec00)“. Der Befehl lsusb zeigt die Gerätebezeichnung zur ID in der Regel im Klartext. Die Freigabe kann jetzt mit der dieser Zeile erfolgen:

sudo usbip bind -b 1–1.3

Der Erfolg wird mit der Ausgabe „bind device on busid 1–1.3: complete“ bestätigt. Es kann sein, dass es zu Problemen kommt, weil die Kernel-Version nicht mehr zu den Scripten passt. Im Zweifelsfall finden Sie dann die Anleitung und weitere Hilfe auf der Projektseite http://usbip.sourceforge.net/.

Zugriff auf USB-Geräte über das

Hier trägt man die IP des Servers ein, und schon „läuft“ Windows auf dem Raspberry

Netz Installieren Sie unter Windows 7 oder 8 den Treiber aus dem Archiv „usbip_windows_v0.2.0.0_signed.zip“. Eine Anleitung dazu finden Sie in der enthaltenen Datei „Install.txt“. Im Archiv „usbipv0.2.0. zip“ sind nur die Dateien „Usb.ids“ und „Usbip.exe“ enthalten. Öffnen Sie unter Windows eine Eingabeaufforderung in dem Verzeichnis, in das Sie „usbip-v0.2.0.zip“ entpackt haben. Mit

usbip.exe -l 192.168.0.37

erfahren Sie, welche Geräte ein USB-Server freigegeben hat. Die Adresse im Beispiel ersetzen Sie durch die IP-Adresse Ihres Raspberry Pi. Der Befehl

usbip.exe -a 192.168.0.37 1–1.3

Der Clou dabei: Mit dem Server des usbip-Projekts können USB-Geräte am Raspberry vom entfernten Windows adressiert werden, wenn man sie zuvor entsprechend mit dem „bind“-Befehl eingebunden hat

stellt dann die Verbindung zu Bus-ID 1–1.3 her. Die Windows-Version des Programms läuft bisher nur im Vordergrund. Sie trennen die Verbindung einfach, in dem Sie das Fenster der Eingabeaufforderung schließen. Auf einem Ubuntu-System verwenden Sie die in Punkt 2 kompilierten Tools ähnlich. Die Syntax der Parameter ist jedoch anders. Das Gleiche gilt für ein Raspbian-oder Debian-System. Wenn Sie nur usbip starten, erhalten Sie eine kurze Übersicht der möglichen Parameter für die Kommandozeile.

Windows-Desktop aufrufen

Jetzt müssen Sie nur noch unter Windows den VNC-Server installieren. Laden Sie sich die nötigen Dateien unter www.realvnc.com herunter und folgen Sie einfach den Anweisungen. Unter Raspbian lässt sich dann über die Add-On-Verwaltung zum Beispiel TightVNC installieren. Optional geht es auch per Shell über den Befehl

sudo apt-get install vncviewer

Dann rufen Sie den VNCviewer auf dem Raspberry auf, tragen die IP des Windows-Rechners ein und schon haben Sie einen Windows-Desktop vor Augen. Durch den per Netzwerk angebundenen USB-Port kann Windows dann eben auch auf USB-Geräte zugreifen, die am Raspberry hängen. Zumindest, wenn es um Speicher oder Scanner geht.

Im Prinzip ist Windows auch jetzt schon auf Systemen mit Arm-Prozessoren lauffähig - die entsprechende, aber auch geschlossene Plattform ist Surface mit RT

Mit Streaming-Lösungen wie etwa TV-Karten läuft der USB-Fernzugriff bislang nicht wirklich rund. Und natürlich werden auch bei allen anderen Geräten die Datenraten letztlich von Netzwerk limitiert, in dem Fall wahrscheinlich durch den Raspberry. Denn auch die zweite Generation des Kleincomputers verfügt nur über einen 100 MBit-Netzwerkanschluss. Und da hilft es auch nicht weiter, wenn der ganze Rest per Gigabit-LAN angebunden ist. Letztlich leistet der LAN-Port des Pi nur rund ein Fünftel der Nettodatenrate, die der USB 2.0-Anschluss schafft. Trotzdem bekommt man so schon mal einen ersten Eindruck, wie es sein könnte, wenn dann Windows nativ auf dem Raspberry läuft. Denn eines fällt positiv auf: Darstellungsproblem im Hinblick auf den Windows-Desktop hat der VNCviewer keine, auch der Bildaufbau läuft flüssig. Allerdings darf man logischerweise nicht erwarten – im VNC-Modus schon gar nicht, dass man dank Windows aus dem Raspberry eine Gaming-Maschine für aktuelle 3D-Shooter machen kann. Es bleibt eben ein Computer auf Basis eines Arm-Prozessors. Und das ist wahrscheinlich im Moment am ehesten vergleichbar mit einem Windows RT-Tablet. Kuriose Randnotiz: Während Microsoft also für den Raspberry ein Windows 10 entwickelt, wird es für die RT-Tablets mit Arm-Architektur eben jenes Betriebssystem wohl nicht mehr geben. Jedenfalls hat man in Redmond verlauten lassen, dass die kleineren Surface-Versionen nur noch ein Update mit einigen Windows 10-Features erhalten sollen, aber kein komplett neues Betriebssystem mehr. Da ist dann das Raspberry-Tablet nur eine Frage der Zeit.

Raspberry Pi 2 Model B: Neue CPU und mehr Arbeitsspeicher

Der neue Raspberry Pi 2 Model B ist sechs Mal schneller als der Pi 1 Model B+. Möglich macht das der neue System-on-Chip (SoC) BCM2836 mit einem mit 900 MHz getakteten Vierkern-Prozessor ARM Cortex-A7, der das SoC Broadcom BCM2835 mit seinem Ein-Kern-Prozessor 700MHz ARM11 auf dem Pi 1 ersetzt. Der neue Prozessor des Pi 2 kann zudem auf doppelt so viel Arbeitsspeicher als bisher beim P1 zugreifen, nämlich auf 1 GB LPDDR2 SDRAM. Der Broadcom VideoCore IV-Grafik-Prozessor kann auch 1080p-Videos rendern. Es soll auf dem Pi 2 sogar möglich sein 3D-Spiele zu spielen, sofern sie nicht zu leistungshungrig sein. Der Grafikprozessor unterstützt hierfür OpenGL ES 2.0.

Bei der übrigen Ausstattung des Pi 2 ändert sich nichts gegenüber dem Model B+: Vier USB-Ports, ein HDMI-Ausgang, ein Ethernet-Anschlus, microSD-Slot und GPIO-Pins. Die Entwickler versprechen trotz der deutlichen Hardware-Verbesserungen volle Abwärtskompatibilität. Somit lässt sich das bisherige Zubehör für den Pi 1 auch für den Pi 2 verwenden. Für Bastler ist das ein entscheidender Vorteil.

Programme

Raspberry Pi A

Raspberry Pi B+

Raspberry Pi 2 B

SoC

Broadcom BCM2835

Broadcom BCM2835

Broadcom BCM2836

CPU

ARM1176JZF-S

ARM1176JZF-S

ARM Cortex-A7

Kerne

1

1

4

Takt

700 MHz

700 MHz

900 MHz

GPU

Broadcom Dual Core VideoCore IV

Broadcom Dual Core VideoCore IV

Broadcom Dual Core VideoCore IV

RAM

256

512

1024

GPIO-Pins

17

26

26

Kartenleser

SD-Card

Micro-SD-Card

Micro-SD-Card

(PC-Welt/ad)