.titleBar { margin-bottom: 5px!important; }

[gelöst] 7270 mit trunk ab r2538

Dieses Thema im Forum "Freetz" wurde erstellt von olistudent, 14 Sep. 2008.

  1. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    #1 olistudent, 14 Sep. 2008
    Zuletzt bearbeitet: 16 Sep. 2008
    Hi.
    Ich habe gerade auf meiner 7270 das Phänomen gehabt, dass die rc.S nicht beendet wurde.
    Code:
    /var/mod/root # ps
      PID USER       VSZ STAT COMMAND
        1 root      1192 S    init
        2 root         0 RWN  [ksoftirqd/0]
        3 root         0 SW   [watchdog/0]
        4 root         0 SW<  [events/0]
        5 root         0 SW<  [khelper]
        6 root         0 SW<  [kthread]
       18 root         0 SW<  [kblockd/0]
       32 root         0 SW   [pdflush]
       33 root         0 SW   [pdflush]
       34 root         0 SW<  [kswapd0]
       35 root         0 SW<  [aio/0]
       71 root         0 SW   [pm_info]
       75 root         0 SW<  [CPMAC]
       79 root         0 SW   [mtdblockd]
      101 root         0 SW   [tffsd_mtd_0]
      126 root         0 SW<  [khubd]
      160 root         0 SW<  [scsi_eh_0]
      161 root         0 SW<  [usb-storage]
      [B]512 root      1332 S    /bin/sh /etc/init.d/rc.S[/B]
      526 root         0 SW<  [capi_oslib]
      527 root         0 SW<  [capi_oslib]
      528 root         0 SW   [capitransp]
      534 root         0 SW   [glob_codecs]
      538 root         0 SW   [avm_dect_thread]
      588 root      7372 S N  ctlmgr
      741 ftp        884 S    dnsmasq -p 53
      744 root      2480 S    multid -u
      761 root      5056 S    telefon a127.0.0.1
      768 root      5056 S    telefon a127.0.0.1
      769 root      5056 S    telefon a127.0.0.1
      770 root      5056 S    telefon a127.0.0.1
      772 root      4352 S <  voipd
      776 root      2308 S    pbd
      778 root      2308 S    pbd
      782 root      2228 S    dect_manager
      783 root      2308 S    pbd
      784 root      2308 S    pbd
      785 root      2308 S    pbd
      787 root      1188 S    /usr/sbin/inetd
      798 root       776 S    /bin/run_clock -c /dev/tffs -d
      808 root      7372 S N  ctlmgr
      809 root      7372 S N  ctlmgr
      810 root      7372 S N  ctlmgr
      883 root      1192 S    httpd -P /var/run/webcfg.pid -p 81 -c /mod/etc/httpd.conf -h /usr/mww/ -r Freetz (user:admin)
      896 root      1208 S    syslogd -L -C
      898 root      1192 S    /sbin/klogd -c 4
     1004 root      1192 S    inetd
     1318 root      1152 S    dropbear -p 22
     1613 root      1220 S    -/bin/sh
     4914 root      1192 R    ps
    
    Das könnte mit den Änderungen von r2538 zu tun haben. Falls ihr das auch feststellen könnt, dann schreibt es bitte hier rein.

    MfG Oliver
     
  2. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Da Prozesse wie dropbear und inetd laufen, scheint rc.S schon recht weit zu kommen.

    Wenn Du folgendes einfügst, nachdem /var gemountet ist und bevor die Freetz Programme gestartet werden, solltest Du einen Anhaltspunkt bekommen, wieweit die Datei ausgeführt wird. "set -x" hat den gleichen Effekt wie ein Sktipt mit "sh -x" aufzurufen, kann aber an einer beliebigen Stelle in der Datei stehen.
    Code:
    set -x
    exec 2> /var/rc.S.log
    
     
  3. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Die Änderungen aus Ticket #130 sind Schuld an dem Verhalten. Verursacht wird dies durch den rc.S-Schnipsel:
    Code:
    if [ "`pidof avmlogd`" ]; then
    echo STD_PRINTK >/dev/debug
    else
    echo AVM_PRINTK >/dev/debug
    [B]cat /dev/debug &[/B]
    fi
    MfG Oliver
     
  4. buehmann

    buehmann Aktives Mitglied

    Registriert seit:
    11 Juni 2005
    Beiträge:
    1,810
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich würde darauf tippen, dass dein Prozess 512 von oben, der nach rc.S aussieht, eigentlich dieses "cat /dev/debug" ist. (Unter den geöffneten Filehandles dieses Prozesses bei mir ist auch /dev/debug; stdout und stderr sind /dev/console.)

    Wahrscheinlich ist durch das Einsparen des exec-Systemaufrufs die Prozessbeschreibung, die top benutzt, einfach noch die alte.

    Andreas
     
  5. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Was genau meinst Du mit "Einsparen des exec-Systemaufrufs"?

    Ist die Busybox so konfiguriert, daß Programme nicht mit exec gestartet werden, wenn sie in der Busybox enthalten sind? Außerdem spricht auch die niedrige Prozeßnummer dagegen, daß es sich dabei um ein von rc.S gestartetes Programm handelt und nicht rc.S selbst.
     
  6. buehmann

    buehmann Aktives Mitglied

    Registriert seit:
    11 Juni 2005
    Beiträge:
    1,810
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Die Optimierungen in der Busybox, die wir testweise angeschaltet haben, beruhen darauf, dass beim Aufruf anderer Programme bestimmte Schritte eingespart werden: Wenn normalerweise ein Programm gestartet wird, wird zunächst per fork() vom Betriebssystem eine Kopie des aktuellen Prozesses angelegt, dann in der Kopie durch exec() ein neues ausführbares Image aus dem Dateisystem geladen und das alte überschrieben. Da die busybox viele der Programme, die benutzt werden, aber selbst in ihrem Image enthält, kann man (falls man aufpasst, dass sich die Teile "rücksichtsvoll" verhalten) z.B. das exec() einsparen und einfach einen Funktionsaufruf im aktuellen Prozess machen. Wenn man eh auf den Kind-Prozess warten muss, kann man unter Umständen (wenn sich das Kind noch besser benimmt; die einzelnen Busybox-Applets sind entsprechend markiert) sogar das fork() weglassen.

    Noch technischer ist das ganze hier dokumentiert: http://www.busybox.net/cgi-bin/viewcvs.cgi/trunk/busybox/docs/nofork_noexec.txt?view=markup

    Gruß,
    Andreas

    PS: Ich glaube, dass es für die Busybox möglich wäre, den Prozessnamen/die Kommandozeile, die von top/ps benutzt werden, im laufenden Prozess anzupassen. Das müsste unter Linux gehen, ist aber ansonsten höchst betriebssystemabhängig (vielleicht ein Grund, warum es nicht gemacht wird).
     
  7. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Wenn ich diese Zeile richtig verstehe, dann ist ein cat /dev/debug & also eigentlich nicht angedacht.
    MfG Oliver
     
  8. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Das nennt sich CONFIG_FEATURE_PREFER_APPLETS und ist bei mir nicht aktiviert, und ich kann mich nicht erinnern, es von Default-Wert umgestellt zu haben. Deswegen ja die Frage, ob die Busybox inzwischen anders konfiguriert ist.

    Wie Du richtig schreibst, funktioniert das aber nicht, wenn ein Programm asynchron aufgerufen wird, wie in diesem Fall.
     
  9. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,756
    Zustimmungen:
    2
    Punkte für Erfolge:
    0
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Diese Geschichte wird mit einem Patch in Ticket #130 aktiviert. Das habe ich oben schonmal geschrieben.

    MfG Oliver