PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pxelinux / diskless client



filou
24.02.04, 17:53
Hallo,

ich möche einen Rechner via Netzwerkkarte booten. Da die Kiste "boot from Lan" im Bios unterstützt, habe ich mir gedacht, mal pxelinux zu benutzen.

Soweit so gut - DHCP V3.x läuft, tftp-ha läuft; wie geht es jetzt aber weiter ??

Ein Verzeichnis /tftpboot/pxelinux.cfg habe ich angelegt. Dort soll man nun die "Konfigurationen" hinpacken. Leider habe ich keinen Plan, wie man da was konfigurien soll, geschweige denn, wie der Kernel auszusehen hat, der ja unter /tftpboot liegen soll ?!

Zielsetzung:
Diskless Client soll ohne X laufen; es wird eigentlich nur eine Shell samt svgalib benötigt. (Debian woody System)

Bin dankbar für jede Hilfe.

mfg

oafish
25.02.04, 09:36
Hi,
lies einmal die README. Dort steht, das für die unterschiedlichen IP Adressenen verschiedene Ordner angelegt werden müssen.

oafish

beatman
25.02.04, 09:57
moin moin !!!

vielleicht hilt dir das ja auch weiter...

http://www.etherboot.org/
http://ltsp.org/

irgendwo stand da auch was mit pxe-boot... musst mal lesen...

greetings... beatman

filou
25.02.04, 12:13
Hallo,

danke erstmal für die Antworten - leider helfen die mir nicht weiter.

Also - hpa-tftpd läuft - für den diskless Client liegt auf dem Server eine Datei CXXXX unter /tftpboot/pxelinux.cfg

Wenn ich nun den Client starte, werden aber alle Dateien wie im HowTo beschrieben, durchgegangen - CXXXXX -- CXXXX -CXXX -- default.
Schlussendlich landet der Client bei default, was er anscheinend aber auch nicht finden kann.

Selbst wenn in der Datei CXXX nen Image angegen ist, welches nicht korrekt ist, etc...sollte der Client doch an der Stelle anhalten und versuchen zu booten.
Was mich stört ist, das der Client bis default durchläuft, obwohl die Datei CXX vorhanden ist. Diese stimmt auch mit der IP Adresse überein.

:(
mfg

fons
25.02.04, 12:25
hasst du schon einen kernel für den client?


also ich hatte es immer schon soweit gehabt, das er gebootet hat aber dann hatte er ein problem mit inittab.

in dieser reihenfolge sollte es ablaufen:

dhcpanfrage -> ip + tftp-adresse + nfs-adresse
tftp: kernel holen (mit nfs-unterstützung)
----booten----
root-system mounten(nfs)

weiter hab ich das leider noch nicht bekommen, wegen den fehler mit inittab oder sowas ähnlichem

filou
25.02.04, 13:16
Original geschrieben von fons
hasst du schon einen kernel für den client?


also ich hatte es immer schon soweit gehabt, das er gebootet hat aber dann hatte er ein problem mit inittab.

in dieser reihenfolge sollte es ablaufen:

dhcpanfrage -> ip + tftp-adresse + nfs-adresse
tftp: kernel holen (mit nfs-unterstützung)
----booten----
root-system mounten(nfs)

weiter hab ich das leider noch nicht bekommen, wegen den fehler mit inittab oder sowas ähnlichem

Hallo,
nein - einen Kernel habe ich noch nicht. Ich möchte eigentlich wissen, ob der tftpd seinen Dienst ordentlich verrichtet. Mittlerweile habe ich vollkommen den durchblick verloren, welchen tftpd ich benutzen soll/muss. Zur Zeit habe ich mal den aftpd von Woody installiert - mit reichlich vielen Optionen.

Nur komme ich nicht wirklich weiter.
Soweit bin ich:
DHCP funktioniert - IP Adresse wird dem Client zugewiesen
atftpd äh -ja im Logfeile steht sowas wie

serving /pxelinux.0 to 192.168.4.110:2070
recieved RRQ <filename :/pxelinux.0, mode: octet, tsize: 0>
tsize option -> 9952
sent OACK <tsize: 9952>
recieved ERROR <code: 0, msg: TFTP Abortet>
Aborting transfer
...


Dann fängt tftpd wieder an mit "serving...und ein großer Block mit sent Data, Block xx
Leider habe ich keine Ahnung ob das so sein soll oder nicht.

Der Client geht die Dateien von CXXX bis default durch und meldet dann: Could not find kernel image: linux..

Irgendwie steh ich nen bisschen im Regen..

mfg

fons
25.02.04, 14:01
was steht beim client?

schau halt ob du von einem anderen rechner auf dem tftp kommst.

du musst beim dhcp auch noch den namen des kernels mitgeben (mach mal einen kernel in den tftp-ordner)

ist das die ganze log?

filou
25.02.04, 15:21
Hallo fons,

das ist nicht das ganze logfile - hier aber mal ein kompletter log vom Starten bis "beenden"


Feb 25 13:52:46 debian tftpd[434]: Trivial FTP server started (0.6)
Feb 25 13:52:46 debian tftpd[434]: started by inetd
Feb 25 13:52:46 debian tftpd[434]: logging level: 7
Feb 25 13:52:46 debian tftpd[434]: directory: /tftpboot/
Feb 25 13:52:46 debian tftpd[434]: user: nobody.nogroup
Feb 25 13:52:46 debian tftpd[434]: log file: /var/log/atftpd.log
Feb 25 13:52:46 debian tftpd[434]: server timeout: 300
Feb 25 13:52:46 debian tftpd[434]: tftp retry timeout: 5
Feb 25 13:52:46 debian tftpd[434]: maximum number of thread: 100
Feb 25 13:52:46 debian tftpd[434]: option timeout: enabled
Feb 25 13:52:46 debian tftpd[434]: option tzise: enabled
Feb 25 13:52:46 debian tftpd[434]: option blksize: disabled
Feb 25 13:52:46 debian tftpd[434]: option multicast: disabled
Feb 25 13:52:46 debian tftpd[434]: address range: 239.255.0.0-255
Feb 25 13:52:46 debian tftpd[434]: port range: 1753
Feb 25 13:52:46 debian tftpd[436]: Serving /pxelinux.0 to 192.168.4.110:2078
Feb 25 13:52:46 debian tftpd[436]: reveived RRQ <filename: /pxelinux.0, mode: octet, >
Feb 25 13:52:46 debian tftpd[436]: sent OACK <>
Feb 25 13:52:46 debian tftpd[436]: received ACK <block: 0>
Feb 25 13:52:46 debian tftpd[436]: sent DATA <block: 1, size 512>
Feb 25 13:52:46 debian tftpd[436]: received ACK <block: 1>
Feb 25 13:52:46 debian tftpd[436]: received ACK <block: 20>

Das geht jetzt bis block 20 weiter ....
Dann folgt..
Feb 25 13:52:46 debian tftpd[436]: End of transfer
Feb 25 13:52:46 debian tftpd[436]: Server thread exiting


Beim Client sthet (DELL Laptop, Intel NIC)


..
..
My IP address semms to be C0A8046E 192.168.4.110
..
TFTP prefix /tftpboot/
Trying to load: pxelinux.cfg/C0A8046E
Trying to load: pxelinux.cfg/C0A8046
Trying to load: pxelinux.cfg/C0A804
Trying to load: pxelinux.cfg/C0A80
Trying to load: pxelinux.cfg/C0A8
Trying to load: pxelinux.cfg/C0A
Trying to load: pxelinux.cfg/C0
Trying to load: pxelinux.cfg/C
Trying to load: pxelinux.cfg/default
Could not find kernel image: linux
boot:


Ich hoffe das hilft weiter. Wie meinst du das mit dem Kernel bim DHCP mitgeben. Dort steht wie im HowTo "filename "/tftpboot/pxelinux.0" ".

mfg & thx

oafish
25.02.04, 16:35
Die Aussage: Could not find kernel image: linux ist für mich selbsterklärend.

Du mußt Dich aber auch genau an die Readme halten. Die C0... ist Deine IP in hex. Du mußt du halt umrechnen, je nachdem wie penibel du bist :)

oafish

filou
25.02.04, 16:42
Original geschrieben von oafish
Die Aussage: Could not find kernel image: linux ist für mich selbsterklärend.

Du mußt Dich aber auch genau an die Readme halten. Die C0... ist Deine IP in hex. Du mußt du halt umrechnen, je nachdem wie penibel du bist :)

oafish

Hallo,
das die C0 meine IP ist, ist mir schon klar. Es gibt ja auch eine Datei mit C0A85623 (nur ein Beispiel !)
So, nun bootet der Client, bekommt vom DHXCP seine IP und sollte eigentlich die oben angegeben Datei finden. Doch stattdessen geht er die Hex IP bis zu default durch.
Wenn aber die Datei C0Axxxx mit der IP übereinstimmt, warum landet der Client überhaupt bei default ??

Ich will die Kiste ja erstmal soweit bekommen, das sie übehaupt nen Kernel anfängt zu booten/suchen. Ob dieser funktioniert oder nicht ist erstmal Wurscht. Deshalb liegt ja auch im /tftpboot Verzeichnis ein Kernel drinne.

mfg

filou
25.02.04, 20:39
Ok,

ich habe das ganze Zeugs jetzt mal zuhause getestet. Nachdem ich vom atftp auf den tftp-hpa gewechelt bin und noch das Verzeichnis für den tftpd in der inetd.conf auf /tftpboot gesetzt habe funkioniert es auch.

Zu Testzwecken habe ich den kernel vom Server in das tftp Verzeichnis kopiert. Dieser wird teilweise geladen - bis er nicht mehr weiter weiß und gerne eine root-floppy haben möchte.

Die nächsten Schritte sind doch jetzt NFS Server installieren ein ?root-filesystem? exportieren und einen pasenden Kernel mit Netzwerk- und NFS-boot Unterstützung basteln ?!

Was muss man da genau expportieren ? Wird mit debootstrap ein komplettes FS exportiert oder wie muss ich mir das vorstellen ?

thx
mfg

fons
26.02.04, 08:24
per nfs wird das ganze dateiensystem freigegeben, alle programme, libaries und so weiter.


vielleicht findest da noch weitere punkte
http://www.ltsp.org/

filou
26.02.04, 17:51
Hmmm, jetzt bin ich total verwirrt.......

ich habe es ja auf meinem Heim-Rechner (Debian unstable, 2.4.24) getestet. Dort wird über tftpd-hpa der Kernel ordentlich serviert.

Hier, auf einem Debian stable 2.4.18 funktioniert es wiederum nicht. Sobald der Client bootet, findet er den Bootloader (pxelinux.0) nicht. Obwohl von der Konfiguration her, dieser mit dem Heimrechner identisch ist.

Was zumHenker fehlt denn da noch, damit das funktiniert ??? Es kann doch ned sein, das ich wie auf dem Heimrechner, noch mal schnell ne KDE aufspielen muss....
apt zeigt mir keine weiteren Abhängigkeiten an...

ziemlich verwirrt ist....

mfg

filou
04.03.04, 21:01
Soo - hallo mal wieder,

ich meinen Server nun soweit, das er einen Kernel bereitstellt und der diskless Client diesen auch lädt, also:

Client einschalten, DHCP Adresse holen, pxelinux.0 laden, Kernel(vmlinuz) nachladen

Meine Frage: Wie komm ich jetzt zu nem nfsroot ?

Der Kernel hat ja die entsprechenden optionen schon drin (rootfs = nfs). Was muss ich denn jetzt in die /etc/exports schreiben wie sieht die Configdatei für diesen Client aus (/tftpboot/default).
Wie gesagt, ich brauche erstmal kein X...

Es gibt ja vieles im Netz darüber - aber je mehr man liest, desto verwirrter wird man :(


mfg

kitzmann
09.01.08, 19:59
hallo,

ich mach das selbe grad auf gentoo.
ich benutze auch den tftp-hpa

meine pxelinux.0 wird auch per tftp geladen, aber die pxelinux.cfg/* nicht.

obwohl die default und auch andere configs passend zur ip vorhanden sind.

kann mir hier jemand auf die sprünge helfen?

michi

kitzmann
09.01.08, 22:52
hallo,

habe gerade gegoogelt und lustigerweise zufällig die lösung in diesem forum gefunden.

man MUSS die option next-server <ip-vom-tftp-server> in der dhcpd.conf angeben. sonst gehts net.

muss wohl ein bug sein.

grüße michi

BedriddenTech
11.01.08, 15:50
Hallo,

vielleicht hilft es, einen grundsätzlichen Überblick zu haben.

Client schickt beim Boot DHCP-Anfragen ins Netz; der DHCP-Server antwortet, teilt eine IP zu;
in der DHCP-Antwort ist auch die Option "next-server" enthalten. An dieser Adresse fragt der Client jetzt via PXE nach einem Kernel, der mittels TFTP übertragen wird;
auf dem Client wird der Kernel gestartet;
nach dem Kernelstart wird die InitRD geladen, die zusammen mit dem Kernel übertragen wurde. Das minimale System darauf macht alles klar, d.h. Udev wird gestartet, die NFS-Laufwerke eingehängt. Hier muß meistens nochmal der DHCP-Server angefragt werden, damit das System die geliehene IP regelmäßig erneuern kann.

D.h., man braucht einen DHCP-Server, einen TFTP-Dienst und PXE-Linux (http://syslinux.zytor.com/pxe.php). Die Konfiguration des PXE-Dienstes ist im Prinzip ähnlich wie bei einem Bootmanager und ziemlich einfach; am Anfang nimmt man am besten die Datei "default", später kann man das immer noch spezifischer anlegen. Der PXE-Dienst tut nicht mehr, als einen Kernel und eine InitRD zu übertragen (und das unter Zuhilfenahme von TFTP). Die müssen vorher erstellt werden.
Das ist kein Hexenwerk; im Prinzip muß lediglich folgendes getan werden: Du erstellst einen Kernel für die Zielarchitektur; sprich lädtst dir die Kernelquellen, konfigurierst den Kernel und übersetzt die Quellen. Das Kernelimage wird dann im tftp-Ordner abgelegt, so daß der PXE-Dienst ihn finden kann. Danach kommt die InitRD dran. Da mußt du im Prinzip in einem beliebigen Verzeichnis ein Mini-Linux bauen, sprich Ordnerstruktur anlegen, ein paar (am besten Busybox-basierende) Programme reinlegen (sowas wie die Shell, cat, cp, mount, udev, ...) und dir die Bootskripte schreiben. Und fertig ist die Laube. :)

HTH.

kitzmann
11.01.08, 16:57
wie siehts mit x-server aus?


hast du da ne ahnung?

BedriddenTech
11.01.08, 20:43
Gehört in die Abteilung "was nach dem Starten via NFS eingehängt wird." :)

kitzmann
13.01.08, 11:24
hmm, aber wie geht das genau?

ich habs jetzt eh erstmal so gelöst, dass ich Damn small linux boote. das hat eigentlich alles was ich will. interessant wäre es jetzt, dass es einstellungen auf nfs im netz speichert.

BedriddenTech
13.01.08, 17:12
Du könntest zum Test ja mal mit folgendem anfangen: Erstelle auf deinem Server ein beliebiges Verzeichnis, das du durch NFS freigibst. In diesem Verzeichnis erstellst du die normale Unix-Datei- und -Ordnerstruktur, inklusive der Programme, die du benötigst. Du könntest dazu z.B. eine Gentoo-Installation machen und mittels "chroot" alles auf dem Server bearbeiten. Wichtig ist natürlich, daß xorg.conf, Kernel, usw. auf die Zielsysteme angepaßt werden, aber das versteht sich ja von selbst. Der Rest besteht dann lediglich darin, auf den Zielsystemen genau dieses Verzeichnis mit NFS einzubinden.