Remoteboot Netzwerkbootdiskette mit PXElinux
von R. Bernert

Voraussetzungen:
Debian 5.x Lenny ist installiert

Installieren des Syslinux-Pakets:

apt-get install syslinux
wichtige Dateien befinden sich in /usr/lib/syslinux
Man benötigt die Dateien
menu.c32
pxelinux.0
memdisk

Installation des TFTP-Servers:
apt-get install tftpd-hpa
Das root-Verzeichnis ist /var/lib/tftpboot
dorthin die Dateien 
menu.c32
pxelinux.0
memdisk
kopieren.


DHCP-Server installieren und Konfigurieren
apt-get install dhcp3-server
Hier meine Konfiguation
ddns-update-style none;
option domain-name "tmg.local";
option domain-name-servers deb405.tmg.de;

default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;
allow booting;
allow bootp;

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.40 192.168.1.60;
  option subnet-mask 255.255.255.0;
  filename "pxelinux.0";
  next-server 192.168.1.105;
  option root-path "192.168.1.105:/pxeroot";
  option domain-name-servers 192.168.1.105;
  option domain-name "tmg.local";
  option routers 192.168.1.105;
  option broadcast-address 192.168.1.255;
  default-lease-time 600;
  max-lease-time 7200;
}


Den TFTP-Server tftpboot konfigurieren:
in var/lib/tftpboot das Verzeichnis pxelinux.cfg anlegen
und dort eine Datei mit dem Namen default anlegen

Hier meine Konfiguration:

DEFAULT menu.c32
PROMPT 0

MENU WIDTH 80
MENU MARGIN 10
MENU PASSWORDMARGIN 3
MENU ROWS 12
MENU TABMSGROW 18
MENU CMDLINEROW 18
MENU ENDROW 24
MENU PASSWORDROW 11
MENU TIMEOUTROW 20

ALLOWOPTIONS 1
MENU TITLE Debian Linux Boot R. Bernert

LABEL snapshot
  KERNEL memdisk
  APPEND initrd=snapshot.img

LABEL BartsNetboot 
  KERNEL memdisk
  append initrd=bartsnetboot.img

LABEL AMDNetboot 
  KERNEL memdisk raw keeppxe
  append initrd=amdnet40.img

LABEL Windows98 
  KERNEL memdisk
  append initrd=win98.img

LABEL linux
  KERNEL memdisk
  append vmlinuz

LABEL dos 
  KERNEL memdisk
  append initrd=amdvmlin.img

LABEL dos2
  MENU LABEL dosbootdisk
  KERNEL memdisk
  APPEND initrd=netboot1.img

LABEL bartspe
  MENU LABEL BARTs WinPE starten
  KERNEL startrom.0

LABEL netcom
  KERNEL memdisk raw keeppxe
  APPEND initrd=netcom.img


Beispiel: Snapshot_Bootdiskette

Mit rawritewin (aus dem Internet kostenlos) ein Diskettenimage von Snapshot erstellen
und in das Verzeichnis /var/lib/tftpboot übertragen

Zusaetzliche Netzwerkkartentreiber hinzufügen:
Im Verzeichnis A:\lib\ndis legt man die aus dem Internet geholten
.uha-Dateien fuer die notwendigen Netzwerkkarten ab.



Beispiel: NetbootCom-Diskette erstellen

mit rawritewin das Diskettenimage erstellen
und in das Verzeichnis /var/lib/tftpboot übertragen.
Sollte das Image nicht booten, hilft machmal die Erweiterung im Menue

LABEL netcom
  KERNEL memdisk raw keeppxe
  APPEND initrd=netcom.img

Beipiel: BartPE-Image booten

Das Vorgehen ist unter TFTP32 beschrieben.
Hier nochmals das Vorgehen in Kurzform:
Voraussetzungen: Es liegt eine BartPE-ISO-Datei vor. 

(download unter: http://www.nu2.nu/pebuilder/download/)
Windows Server 2003 SP1  (Es wird nur das Service Pack benötigt) 

1. Windows Server 2003 SP1 entpacken. in einem Dos-Fenster: win2003srsp1.exe -x

2. die Dateien NTDETECT.COM, SETUPLDR.EX_,  STARTROM.CO_,  STARTROM.N1_, RAMDISK.SY_ und RAMDISK.IN_  suchen. und diese Dateien in ein temoräres Verzeichnis entpacken.

Expand r RAMDISK.SY_ 
Expand r RAMDISK.IN_
Expand r SETUPLDR.EX_
Expand r STARTROM.CO_
Expand r STARTROM.N1_


3. Die original Dateien mit dem Unterstrich in der Endung löschen - werden nicht mehr gebraucht.. 

4. Die Dateiname ändern: 

setupldr.exe in NTLDR (Großbuchstaben)
startrom.n12 in startrom.0 ( ist der Kernel )
5. Im selben Ordner  eine Datei mit dem Namen winnt.sif erstellen und diese mit einem Editor öffnen und folgende Eingaben vornehmen: 
[SetupData] 
BootDevice = "ramdisk(0)" 
BootPath = "\i386\System32\" 
OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=PEBUILDER.ISO" 


6:. Kopieren aller dieser Datei und der PE-Builder ISO (PEBUILDER.ISO)Datei in das Wurzelverzeichnis des TFTPD Servers. 
Der Dateiname der ISO-Datei darf nicht länger als max. 11 Zeichen beinhalten, es kann sonst zu Komplikationen kommen. 

7. Nochmals zur Kontrolle: Folgende Dateien sollten sich im TFTP-Server-Verzeichnis befinden. 

NTLDR 
startrom.0 
startrom.com 
ntdetected.com 
winnt.sif 
ramdisk.sys 
ramdisk.inf 
PEBUILDER.ISO
8. In manchen Anleitungen im Internet war zu lesen, dass noch Anpassung an der Datei PEBUILDER.ISO vorgenommen werden müssten. Das war bei mir nicht so.
Dies kann daran liegen, dass ich die PEBUILDER.ISO mit Hilfe der Quellen der Windows 2003-Server CD erstellt habe.
Habe das auch schon mit den Quellen einer XP-SP3-CD getestet. Auch hier waren keine Anpassungen notwendig. Ich denke, dass die beschriebenen Anpassungen nur für XP-SP1/2 notwendig sind.
Je nach der Windows-XP-Version (Build) muss man mit ULTRAISO dennoch die Win2003-Server-SP1-Datei RAMDISK.SYS ins Verzeichnis \i386\System32\drivers kopieren.
Leider kam es auch schon vor, dass nach dem BootVorgang keine Netzwerkkarte gefunden wurde (nur bei Benutzung der Quellen aus einer WinXPSP3-CD).

Der Vollständigheit halber aber hier die - bei mir nicht notwendigen - Anpassungen:

Mit einem Programm (UtraIS0) die ISO Datei öffnen und in dem Verzeichnis: \i386\System32\drivers die Dateien ramdisk.sys und die Datei ramdisk.inf rein kopieren bzw. ersetzen. 
Danach die ISO Datei abspeichern. 

Mit der Software Ultraiso müssen nun nur noch ein paar Optionen für das ISO File gemacht werden, da das generierte ISO von BartPE leider nicht funktioniert. Im Reiter Datei -> Einstellungen folgende Einstellungen vornehmen. 

[ ] Optimieren 
[x] Joliet 
[ ] UDF 
[ ] RockRidge 
[ ] AppleHFS 
[x] DOS(8.3) 
[ ] Windows/Unix(31) 
[ ] Max(221) 
[ ] Kleinbuchstaben zulassen 
[ ] ISO 9660 Versionsnummer ´;1´ weglassen 
[ ] Standart(64) 
[x] Erweitert(110) 

9. Nun muss nur noch die pxelinux.cfg/default Datei den Eintrag bekommen, damit BartPE auch gebootet werden kann. (siehe oben)
LABEL bartspe
  MENU LABEL BARTs WinPE starten
  KERNEL startrom.0


10. Nun kann man remote vom Debian-PXE-TFTP-Server booten. 



Besonderheiten:
Ich habe die Quellen aus einer win2003-Server SP1 CD genommen
(dann braucht man keine weiteren Einstellungen zu machen.)
Die Datei ntldr muss unter Linux unbedingt NTLDR (Großbuchstaben) heißen.
Das BootImage pebuilder.iso muss PEBUILDER.ISO heissen und auch in der winnt.sif in Grossbuchstaben geschrieben werden.
Nochmals:
Die Dateien NTLDR und BARTPE.ISO müssen groß geschrieben werden, alle anderen Dateien klein. Dann funktioniert es auch mit einem Linux-Server. 

Hier nochmals meine  winnt.sif

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

Zusätzliche Netzwerkkartentreiber einfügen: 
In /pebuilder3110a\drivers\Net
für jede Netzwerkkarte eine eigenes Verzeichnis erstellen
und in diese Verzeichnisse die Dateien hinein kopieren.
Bsp:

R. Bernert