Hallo! Ich versuche gerade, mir eine bootdisk mit einer initrd zu basteln. Leider funktioniert es nicht so, wie man es in den Dokus lesen kann. Ich habe ein Image mit diesen Inhalten erstellt: /bin /bin/dd /bin/mount /bin/umount /bin/bash /dev/....alleswasmanbraucht /linuxrc Die initrd wird geladen, aber die das Script nicht ausgeführt. Ich habe dann eine initrd von Suse ausgepackt und mir angesehen. Die machen das genau so wie ich. Allerdings benutzen sie eine andere Shell, und wird es sehr komisch. Die Shell heißt dort sh. Normaler weise ist sh ein Link auf die bash, hab ich extra nachgesehen. Diese Shell, die bei der initrd verwendet wird ist irgendwie anders, einerseits in der funktion, aber auch in der Dateigröße. Wenn ich in meiner initrd die bash gegen diese Shell austausche, dann werden die echo Kommandos in meiner linuxrc plötlich beim booten ausgeführt, alle anderen Kommandos aber nicht. Er beauptet, die Kommandos wären nicht da. Es wird aber noch besser. Suse benutzt in ihrer initrd das Kommando insmod. Wenn ich das in meine initrd nach /bin kopiere, dann wird es als einziges Kommando in dem Script von der Shell ausgeführt! Der einzige Unterschied, der mir bei den Kommandos aufgefallen ist, das meine alle dynamically linked sind, das insmod aber nicht. Also habe ich die sash als Shell genommen, die alle Kommandos, die ich brauche eingebaut hat (dd, mount und umount) und statisch gelinkt ist. Die wird zwar gestartet, kennt aber ihr eigenen Kommandos nicht, außer exit:-( Zum testen habe ich zu letzt einfach immer die entsprechende Shell als linuxrc hinkopiert. Wenn sie beim booten funktioniert, bekommt man einen Promt und kann Kommandos absetzen (oder auch nicht). Ergebnis: Mit der bash geht garnix Mit der sash bekommt man einen Promt, es lassen sich aber keine Kommandos absetzen (ls, pwd usw.) Wobei ich das nicht versteh, das sie ja in der Shell mit drinn sind. Mit der ominösen sh kann nur das Kommando insmod absetzen, alle andern sind angeblich nicht da. In den Manuals steht, das man praktisch jedes Programm ausführen kann, so lange man die komplette Umgebung zur Verfügung stellt, die ein Program braucht. Wenn die externen dynamisch gelinkten Porggis nicht gehen, leuchtet mir das ja wegen fehlender Libs ja noch ein, aber warum geht dann die sash auch nicht? Ich sehe den Wald vor lauter Bäumen nicht mehr, kann mir da jemand einen Tip geben? -- mfg Peter Küchler
Hi Peter,
From the keyboard of Peter, Ich sehe den Wald vor lauter Bäumen nicht mehr, kann mir da jemand einen Tip geben?
ldd `deine sash` Kann es sein das die auch andere libs braucht? Kompilier dir doch aus util-linux und den anderen sourcen die Programme statisch. (busybox wäre auch ne option) Dann mußte ein bißerl Makefile hacken oder CFLAGS setzen. gcc -static oder ld -s wenn es mehrer Objectfiles sind. gruß Waldemar -- Are your questions smart enough? http://www.tuxedo.org/~esr/faqs/smart-questions.html If not: perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
Am Sam, 2002-03-09 um 16.46 schrieb Waldemar Brodkorb:
Hi Peter,
From the keyboard of Peter, Ich sehe den Wald vor lauter Bäumen nicht mehr, kann mir da jemand einen Tip geben?
ldd `deine sash`
Kann es sein das die auch andere libs braucht?
Nein, die sash nicht, die läuft ohne. Jedenfalls startet sie und ldd behauptet "not a dynamic executable".
Kompilier dir doch aus util-linux und den anderen sourcen die Programme statisch. (busybox wäre auch ne option)
Das hätte ich gerne getan, aber leider befinden sich dd, ls usw in dem Paket fileutils in der Serie a. Leider gibt es das nicht als Quellcode. Ich habe mal gehört, das häötte Lizenzrechtliche Gründe, kann das sein?
Dann mußte ein bißerl Makefile hacken oder CFLAGS setzen. gcc -static oder ld -s wenn es mehrer Objectfiles sind.
Ein Kumpel von mir ist C-Programmierer, der hätte das schon hingebogen, wenn ich es selbst nicht geschafft hätte. Aber ohne Quellcode...:-( Danke für deine Hilfe! -- mfg Peter Küchler
Hi Peter,
From the keyboard of Peter,
Am Sam, 2002-03-09 um 16.46 schrieb Waldemar Brodkorb:
Hi Peter,
From the keyboard of Peter, Ich sehe den Wald vor lauter Bäumen nicht mehr, kann mir da jemand einen Tip geben?
ldd `deine sash`
Kann es sein das die auch andere libs braucht?
Nein, die sash nicht, die läuft ohne. Jedenfalls startet sie und ldd behauptet "not a dynamic executable".
Kompilier dir doch aus util-linux und den anderen sourcen die Programme statisch. (busybox wäre auch ne option)
Das hätte ich gerne getan, aber leider befinden sich dd, ls usw in dem Paket fileutils in der Serie a. Leider gibt es das nicht als Quellcode.
Was??????
Ich habe mal gehört, das häötte Lizenzrechtliche Gründe, kann das sein?
Nein.
Dann mußte ein bißerl Makefile hacken oder CFLAGS setzen. gcc -static oder ld -s wenn es mehrer Objectfiles sind.
Ein Kumpel von mir ist C-Programmierer, der hätte das schon hingebogen, wenn ich es selbst nicht geschafft hätte. Aber ohne Quellcode...:-(
Wenn es fileutils nicht im Quellcode gibt, dann installier ich gleich WinXP ... ach ne habe ich ja garnicht *g* Schau dir mal busybox an, da ist dd und ls in einer schmalen Implementierung dabei. BTW: Die Debian-Bootdisketten benutzen auch busybox ... gruß Waldemar -- Are your questions smart enough? http://www.tuxedo.org/~esr/faqs/smart-questions.html If not: perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
Am Son, 2002-03-10 um 21.36 schrieb Waldemar Brodkorb:
Hi Peter,
From the keyboard of Peter,
Am Sam, 2002-03-09 um 16.46 schrieb Waldemar Brodkorb:
Hi Peter,
From the keyboard of Peter, Ich sehe den Wald vor lauter Bäumen nicht mehr, kann mir da jemand einen Tip geben?
ldd `deine sash`
Kann es sein das die auch andere libs braucht?
Nein, die sash nicht, die läuft ohne. Jedenfalls startet sie und ldd behauptet "not a dynamic executable".
Kompilier dir doch aus util-linux und den anderen sourcen die Programme statisch. (busybox wäre auch ne option)
Das hätte ich gerne getan, aber leider befinden sich dd, ls usw in dem Paket fileutils in der Serie a. Leider gibt es das nicht als Quellcode.
Was??????
Ich habe mal gehört, das häötte Lizenzrechtliche Gründe, kann das sein?
Nein.
Dann mußte ein bißerl Makefile hacken oder CFLAGS setzen. gcc -static oder ld -s wenn es mehrer Objectfiles sind.
Ein Kumpel von mir ist C-Programmierer, der hätte das schon hingebogen, wenn ich es selbst nicht geschafft hätte. Aber ohne Quellcode...:-(
Wenn es fileutils nicht im Quellcode gibt, dann installier ich gleich WinXP ... ach ne habe ich ja garnicht *g*
Nana, wer wird denn gleich die Flinte ins Getreide werfen;-) Also zumindest bei Suse7.3 finde ich sie nicht. Kann ja sein, das ich sie übersehe, aber...:-\
Schau dir mal busybox an, da ist dd und ls in einer schmalen Implementierung dabei. BTW: Die Debian-Bootdisketten benutzen auch busybox ...
Das mit der busybox ist nicht schlecht. Leider hat Suse da auch wieder fertig kompiliertes Zeugs dabei, da ist alles drin was ich nicht brauche:-( Hab mir das jetzt aus dem Internet besorgt und selbst übersetzt, nur mit den nötigsten drin und statisch, mal sehen, wie das jetzt aussieht:-) Danke für den Tip! -- mfg Peter Küchler, Planungsverband Ballungsraum Frankfurt/Rhein-Main
Am Mon, 2002-03-11 um 13.20 schrieb Peter Kuechler:
Am Son, 2002-03-10 um 21.36 schrieb Waldemar Brodkorb:
Hi Peter,
From the keyboard of Peter,
Am Sam, 2002-03-09 um 16.46 schrieb Waldemar Brodkorb:
Hi Peter,
From the keyboard of Peter, Ich sehe den Wald vor lauter Bäumen nicht mehr, kann mir da jemand einen Tip geben? [...] Schau dir mal busybox an, da ist dd und ls in einer schmalen Implementierung dabei. BTW: Die Debian-Bootdisketten benutzen auch busybox ...
Das mit der busybox ist nicht schlecht. Leider hat Suse da auch wieder fertig kompiliertes Zeugs dabei, da ist alles drin was ich nicht brauche:-(
Hab mir das jetzt aus dem Internet besorgt und selbst übersetzt, nur mit den nötigsten drin und statisch, mal sehen, wie das jetzt aussieht:-)
Funktioniert jetzt mit busybox wunderbar, vielen dank nochmal!! -- mfg Peter Küchler, Planungsverband Ballungsraum Frankfurt/Rhein-Main
participants (3)
-
Peter Kuechler
-
Peter Kuechler
-
Waldemar Brodkorb