Chroot-Umgebung bei Bedarf so starten, daß sie nicht geschlossen wird

skyline

Neuer User
Mitglied seit
23 Sep 2009
Beiträge
12
Punkte für Reaktionen
0
Punkte
1
Ist es möglich, mit einem Addon-Shell-Skript etwas in der RudiShell auszuführen?

Würde gerne ein Programm in einer chroot-Umgebung ausführen.
Wenn ich aber die Chroot in einem Addon-Script starte, wird diese sofort wieder beendet.

Über die Rudi-Shell klappt es aber.
 
Etwas genauer, bitte.
 
Ich habe probiert ein Programm in einer Chroot-Umgebung laufen zu lassen.
Hat über Terminal auch alles geklappt.

Dann habe ich versucht, das Gleiche per sh-Skript aufzurufen.
Das Programm startet zwar, wird dann aber sofort wieder geschlossen.
Mit &, nohup, screen hatte ich leider auch keinen Erfolg.

Wenn ich das Programm über die rc.custom starte, funktioniert es auch wunderbar. Doch leider ist hierfür immer ein Reboot notwendig.
Deshalb kam ich auf die Rudi-Shell, da hier auch ein manuelles Starten möglich ist.

Es wird quasi einfach ein Script ausgeführt, welches die chroot-Umgebung mit dem Programm startet.

Zum Startet wird dieses Skript aufgerufen:
Code:
#!/bin/sh
mount -o bind /dev /var/media/ftp/uStor01/chroot-rootfs/dev
sleep 1
mount -t proc proc /var/media/ftp/uStor01/chroot-rootfs/proc
sleep 1
chroot /var/media/ftp/uStor01/chroot-rootfs/ /scripts/skript_chroot.sh

Dieses Skript wir in der Chroot-Umgebung ausgeführt:
Code:
#!/bin/sh
modpobe ......(Option)......
/var/etc/Programm.mipsel

Ist es möglich dieses automatisch über die Rudi-Shell oder über die rudi_shellcmd.cgi (haserl) zu starten?

kriegaex: Code-Tags hinzugefügt
 
Zuletzt bearbeitet von einem Moderator:
Ich glaube nicht, daß das ein Fall für Rudi ist. Das geht bestimmt so, wie Du es willst, aber wieso nicht Screen? Ich kann mich problemlos z.B. per SSH zur Box verbinden, Screen starten, darin ein Chroot setzen und dann das Terminalfenster (z.B. Putty) schließen. Die Screen-Sitzung läuft weiter.

Was ist denn das genaue Problem? Es zu automatisieren, aber nicht beim Start der Box, sondern zu einem beliebigen Zeitpunkt? Wie willst Du es starten? Interaktiv von einer Terminalkonsole aus, z.B. SSH? Muß es Rudi sein?

Ich trenne Deine Frage mal als separates Thema ab...
 
Wenn Du ein Programm aus rc.custom starten kannst, dann sollte es auch über Rudi Shell oder über das Web-Interface gehen. Beim manuellen Starten von Diensten über die Web-Oberfläche werden schließlich auch genau die gleichen Skripte aufgerufen wie beim normalen Start der Box.

Den Beitrag oben könntest Du mit CODE-Tags noch etwas lesbarer machen.

Gibt es einen speziellen Grund, warum Du oben sleep Anweisungen zwischen den Mount-Befehlen hast?
Und warum modprobe aus dem chroot aufgerufen wird? Prinzipiell spricht zwar nichts dagegen, aber die Module sollten zum laufenden Kernel passen und sind damit im root-Dateisystem besser aufgehoben.

Wie genau sieht denn der funktionierende Aufruf aus der rc.custom aus?
 
@kriegaex:
Ich kann per sh-Skript (start über Web-Oberfläche) zwar ein screem erstellen, jedoch im kein Befehl mitgeben. Wenn ich später dann zum screen connecten will um den Befehl dort auszuführen, wird ein Terminal (Konsole) verlangt.

Das genaue Problem liegt darin, dass ich es über die Web-Oberfläche starten will.
Dieses klappt ja auch. Aber wenn das Start-SH-Skript des Addons durchgelaufen ist, wird das Programm wieder geschlossen.

Screen, nohup und dtach brachten mich nicht weiter :-(
Deshalb dachte ich an den Umweg über Rudi.

@RalfFriedl:
Wie gesagt, der Start klappt ja auch nur wird es nach dem Addon-Start sofort wieder geschlossen.
Den Modprobe kann ich ja noch werschieben.

In der rc.custom wird einfach des erste Skript (erster Code) aufgerufen.
 
Habe ich das richtig verstanden?
rc.custom ruft genau dieses Skript auf, und es funktioniert, ein Aufruf über Web-Server oder Rudi-Shell mit genau diesem Skript funktioniert nicht?
Um was für ein Programm handelt es sich denn?
 
Screen abgetrennt starten und Befehle ins Fenstern ausführen

Ich kann per sh-Skript (start über Web-Oberfläche) zwar ein screem erstellen, jedoch im kein Befehl mitgeben. Wenn ich später dann zum screen connecten will um den Befehl dort auszuführen, wird ein Terminal (Konsole) verlangt.

Du hast wohl eher ein Screen- oder Shell-Anwendungsproblem als ein Freetz-spezifisches.

Ich kann von Rudi aus problemlos eine Screen-Sitzung im Detached Mode starten. Kommandos gibt man normalerweise mit, indem man eine ~/.screenrc erzeugt, siehe Screen-Manual. Beispiel:
Code:
# Setze HOME und SCREENDIR für Rudi so, daß der Screen im normalen
# Heimverzeichnis von root erzeugt wird und man sich von einer normalen
# Terminalsitzung aus damit verbinden kann.
export HOME=/mod/root
export SCREENDIR=/mod/root/.screen

# Erzeuge ~/.screenrc
cat > $HOME/.screenrc << 'EOF'
screen -t zero 0
exec echo "screen zero"
screen -t one 1
exec ps
EOF

# Starte Screen im abgetrennten Modus
screen -dmS RudiTest

# Prüfe, ob Screen läuft
screen -ls

Übrigens schließen sich die Shell-Sitzungen innerhalb der zwei Terminal-Fenster im Beispiel nicht, sie bleiben erhalten. Wenn Du das Ganze nicht von Rudi aus machst, sondern HOME und ggf. damit auch SCREENDIR breits korrekt initialisiert sind, Du außerdem die ~/.screenrc bereits beim Start der Box o.ä. erzeugst, wird das Ganze auf einen Aufruf reduziert. Aber vielleicht macht es Sinn, eine ganz bestimmte Startdatei (.screenrc) zu erzeugen und beim Screen-Start mit -c mitzugeben, anstatt die Standard-Datei zu überschreiben, die dann ja immer ausgeführt würde, auch für normale interaktive Sitzungen.
 
screen -dmS RudiTest

das klappt ja auch so.
Leider kann man nun per sh nicht auf diesen screen zugreifen und in ihm ein Programm starten, da man zum verbinden einen Terminal benötigt.

screen -dmS RudiTest "Befehl" klappt auch leider nicht :mad:

Per Terminal (Konsole) klappt ja alles nur halt nicht per sh-Skript.


Also der Aufruf per rc.custom und Rudi klappt. Nur will ich es ja über ein Addon starten können (also per sh-script).
Dies klappt ja auch, nur das Programm beendet sich beim Aufruf über das sh-script sofort wieder.
Bei rc.custom und Rudi ist dies nicht der Fall.
 
Wer lesen kann, ist im Vorteil.
 
Ich setze hier mal an weil ich ein ähnliches Problem habe.

Ich versuche auch übers WebIF screen und chroot zu starten...!
Das klappt prinzipiell auch. Nur habe ich das Gefühl das es einen Unterschied gibt wenn ich das ganze über die Konsole starte als wenn ich es übers WebIF mache. Kann das sein?

Code:
screen -dmS CHROOT chroot /var/media/ftp/uStor01/test/chroot top

Das passt auch. Screen wird gestartet, chroot auch und top auch... Strate ich aber anstatt top ein script was verschiedene sachen starten soll bzw. im Hintergrund läuft, wie zum beispiel tcpdump oder ähnliches, dann schmiert mir alles ab. Über die Konsole klappt es, übers WebIF startet es aber stürzt ab...

Woran kann so was liegen?

EDIT:
ES muss wohl irgendwie damit zu tun haben wie chroot gestartet wird..!?
 
Zuletzt bearbeitet:
Ok die chroot umgebung beendet sich... oder screen. welches weiß ich nicht weil mit "ps" nichts mehr angezeigt wird.

ich experimentiere ein wenig mit der chroot umgebung weil ich da drin spielen kann ohne das eigentlich system zu zerschießen. Das ist erstmal der genaue Hintergrund.

Starte ich mein Script per Konsole (z.B.: /etc/init.d/rc.chroottest start) dann läuft das was ich so getestet habe alles. Die chroot umgebung bleibt bestehen. Ich kann noch andere sachen im hintergrund oder im verdergrund laufen lassen und mich durch screen imemr verbinden.

Mache ich das ganze über das Webinterface dann sehe ich mit "ps" das es startet (screen und chroot), kurz darauf aber wieder verschwunden (abgeschmiert) ist.

Wo liegt da der unterschied (Konsole / Webinterface)

Meine Vermutung ist das es was damit zu tun haben muss wie screen oder chroot über das Webinterface gestartet wird. :confused:
 
Hast Du es schon mal mit strace probiert?
Oder aus der Rudi-Shell? Da kommt vielleicht eine Meldung.

Ein Unterschied wird sein, daß beim Start vom Webserver kein Terminal vorhanden ist.
 
Weiß nicht ob ich bei strace soviel sehe und vor allem ob ich mit dem output was anfangen kann.. :)

Wie könnte ich denn ein Terminal starten? Eventuell über ein script?

EDIT:
Über die Rudi-Shell wird chroot so gestartet wie über Konsole! Kann ich da fürs Webinterface was einbauen?
 
Zuletzt bearbeitet:
Ok aber ich würde es gern unter Dienste starten und stoppen können. :(
 
hmm... versuche ich schon eine ganze weile. Erst hatte ich die Umgebungsvariablen in Verdacht...

An solchen Ecken und Kannten merke ich immer wie viel Hintergrundwissen zu Freetz mir noch fehlt...

Aber dennoch... :habenwol:

vllt hat der eine oder andere noch einen Tipp für mich!
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.