RE: Boot via PXE ohne nfs etc.
Benjamin, Benjamin Zeller schrieb:
On Tuesday 31 January 2006 15:23, Gunreben, Peter (Peter) wrote:
Benjamin Zeller schrieb:
On Tuesday 31 January 2006 14:53, Gunreben, Peter (Peter) wrote:
Benjamin Zeller schrieb:
On Tuesday 31 January 2006 10:16, Gunreben, Peter (Peter) wrote: [...]
Der pxegrub kann sowohl den kernel, als auch die initrd über tftp nachladen.
Klar, das tut ja auch schon, nur brauche ich einen passenden Kernel und eine passende initrd, fuer die ich kein NFS o.ä. brauche, sondern die bereits genanntes zur Verfuegung stellt.
Hmmm, verstehe ich nicht ganz. Nimm doch einfach Installation- kernel und initrd (DVD:/boot/loader/..) und tausche linuxrc im initrd gegen dein Programm aus.
Grundsaetzlich wuerde ich das gerne tun, nur habe ich, wenn ich den Kernel und das Ding boote immernoch kein Root-Filesystem, oder sehe ich das falsch?
Yepp, die initrd ist dein root-filesystem.
OK, jetzt bin ich vollends verwirrt. Dann sollte doch aber auch nicht kommen "Can't mound root FS". Und was hat es mit linuxrc auf sich? Vielleicht kannst Du mir mal grundsaetzlich einen Ueberblick geben, wie ich da zu verfahren habe.
Hier der kleine Überblick: Der grub sollte auf jeden Fall den kernel und die initrd laden. Ich habe bisher nur nbgrub verwandt, das ja dem pxegrub sehr ähnlich ist, allerdings eben nicht vom DHCP-Server initiert wird. Genauer gesagt habe ich einen nbgrub auf einer Diskette und boote von der Diskette. Dort sieht das so aus: -------------- menu.lst ------------------ timeout 600 default 0 title test dhcp ifconfig --server <IP des TFTP-Servers> root (nd) kernel /<Verzeichnis im TFTP wo der kernel liegt>/kernel ramdisk_size=65536 initrd /<Verzeichnis im TFTP wo deine initrd liegt>/initrd boot -------------- menu.lst ------------------ Nun weiss ich nicht, was du wirklich machen willst. Hier ein kleines Beispiel: Wir ersetzen den init einfach durch die bourne shell. Als Grundlage kann man auch die normale initrd nehmen. cp /boot/initrd /tmp cd /tmp unpackInitrd initrd cd /tmp/work-initrd cp bin/sh init packInitrd Die modifizierte /tmp/initrd solltest du nun in den TFTP-Server legen. Wenn du alles richtig gemacht hast, wird beim booten der kernel und dann die initrd geladen. Am Ende wird noch das executable init gestartet, was ja nun eine bourne shell ist. Achtung: Die shell hat keinen Prompt und auch fast keine Kommandos. Um zu sehen, was sich im aktuellen Verzeichnis befindet, kannst du dir z.B. mit "echo *" behelfen. Das root-filesystem ist wie gesagt der Inhalt der initrd. Um noch mehr Kommandos zu bekommen, kannst du dir z.B eine busybox mit ins Gepäck (=initrd) nehmen. Viel Spass beim Ausprobieren. Gruss, Peter.
On Tuesday 31 January 2006 18:08, Gunreben, Peter (Peter) wrote:
Benjamin,
Benjamin Zeller schrieb:
On Tuesday 31 January 2006 15:23, Gunreben, Peter (Peter) wrote:
Benjamin Zeller schrieb:
On Tuesday 31 January 2006 14:53, Gunreben, Peter (Peter) wrote:
Benjamin Zeller schrieb:
On Tuesday 31 January 2006 10:16, Gunreben, Peter (Peter) wrote: [...] > Der pxegrub kann sowohl den kernel, als auch die initrd über > tftp nachladen. >
Klar, das tut ja auch schon, nur brauche ich einen passenden Kernel und eine passende initrd, fuer die ich kein NFS o.ä. brauche, sondern die bereits genanntes zur Verfuegung stellt.
Hmmm, verstehe ich nicht ganz. Nimm doch einfach Installation- kernel und initrd (DVD:/boot/loader/..) und tausche linuxrc im initrd gegen dein Programm aus.
Grundsaetzlich wuerde ich das gerne tun, nur habe ich, wenn ich den Kernel und das Ding boote immernoch kein Root-Filesystem, oder sehe ich das falsch?
Yepp, die initrd ist dein root-filesystem.
OK, jetzt bin ich vollends verwirrt. Dann sollte doch aber auch nicht kommen "Can't mound root FS". Und was hat es mit linuxrc auf sich? Vielleicht kannst Du mir mal grundsaetzlich einen Ueberblick geben, wie ich da zu verfahren habe.
Hier der kleine Überblick: Der grub sollte auf jeden Fall den kernel und die initrd laden. Ich habe bisher nur nbgrub verwandt, das ja dem pxegrub sehr ähnlich ist, allerdings eben nicht vom DHCP-Server initiert wird. Genauer gesagt habe ich einen nbgrub auf einer Diskette und boote von der Diskette. Dort sieht das so aus:
-------------- menu.lst ------------------ timeout 600 default 0
title test dhcp ifconfig --server <IP des TFTP-Servers> root (nd) kernel /<Verzeichnis im TFTP wo der kernel liegt>/kernel ramdisk_size=65536 initrd /<Verzeichnis im TFTP wo deine initrd liegt>/initrd boot -------------- menu.lst ------------------
Nun weiss ich nicht, was du wirklich machen willst.
Trotz der Gefahr, jetzt vermutlich virtuell auf den Deckel zu bekommen: Folgendes Szenario (so soll es am Schluss ausschauen): PXE-Server uebergibt Kernel und Initrd an bootenden Client. Jetzt kommt der Kasus Knacksus (*schon mal in Deckung geh* :-) ): Client bootet Kernel und noch_zu_findendene bzw. zu_bauende Initrd. Kein X oder solche Scherze, noch nicht mal eine Bash wird gebraucht. Der Client soll dann ein Sambashare mounten und eine unattended Windows-Installation starten.... OK, jetzt hab ich mich geouted, ich weiss selbst noch nicht, wie ich das hinbekommen soll (wie man vermutlich an meinen Mails merkt), angeblich geht es aber in irgendeiner Art und Weise.
Hier ein kleines Beispiel: Wir ersetzen den init einfach durch die bourne shell. Als Grundlage kann man auch die normale initrd nehmen.
cp /boot/initrd /tmp cd /tmp unpackInitrd initrd cd /tmp/work-initrd cp bin/sh init packInitrd
OK, ich glaub da hab ich verstanden.
Die modifizierte /tmp/initrd solltest du nun in den TFTP-Server legen. Wenn du alles richtig gemacht hast, wird beim booten der kernel und dann die initrd geladen. Am Ende wird noch das executable init gestartet, was ja nun eine bourne shell ist.
Wie ich Kernel und initrd uebergebe, weiss ich.
Achtung: Die shell hat keinen Prompt und auch fast keine Kommandos. Um zu sehen, was sich im aktuellen Verzeichnis befindet, kannst du dir z.B. mit "echo *" behelfen. Das root-filesystem ist wie gesagt der Inhalt der initrd. Um noch mehr Kommandos zu bekommen, kannst du dir z.B eine busybox mit ins Gepäck (=initrd) nehmen.
Heisst was? Sorry, falls ich nerve, ich lese mittlerweile "Remastering Knoppix".
Viel Spass beim Ausprobieren.
Der vergeht mir langsam, aber ich bin froh, dass Du mir hilfst.
Gruss, Peter.
LG, Benni, der mit obigem gerade sein Coming-Out hatte :-) -- Benjamin Zeller Ing.-Büro Hohmann Bahnhofstr. 34 D-82515 Wolfratshausen Tel.: +49 (0)8171 347 88 12 Mobil: +49 (0)160 99 11 55 23 Fax: +49 (0)8171 910 778 mailto: zeller@ibh-wor.de www.ibh-wor.de
Gunreben, Peter (Peter) wrote:
Benjamin,
Benjamin Zeller schrieb:
On Tuesday 31 January 2006 15:23, Gunreben, Peter (Peter) wrote:
Benjamin Zeller schrieb:
On Tuesday 31 January 2006 14:53, Gunreben, Peter (Peter) wrote:
Benjamin Zeller schrieb:
On Tuesday 31 January 2006 10:16, Gunreben, Peter (Peter) wrote: [...] > Der pxegrub kann sowohl den kernel, als auch die initrd über > tftp nachladen. > Klar, das tut ja auch schon, nur brauche ich einen passenden Kernel und eine passende initrd, fuer die ich kein NFS o.ä. brauche, sondern die bereits genanntes zur Verfuegung stellt. Hmmm, verstehe ich nicht ganz. Nimm doch einfach Installation- kernel und initrd (DVD:/boot/loader/..) und tausche linuxrc im initrd gegen dein Programm aus. Grundsaetzlich wuerde ich das gerne tun, nur habe ich, wenn ich den Kernel und das Ding boote immernoch kein Root-Filesystem, oder sehe ich das falsch? Yepp, die initrd ist dein root-filesystem. OK, jetzt bin ich vollends verwirrt. Dann sollte doch aber auch nicht kommen "Can't mound root FS". Und was hat es mit linuxrc auf sich? Vielleicht kannst Du mir mal grundsaetzlich einen Ueberblick geben, wie ich da zu verfahren habe.
Hier der kleine Überblick: Der grub sollte auf jeden Fall den kernel und die initrd laden. Ich habe bisher nur nbgrub verwandt, das ja dem pxegrub sehr ähnlich ist, allerdings eben nicht vom DHCP-Server initiert wird. Genauer gesagt habe ich einen nbgrub auf einer Diskette und boote von der Diskette. Dort sieht das so aus:
-------------- menu.lst ------------------ timeout 600 default 0
title test dhcp ifconfig --server <IP des TFTP-Servers> root (nd) kernel /<Verzeichnis im TFTP wo der kernel liegt>/kernel ramdisk_size=65536 initrd /<Verzeichnis im TFTP wo deine initrd liegt>/initrd boot -------------- menu.lst ------------------
Nun weiss ich nicht, was du wirklich machen willst. Hier ein kleines Beispiel: Wir ersetzen den init einfach durch die bourne shell. Als Grundlage kann man auch die normale initrd nehmen.
cp /boot/initrd /tmp cd /tmp unpackInitrd initrd cd /tmp/work-initrd cp bin/sh init packInitrd
Die modifizierte /tmp/initrd solltest du nun in den TFTP-Server legen. Wenn du alles richtig gemacht hast, wird beim booten der kernel und dann die initrd geladen. Am Ende wird noch das executable init gestartet, was ja nun eine bourne shell ist.
Genau so hab ich das jetzt versucht, nur leider tut das so nicht. config vom pxegrub: prompt: 0 label linux kernel vmlinuz append ramdisk_size=65536 initrd=initrd Das ganze resultiert in Folgendem: Client bootet. Loading vmlinuz...., Loading initrd... [...] Bootmeldungen [...] /init: Can't open auto Kernel panic - not syncing: Attempted to kill init Tjo, das ist das was passiert.
Achtung: Die shell hat keinen Prompt und auch fast keine Kommandos. Um zu sehen, was sich im aktuellen Verzeichnis befindet, kannst du dir z.B. mit "echo *" behelfen. Das root-filesystem ist wie gesagt der Inhalt der initrd. Um noch mehr Kommandos zu bekommen, kannst du dir z.B eine busybox mit ins Gepäck (=initrd) nehmen.
Was ich am Liebsten haette: Eine initrd, die dazu fuehrt, dass ich am Ende in /bin/bash lande und bestimmte Kommandos habe (smbmount z.B.) Sowas muss doch $irgendwie machbar sein?
Viel Spass beim Ausprobieren.
Der hat sich noch nicht wirklich eingestellt :-(
Gruss, Peter.
LG, Benni -- Benjamin Zeller Ing.-Büro Hohmann Bahnhofstr. 34 D-82515 Wolfratshausen Tel.: +49 (0)8171 347 88 12 Mobil: +49 (0)160 99 11 55 23 Fax: +49 (0)8171 910 778 mailto: zeller@ibh-wor.de www.ibh-wor.de
Hallo, Am Wed, 01 Feb 2006, Benjamin Zeller schrieb:
config vom pxegrub:
prompt: 0 label linux kernel vmlinuz append ramdisk_size=65536 initrd=initrd [..] Eine initrd, die dazu fuehrt, dass ich am Ende in /bin/bash lande und bestimmte Kommandos habe (smbmount z.B.)
Sowas muss doch $irgendwie machbar sein?
init=/bin/bash als weiteren Kernelparameter. Die bash ist aber dynamisch gelinkt, d.h. du muesstest u.a. die libc, libnss* u.v.a.m. mit in die initrd packen. Sinnvoller ist da die busybox oder die sash statisch gelinkt zu nehmen. -dnh -- Was ich heute sehe sind junge Leute, die ohne Maus total aufgeschmissen sind und in Tränen ausbrechen. Die es nicht schaffen eine Anleitung oder ein Fach- buch zu lesen und lieber 10.000 mal irgendwelchen obskuren Humbug probieren als sich über die eigentliche Lösung des Problems Gedanken zu machen. --J. Link
On Wednesday 01 February 2006 22:06, David Haller wrote:
Hallo,
Am Wed, 01 Feb 2006, Benjamin Zeller schrieb:
config vom pxegrub:
prompt: 0 label linux kernel vmlinuz append ramdisk_size=65536 initrd=initrd [..] Eine initrd, die dazu fuehrt, dass ich am Ende in /bin/bash lande und bestimmte Kommandos habe (smbmount z.B.)
Sowas muss doch $irgendwie machbar sein?
init=/bin/bash
als weiteren Kernelparameter. Die bash ist aber dynamisch gelinkt, d.h. du muesstest u.a. die libc, libnss* u.v.a.m. mit in die initrd packen. Sinnvoller ist da die busybox oder die sash statisch gelinkt zu nehmen.
Ich bin jetzt folgendermaßen vorgegangen: cp /boot/initrd . unPackInitrd initrd cd /tmp/work-initrd busybox-install . rm init mv linuxrc init packInitrd Gebooted: Dann bin ich auf der Shell. Nur wie bekomme ich da jetzt selbst Sachen rein? wie smbmount etc. Ich hab ja nicht mal eine Netzwerkkarte :-( LG, Benni -- Benjamin Zeller Ing.-Büro Hohmann Bahnhofstr. 34 D-82515 Wolfratshausen Tel.: +49 (0)8171 347 88 12 Mobil: +49 (0)160 99 11 55 23 Fax: +49 (0)8171 910 778 mailto: zeller@ibh-wor.de www.ibh-wor.de
Hallo, Am Thu, 02 Feb 2006, Benjamin Zeller schrieb:
Gebooted: Dann bin ich auf der Shell. Nur wie bekomme ich da jetzt selbst Sachen rein? wie smbmount etc. Ich hab ja nicht mal eine Netzwerkkarte :-(
Musst du wohl selber neu bauen, die Abhaengigkeiten des default-SUSE smbmount sind doch ziemlich viele (schau dir 'ldd /usr/bin/smbmount' an). Ist in deiner initrd eigentlich ne libc? -dnh -- 172: Internet Das längste Kabel der Welt. (Lutz Frommberger)
On Thursday 02 February 2006 18:08, David Haller wrote:
Hallo,
Am Thu, 02 Feb 2006, Benjamin Zeller schrieb:
Gebooted: Dann bin ich auf der Shell. Nur wie bekomme ich da jetzt selbst Sachen rein? wie smbmount etc. Ich hab ja nicht mal eine Netzwerkkarte :-(
Musst du wohl selber neu bauen, die Abhaengigkeiten des default-SUSE smbmount sind doch ziemlich viele (schau dir 'ldd /usr/bin/smbmount' an).
Ja, das ist mir auch schon aufgefallen.
Ist in deiner initrd eigentlich ne libc?
Ist die "normale" SuSE10-initrd. Ich gehe gerade einen anderen Weg, da ich doch einiges an Paketen brauche. Ich versuche mir jetzt, ein moeglichst kleines Knoppix zu schneidern, mit dem ich dann die Clients versorge. Immerhin hab ich die Groesse schon halbieren koennen, jetzt gehts weiter ans eingemachte. DSL konnte ja auch auf 50MB gedrueckt werden ;-) LG, Benni -- Benjamin Zeller Ing.-Büro Hohmann Bahnhofstr. 34 D-82515 Wolfratshausen Tel.: +49 (0)8171 347 88 12 Mobil: +49 (0)160 99 11 55 23 Fax: +49 (0)8171 910 778 mailto: zeller@ibh-wor.de www.ibh-wor.de
Hallo, Am Fri, 03 Feb 2006, Benjamin Zeller schrieb:
On Thursday 02 February 2006 18:08, David Haller wrote:
Ist in deiner initrd eigentlich ne libc?
Ist die "normale" SuSE10-initrd.
Und woher soll ich wissen, ob da ne libc drin ist? Ich hab' hier keine SUSE 10...
Ich gehe gerade einen anderen Weg, da ich doch einiges an Paketen brauche. Ich versuche mir jetzt, ein moeglichst kleines Knoppix zu schneidern, mit dem ich dann die Clients versorge. Immerhin hab ich die Groesse schon halbieren koennen, jetzt gehts weiter ans eingemachte. DSL konnte ja auch auf 50MB gedrueckt werden ;-)
Falls du selber kompilierst: nimm ggfs. die dietlibc statt der glibc. -dnh -- 274: Nikoma-Newsserver Museum für prähistorische Gruppen. (Ulrich Mindrup)
participants (3)
-
Benjamin Zeller
-
David Haller
-
Gunreben, Peter (Peter)