Probleme mit der Autorun.sh Datei

  • Hallo zusammen,
    nachdem ich nun recht erfolgreich, mit eurer Hilfe!!! das PXE Booten auf der TS-410 einrichten konnte habe ich aktuell noch etwas Probleme mit der Autorun.sh Datei.
    Und zwar wird für das PXE Booten den tftp Server und der dhcp Server benötigt. Da ich bei beiden Probleme habe, dachte ich mir dass ich ein neuen thread auf mache.
    Und zwar gehts bei dem dhcp Server nach dieser Anleitung:


    Code
    mount -t ext2 /dev/mtdblock5 /tmp/configecho "chroot /share/HDA_DATA/optware /opt/etc/init.d/S56dhcp start" >> /tmp/config/autorun.shchmod u+x /tmp/config/autorun.shumount /tmp/config


    so. Wenn ich das alles mal zerlege, wird der block5 in den Temp_ordner gemoutet so dass ich an die .sh Datei herran komme bzw erstellen kann.
    Danach wird der Datei eine zeile mit folgendem Inhalt erstellt:


    Code
    chroot /share/HDA_DATA/optware /opt/etc/init.d/S56dhcp start


    Danach wird die Datei wieder in den block5 "geschickt".


    So wenn ich das nun durchfügren startet der Server bei einem Neustart leider nicht.


    Genauso ist es beim tftp Server:


    Bash
    #!/bin/shrm -rf /optln -sf /share/HDA_DATA/.qpkg/Optware /optecho "export PATH=$PATH:/opt/bin:/opt/sbin:/usr/bin/X11:/usr/local/sbin" >> /etc/profile/opt/sbin/in.tftpd -s /opt/tftpboot -u admin -l -c --ipv4


    hier kommt ja die zeile:


    Code
    /opt/sbin/in.tftpd -s /opt/tftpboot -u admin -l -c --ipv4


    in die Datei.


    Wie schon gesagt funktioniert kein Autostart, auch wenn ich die Befehle einseln ausführe und teste.


    Wenn ich die Befehle:


    Code
    /opt/etc/init.d/S56dhcp start
    /opt/sbin/in.tftpd -s /share/MD0_DATA/tftpboot -u admin -l -c --ipv4


    nach dem start ausführe funktionieren die Server ohne Probleme (den zweiten Pfad habe ich an meine Freigabe angepasst).


    Hat hier jemand eine idee?


    Danke und Gruß

  • Mehrere.


    1) 1. Zeile bei der autorun.sh ist die Shebang (generell bei Scripts)
    2) Wieso setzt Du bei dem chmod den owner? Naja. So gravierend dürfte das nicht sein.... Sollte man eventuell trotzdem mal überdenken ;)
    3) wieso machst Du einen change root in den Optware Pfad und führst dann etwas im Pfad /opt/etc/init.d/ aus. Das dürfte eigentlich überhaupt gar nicht funktionieren.
    4) Wieso wird überhaupt change root genutzt wenn Du init scripts hast?


    Poste einfach mal alle Scripts die Du hast.
    in /opt/etc/init.d
    und deine autorun.sh


    Grüsse, David

  • EDIT:!!!!
    Hey Sorry, war mit den Gedanken wohl gerade nicht so ganz bei der Sache. Du wolltest ja andere Scripte haben. Werde sie unten mal hinzufügen!!!!


    EDIT2:!!!!
    So ich habe es geschafft. Eigentlich habe ich nichts geändert... sehr seltsam. Nun habe ich nur noch das Problem, mit der Backslash und Slash Umwandlung. Soll ich hierfür einen neuen Thread eröffnen oder kannst du mir hierfür evtl noch einen Tip geben?








    Kein Thema :). Hier kommen sie:


    Also vorhin habe ich noch einen anderen Thread gefunden, von dem ich noch etwas übernommen habe:
    http://forum.qnapclub.de/viewtopic.php?f=80&t=6072


    org. Autorun.sh

    Bash
    #!/bin/sh#sym-link /opt to /opt    rm -rf /opt    ln -sf /share/MD0_DATA/.qpkg/Optware /opt# Start /opt/autorun.sh  /opt/autorun.sh


    zweite /opt/autorun.sh

    Bash
    #!/bin/sh#sym-link /opt to /opt#    rm -rf /opt#    ln -sf /share/MD0_DATA/.qpkg/Optware /opt#---------------------------------------------# Start DHCP   /opt/etc/init.d/S56dhcp start# Start TFTP Server (PXE Boot)   /opt/sbin/in.tftpd -s /share/MD0_DATA/tftpboot -u admin -l -c --ipv4


    /opt/etc/xinetd.conf

    Code
    defaults{        only_from      = localhost 192.168.2.0/24        instances      = 60        log_type       = SYSLOG authpriv info        log_on_success = HOST PID        log_on_failure = HOST        cps            = 25 30}includedir /opt/etc/xinetd.d


    /opt/etc/dhcpd.conf

    Code
    ddns-update-style none;option domain-name-servers      192.168.2.1;subnet 192.168.2.0 netmask 255.255.255.0 {        option routers                  192.168.2.1;        option subnet-mask          255.255.255.0;        range dynamic-bootp 192.168.2.150 192.168.2.180;        default-lease-time 600;	# zehn Minuten        max-lease-time 3200;	# eine Stunde        next-server 192.168.2.50;        filename "pxelinux.0";}


    /opt/etc/xinetd.d/tftp

    Code
    service tftp{       flags            = REUSE       socket_type      = dgram       protocol         = udp       instances        = 30       wait             = yes       user             = admin       server           = /opt/sbin/in.tftpd       server_args	   = -s /share/MD0_DATA/tftpboot -m       cps		   = 100 2       log_on_success   = HOST PID       log_on_failure   = HOST       disable          = no}


    Wenn du das hier schon alles siehst, evtl hast du dann noch einen Tip für mich wie ich die Backslash und Slash umsetzung machen können. Habe da schonmal angefange, komme da aber leider auch nicht wirklich weiter.


    /opt/etc/tftpd.remap

    Code
    rg \\ / # Convert backslashes to slashesgr \\ / # Convert backslashes to slashes


    (hier weiß ich nicht ob rg oder gr für dieses Linux greift)


    Wenn ich es richtig verstanden habe, kann man dann damit das Skript mir einbinden:

    Code
    -m /share/MD0_DATA/tftpboot/tftpd.remap -u


    Nur wo setz ich das wie hin?!


    Zu guter letzt, kann ich wie gesagt mit:

    Code
    /opt/etc/init.d/S56dhcp start/opt/sbin/in.tftpd -s /share/MD0_DATA/tftpboot -u admin -l -c --ipv4


    die zwei Server ohne Probleme starten. Ich habe alle Dateien mit den 777 Rechten versehen.
    Danke, dass du dir das mal anschauen möchtest!!!



    EDIT:


    /opt/etc/init.d/K91named

    Bash
    #!/bin/sh## Start the named (DNS) server daemon#  start() {    echo -n "Starting DNS Services: "    if [ -n "`/opt/bin/pidof named`" ]; then	echo "already running..."	false; 	return    fi    cd /opt/etc/named    /opt/sbin/named -c /opt/etc/named/named.conf     echo "started"    return}stop() {    echo "Shutting down DNS Services: "    /opt/sbin/rndc -s 127.0.0.1 stop    sleep 5    if [ -n "`/opt/bin/pidof named`" ]; then        echo -n "Failed, killing process"	/opt/bin/killall named 2>/dev/null    fi    return}bindstatus() {    /opt/sbin/rndc -s 127.0.0.1 status    return}restart() {    stop    start}case "$1" in  start)	start	;;  stop)	stop	;;  status)	bindstatus	;;  restart|reload)	restart	;;  condrestart)	[ -n "`/opt/bin/pidof named`" ] && restart	;;  *)	echo "Usage: $0 {start|stop|status|restart|condrestart}"	exit 1esacexit $?


    /opt/etc/init.d/S01syslog-ng

    Bash
    #!/bin/sh## Startup script for syslog-ng## Stop itself if runningif [ -n "`pidof syslog-ng`" ]; then    /opt/bin/killall syslog-ng 2>/dev/nullfisleep 2/opt/sbin/syslog-ng


    /opt/etc/init.d/S09named

    Bash
    #!/bin/sh## Start the named (DNS) server daemon#  start() {    echo -n "Starting DNS Services: "    if [ -n "`/opt/bin/pidof named`" ]; then	echo "already running..."	false; 	return    fi    cd /opt/etc/named    /opt/sbin/named -c /opt/etc/named/named.conf     echo "started"    return}stop() {    echo "Shutting down DNS Services: "    /opt/sbin/rndc -s 127.0.0.1 stop    sleep 5    if [ -n "`/opt/bin/pidof named`" ]; then        echo -n "Failed, killing process"	/opt/bin/killall named 2>/dev/null    fi    return}bindstatus() {    /opt/sbin/rndc -s 127.0.0.1 status    return}restart() {    stop    start}case "$1" in  start)	start	;;  stop)	stop	;;  status)	bindstatus	;;  restart|reload)	restart	;;  condrestart)	[ -n "`/opt/bin/pidof named`" ] && restart	;;  *)	echo "Usage: $0 {start|stop|status|restart|condrestart}"	exit 1esacexit $?


    /opt/etc/init.d/S10xinetd

    Bash
    #!/bin/shOPTWARE_TARGET=cs08q1armel## Startup script for xinetd## Stop myself if running/opt/bin/killall xinetd 2>/dev/null# Stop other inetd processes if runningif [ ${OPTWARE_TARGET} = "nslu2" ] ; then  /opt/bin/killall inetd 2>/dev/nullfi/opt/sbin/xinetd


    /opt/etc/init.d/S56dhcp

    Bash
    #!/bin/shif [ -n "`pidof dhcpd`" ] ; then    /opt/bin/killall dhcpd 2>/dev/nullfisleep 2rm -f /opt/var/run/dhcpd.pid/opt/sbin/dhcpd


    /opt/etc/init.d/S56dnsmasq

  • Hallo zusammen,


    hmmm hat keiner eine Idee, wie ich das mit der Backslash und Slash Umwandlung hinbekommen könnte?! Wenn ich das geschafft habe... wär ich genau da wo ich hin wollte :).
    Wär echt klasse, wenn mir hier jemand helfen könnte.


    (oder soll ich dafür einen neuen Theard auf machen?! Eigentlich gehörts ja nicht in die Autorun.sh Problematik)


    Gruß Dennis

  • Mittels dem Kommando tr.


    Allerdings solltest Du erst einmal aus allen Scripts ein Init Script machen,da kein Script ausser /opt/etc/init.d/K91named ein init script ist.
    Das sollte auch nicht mit K anfangen, da es kein rcK script ist.


    Mit der autorun hier:


    Würdest Du alle /opt/etc/init.d/S* script's starten, diese sollten aber auch init script sein (start).


    Grüsse, David

  • Hi,
    vielen dank für deine Antwort.
    Also es ist so, dass die ganzen Script´s schon da drin waren. Soweit mir bekannt benötige ich keine außer das vom DHCP und vom tftp. Und die umsetzung von Backslash und Slash.
    Greift in diesem Fall auch noch dein Vorschlag? Ich habe dein Script mal durchgeschaut. Allerdings das Kommando tr nicht gefunden. Hast du die Umsetzung in dem Script anderst gelöst?
    Sorry für die ganzen Fragen. Aber mit Linux bin ich schon ziemlicher Anfänger.
    Gruß Dennis

  • Nach den Scripts kann ich morgen mal schauen.
    Bin noch an einer iSCSI sache für einen User dran ;)


    Mit tr geht das z.B. so:

    Code
    echo "String\\mit Slash" | tr '\\' '/'


    Dann käme:

    Code
    String/mit Doubleslash


    raus.


    Grüsse, David

  • Und das füge ich einfach der Autorun.sh Datei hinzu?
    Das kann ich morgen mittag dann gleich mal Probieren.


    In meinem Beispiel wär das dann

    Code
    echo "\Boot\BCD" | tr '\' '/'


    und es würde

    Code
    /Boot/BCD


    raus kommen


    Wow, dann bist du ja wohl immer irgendwie beschäftigt, Hut ab und danke!
    Wär auch "übermorgen" oder so auf alle fälle noch ok :). Also nicht ganz so viel stress wegen mir machen :).


    Eine weitere Frage dann noch dazu. Und zwar steckt diese Verlinkung in irgendeiner Datei, die ich nicht finden kann bzw diese Datei warscheinlich nicht normal lesbar ist. Funktioniert es dann dennoch?
    Hier ist es zb beschrieben wie es bei dem Debian funktionieren soll. Allerdings habe ich ja eine tftp bzw in.tftp und keine tftp-hpa Datei und den Ordner ec/default gibts bei uns ja auch nicht. http://debianforum.de/forum/viewtopic.php?f=9&t=81664


    Ist das hier evtl die Lösung??? Werde ich morgen ebenfalls gleich mal testen... Hab ich gerade gefunden! http://etherboot.org/wiki/tftp_backslash/tftpd-hpa
    Das schneint genau auf mich zugeschnitten zu sein.


    Gruß Dennis

  • Axo. Jetzt weiss ich erst mal was Du meinst ....
    :D


    Du meinst das remappen mit der tftpd.remap und nicht via shell. Ich habe mich schon gefragt...
    In der Doku:


    also

    Code
    rg \\ /


    Weil:
    r = rewrite the matched string with the remapping pattern und g = repeat until no match (used with "r")
    Das passt schon ist paktisch der TFTP eigene Remap.


    Grüsse, David

  • Ich danke dir nochmal recht herzlich! Ich habe es mit dem Link geschafft!
    Ich weiß, dass es schon ein paar Anleitungen gibt, aber wenn ihr möchtet kann ich mich auch mal dran setzen und eine machen.
    Ich habe nun:


    In dem zuge evtl noch die Frage ob es auch möglich ist das rebooten hier ein zu pflegen sowie das Pc ausschalten?!
    Gruß Dennis

  • Hallo,


    ich habe aktuelle auch das Problem, dass nach einem Reboot die init-Skripte in der autostart.sh (die aus der how-to die alle inits automatisch aufruft) nicht aufgerufen werden. Die Scripte unter /opt/etc/init.d/ sind alle so wie sie nach der Installation der Pakete angelegt wurden. Rufe ich diese von Hand auf klappt es auch wunderbar. Es klappt auch wenn ich nach dem Booten das /tmp/config mounte und dann die autostart.sh aufrufe. Nur beim Booten direkt klappt es nicht.


    Beste Grüße