On Saturday 26 February 2005 11:16, Sebastian Koerner wrote:
ich muss ein Programm vor dem Mounten des Root-FS starten. Wie geht das? Ich habe eine initrd. Die wird doch auch "richtig gemounted". Kann man das was unterbringen? Z.b. dem Kernel ein init=/mystart.sh mitgeben.?
Der richtige Weg ist wohl, das Programm aus linuxrc heraus zu starten. Du kannst den initrd mit zcat unkomprimieren: zcat /boot/initrd >/tmp/initrd.uncompressed Dann kannst Du ihn über /dev/loop mounten: mount -oloop /tmp/initrd.uncompressed /mnt Nun solltest Du ein Script /mnt/linuxrc finden, das Du entsprechend anpaßt. Natürlich müssen ALLE Komponenten Deines Programmes in die initrd, also auch evtl. shared libs, config files, ... Normalerweise wird /proc recht bald von linuxrc gemounted. Bei mir in der 12. Zeile. Ist das geschehen, kannst Du über /proc/cmdline die Kommandozeile des Kernels lesen und Deine eigenen Parameter auswerten. Damit könntest Du Dein Programm nur in bestimmten Fällen ausführbar machen. Natürlich mußt Du auch beachten, daß das Verzeichnis, das jetzt als /mnt gemountet ist, später / ist. Um das richtige Feeling zu haben, wie sich das Programm später fühlt, kannst Du "chroot /mnt" machen. Aufpassen solltest Du auch mit Suse und yast. Suse liefert ein Script /sbin/mkinitrd, das Deinen selbstgebastelten initrd evtl. überschreibt. Daher wählst Du vielleicht einen anderen Namen. grub und lilo sind die Namen egal. Um den gepatchten initrd zu installieren, unmountest Du /mnt und komprimierst /tmp/initrd.uncompressed wieder. Torsten