@Nico77,
ok alles klar
![smile :)](./images/smilies/icon_smile.gif)
War aber nur ein Beispiel zu der Sache (siehe @Barf)
@Barf,
ich weiss was der Sinn der Busybox ist
![cool 8)](./images/smilies/icon_cool.gif)
Ich will den Sinn auch nicht umkrempeln, sondern nur einen einzigen Befehl auslagern, bzw zusätzlich haben ! Der kann ja auch mmmounttt heissen, und der mount der busybox kann drinbleiben. Dann hol' ich mal etwas weiter aus:
Es geht um die Reihenfolge wie ein Linux bootet. Ziel ist es, zu Testzwecken zb. mal die libc.so.6 zu tauschen, obwohl die ja im ro-Squashbereich liegt.
Im JFFS2-only geht das so: libc.so.6 nach /tmp uppen, und mit Telnet "cd /tmp" und "mv libc.so.6 /lib" eingeben, warten bis Cursor wiederkommt, und resetten. So soll es hier auch werden.
Idee dabei ist, dass in /lib (im Squash am Beispiel der libc.so.6) nur ein Symlink namens "libc.so.6" steht, der nach /var/libc.so.6 geht. Und /var/libc.so.6 ist auch wieder nur ein Symlink, der zurück nach
/lib/libc.so.6.squash geht ! Will man also mal eine lib tauschen, dann muss man in /var nur den Symlink mit einer Test-Lib überschreiben.
In Tuxboximages kommt ja in der Bootreihenfolge nach dem Bootloader und FLFS erstmal der Kernel dran, der dann nach der fstab und der inittab schaut, und dann die rcS abarbeitet. Die fstab, inittab, und rcS kann man also auf gar keinen Fall nach /var schieben/verlinken, da /var zu dem Zeitpunkt noch nicht gemountet ist. OK. Ziemlich weit am Anfang der rcS kommt ein Mountbefehl (mount -a, um alle noch nicht gemounteten, imageinternen FS'e zu mounten). Wenn er das getan hat, ist ab da theoretisch alles erlaubt; also egal in welchem FS die Files stehen.
Dummerweise ist aber der Mountbefehl Bestandteil der Busybox, und diese benötigt ca. 4 Libs, um den "blöden mount-Befehl" auszuführen. Aber Ziel ist ja, im Image alle Libs tauschbar zu machen. Man könnte sich jetzt zufrieden geben, und sagen, daß alle libs bis auf 4 tauschbar sind. Aber ausgerechnet die libc.so.6 ist zb. eine, die man gerne mal gegen eine andere tauschen möchte. Und jetzt zum Punkt ;-)
Wenn man einen mount-Befehl mit
integrierten Libs hätte, könnte man in der rcS "mmmmmounttttt -a" eintragen, und über diesen Trick
alle Libs durch hin- und herlinken über /var als Schnittstelle austauschbar machen. Es müssten sich im Grunde nur der Kernel, die fstab, die inittab, die rcS, und mmmmountttt im Squash befinden. Jetzt könnte man zwar auch fragen "Warum erstellst Du Dir kein JFFS2-Only ?".. Wegen Platzmangels ! Symlinks fressen nur ganz wenig Speicher, und nahezu keine Performance. Also könnte man in diverse FS'e eine ganze Menge reingepacken, und hätte dennoch den Komfort eines JFFS2-Only, bis auf das die getauschten Files halt 2x vorhanden sind !
Danke für den Hinweis, daß man einen Mount-Befehl auch irgendwo saugen und compilieren kann, aber hier sind auch wieder #include's drin, die dann später beim Ausführen wieder auf Libs zugreifen wollen, die ich ja auslagerbar haben will; ich bräuchte eine Starthilfe, wie man ein völlig Lib-freies Binary compiliert.
Oder könnte man auch irgendwie das u-boot, oder den Kernel bitten, daß bereits vor fstab und inittab das /var (JFFS2) gemountet wird ?
Bye, CTZ