Windows XP auf Compact Flash

Voraussetzungen  Vorgehensweise  EWF  Removable Medium  Mein Internet Server  

Windows XP auf einer Compact Flash Karte zu installieren ist nicht ganz einfach. Die Installation kann sehr viel Zeit kosten, und man kann auch einiges falsch machen.

Mit diesem Beitrag möchte ich schildern, wie es gemacht wird. Das Ergebnis ist ein kompaktes System, welches schnell bootet. Vielleicht hilft es dem einen oder anderen, Zeit zu sparen.

Ich habe dieses System wie weiter unten beschrieben auf einem Mini-ITX Board (VIA M10000) mit einer Noname 2GB CF-Karte als primäre IDE 'Festplatte' konfiguriert.

An dieser Stelle sei erwähnt, daß ich die hier beschriebene Software natürlich nicht zur Verfügung stellen kann, sondern nur beschreiben kann, wie man sie verwendet. Jeder ist selbst dafür verantwortlich, nur legale Software einzusetzen!

Wenn ich hier mit meinen Beschreibungen jemandem die Zeit stehle, dann kann man diese Beschreibung auch verlassen.

Warnung


Es kann passieren, dass nach der Installation einige Module von Windows XP nicht mehr so funktionieren, wie man es sich vorstellt. Das liegt daran, dass einige CF-Karten vom Betriebssystem nur als 'Removable Medium' erkannt werden. Wie ich das Bit umgekippt habe, wird weiter unten beschrieben.

An dieser Stelle möchte ich darauf hinweisen, dass ich keinerlei Verantwortung dafür übernehme, wenn durch die hier beschriebene Vorgehensweise Schaden entstehen sollte. Diese Beschreibung sollte nur als eine Erleichterung bei der Installation eines solchen Systems angesehen werden und von jedem selbst in eigener Verantwortung ausgeführt werden.


Voraussetzungen


  • Windows XP oder Windows XP Embedded mit Lizenz (am besten das I386 Verzeichnis auf CD oder USB-Stick)
  • Ein IDE auf CF Kartenadapter (gibt es für ca. 10€ bei den Auktionshäsusern oder in Elektronikshops). Ich habe sogar einmal einen mit Slotblech aus Hongkong inkl.(!) Versand für 4,98€ bestellt. Der war nach 5 Tagen da, Respekt!
  • Eine CF Karte. Ich empfehle mindestens 2GB, dann gibt es keinen Platzärger am Anfang.
  • Ich habe eine Markenkarte und auch eine Noname-Karte benutzt, beide funktionierten einwandfrei. Es sollte nur darauf geachtet werde, daß die Karte so schnell wie möglich ist. Ab 20Mbit/s macht es Spass.
  • Nur zur Info: Mein verwendetes Mainboard ist ein VIA EPIA M-10000. Ich wollte ein kleines und leises aber trotzdem performantes System.
  • EWF sollte installiert werden. Was das ist und wie das geht steht weiter unten.

Vorgehensweise


  • IDE auf CF Adapter als Master an den IDE Port anschliessen. Karte einstecken.
  • CD-ROM Laufwerk oder USB-Stick anschliessen und dafür sorgen, daß davon gebootet und installiert werden kann.
  • Windwos auf CF Karte installieren. Bei Nachfragen nach Partitionen 'NTFS' wählen. Partition 'neu erstellen' wählen und auch mit NTFS formatieren.
  • Die Installation kann schon recht lange dauern, also bitte Zeit einplanen. Nach der Installation das System zur Überprüfung hoch- und runterfahren lassen. Achtung: Dies dauert! Das Betriebssystem legt gleich die Auslagerungsdatei an und die kann groß werden! Bei meinen ersten Versuchen dachte ich, daß sich das System aufgehängt hat, ist aber nicht so.
  • Im Allgemeinen geht man genau so vor, wie bei einer Installation auf Festplatte.
  • Das System sollte minimal installiert werden, also erstmal ohne zusätzliche Treiber, nur das zum booten notwendigste.
  • Eine andere Möglichkeit besteht auch darin, erstmal die ganze Installation auf eine Festplatte zu machen, davon dann ein Image zu erstellen und dann das Image auf CF Karte zurückzuspielen.
Nach der Installation des Betriebssystems geht es ans Optimieren, das ist wichtig, damit die CF Karte nicht zerstört wird. Sie hat nämlich (im Gegensatzt zu einer Harddisk) eine wesentlich geringere MTBF, soll heißen, die hohe Anzahl an Schreibzyklen auf dem Medium (gerade für SWAP) können die Karte wesentlich eher unbrauchbar machen!
Für die Installation und mehrmaliges Hoch- bzw. Runterfahren stellt das erstmal kein Problem dar.

Man erlaubt dem System damit einfach nicht mehr, auf das Medium zu schreiben bzw. die Schreibvorgänge nur dann vorzunehmen, wenn man es selbst zuläßt. Dazu gibt es das im Windows XP Embedded Paket enthaltenen Tool EWF. Später kann noch das Winlogon optimiert werden und die Auslagerungsdatei abgeschaltet werden.



EWF


EWF bedeutet Enhanced Write Filter und ist für Windows XP Embedded konzipert, läßt sich aber auch für Windows XP einsetzen. Die Schreibzugriffe werden von der Festplatte in den Hauptspeicher umgeleitet.
Um EWF zu installieren bzw. zu aktivieren werden folgende Dateien benötigt:
  • ewf.sys
  • ewfmgr.exe
  • ewfntldr
  • minlogon.exe
Diese Dateien sind Bestandteil einer Window XP Embedded Lizenz. Man kann sich bei Microsoft eine 120 Tage gültige Embedded Lizenz downloaden. Die andere Möglichkeit ist, man lädt das XP Embedded SP2 Feature Pack 2007 bei Microsoft runter. Im XPEFP2007.EXE Archiv sind im Unterverzeichnis 'rep' die neusten EWF-Dateien.

EWF installieren.
  • Als Erstes sollte die Pagefile deaktiviert werden. Windows -> Start -> Einstellungen -> Systemsteuerung -> System -> Erweitert -> Systemleistung -> Erweitert
    Die Auslagerungsdatei auf 0 setzen (keine Auslagerungsdatei).
  • Die Systemwiederherstellung deaktivieren. Im gleichen Reiter bei 'Starten und Wiederherstellen' die Systemwiederherstellung disablen.
Es gibt einen Bug der dafür sorgt, daß man vorm Booten mit EWF immer die Systemwiederherstellungsoption angezeigt bekommt. Dies kann man verhindern, indem man die datei 'Windows\bootstat.dat' löscht. Nun geht es an die Dateien...
  • Die Datei ntldr auf der Bootdisk in ntldr.bak oder ähnlich umbenennen.
  • Die Datei ewfntldr auf die Bootdisk kopieren und in ntldr umbenennen.
  • Die Datei ewfmgr.exe nach Windows\System32 kopieren.
  • Die Datei ewf.sys nach Windows\System32\Drivers kopieren.
  • Jetzt muss eine Textdatei mit Namen 'ewf.reg' erzeugt werden (am besten mit Notepad)
  • Dort sollte das unten stehende eingefügt werden. Danach die Datei abspeichern.

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction]
    "Enable"="N"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayout]
    "EnableAutoLayout"=dword:00000000

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
    "NtfsDisableLastAccessUpdate"=dword:00000001

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory
    Management\PrefetchParameters]
    "EnablePrefetcher"=dword:00000000
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager]
    BootExecute=""

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF]
    "NextInstance"=dword:00000001

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF0]
    "Service"="EWF"
    "Legacy"=dword:00000001
    "ConfigFlags"=dword:00000020
    "Class"="LegacyDriver"
    "ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
    "DeviceDesc"="EWF"
    "Capabilities"=dword:00000000
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF0\Control]
    "ActiveService"="EWF"

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Serviceswf]
    "ErrorControl"=dword:00000001
    "Group"="System Bus Extender"
    "Start"=dword:00000000
    "Type"=dword:00000001
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}]
    "UpperFilters"="Ewf"

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Serviceswf\Parameters\Protected\Volume0]
    "Type"=dword:00000001
    "ArcName"="multi(0)disk(0)rdisk(0)partition(1)"

Besonders der letzte Eintrag ist wichtig, denn der zeigt auf die erste Partition des Volumen geschützt werden soll. Solange hier die CF Karte steht, sollte es keine Probleme geben.

Bevor die oben erzeigte Datei geladen oder ausgeführt wird, müssen wir zulassen, dass der Schlüssel in der Registry geschrieben werden darf.
  • Regedit öffnen.
  • Zu folgendem Schlüssel navigieren:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root.
  • Mit einem Rechtsklick auf 'Root' öffnet sich der Berechtigungsdialog. Dort die Berechtigung auf 'Jeden' stellen (Jeder darf alles).
  • Nun kann die eben erzeugte Reg-Datei mit einem Doppelklick in die Registry eingefügt werden.
  • Die Berechtigung kann an dieser Stelle wieder auf den alten Wert gestzt werden.
  • Reboot
Nachdem das System durchbegootet ist, sollten die EWF Einstellungen überprüft werden. Dazu -und zum Steuern von EWF- gibt es einige Komandozeilenbefehle, die es ermöglichen, EWF zu kontrollieren.

Eine Konsole öffnen mit Windows -> Ausführen -> cmd
  • ewfmgr.exe c: -commit
    (alle Puffer werden auf das Volume geschrieben)
  • ewfmgr.exe c: -commitanddisable –live
    (EWF wird sofort disabled und alle Puffer werden auf das Volume geschrieben)
  • ewfmgr.exe c: -enable
    (EWF wird beim nächsten Booten eingeschaltet)
  • ewfmgr.exe c: zeigt den momenmtanen Status von EWF

    Statusinformationen des EWF erzeugt mit 'ewfmgr.exe c:'
    Protected Volume Configuration
    Type RAM (REG)
    State ENABLED
    Boot Command NO_CMD
    Param1 0
    Param2 0
    Volume ID 87 0B 88 0B 00 7E 00 00 00 00 00 00 00 00 00 00
    Device Name "\Device\HarddiskVolume1" [C:]
    Max Levels 1
    Clump Size 512
    Current Level 1

    Memory used for data 1294336 bytes
    Memory used for mapping 4096 bytes
Bei allen oben angegebenen Werten (z.B. 'ewfmgr.exe c:') ist c: natürlich das Laufwerk C: gemeint. Hier muss das Laufwerk stehen, auf dem EWF installiert ist.



Removable Medium


Einige CF-Karten werden vom Betriebssystem nur als 'Removable Medium' erkannt. Es ist nur ein Bit, welches umgekippt werden muß. Einige Speicherhersteller haben dies bereits getan und man hat keinen Ärger damit. Leider wird dies nicht von allen Herstellern so konsequent umgesetzt. So gibt es bei einigen Herstellern Tools, die dies ermöglichen, die aber wieder in die alte Zeit des DOS zurückführen...

Da muss man dann plötzlich eine DOS Bootdiskette erstellen um das Herstellertool auszuführen! Dabei wird einem erst richtig bewusst, dass das garnicht mehr so leicht geht, denn erstmal muss man noch ein 3,5 Floppy Laufwerk haben, dann Disketten und dann natürlich das wichtigste, das Betriebssystem DOS. Es wird immer die Version 6.22 empfohlen. Früher habe ich immer bootfähige Disketten dieser Art dabei gehabt um 'mal eben schnell ein System zum Laufen zu bekommen'. So ging es warscheinlich vielen. Nur, wer hat das heute noch ?
Es dauert eine ganze Zeit, bis man die Floppy, Disketten und eine DOS, welches bootet, zusammen hat. Ich habe mehrere verschiedene CF Karten ausprobiert und bin bislang bei allen verwendeten ohne diese DOS Tools ausgekommen, weil ich einen anderen Weg beschritten habe.

Es gibt einen Treiber, der ursprünglich für ein Microdrive geschrieben wurde, der aber in der von mir getesteten Art auch für CF Karten funktioniert. Nach der Installation erkennt XP plötzlich die CF Karte als 'Lokalen Datenträger' und meint, es wäre eine richtige IDE Festplatte im System.
Dieser Treiber heisst XPfildrvr1224 und wird bei entsprechender Suche als XPfildrvr1224.zip auch gefunden.

In diesem Archiv befinden sich die beiden wichtigen Dateien cfadisk.sys und cfadisk.inf. Sie werden in irgend ein Unterverzeichnis kopiert.
Als Erstes muß man sich aber über die Systemsteuerung die Information holen, wie die installierte CF Karte heisst.
  • Systemsteuerung -> Verwaltung -> Computerverwaltung -> Geräte-Manager (Doppelklick).
  • Im rechten Fenster findet man unter 'Laufwerke' die installierte CF Karte mit der Beschreibung. Hier notiert man sich den Namen der Karte oder kopiert den Namen ins Clipboard.

Jetzt geht es in die Registry.
  • Windows -> Start -> Ausführen -> regedit
  • Zu folgendem Eintrag navigieren:
    HKEY_LOCAL_MACHINE -> SYSTEM -> ControlSet001 -> ENUM -> USBSTOR
  • Dort steht der Name der CF Karte (z.B.: ).
    Regedit
  • Diesen Registry-Schlüssel-Eintrag kopieren (rechte Maustaste).

Jetzt wird mit einem Editor (Notepad reicht aus!) die Datei cfadisk.inf editiert.

  • In dem Eintrag [cfadisk_device] stehen 8 mal fast identische Einträge. Wir benötigen nur 1 davon, also 7 Einträge davon löschen.
  • Im übrig gebliebenen Eintrag [cfadisk_device] stehen 8 mal fast identische Einträge. Wir benötigen nur 1 davon, also 7 Einträge davon löschen.
  • Ein Eintrag bleibt über und sieht so aus :
    %Microdrive_devdesc% = cfadisk_install,IDE\DiskIBM-DSCM-11000___________SC2IC801
    Das Fettgedruckte wird jetzt gelöscht und durch den kopierten Registry-Eintrag ersetzt.
  • Wir benötigen nicht den ganzen Registryeintrag (HKEY_LOCAL_MACHINE usw.), deswegen alles bis 'USBSTOR\Disk&Ven..' löschen
  • Somit sollte der Eintrag so (oder ähnlich, je nach verwendeter CF Karte) aussehen:
    %Microdrive_devdesc% = cfadisk_install,USBSTOR\Disk&Ven.....
  • Jetzt die Datei cfadisk.inf abgespeichern.

Jetzt müssen wir Windows sagen, daß die CF Karte einen neuen Treiber benötigt.

  • Windows -> Start -> Einstellungen -> Systemsteuerung -> Verwaltung -> Compterverwaltung -> Gerätemanager
  • Im rechten Fenster steht das IDE Laufwerk (also unsere CF Karte). Mit der rechten Maustaste drauf und 'Treiber aktualisieren'.
  • In den darauf folgenden Abfragen geben wir an, er möge nach dem Treiber dort suchen, wo die cfadisk.sys und die cfadisk.inf liegt.
  • Achtung: NICHT Windows nach Treibern suchen lassen ! Wir geben den Ort vor, wo die Treiber liegen und zwar dort, wo wir sie (siehe oben) hinkopiert und editiert haben.
  • Abfragen nach nicht signierten Treibern ignorieren wir und bestätigen mit 'Fortsetzen'.
Nach einem Neustart ist unsere CF Karte nun ein 'Lokaler Datenträger IDE' !

Auf diese Weise soll es möglich sein, auch mehrere Partitionen auf der Karte abzulegen und zu aktivieren. Dies habe ich allerdings aus Zeitmangel noch nicht ausgetestet.




Mein Internet Server


Was soll man nun mit dem oben beschriebenen System auf CF Karte tun? Es gibt sehr viele Möglichkeiten (MP3 Player, Videorecorder, Server, um nur einige zu nennen). Ich habe mich für einen Server entschieden.
Für mich sollten folgende Bedingungen erfüllt sein:
  • immer online sein, dabei aber minimaler Energieverbrauch.
  • keine mechanischen Elemente wie Festplatten oder CD-ROM Drives.
  • so preiswert wie möglich.
  • SQL-Server, FTP-Server und HTTP-Server.
  • Bei allem oben genannten sollte er aber so gut nicht nicht zu hören sein!
    Dies war mir besonders wichtig.
Ich habe eine Weile recherchiert und dann habe ich mir etwas zusammengestellt:
  • VIA EPIA M10000 Mini-ITX gebraucht bei der elektronischen Bucht.
    Das Board hat ALLES dabei, was man benötigt. Ledigleich der Speicher fehlt. Ich habe 1 GB installiert, mehr geht nicht, hier sollte man sicher nicht sparen.
  • Da ich Wert auf ein extrem leises System gelegt habe, kam nur das Pico PSU in Frage. Es erzeugt alle Spannungen, die ein ATX Board benötigt, braucht nur noch eine Eingangsspannung von 12V, ist sehr klein (so gross wie der Powerstecker auf dem Mainboard) und besitzt auf Grund seiner Technologie keinen Lüfter.
  • Ein externes 12V Netzteil (hier tut es auch ein preiswertes Netzteil).
  • Als Bootmedium und somit erste Festplatte kommt eine CF Karte -wie oben beschrieben- zum Einsatz.
  • Als zweite Festplatte kommt auch eine CF Karte zum Einsatz, nur mit wesentlich mehr Speicher.
  • Das Betriebssystem ist XP (siehe oben).
  • Apache ist bei mir der SQL-Server und der FTP-Server.
  • Das Ganze Paket habe ich aus einer Xampp Distribution (Danke an die Entwickler an dieser Stelle !).
  • Der Server hängt hinter meiner Fritz-Box, die über DSL mit der Welt verbunden ist.
  • Die FritzBox lässt HTTP Requests durch und gibt sie übers lokale Heimnetz an den Server weiter.
  • Über DynDNS holt sich die Fritzbox und der Server nach jeder Zwangstrennung immer die neue IP. Somit ist der Server immer online und von überall erreichbar.
Das Beste an der ganzen Sache ist, das der kleine Server wirklich performant ist. Man merkt kaum, dass es so eine kleine Maschine ist. Aber das Allerbeste ist der Energieverbrauch !
Er braucht beim Booten 24Watt und wenn er normal läuft und auf ihn zugegriffen wird, dann reduziert sich die Leistungsaufnahme auf 18Watt ! Damit war klar, dass er die ganze Zeit laufen kann.

Der mitgelieferte Lüfter nervte mich dann aber doch noch zu sehr. Ich habe ihn gegen einen Papst ausgetauscht. Des Weiteren habe ich den Lüfter noch weiter ausgebremst, indem ich ihm einen 220Ohm Vorwiderstand verpasst habe.

Jetzt ist das System so leise, dass man so gut wie nichts mehr hört. Das ist richtig ungewohnt. So kam es dann auch vor, dass ich mehrmals den Powerknopf betätigt habe, weil ich nichts gehört habe und ich es gewohnt war, dass ein PC beim Einschalten Geräusche von sich gibt.

Die Gehäusepreise für Mini-ITX Systeme sind nach meinem Dafürhalten extrem überteuert. Das Geld wollte ich nicht ausgeben. Deswegen habe ich den Server ehefrauenkompatibel in die unterste Schublade unseres Besteckschrankes eingebaut... So sieht mein Serverschrank aus:

Wer verständlicherweise ungläubig ist, dem sei mit diesen Bildern der Glaube an ein harmonisches Zusammenleben von Technik und Ehefrauen ein neuer Hoffnungsschimmer gegeben!

Freunde der Technik: die Rettung ist da !
Der komplette HTTP-SQL-FTP-Server inkl. Netzteil in einer Schublade.

Wenn nun Oma, Opa und Tante am Sonntagnachmittag zum Kaffee und Kuchen erscheinen, dann hat man nun eindeutig die Chance, sich als Mann in Sachen Hausarbeit zu profilieren.

Mit dieser Lösung ist man gerne bereit, das Besteck zu holen, da man so die Chance hat, nach dem Server zu sehen! Oder man wechselt schnell -quasi auf dem Weg zum Besteckschrank und zurück- von Windows XP auf Linux! Der Wechsel ist nämlich in 5 Sekunden vollzogen: 'Festplatte' raus, neue 'Festplatte rein' fertig!


Und hier noch ein Blick auf die 'Festplatte'