Windows XP Live CD via PXE Network Boot

Da ich immer weiter am Ausbau des Boot Menüs in unserer Firma arbeite und vor kurzen ein Windows Live System booten musste, kam mir der Blitzgedanke ein BartPE Build anzulegen und dies via Memdisk von Systlinux einzubinden. Doch dann viel mir ein…

Loading boot sector... booting...
Missing operating system.
FATAL: INT18: BOOT FAILURE

Das aktuelle Syslinux hat im Moment ein kleines Problem mit den Partitionstypen und dem Bootsector. Siehe hierzu einen Artikel aus dem Debian Live Project. Debian Live 6.0.2 Images

Dies schien also der selbe Verursacher zu sein auch wenn es sich nicht um exakt den selben Fehler handelte.

Also nun ein kleiner Workaround für die ganze Misere.

Vorhanden sein sollte bereits ein funktionsfähiger TFTP Server. Ist dies nicht der Fall folgt auf Anfrage noch ein Tutorial zur Installation eines TFTP Servers mit DHCP.

Benötigte Software

Schritt 1 Bugfix der Ramdisk:

Wir entpacken das SP1 für Windows Server 2003, dies kann dann wahlweise mit UniExtract oder 7-Zip passieren. Dort Kopieren wir uns nun folgende Dateien: ntdetect.com, setupldr.ex_, startrom.co_, startrom.n1_, ramdisk.sy_, ramdisk.in_. Letztere befindet sich im Subverzeichnis „ia“. Diese kopiert ihr also nun in ein neues Verzeichniss, wie euch sicherlich aufgefallen ist hat jede Datei bis auf ntdetect.com keine ausgeschriebene Dateiendung. Dieser Unterstricht Symbolisiert eine Komprimierung mit dem Microsoft (R) Dateiexpansionsprogramm.

Entpacken wir diese Daten nun mit einem einfachen Befehl im Command Promt. (Der Eingabe Aufforderung)

expand -r setupldr.ex_
expand -r startrom.co_
expand -r startrom.n1_
expand -r ramdisk.sy_
expand -r ramdisk.in_

Schritt 2 Vorbereitung der Files:

Als nächtest könnt ihr zuerst einmal die komprimierten original Dateien löschen, zur besseren Übersicht. Danach benennt ihr die Dateien wie folgt um:

setupldr.exe -> NRLDR
startrom.n12 -> startrom.0
ramdisk.sys -> RAMDISK.SYS
ramdisk.inf -> RAMDISK.INF

Achtung Keysensetive! Beachtet unbedingt die Groß- und Kleinschreibung.

Jetzt legt ihr ein Textfile an und benennt ihn in winnt.sif um. Der Inhalt muss dann wie folgt aussehen:

[SetupData]
BootDevice = "ramdisk(0)"
BootPath = "\i386\System32\"
OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=XPSP3.iso"

Euer Verzeichniss sollte nun wie folgt aussehen:

ntdetect.com
NTLDR
RAMDISK.INF
RAMDISK.SYS
startrom.0
startrom.com
winnt.sif

Schritt 3 Vorbereiten des XP des ISO Files:

Startet nun den PE-Builder. Als Quelle wählt ihr nun euer XP ISO oder eine im Laufwerk liegende XP CD aus. Zielordner ist PxePreBuild. Wichtig! Noch kein ISO-Image erstellen oder Brennen! Packt nun noch ein einfach eure PE-Builder Plugins hinnein die ihr wünscht und konfiguriert diese. Dann startet ihr den Buildvorgang.

Nun befindet sich das PE-Build im Verzeichniss PxePreBuild nun Kopiert ihr RAMDISK.INF und RAMDISK.SYS nach PxePreBuild\I386\SYSTEM32\DRIVERS und ersetzt dabei die vorhandene RAMDISK.SYS.

Schritt 4 PXE-Build erstellen:

Nun können wir das fertige Build erstellen. Dafür öffnet ihr erneut den Command Promt und wechselt ich das Stammverzeichniss vom PE-Builder. Dort gebt ihr nun folgendes ein um das ISO zu erstellen.

mkisofs.exe -iso-level 4 -volid "XPPXEPE" -b bootsect.bin -no-emul-boot -boot-load-size 4 -hide bootsect.bin -hide boot.catalog -o "c:\pebuilder3110a\WinXPPxeIso\XPSP3.iso" "c:\pebuilder3110a\PxePreBuild"

Das Verzeichnniss eures PE-Builders kann natürlich abweichend sein. Achtet auch hierauf die Großschreibung von -volid und dem ISO welches erstellt werden soll! Nun ist das ISO leider noch nicht ganz fertig auf Grund des Boot Sector Problemes von Syslinux. Dieß liegt unter anderem auch an dem alten mkisofs projekt welches seit einigen Jahren nicht mehr weiterentwickelt wird.

Schritt 5 Debug ISO:

Öffnet nun also das fertige Image mit UltraIso. Dort geht ihr dann auf Datei -> Eigenschaften. Hier sind nun einige Änderungen vorzunehmen.

[ ] Optimieren

[x] Joliet

[ ] UDF

[ ] RockRidge

[ ] Apple HFS

(o) Dos(8.3) ( ) Windows/Unix(31) ( ) Max(221)

[ ] Kleinbuchstaben zulassen [ ] DOS Zeichensetz

[ ] ISO 9660 Versionsnummer ‚;1‘ weglassen

( ) Standart (64) (o) Erweitert (110)

Speichern, Fertig.

(Info: Beim Speichern wird euch eine Infomeldung begegnen in welcher 1 Dateiname gekürzt wurde. Dies könnt ihr getrost ignorieren.)

Schritt 6 Konfiguration des TFTP:

Nun Kopiert ihr die übergebliebenen Daten sowie das ISO:

ntdetect.com
NTLDR
startrom.0
startrom.com
XPSP3.iso

in das Wurzelverzeichniss des TFTP Servers. Dort sollte es in etwa so aussehen.

drwxrwxrwx 5 root root 4096 Aug 27 10:52 .
drwxr-xr-x 14 root root 4096 Aug 12 19:37 ..
-rwxr-xr-x 1 root root 175144960 Aug 27 10:48 XPSP3.ISO
-rwxr-xr-x 1 root root 280064 Aug 27 10:48 NTLDR
-rwxr-xr-x 1 root root 25244 Aug 11 11:53 memdisk
-rwxr-xr-x 1 root root 60928 Aug 11 11:53 menu.c32
-rwxr-xr-x 1 root root 47772 Aug 27 10:48 ntdetect.com
-rwxr-xr-x 1 root root 26970 Aug 11 11:53 pxelinux.0
drwxr-xr-x 2 root root 4096 Aug 25 19:33 pxelinux.cfg
-rwxr-xr-x 1 root root 24466 Aug 27 10:48 startrom.0
-rwxr-xr-x 1 root root 24482 Aug 27 10:48 startrom.com
-rwxr-xr-x 1 root root 162860 Aug 11 11:53 vesamenu.c32
-rwxr-xr-x 1 root root 153 Aug 27 10:51 winnt.sif

Nun müsst ihr nur noch einen Menüeintrag im PXE vornehmen. Am einfachsten in der ./pxelinux.cfg/default oder ihr habt bereits eure eigene Menüstruktur. Die startrom.0 wird nun zu eurem Kernel. Der Eintrag im Menü sieht nun wie folgt aus.

LABEL pebuilder
MENU LABEL ^1) PXE BartPE WinXP SP3
KERNEL startrom.0

Wenn ihr noch Fragen wünsche oder Verbesserungsvorschläge habt einfach posten.

Kategorie(n): Linux, Software

Eine Reaktion in einen anderen Blog/Artikel

  1. […] […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.