Startseite>Windows 10 für den RasPi 2 unter Linux vorbereiten
Aus Raspberry Pi Geek 06/2015

Windows 10 für den RasPi 2 unter Linux vorbereiten

© Amanaimages Inc., 123RF

Über Bande

Dr. Udo Seidel

Auch wer auf seinen Rechnern ausschließlich Linux einsetzt, kann für seinen RasPi eine SD-Karte mit Windows 10 IoT vorbereiten. Das gelingt allerdings nur über Umwege.

Der neue RasPi 2 [1] bringt nicht nur eine erheblich bessere Leistung als sein Vorgänger, sondern arbeitet dank der ARM-Cortex-A7-CPU jetzt auch zu ARMv7 kompatibel. Dieses kleine, aber wichtige Detail öffnet vielen Projekten die Möglichkeit, ihre Distributionen auf den neuen RasPi anzupassen. Neben Ubuntu zählt dazu auch das große Unternehmen aus Redmond, das inzwischen eine angepasste Windows-10-Version für den Mini-PC bereitstellt [2]. Zugegeben, es handelt sich dabei nicht um die Desktop-Version – dafür reicht die Leistung des ARM-Zwergs immer noch nicht aus. Doch die Hinweisschilder zeigen ohnehin in eine andere Richtung: Microsofts Ziel ist offensichtlich [3] das sogenannte Internet der Dinge (“Internet of Things”, IoT).

Das Transferieren des Microsoft-Betriebssystems auf die SD-Karte des RasPi setzt idealerweise voraus, dass man einen Rechner mit Windows 10 und einem entsprechenden Laufwerk besitzt – in der Linux-Welt ist das aber nicht immer gegeben. Abgesehen davon steht das notwendige Windows auch erst seit Ende Juli 2015 zur Verfügung. Der folgende Artikel zeigt, wie Sie diese Herausforderung recht einfach mithilfe von KVM auch unter Linux meistern.

KVM-Falle

Bereits seit einiger Zeit experimentiert der Autor dieses Artikels mit Vorabversionen von Windows 10 in virtuellen KVM-Maschinen. Möglich machte das das Windows-Insider-Programm [4], das jedem Nutzer nach Anmeldung offensteht. Neue Builds verteilte Microsoft zunächst nur über die Online-Aktualisierung, später stellte das Unternehmen den Insider-Nutzern auch ISO-Abbilder für eine frische Neuinstallation bereit.

Die Build-Version der Reihen 8XXX und 9XXX liefen ohne Probleme. Ab 10XXX startete das Betriebssystem mit der Begründung System Thread Exception Not Handled nicht mehr (Abbildung 1). Dabei spielte es keine Rolle, ob es sich um eine frische Installation oder ein Upgrade handelte. Recherchen im Internet ergaben, dass viele Benutzer das Schicksal teilten und dass es wohl keine Lösung für das Problem gab. Auch die nächste Build-Version vermochte nicht, den Fehler zu beheben – genauso wenig wie das finale Release.

Abbildung 1: Windows 10 verweigert den Start unter KVM – verantwortlich dafür zeichnet eine inkompatible CPU-Einstellung des Gastsystems.

Abbildung 1: Windows 10 verweigert den Start unter KVM – verantwortlich dafür zeichnet eine inkompatible CPU-Einstellung des Gastsystems.

Eine erneute Recherche brachte letztendlich Licht ins Dunkel: Das Geheimnis liegt in der Konfiguration der virtuellen CPU des Gastes. Das Umstellen auf die Option core2duo führte schließlich zum Erfolg. Den entsprechenden Abschnitt der Definition zeigt Listing 1.

Listing 1

 

...
 <cpu mode='custom' match='exact'>
  <model fallback='allow'>core2duo</model>
 </cpu>
...

Technisch versierte Anwender benötigen nicht zwingend Windows 10, um eine SD-Karte für den RasPi mit Windows 10 IoT vorzubereiten. Ein Foreneintrag [5] auf der Webseite der Raspberry Pi Foundation beschreibt die Vorgehensweise beim Nutzen von Windows 7. Im Wesentlichen kommen aber auch dabei Werkzeuge von Windows 10 zum Einsatz.

Welche SD-Karte?

Nach dem Einrichten von Windows 10 in der virtuellen Maschine erfolgt entsprechend der Win-10-IoT-Dokumentation [6] das Installieren von Visual Studio 2015. Da das weitgehend selbsterklärend abläuft, verzichten wir an dieser Stelle auf eine ausführliche Beschreibung. Die Situation ändert sich aber, wenn das Programm IoTCoreImageHelper zum Einsatz kommt: Ohne entsprechende Vorbereitungen sucht es nämlich vergeblich nach einem Lesegerät für SD-Karten mit eingeschobenem Datenträger. Drei Möglichkeiten stehen zur Verfügung, um von hier aus weiterzumachen.

Der Autor installierte zunächst ein entsprechendes Lesegerät auf dem KVM-Host und reichte es an den Gast durch. Diese Bemühungen waren jedoch nicht von Erfolg gekrönt, erfolglos kamen verschiedene Geräte und KVM-Einstellungen zum Einsatz. Eine zweite Option wäre das Verwenden von SPICE [7]. Dieses Protokoll erlaubt das Durchschleifen eines lokalen USB-Geräts an den KVM-Gast. Das erfordert aber auch Eingriffe auf der Windows-Seite, die sich nach Erfahrung des Autors nicht immer einfach gestalten.

Die dritte und letztlich zum Erfolg führende Möglichkeit basierte auf der Überlegung, dass sowohl Linux als auch Windows SD-Karten letztlich als Wechseldatenträger behandelt. Es besteht entsprechend kein Unterschied zu einem USB-Stick oder einer externen Festplatte. Wie Listing 2 zeigt, geht das Hinzufügen und Verwalten einer USB-Festplatte für einen KVM-Gast leicht von der Hand. Statt des SD-Lesegeräts installieren Sie also einfach eine zweite “Festplatte” für den KVM-Gast. Die entsprechende Datei erzeugen Sie mit dem Kommandozeilenaufruf qemu-img create usbdisk.windows.iot.img 16g im entsprechenden Verzeichnis.

Listing 2

 

# virsh dumpxml wintest
...
 <devices>
...
  <disk type='file' device='disk'>
   <driver name='qemu' type='raw'/>
   <source file='/virtual/storagepool/usbdisk.windows.iot.img'/>
   <target dev='hdd' bus='ide'/>
   <address type='drive' controller='0' bus='1' target='0' unit='1'/>
  </disk>
  <controller type='ide' index='0'>
...
#

Die GUI von IoTCoreImageHelper weiß zwar nichts mit dem neuen Datenträger anzufangen, aber auf der Kommandozeile lässt er sich sehr wohl benutzen. Die entscheidenden Hinweise lieferten die Online-Hilfe von dism.exe (“Deployment Image Servicing and Management”) sowie ein Blog-Eintrag [8]. In den Labortests der Redaktion fiel auf, dass das System zwei verschiedene Versionen des Werkzeugs Dism mitbringt. Die für unsere Zwecke passende Variante gehört zur IoT-Software-Suite und befindet sich bei einer Standard-Windows-Installation im Verzeichnis für 32-Bit-Programme unter Microsoft IoT\Dism\.

Um Dism zu verwenden, öffnen Sie einen DOS-Prompt mit administrativen Rechten und navigieren in das Verzeichnis, das die Datei flash.ffu enthält. In der Standardeinstellung befindet sich dieses im Unterverzeichnis Microsoft IoT\FFU\RaspberryPi2\ der 32-Bit-Programme (Abbildung 2). Von dort aus starten Sie das Dism-Werkzeug mit den entsprechenden Optionen, um das Abbild auf die entsprechende USB-Festplatte des KVM-Gastes zu schreiben.

Abbildung 2: Das Kommandozeilenprogramm Dism erlaubt es, das Abbild quasi auf beliebige Datenträger zu schreiben.

Abbildung 2: Das Kommandozeilenprogramm Dism erlaubt es, das Abbild quasi auf beliebige Datenträger zu schreiben.

Auf der Zielgeraden

Die letzten Handgriffe, um eine voll funktionsfähige SD-Karte zu erhalten, gestalten sich vergleichsweise simpel: Sie müssen nur noch die Informationen der virtuellen USB-Festplatte des KVM-Gastes auf eine SD-Karte schreiben. Einfachste Linux-Bordmittel wie Dd eignen sich dafür bestens, es gibt keine weiteren Fallstricke zu beachten. Nach dem Beschreiben der SD-Karte stecken Sie diese in den Raspberry Pi und folgen den Anweisungen der Win-10-IoT-Dokumentation. Zusammengefasst gibt es in der vorgestellten Kombination nur zwei wichtige Dinge zu beachten: die richtige CPU-Einstellung im Gast der KVM und das Verwenden eines virtuellen Datenträgers statt der SD-Karte für das Kopieren der Abbilddatei. Das muss man allerdings erst einmal herausfinden – Microsoft bietet hier keinerlei Hilfestellung. 

Der Autor

Dr. Udo Seidel, eigentlich Mathematik- und Physik-Lehrer, ist seit 1996 Linux-Fan. Nach seiner Promotion arbeitete er als Linux- und Unix-Trainer, Systemadministrator und Senior Solution Engineer. Derzeit ist er als Digitaler Evangelist und Chefarchitekt bei der Amadeus Data Processing GmbH in Erding tätig.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland