Microsoft WDS um Memtest86+ erweitern (überarbeitet)

Wer Microsoft Windows Deployment Services (WDS) bereits einsetzt, hat eine enorme Arbeitserleichterung. Schön wäre es, wenn z.B. Memtest86+ ebenfalls über PXE gestartet werden könnte. Dadurch spart man sich das lästige CD einlegen/ USB-Stick verbinden. Auch die Aktualisierung der jeweiligen Tools ist einfacher.

Voraussetzungen
– eine funktionstüchtiges Microsoft Active Directory (Windows Server 20212R2)
– eine VM mit Windows Server 2012R2, welche Mitglied der Domäne ist. Die Rolle „Bereitstellungsdienste“ ist bereits installiert und konfiguriert.
– eine VM mit keinen Betriebssystem, um später die Funktionalität zu testen.

Konfiguration
Als Basis der Erweiterung dient das Paket SysLinux in der Version 6.03 (Download). Das Archiv herunterladen und unter C:\Temp abspeichern. Sobald der Download fertig ist das Archiv entpacken.

wds-syslinux-install-step01

Anschließend ist das Verzeichnis C:\Temp\syslinux-6.03\bios wechseln.
wds-syslinux-install-step02

Folgende Dateinamen (pxelinux.0, vesamenu.c32, chain.c32, ldlinux.c32, libcom32.c32, libutil.c32) über das Suchfeld rechts oben suchen und jeweils in das Verzeichnis C:\Temp\syslinux-wds kopieren:
wds-syslinux-install-step03

Die Dateien aus dem Verzeichnis C:\Temp\syslinux-wds nach D:\RemoteInstall\Boot\x86 bzw. D:\RemoteInstall\Boot\x64 kopiert. In meinen Fall legt WDS seine Daten auf Laufwerk D: ab.

xcopy "C:\Temp\syslinux-wds\*" "D:\RemoteInstall\Boot\x86"
xcopy "C:\Temp\syslinux-wds\*" "D:\RemoteInstall\Boot\x64"

Nun müssen drei Dateien noch unbenannt werden:

cd /d "D:\RemoteInstall\Boot\x86"
ren pxelinux.0 pxelinux.com
ren pxeboot.n12 pxeboot.0
ren abortpxe.com abortpxe.0

cd /d "D:\RemoteInstall\Boot\x64"
ren pxelinux.0 pxelinux.com
ren pxeboot.n12 pxeboot.0
ren abortpxe.com abortpxe.0

Damit die neue Startdatei vom Bereitstellungdienst genutzt werden kann, ist eine Konfigurationsanpassung notwendig.

wdsutil /set-server /bootprogram:boot\x64\pxelinux.com /architecture:x86
wdsutil /set-server /N12bootprogram:boot\x64\pxelinux.com /architecture:x86
wdsutil /set-server /bootprogram:boot\x64\pxelinux.com /architecture:x64
wdsutil /set-server /N12bootprogram:boot\x64\pxelinux.com /architecture:x64

wds-syslinux-install-step04

Im nächsten Schritt müssen sowohl für x86 als auch x64 zwei Verzeichniss angelegt werden:

mkdir "D:\RemoteInstall\Boot\x86\linux"
mkdir "D:\RemoteInstall\Boot\x86\pxelinux.cfg"
mkdir "D:\RemoteInstall\Boot\x64\linux"
mkdir "D:\RemoteInstall\Boot\x64\pxelinux.cfg"

Im Verzeichnis D:\RemoteInstall\Boot\\pxelinux.cfg (je Architektur) eine Datei mit dem Namen „default“ anlegen mit folgenden Inhalt:

DEFAULT      vesamenu.c32
PROMPT       0
 
MENU TITLE PXE Startmenue (x64)
MENU INCLUDE pxelinux.cfg/graphics.conf
MENU AUTOBOOT Starte lokales System in 8 Sekunden
 

LABEL bootlocal
      menu label ^Normal starten
      menu default
      localboot 0
      timeout 80
      TOTALTIMEOUT 9000
LABEL WDS
     MENU LABEL ^Microsoft WDS starten
     KERNEL pxeboot.0
LABEL memtest86+
    menu label Memtest86+
    kernel \Linux\memtest\memtest
LABEL Abort
    MENU LABEL ^Beenden
    KERNEL abortpxe.0

Zu guter letzt die aktuelle Version von Memtest86+ 5.01 (Pre-Compiled Bootable Binary) heruntergeladen. Diese Datei habe ich unter C:\Temp abgelegt. Nachdem Abschluss das Archiv (wie bereits SysLinux) in ein Verzeichnis entpacken. Jetzt wird die Datei an die richtige Stelle kopiert:

mkdir "D:\RemoteInstall\Boot\x86\linux\memtest"
mkdir "D:\RemoteInstall\Boot\x64\linux\memtest"

copy "c:\Temp\memtest86+-5.01\memtest86+-5.01.bin" "D:\RemoteInstall\Boot\x86\linux\memtest\memtest"
copy "c:\Temp\memtest86+-5.01\memtest86+-5.01.bin" "D:\RemoteInstall\Boot\x64\linux\memtest\memtest"

Abschließend erfolgt der finale Test mit der leeren Test-VM.
wds-linux-pxe-menu

Wunderbar… funktioniert wie es soll.