
Soweit tftp
ich weiß pxe
, sendet der Client beim Booten eine Anfrage an den Server und der Server sendet einige Dateien zurück (Initrd, Kernel, Konfiguration, ...). Der Server kann anhand der IP-Adresse des Clients entscheiden, welche Dateien an den Client gesendet werden sollen. Der Client kennt die URL dieser Dateien nicht.
Meine Frage ist folgende:
Ich möchte tftp
den Server testen. Ich möchte einen Befehl oder ein (einfaches) Skript ausführen, das den tftp
Server kontaktiert, die Dateien empfängt und diese Dateien auf der Festplatte speichert.
Mit anderen Worten, ich möchte Folgendes tun:
Auf der Serverseite gibt es keinen Unterschied: Der Server denkt, der Client möchte über PXE booten und sendet die Dateien an den Client
Auf der Clientseite: Der Client möchte nicht wirklich booten. Er möchte nur die Dateien auf die Festplatte kopieren (speichern).
Was wäre der einfachste Weg, dies zu tun?
Antwort1
Der Kommentar von @Patrick zu Ihrer Frage war absolut richtig: Alles, was der Client-Rechner zum Bootstrappen von PXE braucht, ist eine DHCP-Anfrage zu senden. Der DHCP-Server (normalerweise auf dem PXE-Boot-Server) sieht die MAC-Adresse des Client-Geräts und verwendet sie, um
- Geben Sie dem Client eine IP-Adresse
- Sagen Sie dem Client, welche Dateien er vom PXE-Server abrufen soll.
an diesem Punkt kennt der Client die Adresse des Servers und weiß, was er von ihm bekommen muss. Leider gibt es eine Menge kniffliger Kleinigkeiten, z. B. kann es nur einen DHCP-Server geben, der die spezielle Konfiguration für den PXE-Client hat, ein TFTP-Server muss laufen und so weiter.
Eine recht gute Schritt-für-Schritt-Anleitung gibt es unterhttps://wiki.debian.org/PXEBootInstall. Sie haben Ihre Distribution nicht angegeben, aber die meisten PXE-Systeme reimen sich zumindest auf diese Anleitung.
Ich weiß, dass Sie in Ihrer Frage sagen, dass Sie die Adresse des PXE-Servers nicht wissen möchten. Aber das geht nur auf eine Art (ohne einen eigenen Client zu schreiben), und zwar mit einem DHCP-Anforderer/Prozessor für den PXE-Client. Wenn Sie auf diesen Teil verzichten möchten, verzichten Sie auf viele der Funktionen, die Sie zum Bootstrapping benötigen.
Ich weiß, dass Sie die Maschine eigentlich nicht booten möchten, was Sie dazu zwingt, einen Großteil des PXE-Protokolls zu Testzwecken zu implementieren. Wenn Sie keine Testmaschine zur Verfügung haben, frage ich mich, warum Sie PXE überhaupt testen müssen.
Antwort2
Antwort3
Ich bin am besten damit vertraut, wieSchusterrichtet TFTP ein, daher bin ich mir nicht sicher, ob das relevant ist, aber ich biete diese Information trotzdem an. Cobbler richtet einen Bootloader ein, indem pxelinux.0
er@Patrick erklärt es in den Kommentarensowie@msw. Daneben richtet es aber auch ein entsprechendes pxelinux.cfg/
Verzeichnis ein, das die MAC-Adressen aller Systeme enthält, die sich mit dem Server verbinden.
Diese Dateien enthalten pxelinux.cfg
Dateiinformationen wie diese:
$ more 01-54-52-00-ff-ff-ff
default linux
prompt 0
timeout 1
label linux
kernel /images/Centos56-x86_64/vmlinuz
ipappend 2
append initrd=/images/Centos56-x86_64/initrd.img ksdevice=bootif lang= console=ttyS0,115200 text serial kssendmac ks=http://192.168.1.207/cblr/svc/op/ks/system/kvmcobblertest
Der eigentliche Linux-Kernel, den diese VM booten wird, befindet sich in diesem über TFTP zugänglichen Verzeichnis /images/Centos56-x86_64/vmlinuz
. Die gesamte TFTP-Verzeichnisstruktur sieht von der Rückseite des Servers aus folgendermaßen aus:
$ ls -l /tftpboot/
total 348
drwxr-xr-x 2 root root 4096 Jun 22 2011 etc
drwxr-xr-x 2 root root 4096 Jul 9 2012 grub
drwxr-xr-x 6 root root 4096 Jul 9 2012 images
drwxr-xr-x 2 root root 4096 Jun 30 2011 images2
-rw-r--r-- 1 root root 20020 Jul 9 2012 memdisk
-rw-r--r-- 1 root root 39188 Jul 9 2012 menu.c32
drwxr-xr-x 2 root root 4096 Jun 22 2011 ppc
-rw-r--r-- 1 root root 14716 Jul 9 2012 pxelinux.0
drwxr-xr-x 2 root root 4096 Jul 9 2012 pxelinux.cfg
drwxr-xr-x 2 root root 4096 Jul 9 2012 s390x
-rw-r--r-- 1 root root 198192 Jul 9 2012 yaboot
Das Einzige, worauf die Server, die diesen TFTP-Server booten, zunächst zugreifen können, ist, wie andere bereits beschrieben haben, die pxelinux.0
+ Konfigurationsdatei, die der MAC-Adresse eines bestimmten Servers entspricht.
Bilderverzeichnis
Falls es Sie interessiert:
$ tree /tftpboot/images
/tftpboot/images
|-- Centos56-x86_64
| |-- initrd.img
| `-- vmlinuz
|-- Centos56-xen-x86_64
| |-- initrd.img
| `-- vmlinuz
`-- Centos60-x86_64
|-- initrd.img
`-- vmlinuz
3 directories, 6 files