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