clu
Goto Top

Booten über NIC im Netzwerk (PXE)

Dienste im Netzwerk zum Booten über NIC im Netzwerk einrichten (Windows 2003 Server + Windows XP Clients)
Wenn ein Client versucht zu booten, dann soll geprüft werden, ob er per PXE booten soll

Hallo,

Dienste im Netzwerk zum Booten über NIC im Netzwerk einrichten (Windows 2003 Server + Windows XP Clients)
wenn ein Client versucht zu booten, dann soll geprüft werden, ob er per PXE booten soll:

An den Clients im Netzwerk ist im BIOS folgende Bootreihenfolge eingestellt:
1) Netzwerkkarte (PXE)
2) Festplatte

Wie setze ich folgendes Szenario um (?)

Der Client ist eindeutig an seiner MAC-Adresse identifizierbar.
Auf dem Server soll ein PXE-Dienst installiert sein.
Auf den Broadcast des Clients soll der PXE-Dienst folgendes prüfen:
- Ist die MAC des Clients bekannt?
-wenn nein, dann dem Client NICHT antworten (nichts tun)
-wenn ja, dann ein Flag prüfen (Flag pflegt/setzt Admin in *.TXT-Datei)
-wenn Flag = 0 dann dann dem Client NICHT antworten (nichts tun)
-wenn Flag = 1 dann für die MAC des Clients zugeordnetes Diskettenimage (*.img) an Client schicken und Flag = 0 setzen

Woher bekomme ich eine PXE-Software für den Server?
Wie setze ich das um?
Hat das schon jemand gemacht?

Gruss Carsten

Content-Key: 29415

Url: https://administrator.de/contentid/29415

Printed on: April 19, 2024 at 23:04 o'clock

Member: ITwissen
ITwissen Mar 31, 2006 at 13:46:23 (UTC)
Goto Top
Grundlegendes zu PXE boot:

Die initiative geht vom Client aus. Der Server stellt nur etwas zur Verfuegung, was der Client anfordert. Daher sind einige Punkte auf deiner Liste nicht so einfach zu erledigen.

Ich beschreib das PXE mal, vielleicht bekommst du dann ein Gefuehl dafuer wie PXE funktioniert. Zum Start der Diskussion sozusagen.

PXE laeuft ab, bevor der Computer ein OS geladen hat und daher ist das sehr rudimentaer. Zuerst fragt es beim DHCP Server nach den Netzwerkparametern. Im DHCP Protokoll, kann der Server dann zu der IP noch einen Filenamen und einen Servernamen dem PXE uebergeben. Daraufhin holt sich das PXE via TFTP vom angegebenen Server die Datei und führt sie aus. Da diese immernoch ohne laufendem OS ausgefuehrt wird, hast du hier auch nicht viel Moeglichkeiten.

Du findest sowas hier (nicht am Linux im Namen erschrecken!):
http://syslinux.zytor.com/

Windows hat aauch sowas, im RIS Paket. Das ist aber speziell fuer die Remote Installation gedacht und nicht sehr felxibel.

Hilft das erstmal weiter?
Member: CLU
CLU Mar 31, 2006 at 14:08:03 (UTC)
Goto Top
OK, habe ich von der Basis her verstanden!

Der PXE-Client sucht also per Broadcast ein Bootimage.
Ich installiere also auf meinem Server einen TFTP-Dienst (wie man den installiert habe ich von http://www.simonsen.bz/w2k_standalone_tftp_dameon.htm)
Auf dem TFTP-Server gibt es das Verzeichnis c:\Inetpub\tftproot\
In dieses Verzeichnis muß das Image (soweit ich weiß).
Ich habe die Diskette von der aus ich den Client booten läßt mit Winimage als Diskettenimage abgespeichert (TEST.IMG).
Mein Test-Client hat die MAC: 00-0C-29-B3-C8-B5
So, ich muß (glaube ich) das Bootimage mit einer Bootloader-Datei verbinden <- wie mache ich das? Woher bekomme ich die Bootloader-Datei?
Member: ITwissen
ITwissen Mar 31, 2006 at 14:44:57 (UTC)
Goto Top
Super!

Alles Korrekt!

Also, die Bootloader Datei findest du bei Syslinux:

http://syslinux.zytor.com/

Oder einfach diese Datei:
http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.11.zip

Aus diesem Zip nimmst du dir die zwei Dateien: memdisk und pxelinux.0 und legst die in dein c:\Inetpub\tftprootIn

pxelinux.0 ist dein Bootloader
memdisk ist die Ramdisk in die eine Diskette geladen wird

Dann brauchst du noch ein Verzeichnis pxelinux.cfg in c:\Inetpub\tftprootIn und in dieses Verzeichnis legst du eine Datei namens default mit folgendem Inhalt.

label  test
      kernel memdisk
      append initrd=test.img

Dein Diskettenimage test.img musst du auch in das tftp Verzeichnis legen.

Hast du den DHCP schon konfiguriert?

Wenn ja, kannst du den Rechner jetzt mit PXE booten und es erscheint eine Eingabeaufforderung. Da tippst du test rein und schon wird das test.img gebootet.
Member: CLU
CLU Mar 31, 2006 at 18:13:11 (UTC)
Goto Top
sieht schon mal nicht schlecht aus face-wink
aus dem Puzzle wird langsam etwas!

DHCP?
- Das ganze will ich später mal mit DHCP vom Windows-2003-Server erledigen
- jetzt nutze ich zum ersten Testen im Testlab den TFTP+DHCP-server von http://tftpd32.jounin.net/

muß ich noch was spezielles bei DHCP eintragen?
oder reicht es wenn der Client einfach nur eine IP bekommt?

muß ich noch noch was an den TFTP-Server-Einstellungen machen?
Member: ITwissen
ITwissen Mar 31, 2006 at 19:27:24 (UTC)
Goto Top
Am TFTP kann man nichts einstellen. Dort werden nur die Dateien abgelegt und vom Client werden sie dort abgeholt.

Im DHCP musst du noch einstellen, wie die Datei heisst und welche IP Adresse der TFTP Server hat.

Im Linux ISC-DHCP heissen die Optionen:

filename "pxelinux.0";  
next-server "IP vom tftp Server";  

Beim Microsoft DHCP Server:

066 Boot Server Hostname
067 Boot Filename

Den TFTPD32 den du hast kenne ich zwar nicht, aber ich habe gesehen es gibt im DHCP Menu einen Eintrag Boot File, dort solltest du pxelinux.0 eintragen. Dann sollte es funktionieren. Als Server nimmt der vermutlich immer den eigenen. Die anderen Angaben zu Ip pool starting address, size of pool und Mask musst du natürlich auch gemaess deinem Netzwerk konfigurieren.

Zum Testen kannst du die Optionen erstmal als globale Optionen eintragen. Spaeter kannst du die dann zu den Hosts nehmen.

Das wars!

Tuts?
Member: CLU
CLU Apr 02, 2006 at 16:54:41 (UTC)
Goto Top
na also! der erste Client hat schon mal per PXE gebootet!

wenn ich das jetzt richtig verstehe:

1) Client sendet Broadcast für PXE
2) DHCP-Server
2a) DHCP-Server ordnet dem Cient IP zu
2b) DHCP-Server gibt an, das Bootloader-Datei: pxelinux.0 geladen werden soll
2c) DHCP-Server verweist auf TFTP-Server um die Bootloader-Datei von dort zu holen
3) TFTP-Server
Auf dem TFTP-Server liegen die Bootdisketten!
Anhand der im Verzeichnis c:\Inetpub\tftproot hinterlegten Struktur
(z.B. Verzeichnisname=MAC-Adresse)
sendet der TFTP-Server an den Client das entsprechende Disketten-Image

richtig?

Soweit ich weiß, ist ein Broadcast eines Clients auf das eigene IP-Segment beschränkt?
Was also, wenn zwischen dem Client und DHCP-Server ein Switch/Router steht?
Member: ITwissen
ITwissen Apr 02, 2006 at 19:27:08 (UTC)
Goto Top
Nicht ganz richtig, aber groesstenteils.

zu 3.
Das Diskettenimage wird anhand der Konfiguration vom pxelinux.0 ausgewaehlt. Allerdings sucht das pxelinux.0 die Konfigurationsdatei nach folgendem Algorithmus, immer Unterordner pxelinux.cfg. Als erstes die MAC Adresse mit "-", dann die IP Hexadezimal, dann jeweils ein Zeichen dieser Hexadezimalen IP weniger, und wenn das alles nichts zurueckbringt, dann die Datei default.
Es wird nicht nach den Diskettenimage gesucht, sondern nach der Konfigurationsdatei!
Und wie schon gesagt, der Server sendet nichts, der Client fordert es an.

Broadcasts, wie DHCP sind immer innerhalb eines Subnetzes. Switches geben Broadcasts weiter, Router normalerweise nicht. Fuer DHCP ueber Subnetzgrenzen hinweg, gibt es DHCP-Relays. Damit kann man mit einem zentralen DHCP Server mehrere Subnetze bedienen.
Member: CLU
CLU Apr 04, 2006 at 10:35:58 (UTC)
Goto Top
Zwischendurch mal ein GROSSES LOB für Deine klasse Hinweise face-wink

Ich hänge doch noch an einer Stelle:
Grundsätzlich klappt das schon mal alles bestens bis zur Eingabeaufforderung.
Nach dem Eingeben des Image-Namens [Enter] und den dann erscheinenden Punkten (die mir angezeigt haben, daß das Image geladen wird) habe ich bisher immer per Hand abgebrochen, weil ich der Meinung war, daß es ab dort sowie läuft.

Leider bekomme ich aber wenn das Image fertig geladen ist einen kompletten Bildschirm übersät mit Sonderzeichen und der Rechner bootet nicht weiter.

Läuft da doch noch was falsch?
Habe ich noch was nicht richtig konfiguriert?
Member: ITwissen
ITwissen Apr 04, 2006 at 10:56:01 (UTC)
Goto Top
Eigenlich gibst du nicht dem Namen vom Diskettenimage an, sondern den vom label in der Konfigurationsdatei.

label  test
      kernel memdisk
      append initrd=test.img

Genauso musst du das eintragen in die pxelinux-Konfigurationsdatei (test.img natuerlich anpassen). Bei der Eingabeaufforderung muss du dann test eintippen. Das laedt dir zuerst das memdisk und das dann das Diskettenimage. Dein Computer weiss nicht was es direkt mit einem Diskettenimage anfangen soll. Das Diskettenimage laeuft nur in der Umgebung von memdisk.
Member: CLU
CLU Apr 04, 2006 at 12:01:54 (UTC)
Goto Top
OK, verstanden, aber dann habe ich offensichtlich doch noch was falsch konfiguriert:

Wenn ich bei der Eingabeaufforderung test [Enter] eingebe, dann kommt die Meldung:
"Could not find kernal image: test"

Habe mal auf den TFTP-Server geguckt. Dort wird folgendes protokolliert:
"File <test.c32> : error 2 in system call CreateFile Das System kann die angegebene Datei nicht finden. [04/04 13:50:44.929]"

Wieso wird da nach test.c32 gesucht? <- Ist hier das Problem?

meine Datei: default sieht wie folgt aus:

label test
kernel memdisk
append initrd=bart.img

Wenn ich test [Enter] eingebe, sollte dann nicht bart.img geladen werden?
(bart.im liegt im gleichen Verzeichnis wie die Datei default)
Member: ITwissen
ITwissen Apr 04, 2006 at 12:43:53 (UTC)
Goto Top
Das Image was du reinschreibst wird einfach so wie es ist via TFTP geholt. Also, wenn du bart.img reinschreibst macht es

tftp servername bart.img

Wie du daraus siehst, muss das bart.img nicht im gleichen Verzeichnis wie das default liegen, sonderm im Wurzelverzeichnis von deinem Tftpd.
Member: CLU
CLU Apr 04, 2006 at 13:26:00 (UTC)
Goto Top
verdammt, ich hatte das Verzeichnis:
[TFTP-Server-Root]\pxelinux.cfg
nicht angelegt!

jetzt komme ich bis zur Eingabeaufforderung: test [Enter]
und siehe da, das boot-image (bart.img) wir auch tatsächlich geladen!

wie kriege ich das denn jetzt ohne warten und Eingabe von test [Enter] hin, daß bart.img gleich in einem Rutsch geladen wird? Da muß ich doch bestimmt noch was an der Datei: default editieren, stimmts?
Member: ITwissen
ITwissen Apr 04, 2006 at 13:43:52 (UTC)
Goto Top
Du hast nicht wirklich Lust Manuals zu lesen? face-smile

In die Datei default schreibst du oben rein:

default test
Member: CLU
CLU Apr 04, 2006 at 14:56:44 (UTC)
Goto Top
Manuel?
Meinst Du: pxelinux.doc + syslinux.doc ?
Oder habe ich noch was übersehen?
Member: ITwissen
ITwissen Apr 04, 2006 at 15:54:40 (UTC)
Goto Top
Genau, alles was ich bisher erzaehlt habe steht im pxelinux.doc und im syslinux.doc

Auszug syslinux.doc
DEFAULT kernel options...
        Sets the default command line.  If SYSLINUX boots automatically,
        it will act just as if the entries after DEFAULT had been typed
        in at the "boot:" prompt.  

Nicht dass ich dir nicht gern helfen wuerde, aber noch schoener waere es, zu schauen, ob die Fragen schon im Manual beantwortet werden.
Member: CLU
CLU Apr 04, 2006 at 18:33:35 (UTC)
Goto Top
OK, die habe ich bisher noch nicht gesichtet/gewürdigt.
Auf den ersten Blick sahen die beiden Teile danach aus, als würden Sie ausschließlich Linux abdecken, aber ich komme aus der Windows Server Welt (NT/W2K3).
Habe mir die beiden Manuels soeben ausgedruckt.
Die werde ich jetzt erstmal ausgiebig sichten face-wink

Setzt Du das Ganze in einer produktiven Umgebung ein?
Member: ITwissen
ITwissen Apr 04, 2006 at 18:48:32 (UTC)
Goto Top
Ja, wir setzen das Produktiv ein. Zuerst mit Windows DHCP und TFTP32, aber dann haben wir auf Linux gewechelt.

Wir machen damit Unattended Installation von Windows XP und Full Automated Installation mit Linux. Daneben haben wir noch diverse Utility Disketten, z.B. Ghost.
Member: CLU
CLU Apr 04, 2006 at 19:55:33 (UTC)
Goto Top
Wenn ich das Ganze ausgestet habe, will ich das auch auf ca. 500 x W2k3-Servern installieren und dann unattended meine Clients zu installieren! Wenn sich dann ein User meldet, mit dem Hinweis, daß sein Client nicht mehr korrekt funktioniert (z.B. immer mal wieder blue screen of death) dann möchte ich PXE für diesen Client aktivieren, die Kiste per Remote booten (wenn das noch geht) und dann unattended den Client neu installieren lassen.

Deshalb auch meine ganz am Anfang gestellte Frage, ob es pro MAC steuerbar ist. Da ist also noch jede Menge Arbeit vor mir. Aber wenn ich Dir noch die eine oder andere Frage stellen darf (?), dann bin ich da sehr zuversichlich das zu realisieren face-wink
Member: ITwissen
ITwissen Apr 04, 2006 at 20:10:53 (UTC)
Goto Top
So wie ich dich hier kennengelernt habe, hast du noch einen weiten Weg vor dir face-smile

500 Windows 2003 Server? Weltweites Unternehmen?
Member: CLU
CLU Apr 05, 2006 at 07:14:59 (UTC)
Goto Top
Weltweit? Nö, nur europaweit face-wink

Weiter Weg? Glaube ich nicht! Ist nur vom Volumen etwas mehr.

Die komplette vollautomatische Softwareverteilung (Empirum bzw. AutoIt) ist ja bereits schon umgesetzt (Server+Clients).

Jetzt muß "nur noch" PXE-Boot in Verbindung mit unattended Setup zum Remote-(Neu-)Installieren umgesetzt werden.
Member: ITwissen
ITwissen Apr 05, 2006 at 08:05:25 (UTC)
Goto Top
Es hat sich so angehoert als wuerdet ihr mit dem Unattended erst anfangen.

Vielleicht noch ein Tipp zum Schluss, aber darauf bist du sicher auch schon gekommen.

Da die PXE Konfiguration ueber Dateien im TFTP geht, kann man eine Webanwendung schrieben, mit der man diese Dateien gezielt aendern kann.

Apropos, ich braeuchte mal wieder eine neue Brille 8-)
Member: CLU
CLU Apr 06, 2006 at 10:07:29 (UTC)
Goto Top
ja, ich kann da einen großen deutschen Optiker empfehlen! face-wink

Ich bin ab morgen für eine Woche im Dänemark-Urlaub face-smile

Weitere Fragen kommen also erst nach Ostern (LOL)

Also, erstmal FROHE OSTERN!
Member: MarquiS
MarquiS Mar 13, 2007 at 00:03:33 (UTC)
Goto Top
hallo,

laut diesem kleinen step by step bin ich nun soweit das diverse images vom server geladen werden .... nur leider sind es immer die falschen da man ja leider initrd images brauch

ich versuche nun hier freenas übers lan zu starten leider klappt dies nicht ganz so wie ich das will da ich die images net zum laufen bekomme (boot error oder er bleibt nach dem laden einfach stehen ....

ich habe hier eine freenas.img und eine freenas.iso

welche dateien aus der iso brauch ich um zu booten nehme ich img direkt in die append zeile von der pxelinux/default bekomme ich nen boot error face-sad

ich bein irgendwie bootet ja die iso auch (wenn auf cd gebrannt) ... die überede ich nun pxelinux(syslinux) dazu diese auch übers lan zu booten ?

leider hab ich keine andere linux kiste hier um mir daraus ein initrd image zu basteln zumal ich der meinung bin das es auch so gehen mueste ^^
Member: ITwissen
ITwissen Mar 13, 2007 at 10:06:35 (UTC)
Goto Top
ISO Images kann man nicht via PXE booten.

http://syslinux.zytor.com/archives/2003-November/002688.html
Member: MarquiS
MarquiS Mar 13, 2007 at 12:28:17 (UTC)
Goto Top
hallo und danke fürs replay


das mit den isos ist scho klar aber ich kann die iso doch öffnen und die datein dan für mich gebrauchen und da ist mein problem face-smile welche dateien und in welchen kontext müssen die stehen

aber mal davon abgesehen gibt es bei freenas ja auch eine *.img datei welche ich und ich hoffe mal das dies kein iso image ist da dies seperat angeboten wird , über pxe booten könnte

aber laut pxe howtos im netz sollte die /pxelinux.cfg/default ja so aussehen

label test
memdisk
append initrd=freenas.img

leider ist aber freenas zu groß für memdisk da es ja nun auch wieder keine floppyabbild ist

wenn ich das ding dan so starte bekomme ich natürlich nen boot error

nun stellt sich mir die frage wie ich das ding in die /pxelinux.cfg/default eintrage

da ich habe denke das diese freenas.img sowiso nicht bootet (warum auch immer) hab ich mir halt gedacht nehm ich halt die dateien aus der iso... nur welche und wie trage ich diese in die default.cfg von pxe ein da ja die cd ansich ja auch bootet sollte das mit den dateien ja auch gehen

i.e so (dateien von dem iso ins tftpboot verz. kopiert)

label test
/boot/kernel/kernel.gz
append ????

oder so ähnlioch

das mueste ja funktionieren



bye
Member: ITwissen
ITwissen Mar 13, 2007 at 13:14:31 (UTC)
Goto Top
Okay, dann habe ich dich falsch verstanden.

Hier der relevante Teil der PXE Konfiguration:

label test
kernel memdisk
append initrd=freenas.img
Member: MarquiS
MarquiS Mar 13, 2007 at 13:52:51 (UTC)
Goto Top
ui das geht ja schnell hier thx

aber leider hab ich das schon durch und ich bekomme nen boot error face-sad

freenas.img wird geladen
freenas.img wird entpackt
Loading Bootsector.... booting....
Boot error

und damit kann ich nix anfangen der bootsector sollte doch im img sein ? oder versteh ich da was falsch ?

freenas.img ist auch kein reines floppy image leider weis ich nicht was das für ein image ist

www.freenas.org evtl kannst du es ja mal testen ?

vielen dank
Member: ITwissen
ITwissen Mar 13, 2007 at 13:55:18 (UTC)
Goto Top
Habs getestet, bei mir bootet es problemlos.
Vielleicht ein Fehler beim Download?
Kannst ja mal die md5 Summen vergleichen.
Member: MarquiS
MarquiS Mar 13, 2007 at 14:09:53 (UTC)
Goto Top
ahhh jetzt wird es inter. prüfsumme ist auch ok face-sad .....

komisch hast du sonst noch eine idee?

woran kann es den sonst noch liegen ?
Member: ITwissen
ITwissen Mar 13, 2007 at 14:12:26 (UTC)
Goto Top
Vielleicht ist deine Hardware nicht kompatibel zu dem Linux Kernel.
Member: MarquiS
MarquiS Mar 13, 2007 at 14:17:20 (UTC)
Goto Top
ups ja das könnte sein face-sad so ein mist
Member: Mikey113
Mikey113 Jun 25, 2007 at 12:39:11 (UTC)
Goto Top
Hallo,
ich hab es jetzt schon mal geschafft mit PXE ein grml linux über's Netz zu laden und auch ein mit ntfsclone gesichertes WinXP zurückzuspielen. Nun werde ich das ganze mal mit Linux probieren.

Dazu eine Frage:
Ist es möglich das wenn ich mich morgens an den Rechner setze und starte, GRUB (oder das gestartete grml linux) mir ein Menue anbietet wo ich auswählen kann zwischen Win2k / WinXP / Linux / Solaris ? Vorher gemachte Sicherungen werden dann automatisch übers Netz ( vielleicht per dd ) draufgebügelt und nach'm Neustart läuft dann die Kiste... so ungefähr stelle ich mir das vor.
Wie läuft das dann mit dem MBR der Platte? Müsste ich den nachträglich wieder anpassen?
Das Windows hab ich auf die Platte mit der gleichen Partitionieren wie vor der Sicherung zurück gespielt, das funktionierte. Das restore auf eine vollige nackte Platte schlug fehl ...

Vielleicht hat jemand hier schon mal etwas ähnliches gemacht und kann mir da ein paar Tipps geben?

Thx 4 help ;)