XP-Stick
Transcrição
XP-Stick
ct.0206.188-193 21.12.2005 17:26 Uhr ©Seite 188 Praxis | Windows XP Axel Vahldiek XP-Stick Windows XP von USB-Laufwerken booten Seit USB-Sticks ausreichend groß und USB-Festplatten ausreichend preiswert sind, wächst der Wunsch, Windows XP von solchen Laufwerken zu booten. Das hat Microsoft zwar nicht vorgesehen, doch mit den richtigen Handgriffen lässt sich der Wunsch erfüllen. D as eigene Windows XP auf einem USB-Laufwerk mit sich herumtragen und an jedem beliebigen Rechner booten können – ein verbreiteter Wunsch. Doch der Umsetzung liegen Stolpersteine im Weg: Erstens vermögen ohnehin nur moderne Rechner von USBSpeichermedien zu booten und zweitens hat Microsoft das Booten von USB bei Windows XP nicht vorgesehen. Das Nachfolgende beschreibt, wie sich überprüfen lässt, ob ein PC überhaupt zum Booten von USB in der Lage ist sowie die nötigen Handgriffe, damit Windows XP das an eben diesem Rechner macht. Abschließend beschreiben wir, wie das auf dem USBLaufwerk installierte XP dazu zu überreden ist, auch von anderen 188 Rechnern zu booten als von dem, auf dem es eingerichtet wurde. Idee und wertvolle Hinweise zu diesem Artikel lieferten übrigens unabhängig voneinander unsere Leser Dietmar Stölting und Christian Kauffmann, an beide vielen Dank dafür! Platte machen Um herauszufinden, ob ein PC überhaupt von USB booten kann, muss zuerst ein passend vorbereitetes USB-Laufwerk her. Wichtigstes Merkmal: Dessen Größe, denn selbst ein abgespecktes Notfall-XP braucht mindestens 1 GByte Platz, sollen auch noch Programme dazu, belegt XP schnell ein Vielfaches an Platz. Windows und BIOS behandeln übrigens USB-Sticks und Festplatte völlig gleich. Für erste Gehversuche ist es daher im Grunde egal, womit Sie anfangen. Allerdings spricht einiges dafür, auf Dauer besser eine USB-Festplatte zu verwenden (siehe Kasten auf Seite 190). Für das Booten ist jedoch nur wichtig, dass das Laufwerk wie eine IDE-Festplatte eingerichtet ist, also unter anderem über einen Master Boot Record (MBR) sowie eine Partitionstabelle verfügt. Bei USB-Festplatten ist das normalerweise von vornherein so. Viele USB-Sticks allerdings sind stattdessen als Superfloppy formatiert, also wie eine große Diskette ohne Partitionstabelle. Der Kasten auf Seite 189 schildert, wie Sie das ändern. USB-Festplatten können Sie einfach mit der XP-eigenen Computerverwaltung partitionieren und formatieren: einfach die enthaltenen Partitionen löschen und eine neue primäre NTFS-Partition einrichten. Dabei schreibt XP auch den später benötigten Bootcode auf die Platte. Achten Sie anschließend darauf, dass diese Partition aktiv ist (einzurichten im Kontext-Menü der Partition). Vergeben Sie einen aussagekräftigen Namen wie XPBOOT. Es dürfte kein Problem darstellen, wenn auf der USB-Platte weitere Partitionen liegen, erfahrungsgemäß sollten das aber keinesfalls weitere primäre sein. Anschließend sind noch einige Dateien in die frisch erstellte Partition auf dem USB-Laufwerk zu kopieren, die auf Laufwerk C: der internen Festplatte zu finden sind. Schicken Sie einfach alle dort liegenden Dateien (nicht die Ordner) am bequemsten via „Senden an …“ zum USB-Laufwerk. Damit kommen Sie beim Testen immerhin bis zum XPBootmenü, was für eine sichere Beurteilung der Boot-Fähigkeiten des PC ausreicht [1]. Damit das Bootmenü auch wirklich erscheint, müssen in der Boot.ini auf dem USB-Laufwerk nach „[operating systems]“ mindestens zwei Zeilen folgen. Existiert nur eine, können Sie die einfach duplizieren. Das ergibt zwar keinen funktionsfähigen Aufruf im XP-Bootmenü, doch macht das nichts, denn Ziel ist ja erst mal nur ein Test der Boot-Funktion. Außerdem empfiehlt es sich schon hier, in einer der Zeilen den zwischen den Anführungsstrichen stehenden Namen des zu startenden Betriebssystems zu ändern, zum Beispiel in „USBXP“, damit Sie später immer sicher sein können, welchen Eintrag Sie gerade testen. Gefunden! Nun kann der erste Versuch erfolgen, den Rechner vom angestöpselten USB-Laufwerk zu starten. Am einfachsten geht das, wenn das BIOS ein Bootmenü anbietet. Das lässt sich üblicherweise durch das Drücken einer bestimmten Taste erreichen, welche genau, unterscheidet sich je nach Rechner, oft Esc, F5, F9 oder F12. Achten Sie auf die Textausgabe des BIOS, die sich üblicherweise durch das Drücken der Taste „Pause“ anhalten lässt, falls der Text zu schnell durchscrollt. Eventuell ist auch zuvor noch ein Bootscreen des BIOS oder die Option „Fast Boot“ zu deaktivieren. Taucht im BIOS-Bootmenü irgendwas mit „USB“ oder „Removable Devices“ auf, lohnt das Ausprobieren. Existiert kein (passender) Eintrag, hilft vielleicht ein Blick ins BIOS-Setup. Bei der Bootreihenfolge lässt sich hoffentlich „USB-Festplatte“, „USB-HDD“ oder Ähnliches einstellen, eventuell taucht auch die Bezeichnung des Datenträgers auf (die können Sie im Gerätemanager unter „Laufwerke“ auslesen). Mitunter ist bei der Bootreihenfolge nur allgemein „Festplatte“ oder „HDD“ einzustellen, dafür lässt sich dann unter einem Extra-Menüpunkt die Reihenfolge einstellen, in der das BIOS die vorhandenen Festplatten nach bootfähigen Systemen durchsucht. Und hier taucht hoffentlich das vor dem Einschalten des PC eingestöpselte USBLaufwerk auf. Eher unwahrscheinlich, doch nicht unmöglich ist, dass der PC vom USB-Gerät bootet, wenn in der Boot-Reihenfolge USB-Floppy, -CD oder -ZIP-Laufwerk an erster Stelle steht. Hilft auch das nicht, bleibt nur die Suche nach einem BIOS-Update. Scheuen Sie sich nicht, den Hersteller explizit darum zu bitten. Doch wenn selbst das nichts bringt, klappt das Booten von USB an diesem Rechner schlicht nicht. Falls der Rechner tatsächlich von USB startet, sollte nach kurzer Zeit das XP-Bootmenü auftauchen, inklusive des Eintrags „USB-Laufwerk“. Nach dreißig c’t 2006, Heft 2 © Copyright by Heise Zeitschriften Verlag GmbH & Co. KG. Veröffentlichung und Vervielfältigung nur mit Genehmigung des Heise Zeitschriften Verlags. ct.0206.188-193 21.12.2005 17:26 Uhr ©Seite 189 Praxis | Windows XP Sekunden verschwindet das XPBootmenü wieder und der Rechner dürfte mit einer Fehlermeldung stehen bleiben, weil er kein Betriebssystem findet – wie auch, es ist ja noch keines auf dem USB-Laufwerk. XP vorbereiten Um XP auf das USB-Laufwerk zu bekommen, ist glücklicherweise keine Neuinstallation nötig. Kopieren Sie stattdessen alle Ordner des auf der internen Festplatte installierten XP auf das USB-Laufwerk. Dazu gehören außer dem Windows-Ordner selbst zumindest die Verzeichnisse „Programme“ und „Dokumente und Einstellungen“. Falls der Platz auf dem USB-Laufwerk keine Komplett-Kopie der Ordner erlaubt, können Sie sie vorher abspecken, etwa mit der Datenträgerbereinigung (weitere Diät-Tipps für Windows finden Sie in [2]). Auf welcher Partition das XP auf der internen Platte liegt, ist egal, dazu später mehr. Vor dem Kopieren sollten Sie in der Systemsteuerung unter „System/Erweitert/Einstellungen von Starten und Wiederherstellen“ noch das Häkchen vor „Automatisch Neustart durchführen“ entfernen. Möglicherweise geht ja beim Booten von USB etwas schief, und dann produziert XP einen Bluescreen mit nützlichen Informationen. Da XP im Grundzustand aber sofort den Rechner neu startet, bleibt Ihnen keine Zeit zur Beweisaufnahme. Windows XP lässt sich im laufenden Betrieb nicht komplett kopieren, denn es verweigert unter anderem das Vervielfältigen der geöffneten Registry. Abhilfe schafft das Starten eines parallel installierten Betriebssystems oder das Booten eines von CD laufenden Systems wie Barts PE (zuletzt auf der CD der c’t 23/05). Von dort aus lässt sich bequem der Inhalt der WindowsPartition auf das USB-Laufwerk kopieren. Nun ist noch auf dem USB-Laufwerk erneut die Boot.ini anzupassen. Unterhalb von „[operating systems]“ muss folgende Zeile stehen: multi(0)disk(0)rdisk(0)partition(1)\WINDO WS="USB-XP" Das einzige, was Sie anpassen dürfen, ist wieder der Text in Anführungsstrichen, den Sie frei wählen können. Unter diesem taucht das zu bootende XP später im Bootmenü auf, sofern unter „[operating systems]“ noch weitere Zeilen stehen (sonst startet XP sofort durch). Treiberscherereien Eigentlich könnte XP nun von USB booten – doch wer es versucht, bekommt zwar kurz das XP-Startlogo zu sehen, dann jedoch spuckt XP einen Bluescreen mit der Fehlernummer 0x0000007B aus. Während des Bootvorgangs nutzt XP zuerst die BIOS-Funktionen für den Zugriff auf die Laufwerke, schaltet aber später auf die eigenen Treiber um, in diesem Fall eben die USB-Treiber. Die sind jedoch noch gar nicht geladen, was XP mit dem Bluescreen quittiert. Also muss man Windows anweisen, die Treiber früher zu laden. Wann Windows welche Treiber lädt, legen einige Parameter in der Registry fest. Das Ändern dieser Reihenfolge ist allerdings nicht ganz trivial, denn es gilt, die Registry von einem anderen Windows aus zu ändern. Starten Sie das XP von der internen Festplatte und darunter Regedit, wo der Wurzelschlüssel „HKEY_ LOCAL_MACHINE“ (HKLM) zu markieren ist. Klicken Sie anschließend in der Menüleiste unter Datei auf „Struktur laden …“. Sollte der Menüpunkt ausgegraut sein, ist HKLM nicht markiert. In dem sich öffnenden Fenster wechseln Sie zum USBLaufwerk und hangeln sich dort zu Windows\System32\Config durch und öffnen die Datei „System“ (die Datei ohne Endung). Nun fordert Regedit auf, einen Schlüsselnamen zu vergeben. Der ist eigentlich beliebig, doch der Übersichtlichkeit halber empfiehlt sich auch hier etwas wie „USB-Platte“. Zu ändern sind einige Einträge unter HKLM\USB-Platte\ControlSet001\Services (eventuell auch unter ControlSet002 oder einem anderen ControlSet: Welche Nummer zu setzen ist, regelt der DWORD „Default“ unter HKLM\ USB-Platte\Select [3]). Dort finden sich fünf Schlüssel, die sämtliche Parameter für den Start von USBTreibern enthalten, die für den Einsatz von USB-Geräten erforderlich sind. Einer der beiden Schlüssel usbuhci und usbohci enthält die Parameter für die USB-Host-Controller. Allerdings gibt es immer nur einen davon auf einem System: Entweder usbuhci, falls ein „Universal Host Controller“ installiert ist, oder usbohci bei einem „Open Host Controller“. Zusätzlich zu diesem gibt es einen „Enhanced Host Controller“ (usbehci), der die USB-Anschlüsse auf das HiSpeed-Tempo von USB 2.0 bringt. Wann XP die Treiber für die USB-Root-Hubs lädt, hängt von den Parametern unter usbhub ab, und usbstor schließlich ist für die USB-Massenspeicher zuständig. In jedem der maximal fünf Schlüssel existiert ein DWORD namens „Start“ mit dem Wert „3“, der in allen Fällen auf „0“ zu ändern ist. Das weist Windows an, die USB-Treiber bereits beim Booten zu laden und nicht erst später im laufenden Betrieb (weitere Infos enthält Artikel 103000 der Microsoft Knowledge-Base [4]). Das reicht jedoch leider noch nicht. XP teilt alle Treiber zusätzlich in Gruppen ein und lädt die Gruppen der Reihe nach. Die USB-Treiber stecken normalerweise in einer Gruppe namens „Base“, die XP für unsere Zwecke zu spät lädt. In welcher Gruppe ein Treiber steckt, regelt der Wert der Zeichenfolge „Group“, die ebenfalls in den fünf Schlüsseln zu finden ist. Auch sie ist anzupassen: Ersetzen Sie „Base“ durch „System Reserved“ – den Namen der zuerst geladenen Gruppe. Abschließend können Sie den Schlüssel HKLM\USBPlatte markieren und unter Datei die „Struktur entfernen“. Vorsicht, Falle Windows XP bootet jetzt vom USB-Laufwerk – aber nur genau einmal, denn nach dem ersten Start läuft einmalig eine erneute Hardware-Erkennung und währenddessen erkennt XP unter anderem die USB-Festplatte als neue Hardware. Die Folge: Es richtet den Treiber neu ein und verbiegt gerade mühsam veränderte Einträge teilweise wieder zurück, was beim nächsten Start prompt wieder zu einem Bluescreen führt. Vermeiden lässt sich das leider nicht. Selbst wenn Sie dem System den Schreibzugriff auf die entsprechenden Schlüssel verweigern, ändert es die Einträge. Da bleibt nichts übrig, als geduldig erneut die fünf oben genannten Schlüssel gleich nach dem allerersten Start des USB-XP komplett durchzusehen und gegebenenfalls erneut anzupassen. Dazu brauchen Sie immerhin keine Struktur zu laden, sondern können die Registry direkt unter dem vom USB-Gerät gestarteten XP bearbeiten. Anschließend startet es ohne neue HardwareErkennung, sodass diese Anpassung bei weiteren Starts an diesem PC nicht mehr anfällt. USB-Sticks ins HDD-Format umwandeln Statt extra mit Linux nachzuprüfen, ob ein USB-Stick wie fürs Booten von XP erforderlich wie eine Festplatte und nicht als Superfloppy formatiert ist [9], können Sie das kostenlose Tool Hpusbfw.exe von HP bemühen. Das HP-Tool erfordert eine Installation und zum Formatieren des Laufwerks Administrator-Rechte. Nach dem Start zeigt es die angestöpselten USB-Laufwerke an. Wählen Sie als Dateisystem NTFS und vergeben Sie als „Volume label“ einen aussagekräftigen Namen. Beim Formatieren richtet das Programm automatisch alles Nötige ein. Sollte Hpusbfw.exe beim Formatieren scheitern, hilft üblicherweise das Überschreiben des ersten Sektors des USBSticks mit Nullen, etwa mit dem kostenlosen Tiny Hexer von der Heft-CD der c’t 23/05. Wählen Sie bei dem unter „Datei/Datenträger/Datenträger Öffnen“ das USB-Laufwerk aus, das üblicherweise als letztes „\\.\PhysicaldriveX“ auftaucht – beim Identifizieren hilft der Listeneintrag darunter, der direkt nach dem „\\.\“ den Laufwerksbuchstaben enthält. Beim Öffnen können Sie die Vorgaben so lassen, dann öffnet der Tiny Hexer automatisch den richtigen Sektor. Am einfachsten überschreiben Sie nun den kompletten Sektor durch Gedrückthalten der Taste mit der Ziffer 0. Nun noch „Datei/Datenträger/Änderungen schreiben“ aufrufen und das Programm beenden. c’t 2006, Heft 2 © Copyright by Heise Zeitschriften Verlag GmbH & Co. KG. Veröffentlichung und Vervielfältigung nur mit Genehmigung des Heise Zeitschriften Verlags. 189 ct.0206.188-193 21.12.2005 17:26 Uhr ©Seite 190 Praxis | Windows XP Eventuell spuckt Windows allerdings noch eine Fehlermeldung aus, weil es Probleme mit dem Auffinden seiner Auslagerungsdatei auf der internen Platte hat. Damit Ihr USB-XP später autark laufen kann, sollten Sie in der Systemsteuerung unter „System/Erweitert/SystemleistungEinstellungen/Erweitert/Ändern“ die Auslagerungsdatei auf das USB-Medium verschieben. Sämtliche Änderungen übernimmt XP an dieser Stelle übrigens nicht durch Klick auf „OK“. Stattdessen ist jede einzeln via „Festlegen“ zu bestätigen. Wo bin ich? Für den korrekten Betrieb des von USB gestarteten XP ist es erforderlich, dass das USB-Laufwerk nach dem Booten denselben Laufwerksbuchstaben erhält, den auch das von der internen Platte gebootete XP hat. Doch wenn beispielsweise das interne XP auf E: lag und dort eine USB-Platte unter G: zu finden war, dann ist das von USB startende XP später auch erst mal unter G: zu finden. Deshalb zeigen sämtliche Verknüpfungen dieses XP etwa im Startmenü auf die falsche Partition. Es gilt also, den Laufwerksbuchstaben dieses XP nachträglich anzupassen. Je nachdem, auf welcher Partition das Quell-XP liegt, führen unterschiedliche Methoden zur Lösung des Problems. Lag das Quell-XP auf C:, ist die Sache recht einfach: Starten Sie unter dem USB-XP Regedit und löschen Sie den Schlüssel HLKM\ SYSTEM\MountedDevices komplett. Nach einem Neustart sortiert XP alle Laufwerke neu, und das USB-Laufwerk bekommt als Boot-Platte eben den ersten Laufwerksbuchstaben C:. Wenn das Quell-XP weiter hinten lag, ist der Ansatzpunkt zwar der gleiche Schlüssel, allerdings darf er dann nicht gelöscht Stick kontra Festplatte Festplatten speichern Informationen auf rotierenden Magnetscheiben. Zum Auslesen der einzelnen Bits messen hochempfindliche Schreib-/LeseKöpfe die magnetische Polarisierung winziger, genau definierter „Domänen“. Indem sie diese magnetischen Bereiche umpolen, schreiben die Köpfe Daten auf die Scheibe(n). Die Polarisierung der magnetischen Domänen ist grundsätzlich beliebig oft umkehrbar. Die Lebensdauer von Festplatten ist dennoch begrenzt: Staub oder Abrieb schädigen die magnetische Oberfläche und die Lager des Plattenstapels verschleißen. Stöße, starke Vibrationen und hohe Temperaturen beschleunigen diese Vorgänge. USB-Speicherstäbchen kommen ohne bewegte Teile aus und nutzen statt magnetischer Felder elektrische Ladungen zur Datenspeicherung: Die Transistoren der Flash-EEPROM-Chips fangen sozusagen Elektronen ein und sollen sie nach Angaben der Hersteller bis zu zehn Jahre lang halten. In USBFlash-Devices (UFDs) stecken üblicherweise Flash-Chips vom NAND-Typ, die etwa auch in CompactFlash-(CF-) oder Secure-Digital-(SD-)Karten für Kameras, in MP3-Spielern oder Memory-Sticks zu finden sind. Sie sind mechanisch robust, arbeiten geräuschlos und sparsamer als Festplatten und sind länger lagerfähig als manche optische Medien. Zugriff! Flash-Speicher wickeln außerdem bestimmte Lesezugriffe schneller ab als Festplatten. Bei typischen 3,5-Zoll-Laufwerken 190 mit EIDE- oder SATA-Schnittstelle für Desktop-Rechner treten zwischen dem Eintreffen des Lese-Befehls und der Auslieferung der gewünschten Daten Totzeiten von etwa 8 bis 20 Millisekunden auf; schließlich muss die Festplatte ihre Leseköpfe zunächst über die richtige Spur bugsieren und dann auch noch abwarten, bis die gesuchten Daten vorbeisausen. Diese Latenzzeiten bremsen vor allem beim Zugriff auf viele kleine Datenblöcke, die auf den Magnetscheiben weit voneinander entfernt sind. Zwar erlauben auch Flash-Chips keinen verzögerungsfreien Zugriff auf die Speicherzellen, beim Lesen ist die Wartezeit vom Anlegen einer Adresse bis zur Auslieferung der Daten dennoch ungefähr um den Faktor 1000 kürzer als bei Festplatten. Dieser Vorteil lässt sich jedoch meist nicht in voller Höhe nutzen, weil die (möglichst preiswerten) Controller-Chips, die die eigentlichen Speicherbausteine mit dem externen (USB-)Interface verbinden, zu langsam sind. Aber dann … Wenn die Übertragung erst einmal begonnen hat und die benötigten Daten unmittelbar benachbart liegen, erreichen moderne Festplatten sehr hohe Datentransferraten: in den schnellsten Zonen – den äußeren Spuren mit dem größten Umfang – über 60 MByte pro Sekunde. Sie lesen und schreiben Daten außerdem praktisch gleich schnell. Ihre SteuerElektronik nutzt zusätzlichen DRAM-Pufferspeicher (Cache), um wiederkehrende Anfragen schneller bedienen zu können. UFDs und Flash-Speicherkarten hingegen erreichen bei weitem nicht die maximalen Datentransferraten aktueller Festplatten, die schnellsten Typen bringen es im USB-2.0-Modus unserer Erfahrung nach auf höchstens 25 MByte/s. Sehr preiswerte UFDs bleiben sogar unter 10 MByte/s. Die größten Nachteile zeigen Flash-Speichermedien beim Schreibzugriff. Dabei lassen sich einzelne Speicherzellen nicht einfach überschreiben, sondern es müssen zunächst ZellenGruppen (Blocks) gelöscht werden, was jeweils einige Millisekunden dauert. Erst dann erfolgt der eigentliche Schreibvorgang, der nur Millisekunden-Bruchteile in Anspruch nimmt. Insgesamt geht ein solcher EraseWrite-Zyklus zwar noch ein Quentchen schneller als ein Festplatten-Zugriff, doch auch beim Schreiben bremst die niedrigere Dauertransferrate. Haltbarkeit Das gewichtigste Problem ist aber die Lebensdauer der Chips, denn die Zahl der Schreibvorgänge ist begrenzt: Gängige Bausteine sind für 100ˇ000 Schreibzyklen ausgelegt, manche Hersteller sichern sogar nur 10ˇ000 zu. Selbstverständlich sind damit Mittelwerte über eine große Zahl von Chips gemeint, die für gewöhnlich auch nicht schon nach exakt dieser Zyklenzahl ausfallen. Und im Vergleich zu wiederbeschreibbaren optischen Medien schneiden Flash-Karten und -Sticks ebenfalls gut ab – sie sind eben für den typischen Einsatzzweck als Datenlager gedacht. Zum dauerhaften Ersatz von Festplatten, auf denen eine Betriebssystem-Partition liegt, eignen sich normale UFDs aber ebenso wenig wie herkömmliche CF-Karten. Aktuelle Betriebssysteme (Windows, Linux) mit virtueller Speicherverwaltung führen nämlich ständig Schreibzugriffe auf die so genannten Swap-Files aus; viele Anwendungen (Web-Browser) puffern Daten in temporären Dateien, Server-Dienste protokollieren ihre Arbeit in LogDateien. Unter Windows haben wir die Zahl der Schreibzugriffe bei typischem PC-Einsatz mit dem MMC-Snap-In „Leistung“ (performance.msc) protokolliert: Beim Tippen in der Textverarbeitung erfolgt alle zwei bis drei Sekunden ein Schreibzugriff, das Abspeichern einer Datei oder das Öffnen einer Webseite verursacht 20 bis über 100 Schreibvorgänge. Selbst bei nur einem Schreibzugriff alle zwei Sekunden ist der Grenzwert eines typischen USB-Speicherstäbchens bei acht Stunden täglicher Arbeit nach 55 Werktagen erreicht. Mit Spezial-Controllern, die die Zugriffe mit einer optimierten Schreibstrategie auf unterschiedliche Flash-Zellen verteilen, wollen Firmen wie Bitmicro, Memtech oder SanDisk mehrere Millionen zuverlässige Schreibvorgänge auf ihren Solid State Disks (SSDs) sicherstellen. Unser Beispiel-PC erreicht aber bei 200 jährlichen Arbeitstagen schon nach zwei Jahren über zehn Millionen Schreibzyklen – damit sind selbst die vergleichsweise extrem teuren SpezialSSDs nicht für Standardanwendungen attraktiv. (ciw) c’t 2006, Heft 2 © Copyright by Heise Zeitschriften Verlag GmbH & Co. KG. Veröffentlichung und Vervielfältigung nur mit Genehmigung des Heise Zeitschriften Verlags. ct.0206.188-193 21.12.2005 17:26 Uhr ©Seite 191 c’t 2006, Heft 2 © Copyright by Heise Zeitschriften Verlag GmbH & Co. KG. Veröffentlichung und Vervielfältigung nur mit Genehmigung des Heise Zeitschriften Verlags. 191 ct.0206.188-193 21.12.2005 17:26 Uhr ©Seite 192 Praxis | Windows XP Nur wenn Sie die USBTreiber in die Gruppe „System Reserved“ verschieben, startet Windows XP sie früh genug, um via USB booten zu können. werden. Stattdessen gilt es, einen oder mehrere darin enthaltene Binärwerte umzubenennen, konkret jene, die „\DosDevices\C:“ oder ähnlich heißen. Wenn beispielsweise das QuellXP auf E: lag und dort das USBLaufwerk als G: eingebunden war, dann markieren Sie den Binärwert „\DosDevices\G:“ und benennen ihn in „\DosDevices\ E:“ um. Das klappt aber nur, falls nicht bereits ein gleichnamiger Binärwert existiert. Falls doch, benennen Sie diesen zuerst um und ordnen ihm dabei einen beliebigen anderen noch freien Laufwerksbuchstaben zu. Anschließend ist ein Neustart fällig. Auch auf andere Das so vorbereitete XP bootet zwar von USB, aber nur an dem Rechner, von dem das Quell-XP stammt. Bei allen anderen (nicht baugleichen) Rechnern scheitert der Start mit dem bekannten Bluescreen 0x0000007B. Wenn Sie Pech haben, misslingt nach einem solchen Versuch sogar das Booten am Ursprungsrechner. Damit XP nicht nur am ersten, sondern auch an weiteren Rechnern startet, sind einige weitere Handgriffe erforderlich – und zwar für jeden weiteren PC. Es gelang uns nicht, das System so vorzubereiten, dass es universell an jedem anderen Rechner bootet – sollten Sie einen solchen Weg kennen, würden wir uns über eine Mail freuen. Unter anderem stolpert XP am neuen PC über ihm unbekannte IDE-Host-Controller, obwohl es die zum Booten von USB gar nicht braucht. Das lässt sich vergleichsweise einfach abstellen: Ändern Sie nach dem Start des USB-XP am Ursprungsrechner in dessen Gerätemanager den Treiber für den (oder die) IDE-Controller. Markieren Sie dazu unter „IDE ATA/ATAPI-Controller“ den IDE-Controller und klicken in dessen Kontextmenü auf „Treiber aktualisieren“. Lehnen Sie den Wunsch nach dem Aufbau einer 192 Internet-Verbindung ab und wählen dann „Software von einer Liste oder bestimmten Quelle installieren“. Anschließend „Nicht suchen, sondern den zu installierenden Treiber selbst wählen“, und im nächsten Fenster den „Standard-Zweikanal-PCI-IDE-Controller“ aussuchen. Mit dessen Treiber kann XP alle IDE-HostController ansprechen, sodass zumindest diese Ursache für einen Bluescreen beseitigt ist. Die Einträge „Primärer IDE-Kanal“ und „Sekundärer IDE-Kanal“ müssen Sie nicht ändern. Reinfrickeln Noch gravierender ist, dass XP die USB-Hardware des neuen PC nicht kennt. Denn wie erwähnt wechselt XP während des Hochfahrens zu eigenen Treibern, die es startet, sobald es bestimmte Geräte erkennt. Dummerweise kennt das USB-XP aber sämtliche für das Booten notwendige USBHardware des neuen PC noch nicht, und es kann sie auch erst nach dem Booten kennen lernen. Die Folge ist wieder ein Bluescreen. Um Windows die USB-Hardware des neuen PC bekannt zu machen, starten Sie zuerst das XP von der internen Festplatte des neuen PC, stöpseln anschließend das USB-Laufwerk ein und starten Regedit, wobei Sie wieder die Datei „System“ vom USB-Laufwerk als Struktur laden, am besten wieder unter „USB-Platte“. Es folgt ein ziemliches Gefummel, das größte Aufmerksamkeit erfordert. Es gilt, XP die Hardware-IDs der USB-Root-Hubs, der PCI-to-USB-Host-Controller sowie gegebenenfalls des USBLaufwerks bekannt zu machen. Zudem sind diese IDs mit den richtigen Treibern zu verknüpfen. Alle notwendigen Informationen finden sich in der Registry des neuen PC unter HKLM\System\CurrentControlSet\Enum in den Unterschlüsseln „USB“, „USBSTOR“ und „PCI“, und sie sind nach HKLM\USB-Platte\ ControlSet001\Control\CriticalDeviceDatabase zu übertragen. Widmen Sie sich zunächst den IDs aus dem Unterschlüssel „USB“. Dazu suchen Sie zuerst den Quellschlüssel unter HKLM\ System\CurrentControlSet\Enum, wo einige Unterschlüssel zu finden sind. In jedem von ihnen ist irgendwo in einem weiteren Unterschlüssel (etwa unter „ROOT_HUB\4&3788cc09&0“) eine mehrteilige Zeichenfolge namens „HardwareID“ zu finden. Deren Wert sieht ungefähr so aus: USB\ROOT_HUB&VID8086&PID7112&REV0000 USB\ROOT_HUB&VID8086&PID7112 USB\ROOT_HUB Sie benötigen davon nur die erste Zeile. Kopieren Sie diese, indem Sie den Eintrag doppelklicken, die erste Zeile des Wertes markieren, im Kontextmenü auf „Kopieren“ und anschließend auf „Abbrechen“ klicken. Bewegen Sie sich nun zum Zielschlüssel HKLM\USB-Platte\ ControlSet001\Control\CriticalDe viceDatabase. Hier ist ein neuer Unterschlüssel anzulegen, der als Namen die soeben kopierte erste Zeile erhält – allerdings ist vor dem Bestätigen mit OK noch der Austausch des Backslash „\“ gegen eine Raute „#“ erforderlich. Dieser neue Schlüssel macht dem USB-XP die Identifikationsnummer des USB-Gerätes bekannt. Die ist noch mit dem Treiber zu verknüpfen. Kopieren Sie dazu aus jenem Unterschlüssel, in dem Sie die Hardware-ID gefunden haben, die Zeichenfolgen „ClassGUID“ und „Service“ mitsamt ihren Werten in den frisch erstellten Unterschlüssel unter CriticalDeviceDatabase. Leider bietet der bordeigene Registry-Editor keine Funktion zum Kopieren von Einträgen, es gibt aber andere Programme, die das können, etwa der „Registry-Explorer“ von der Heft-CD der c’t 23/05. Alternativ können Sie die Schlüssel auch von Hand neu erstellen. Dieses mühsame Vorgehen ist leider bei jedem einzelnen Unterschlüssel unter Enum\USB\ ROOT_HUB und Enum\USB\ ROOT_HUB20 fällig (insgesamt zirka fünf oder noch mehr). Zusätzlich müssen Sie unter Enum\USBSTOR nach dem Eintrag für Ihr USB-XP-Laufwerk suchen und diesen übertragen. Schließlich sind auch die PCIto-USB-Host-Controller nach diesem Schema in die CriticalDeviceDatabase aufzunehmen. Sie finden deren Parameter in der Registry des auf der internen Festplatte installierten XP unter HKLM\System\CurrentControlSet\ Enum\PCI. Immerhin müssen Sie Ist das legal? Ob Sie das in diesem Artikel beschriebene Booten von USB mit Ihrem XP treiben dürfen, hängt von der Ihnen zur Verfügung stehenden Windows-Lizenz ab. Üblicherweise erlaubt Microsoft bei handelsüblichen Endanwenderversionen (System-Builder-Pakete) nur die Installation auf einem einzigen Rechner. Dass keine Parallelnutzung auf mehreren PCs erfolgen darf, ist klar. Alles Weitere ist juristisch stark umstritten. Auf jeden Fall stellt bereits das Kopieren von Software in den Arbeitsspeicher rechtlich gesehen eine Vervielfältigungshandlung dar, die durch den bestimmungsgemäßen Gebrauch der erworbenen Software abgedeckt sein muss, um als legal gelten zu können. Mit Hilfe einfallsreicher Speichermedien-Tricks kann man das Urheberrecht also nicht umgehen. Bei End-Anwender-Versionen stoppt außerdem der Aktivierungszwang den Einsatz von XP auf mehreren Rechnern: Das Aktivieren ist nach jedem Andocken an neue Rechner erneut erforderlich und anschließend auch wieder am ursprünglich eingesetzten PC. Anders sieht es aus, wenn Sie über eine Firmen-Lizenz verfügen, die den Einsatz des XP an mehreren Rechnern erlaubt -dann dürfen Sie das USB-XP wie beschrieben an verschiedenen Rechnern nutzen und unterliegen auch nicht dem Aktivierungszwang. (psz) c’t 2006, Heft 2 © Copyright by Heise Zeitschriften Verlag GmbH & Co. KG. Veröffentlichung und Vervielfältigung nur mit Genehmigung des Heise Zeitschriften Verlags. ct.0206.188-193 21.12.2005 17:26 Uhr ©Seite 193 Praxis | Windows XP Damit XP auch von einem anderen Rechner via USB startet, muss man ihm dessen USB-Hardware nahe bringen. Übertragen Sie dazu die jeweiligen Hardware-IDs mit einigen Parametern aus der Registry des auf der internen Platte installierten XP in die Registry des XP auf dem USB-Laufwerk. hier nicht alle Unterschlüssel übertragen. Jeder Unterschlüssel unterhalb von „PCI“ enthält wiederum einen weiteren Schlüssel, in dem sich eine Zeichenfolge namens „Class“ befindet. Enthält die als Wert irgendwas mit „USB“, sind die an gleicher Stelle liegende Hardware-ID, ClassGUID und Service wie beschrieben zu überführen. Einen hab ich noch … Eventuell ist noch ein weiterer Eingriff erforderlich. Wie oben beschrieben, steckt in einem Rechner entweder ein Universal Host Controller oder eben ein Open Host Controller. Soll das XP auf einem weiteren Rechner starten, der die jeweils andere Controller-Sorte verwendet (nachzuprüfen im Gerätemanager unter „USB-Controller“), muss der passende Treiber noch ins USB-XP transferiert werden. Extrahieren Sie dazu auf dem USB-Laufwerk aus dem Archiv Sp2.cab, das unter WINDOWS\Driver Cache\ i386 zu finden ist, die jeweils fehlende Datei usbohci.sys oder usbuhci.sys in das Verzeichnis Windows\System32\Drivers. Dieser Treiber ist noch in der Registry zu verankern. Erstellen Sie dazu in der Registry des USBXP unter HKLM\System\CurrentControlSet001\Services einen Unterschlüssel namens usbuhci (oder usbohci) und darunter eine Zeichenfolge namens „Group“ mit dem Wert „System Reserved“, einen DWORD namens „Start“ mit dem Wert „0“ sowie eine „erweiterbare Zeichenfolge“ namens „ImagePath“, die als Wert „System32\ Drivers\usbuhci.sys“ erhält (oder eben „System32\Drivers\usbohci.sys“). Wenn alles endlich erledigt ist, können Sie die Struktur „USB-Platte“ wieder entfernen. Nun sollte XP an dem neuen Rechner endlich via USB starten – allerdings erneut nur einmal, da die Hardwareerkennung wieder einige USB-Geräte neu erkennt, sodass wieder das oben beschriebene Ändern der Startreihenfolge der USB-Treiber fällig ist. Jedoch wiederum nur einmal, nach einer erneuten Anpassung bleiben die Einträge korrekt. Oh, noch ein Bluescreen Es besteht eine gewisse Wahrscheinlichkeit, dass das USB-XP auf dem Rechner noch aus anderen Gründen einen Bluescreen produziert. Schuld kann beispielsweise die Hardware sein, die das USB-XP beim Hochfahren neu erkennt. Das führt mitunter zu seltsamen Phänomenen. So hatten wir beim Testen den Fall, dass ein USB-XP von einem PC mit AMD-Prozessor stammte und für das Booten auf einem PC mit Intel-CPU vorbereitet wurde. Das klappte auch tadellos, doch anschließend erzeugte das USBXP auf dem AMD-System beim Booten einen Bluescreen, zur Abwechslung mit der Fehlernummer 0x0000007E. Der Grund dafür war nicht etwa bei der USB-Hardware zu suchen, sondern beim Energie-Management der Intel-CPU. Dafür installiert XP nämlich einen eigenen Treiber, der beim Booten auf dem AMDSystem zum Absturz führt. Das Deaktivieren des Treibers behob das Problem, eine Anleitung dazu steht im Artikel 888372 in Microsofts Knowledge Base. Auf einem anderen Rechner bootete das USB-XP problemlos und es ließ sich auch kurze Zeit nutzen. Doch nach einigen Minuten kam dann doch wieder das blaue Bild, Fehlernummer diesmal 0x000000F4. Offenbar war die im Hintergrund weiterlaufende Hardwareerkennung irgendwann auf ein Problem gestoßen, das Windows für so gravierend hielt, dass es das System lieber komplett stoppte. Eine wirkliche Lösung dafür haben wir nicht gefunden, doch als Krücke half es, im USB-XP den Dienst „Plug & Play“ zu deaktivieren und damit die komplette Hardwareerkennung auszuhebeln. Microsoft hält so was allerdings für keine gute Idee (wir normalerweise auch nicht, siehe [5]) und hat deshalb eine Hürde eingebaut: In der Computerverwaltung lässt sich „Plug & Play“ nicht deaktivieren. Doch es klappt mit Msconfig: Unter Dienste einfach das Häkchen entfernen und den Rechner neu starten, und Sie sind den Dienst los. Es dürfte noch viele weitere Fehler geben, die das Booten von USB verhindern, bei unseren Tests jedoch nicht aufgetreten sind. Hilfe bei der Analyse der dabei üblicherweise auftretenden Bluescreens bieten [6] und [7]. Fazit Es ist schon erstaunlich, welche Verrenkungen fällig sind, damit XP von einem USB-Laufwerk bootet. Sollte es bei Ihnen nicht auf Anhieb klappen, gehen Sie im Zweifel die Anleitung erneut durch (und falls es Sie tröstet: Auch wir brauchten bei manchen Rechnern mehrere Anläufe). Allerdings dürfte das zu- gegebenermaßen auch keine Garantie für einen Erfolg sein. Ärgerlich ist vor allem, dass diese Verrenkungen bei jedem weiteren PC von neuem nötig sind. Aber Besserung ist zumindest für künftige Windows-Versionen in Sicht: Mittlerweile hat auch Microsoft erkannt, dass das Booten von USB eine nützliche Angelegenheit sein kann [8]. (axv) Literatur [1]ˇAxel Vahldiek, Starthilfe, Bootloader von Windows 2000 und XP sichern, c’t 21/02, S. 248 [2]ˇAxel Vahldiek, Kleinkriegen, Windows im Mini-Format, c’t 6/03, S. 260 [3]ˇAxel Vahldiek, Gerrit Grundwald, Selbstheilungskräfte, Wie Windows 2000 und XP sich selbst reparieren, c’t 26/03, S. 102 [4]ˇMicrosofts Knowledge-Base: http:// support.microsoft.com/search [5]ˇAxel Vahldiek, Christoph Hoppe, Mit erhöhter Schlagzahl, Tipps und Tricks für Windows XP auf dem Prüfstand, c’t 17/05, S. 102 [6]ˇHajo Schulz, Wenn Windows blaumacht, Ursachen von Bluescreens aufspüren, c’t 10/04, S.110 [7]ˇhttp://msdn.microsoft.com/ library/en-us/DevTest_g/hh/Dev Test_g/BCIntro_f55acfed-32964e84-8885-c3162fd0ddbf.xml.asp [8]ˇMicrosoft über das Booten von USB: www.microsoft.com/whdc/ device/storage/usb-boot.mspx [9]ˇAxel Vahldiek, Jürgen Schmidt, Hols vom Stöckchen, Notfall-System vom USB-Stick booten, c’t 13/03, S. 208 Soft-Link 0602188 c’t 2006, Heft 2 © Copyright by Heise Zeitschriften Verlag GmbH & Co. KG. Veröffentlichung und Vervielfältigung nur mit Genehmigung des Heise Zeitschriften Verlags. c 193