@er13:
Entschuldige bitte meine unpräzise Ausdrucksweise bzgl. dessen, was und wer da mit den passenden Feature-Einstellungen übersetzt werden müßte - wobei in der Absolutheit, wie Du es Deinerseits formulierst, ist das mit dem Zeitpunkt für diese Feature-Auswahl auch nicht ganz richtig. Selbstverständlich beeinflussen diese Einstellungen auch das, was in der C-Library beim Übersetzen generiert wird, das zeigt schon ein einfaches Kommando im "Basisverzeichnis" der uClibc-Quellen:
Code:
$ [COLOR="#0000FF"][B]$ find . -name "*.c" -exec grep -H "USE_SVID\|USE_BSD" '{}' \;[/B][/COLOR]
./libc/misc/error/err.c:#if defined __USE_BSD
./libc/misc/time/time.c:# ifdef __USE_BSD
./libc/misc/time/time.c:# ifdef __USE_BSD
./libc/misc/time/time.c:# ifdef __USE_BSD
./libc/stdio/setbuffer.c:#ifdef __USE_BSD
./libc/stdio/setlinebuf.c:#ifdef __USE_BSD
./libc/unistd/usershell.c:#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
./libc/unistd/getpass.c:#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
./libc/unistd/usleep.c:#if defined __USE_BSD || defined __USE_POSIX98
./libc/unistd/daemon.c:#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
./libc/string/generic/strsep.c:#ifdef __USE_BSD
./libc/string/strsep.c:#ifdef __USE_BSD
./libc/sysdeps/linux/common/chroot.c:#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
./libc/sysdeps/linux/common/ptrace.c:#if defined __NR_ptrace && defined __USE_BSD && defined __USE_MISC
./libc/sysdeps/linux/common/madvise.c:#if defined __NR_madvise && defined __USE_BSD
./libc/sysdeps/linux/common/stime.c:#ifdef __USE_SVID
./libc/sysdeps/linux/common/sync.c:# if defined __USE_BSD || defined __USE_UNIX98
./libc/sysdeps/linux/common/wait4.c:#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
./libc/sysdeps/linux/common/sigaltstack.c:#if defined __NR_sigaltstack && (defined __USE_BSD || defined __USE_UNIX98)
./libc/sysdeps/linux/common/sysctl.c:#if defined __NR__sysctl && (defined __USE_GNU || defined __USE_BSD)
./libc/sysdeps/linux/common/settimeofday.c:#ifdef __USE_BSD
./libc/sysdeps/linux/common/wait3.c:#if defined __USE_BSD
./libc/sysdeps/linux/common/acct.c:#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
./libc/sysdeps/linux/common/symlink.c:#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K
./libc/sysdeps/linux/common/getdtablesize.c:#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
./libc/sysdeps/linux/common/setpgid.c:#if defined __USE_UNIX98 || defined __USE_SVID
./libc/sysdeps/linux/common/gettimeofday.c:#ifdef __USE_BSD
./libc/sysdeps/linux/common/sethostname.c:#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
./libc/sysdeps/linux/common/mincore.c:#if defined __NR_mincore && (defined __USE_BSD || defined __USE_SVID)
./libc/sysdeps/linux/common/quotactl.c:#if defined __USE_BSD
./libc/sysdeps/linux/common/setdomainname.c:#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
./libc/sysdeps/linux/common/sysfs.c:#if defined __USE_SVID
./libc/sysdeps/linux/common/vhangup.c:#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
./libc/sysdeps/linux/common/setgroups.c:#ifdef __USE_BSD
./libc/sysdeps/linux/common/getdomainname.c:#if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98)
./libc/sysdeps/linux/common/waitid.c:#if defined __USE_SVID || defined __USE_XOPEN
./libc/pwd_grp/pwd_grp.c:#ifdef __USE_SVID
./libc/pwd_grp/pwd_grp.c:#ifdef __USE_SVID
./libc/pwd_grp/pwd_grp.c:#ifdef __USE_SVID
./libc/pwd_grp/pwd_grp.c:#ifdef __USE_SVID
./libc/pwd_grp/pwd_grp.c:#if defined __USE_BSD || defined __USE_GNU
./libc/pwd_grp/pwd_grp.c:#ifdef __USE_BSD
./libc/pwd_grp/pwd_grp.c:#ifdef __USE_SVID
./libc/inet/rpc/rpc_dtablesize.c:#define __USE_BSD
./libc/inet/hostid.c:#ifdef __USE_BSD
./libc/termios/cfsetspeed.c:#ifdef __USE_BSD
./libc/termios/cfmakeraw.c:#ifdef __USE_BSD
./libc/stdlib/mkdtemp.c:#ifdef __USE_BSD
./libc/stdlib/bsd_getpt.c:#if defined __USE_BSD
./libc/stdlib/bsd_getpt.c:#endif /* __USE_BSD */
[ Das "USE_irgendwas", nach dem ich hier suchen lasse, leitet sich ebenfalls in der "include/feature.h" aus dem Vorhandensein des Symbols "_irgendwas_SOURCE" ab. ]
Es gibt also auch C-Quellen mit bedingten Passagen anhand dieser Feature-Einstellungen und daraus entsteht meines Erachtens sehr wohl bereits zum Build-Zeitpunkt eine andere Bibliothek ... ich greife einfach mal wahllos die "./libc/sysdeps/linux/common/wait3.c" heraus. Die darin definierte (und von der Library "exportierte") Funktion "
wait3" wird eben nur dann übersetzt, wenn beim Build der uClibc bereits "_BSD_SOURCE" definiert war.
Wobei ich da jetzt auch nicht weiter insistieren will, denn ich hatte tatsächlich nicht bis in den letzten Winkel der termios-Implementierung überprüft, ob das nun nur Auswirkungen auf den Inhalt von Include-Files (bzw. das Ergebnis nach deren Verarbeitung durch den Präprozessor) hat oder ob es auch in den termios-bezogenen C-Quellen solche bedingten Abschnitte gibt und wenn es die geben sollte, ob die dann auch wirklich anderen Code generieren oder nur mit abweichenden Symbolen aus den System-Include-Files zurechtkommen sollen - das wäre ja auch noch denkbar (auch wenn es bei cfsetspeed.c z.B. wieder die gesamte Funktion und ihre Präsenz in der generierten uClibc betrifft).
Entscheidend ist in meinen Augen, daß/ob beim Übersetzen der BusyBox nun _BSD_SOURCE oder _SVID_SOURCE definiert war oder nicht - davon (oder von einer expliziten Definition von CRTSCTS an anderer Stelle) hängt es dann ab, ob dieser konkrete Patch für das "init"-Applet nun etwas bewirkt oder nicht. Um das sicher festzustellen, müßte man jetzt genau das CS mit diesem Patch auschecken und dann da durchsehen, wo und warum da CRTSCTS definiert sein soll. Das ist selbst mir zuviel Aufwand ... erst recht angesichts eines Themas, was mich nur am Rande berührt.
Ich verstehe ohnehin nicht, wo der Berührungspunkt zwischen diesem Patch und dem Thema von
Ticket 1163 sein soll. Zwar hat Oliver dort im
comment:23 den Patch mit
CS 6468 committed, aber im Kommentar danach geht es später beim Benutzer "udo" immer noch nicht mit CS 6469 - das Problem liegt ja offenbar irgendwo beim Laden von Modulen und das korrigiert dann Oliver tatsächlich später mit
CS 6487 und einem
vollkommen anderen Revert-Patch. Insofern kann ich auch Deinen Standpunkt: "Der Patch hat schließlich geholfen." nicht wirklich teilen - in meinen Augen bleibt dieser Patch (gerade auch angesichts der Kommentare im Ticket 1163) überflüssig.
Bei der BusyBox hatte ich schon verstanden, wo das Problem (auch mit der "rc.tail.sh") liegen könnte ... ich hätte jetzt gedacht, daß ich genau das in #28 als mögliche Fehlerquelle angesprochen hatte, auch wenn ich noch nicht bis in alle Einzelheiten verstehe, warum dann nicht auch das "cat /dev/debug" (egal, was das als argv[0] auch immer verwendet hat) einfach mit abgeräumt wird, wenn die "rc.S" ans Ende kommt. Das könnte zwar irgendein implizites "wait" auf die letzte offene Instanz sein, weil die "rc.S" ja noch einmal über eine Rekursion über "/bin/sh" aufgerufen wird (anhand des SheBang) und damit ein zusätzliches Shell-Level hinzugekommen ist, aber das ist auch nur reine Spekulation.
Warum ich noch einmal so ausführlich auf die Frage mit PREFER_APPLETS, NOEXEC und NOFORK eingegangen bin? Ich wollte auf die von Dir ebenfalls in #29 am Beginn vorgebrachte Idee eingehen, daß es mehr oder weniger willkürlich oder gar unklar wäre, welcher Prozess nun mit welcher BusyBox-Version läuft und daß schon deshalb der Austausch praktisch unumgänglich wäre (das zweite Argument war dann der CRTSCTS-Patch von oben). So, wie ich das sehe, gilt die abweichende BusyBox-Version ausschließlich für den allerersten Prozess "init" und alle nachfolgenden Prozesse verwenden die andere BusyBox - ich weiß nicht genau, wie oft man einem Fehler im "init" hinterherlaufen muß, aber das kann man sich m.E. noch merken, daß der halt bei den Modellen mit dem Wrapper mit einer anderen BusyBox arbeitet.
Auch nur dieser "init"-Prozess ist jetzt seinerseits in der Lage, weitere Instanzen mit dieser BusyBox zu starten und das auch nur unter sehr, sehr engen Voraussetzungen, denen man dann eben aus dem Weg gehen muß. Schon alles das, was aus/nach der "rc.S" dann kommt, verwendet die BusyBox aus dem rootfs.
Die Kontrolle, ob ein Problem von unterschiedlichen Versionen herrührt, kann einem ohnehin niemand abnehmen - spätestens bei der Untersuchung muß man dann ohnehin überprüfen, ob das auch wirklich dieselben Versionen sind. Schon ein Problem beim "cp -a" in "fwmod" (direkt neben den Kommandos steht keine Fehlerbehandlung und damit bliebe noch ein generelles "set -e" zur Fehlerbehandlung als denkbare Lösung, dem spüre ich jetzt aber nicht nach) kann ja problemlos dazu führen, daß da gar nicht wirklich die Dateien aus dem Freetz-Package kopiert werden - die Kontrolle ist also ohnehin unumgänglich, wenn man ein Problem an dieser Stelle vermutet und solange sich die AVM-Version und die Freetz-Version bei diesem "init" nicht unterscheiden (oder es irgendwelche Upstream-Patches am "init" gibt, die es unbedingt braucht - wobei dann die Frage übrig bliebe, wieso die AVM-Version ohne diese Patches funktioniert), ist das als "Begründung" (so es denn überhaupt eine braucht - wenn Du unbedingt ersetzen willst, kann ich Dich ohnehin weder davon abhalten noch Dich mit Argumenten vom Gegenteil überzeugen) nicht schlüssig, daß man ansonsten nicht so richtig weiß, welche BusyBox da nun gerade von welchem Prozess verwendet wird ... das war der Zweck meiner oben stehenden Ausführungen zu den BusyBox-Build-Settings.
Ansonsten bleibt bei mir trotzdem die Frage über, warum meine BusyBox (das ist wieder einmal die statisch gelinkte, die ich an vielen Stellen verwende - und die ist auch mit der Freetz-Toolchain erzeugt, weil ich nach GPLv2 auf Freetz (bzw. den Fork) als Quelle verweisen will) trotz dieser Build-Settings:
Code:
root@FB7490:~ $ [COLOR="#0000FF"][B]busybox bbconfig | grep "^[^#]"[/B][/COLOR]
CONFIG_HAVE_DOT_CONFIG=y
CONFIG_PLATFORM_LINUX=y
CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y
CONFIG_SHOW_USAGE=y
CONFIG_FEATURE_VERBOSE_USAGE=y
CONFIG_FEATURE_COMPRESS_USAGE=y
CONFIG_UNICODE_SUPPORT=y
CONFIG_FEATURE_CHECK_UNICODE_IN_ENV=y
CONFIG_SUBST_WCHAR=0
CONFIG_LAST_SUPPORTED_WCHAR=0
CONFIG_UNICODE_WIDE_WCHARS=y
CONFIG_LONG_OPTS=y
CONFIG_FEATURE_DEVPTS=y
CONFIG_FEATURE_UTMP=y
CONFIG_FEATURE_WTMP=y
CONFIG_FEATURE_PIDFILE=y
CONFIG_PID_FILE_PATH="/var/run"
CONFIG_FEATURE_SUID=y
[COLOR="#FF0000"][B]CONFIG_FEATURE_PREFER_APPLETS=y[/B][/COLOR]
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
CONFIG_FEATURE_SYSLOG=y
CONFIG_FEATURE_HAVE_RPC=y
CONFIG_STATIC=y
CONFIG_LFS=y
CONFIG_CROSS_COMPILER_PREFIX=""
CONFIG_SYSROOT=""
CONFIG_EXTRA_CFLAGS=""
CONFIG_EXTRA_LDFLAGS=""
CONFIG_EXTRA_LDLIBS=""
CONFIG_NO_DEBUG_LIB=y
CONFIG_INSTALL_APPLET_SYMLINKS=y
CONFIG_PREFIX="./_install"
CONFIG_FEATURE_RTMINMAX=y
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SMALL=0
CONFIG_SHA3_SMALL=0
CONFIG_FEATURE_FAST_TOP=y
CONFIG_FEATURE_USE_TERMIOS=y
CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=1024
CONFIG_FEATURE_EDITING_VI=y
CONFIG_FEATURE_EDITING_HISTORY=2048
CONFIG_FEATURE_EDITING_SAVEHISTORY=y
CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y
CONFIG_FEATURE_REVERSE_SEARCH=y
CONFIG_FEATURE_TAB_COMPLETION=y
CONFIG_FEATURE_USERNAME_COMPLETION=y
CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
CONFIG_FEATURE_EDITING_ASK_TERMINAL=y
CONFIG_FEATURE_NON_POSIX_CP=y
CONFIG_FEATURE_COPYBUF_KB=64
CONFIG_FEATURE_SKIP_ROOTFS=y
CONFIG_MONOTONIC_SYSCALL=y
CONFIG_IOCTL_HEX2STR_ERROR=y
CONFIG_FEATURE_HWIB=y
CONFIG_FEATURE_SEAMLESS_XZ=y
CONFIG_FEATURE_SEAMLESS_LZMA=y
CONFIG_FEATURE_SEAMLESS_BZ2=y
CONFIG_FEATURE_SEAMLESS_GZ=y
CONFIG_GUNZIP=y
CONFIG_BUNZIP2=y
CONFIG_UNLZMA=y
CONFIG_LZMA=y
CONFIG_UNXZ=y
CONFIG_XZ=y
CONFIG_BZIP2=y
CONFIG_CPIO=y
CONFIG_FEATURE_CPIO_O=y
CONFIG_FEATURE_CPIO_P=y
CONFIG_DPKG=y
CONFIG_DPKG_DEB=y
CONFIG_GZIP=y
CONFIG_FEATURE_GZIP_LONG_OPTIONS=y
CONFIG_GZIP_FAST=0
CONFIG_FEATURE_GZIP_LEVELS=y
CONFIG_RPM2CPIO=y
CONFIG_RPM=y
CONFIG_TAR=y
CONFIG_FEATURE_TAR_CREATE=y
CONFIG_FEATURE_TAR_AUTODETECT=y
CONFIG_FEATURE_TAR_FROM=y
CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
CONFIG_FEATURE_TAR_LONG_OPTIONS=y
CONFIG_FEATURE_TAR_TO_COMMAND=y
CONFIG_FEATURE_TAR_UNAME_GNAME=y
CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
CONFIG_UNZIP=y
CONFIG_BASENAME=y
CONFIG_CAT=y
CONFIG_DATE=y
CONFIG_FEATURE_DATE_ISOFMT=y
CONFIG_FEATURE_DATE_COMPAT=y
CONFIG_DD=y
CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
CONFIG_FEATURE_DD_IBS_OBS=y
CONFIG_FEATURE_DD_STATUS=y
CONFIG_HOSTID=y
CONFIG_ID=y
CONFIG_GROUPS=y
CONFIG_SHUF=y
CONFIG_SYNC=y
CONFIG_TEST=y
CONFIG_FEATURE_TEST_64=y
CONFIG_TOUCH=y
CONFIG_FEATURE_TOUCH_NODEREF=y
CONFIG_FEATURE_TOUCH_SUSV3=y
CONFIG_TR=y
CONFIG_FEATURE_TR_CLASSES=y
CONFIG_FEATURE_TR_EQUIV=y
CONFIG_TRUNCATE=y
CONFIG_UNLINK=y
CONFIG_BASE64=y
CONFIG_WHO=y
CONFIG_USERS=y
CONFIG_CHGRP=y
CONFIG_CHMOD=y
CONFIG_CHOWN=y
CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y
CONFIG_CHROOT=y
CONFIG_CKSUM=y
CONFIG_COMM=y
CONFIG_CP=y
CONFIG_FEATURE_CP_LONG_OPTIONS=y
CONFIG_CUT=y
CONFIG_DF=y
CONFIG_FEATURE_DF_FANCY=y
CONFIG_DIRNAME=y
CONFIG_DOS2UNIX=y
CONFIG_UNIX2DOS=y
CONFIG_DU=y
CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
CONFIG_ECHO=y
CONFIG_FEATURE_FANCY_ECHO=y
CONFIG_ENV=y
CONFIG_FEATURE_ENV_LONG_OPTIONS=y
CONFIG_EXPAND=y
CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
CONFIG_EXPR=y
CONFIG_EXPR_MATH_SUPPORT_64=y
CONFIG_FALSE=y
CONFIG_FOLD=y
CONFIG_FSYNC=y
CONFIG_HEAD=y
CONFIG_FEATURE_FANCY_HEAD=y
CONFIG_INSTALL=y
CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
CONFIG_LN=y
CONFIG_LOGNAME=y
CONFIG_LS=y
CONFIG_FEATURE_LS_FILETYPES=y
CONFIG_FEATURE_LS_FOLLOWLINKS=y
CONFIG_FEATURE_LS_RECURSIVE=y
CONFIG_FEATURE_LS_SORTFILES=y
CONFIG_FEATURE_LS_TIMESTAMPS=y
CONFIG_FEATURE_LS_USERNAME=y
CONFIG_FEATURE_LS_COLOR=y
CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
CONFIG_MD5SUM=y
CONFIG_MKDIR=y
CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
CONFIG_MKFIFO=y
CONFIG_MKNOD=y
CONFIG_MV=y
CONFIG_FEATURE_MV_LONG_OPTIONS=y
CONFIG_NICE=y
CONFIG_NOHUP=y
CONFIG_OD=y
CONFIG_PRINTENV=y
CONFIG_PRINTF=y
CONFIG_PWD=y
CONFIG_READLINK=y
CONFIG_FEATURE_READLINK_FOLLOW=y
CONFIG_REALPATH=y
CONFIG_RM=y
CONFIG_RMDIR=y
CONFIG_FEATURE_RMDIR_LONG_OPTIONS=y
CONFIG_SEQ=y
CONFIG_SHA1SUM=y
CONFIG_SHA256SUM=y
CONFIG_SHA512SUM=y
CONFIG_SHA3SUM=y
CONFIG_SLEEP=y
CONFIG_FEATURE_FANCY_SLEEP=y
CONFIG_SORT=y
CONFIG_FEATURE_SORT_BIG=y
CONFIG_SPLIT=y
CONFIG_FEATURE_SPLIT_FANCY=y
CONFIG_STAT=y
CONFIG_FEATURE_STAT_FORMAT=y
CONFIG_STTY=y
CONFIG_TAC=y
CONFIG_TAIL=y
CONFIG_FEATURE_FANCY_TAIL=y
CONFIG_TEE=y
CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
CONFIG_TRUE=y
CONFIG_TTY=y
CONFIG_UNAME=y
CONFIG_UNAME_OSNAME="y"
CONFIG_UNEXPAND=y
CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
CONFIG_UNIQ=y
CONFIG_USLEEP=y
CONFIG_UUDECODE=y
CONFIG_UUENCODE=y
CONFIG_WC=y
CONFIG_FEATURE_WC_LARGE=y
CONFIG_YES=y
CONFIG_FEATURE_VERBOSE=y
CONFIG_FEATURE_PRESERVE_HARDLINKS=y
CONFIG_FEATURE_AUTOWIDTH=y
CONFIG_FEATURE_HUMAN_READABLE=y
CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
CONFIG_FGCONSOLE=y
CONFIG_CLEAR=y
CONFIG_OPENVT=y
CONFIG_RESET=y
CONFIG_SETCONSOLE=y
CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
CONFIG_DEFAULT_SETFONT_DIR=""
CONFIG_SETLOGCONS=y
CONFIG_MKTEMP=y
CONFIG_PIPE_PROGRESS=y
CONFIG_RUN_PARTS=y
CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
CONFIG_FEATURE_RUN_PARTS_FANCY=y
CONFIG_START_STOP_DAEMON=y
CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
CONFIG_WHICH=y
CONFIG_AWK=y
CONFIG_FEATURE_AWK_LIBM=y
CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y
CONFIG_CMP=y
CONFIG_DIFF=y
CONFIG_FEATURE_DIFF_LONG_OPTIONS=y
CONFIG_FEATURE_DIFF_DIR=y
CONFIG_PATCH=y
CONFIG_SED=y
CONFIG_VI=y
CONFIG_FEATURE_VI_MAX_LEN=1024
CONFIG_FEATURE_VI_8BIT=y
CONFIG_FEATURE_VI_COLON=y
CONFIG_FEATURE_VI_YANKMARK=y
CONFIG_FEATURE_VI_SEARCH=y
CONFIG_FEATURE_VI_REGEX_SEARCH=y
CONFIG_FEATURE_VI_USE_SIGNALS=y
CONFIG_FEATURE_VI_DOT_CMD=y
CONFIG_FEATURE_VI_READONLY=y
CONFIG_FEATURE_VI_SETOPTS=y
CONFIG_FEATURE_VI_SET=y
CONFIG_FEATURE_VI_WIN_RESIZE=y
CONFIG_FEATURE_VI_ASK_TERMINAL=y
CONFIG_FEATURE_VI_UNDO=y
CONFIG_FEATURE_VI_UNDO_QUEUE=y
CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=1024
CONFIG_FEATURE_ALLOW_EXEC=y
CONFIG_FIND=y
CONFIG_FEATURE_FIND_PRINT0=y
CONFIG_FEATURE_FIND_MTIME=y
CONFIG_FEATURE_FIND_MMIN=y
CONFIG_FEATURE_FIND_PERM=y
CONFIG_FEATURE_FIND_TYPE=y
CONFIG_FEATURE_FIND_XDEV=y
CONFIG_FEATURE_FIND_MAXDEPTH=y
CONFIG_FEATURE_FIND_NEWER=y
CONFIG_FEATURE_FIND_INUM=y
CONFIG_FEATURE_FIND_EXEC=y
CONFIG_FEATURE_FIND_EXEC_PLUS=y
CONFIG_FEATURE_FIND_USER=y
CONFIG_FEATURE_FIND_GROUP=y
CONFIG_FEATURE_FIND_NOT=y
CONFIG_FEATURE_FIND_DEPTH=y
CONFIG_FEATURE_FIND_PAREN=y
CONFIG_FEATURE_FIND_SIZE=y
CONFIG_FEATURE_FIND_PRUNE=y
CONFIG_FEATURE_FIND_DELETE=y
CONFIG_FEATURE_FIND_PATH=y
CONFIG_FEATURE_FIND_REGEX=y
CONFIG_FEATURE_FIND_LINKS=y
CONFIG_GREP=y
CONFIG_FEATURE_GREP_EGREP_ALIAS=y
CONFIG_FEATURE_GREP_FGREP_ALIAS=y
CONFIG_FEATURE_GREP_CONTEXT=y
CONFIG_XARGS=y
CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y
CONFIG_HALT=y
CONFIG_TELINIT_PATH=""
CONFIG_INIT=y
CONFIG_FEATURE_USE_INITTAB=y
CONFIG_FEATURE_KILL_REMOVED=y
CONFIG_FEATURE_KILL_DELAY=0
CONFIG_FEATURE_INIT_SYSLOG=y
CONFIG_INIT_TERMINAL_TYPE="linux"
CONFIG_FEATURE_SHADOWPASSWDS=y
CONFIG_USE_BB_CRYPT=y
CONFIG_USE_BB_CRYPT_SHA=y
CONFIG_ADDUSER=y
CONFIG_LAST_ID=60000
CONFIG_FIRST_SYSTEM_ID=100
CONFIG_LAST_SYSTEM_ID=999
CONFIG_ADDGROUP=y
CONFIG_FEATURE_ADDUSER_TO_GROUP=y
CONFIG_DELUSER=y
CONFIG_DELGROUP=y
CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
CONFIG_LOGIN=y
CONFIG_LOGIN_SESSION_AS_CHILD=y
CONFIG_LOGIN_SCRIPTS=y
CONFIG_PASSWD=y
CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
CONFIG_CRYPTPW=y
CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des"
CONFIG_CHATTR=y
CONFIG_LSATTR=y
CONFIG_TUNE2FS=y
CONFIG_MODINFO=y
CONFIG_INSMOD=y
CONFIG_RMMOD=y
CONFIG_LSMOD=y
CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
CONFIG_MODPROBE=y
CONFIG_FEATURE_MODPROBE_BLACKLIST=y
CONFIG_DEPMOD=y
CONFIG_FEATURE_INSMOD_TRY_MMAP=y
CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
CONFIG_FEATURE_MODUTILS_ALIAS=y
CONFIG_FEATURE_MODUTILS_SYMBOLS=y
CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
CONFIG_BLOCKDEV=y
CONFIG_FATATTR=y
CONFIG_MOUNT=y
CONFIG_FEATURE_MOUNT_FAKE=y
CONFIG_FEATURE_MOUNT_VERBOSE=y
CONFIG_FEATURE_MOUNT_HELPERS=y
CONFIG_FEATURE_MOUNT_LABEL=y
CONFIG_FEATURE_MOUNT_NFS=y
CONFIG_FEATURE_MOUNT_CIFS=y
CONFIG_FEATURE_MOUNT_FLAGS=y
CONFIG_FEATURE_MOUNT_FSTAB=y
CONFIG_FEATURE_MOUNT_OTHERTAB=y
CONFIG_REV=y
CONFIG_BLKID=y
CONFIG_FEATURE_BLKID_TYPE=y
CONFIG_DMESG=y
CONFIG_FEATURE_DMESG_PRETTY=y
CONFIG_FDISK=y
CONFIG_FEATURE_FDISK_WRITABLE=y
CONFIG_FEATURE_GPT_LABEL=y
CONFIG_FEATURE_FDISK_ADVANCED=y
CONFIG_FLOCK=y
CONFIG_GETOPT=y
CONFIG_FEATURE_GETOPT_LONG=y
CONFIG_HEXDUMP=y
CONFIG_FEATURE_HEXDUMP_REVERSE=y
CONFIG_HD=y
CONFIG_LOSETUP=y
CONFIG_LSPCI=y
CONFIG_MKSWAP=y
CONFIG_FEATURE_MKSWAP_UUID=y
CONFIG_MORE=y
CONFIG_PIVOT_ROOT=y
CONFIG_RDATE=y
CONFIG_SWAPONOFF=y
CONFIG_FEATURE_SWAPON_DISCARD=y
CONFIG_FEATURE_SWAPON_PRI=y
CONFIG_SWITCH_ROOT=y
CONFIG_UMOUNT=y
CONFIG_FEATURE_UMOUNT_ALL=y
CONFIG_FEATURE_MOUNT_LOOP=y
CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
CONFIG_VOLUMEID=y
CONFIG_FEATURE_VOLUMEID_EXFAT=y
CONFIG_FEATURE_VOLUMEID_EXT=y
CONFIG_FEATURE_VOLUMEID_FAT=y
CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
CONFIG_FEATURE_VOLUMEID_NTFS=y
CONFIG_FEATURE_VOLUMEID_SQUASHFS=y
CONFIG_CONSPY=y
CONFIG_CROND=y
CONFIG_FEATURE_CROND_D=y
CONFIG_FEATURE_CROND_CALL_SENDMAIL=y
CONFIG_FEATURE_CROND_ROOT_NOLOG=y
CONFIG_FEATURE_CROND_DIR="/var/crontabs"
CONFIG_I2CGET=y
CONFIG_I2CSET=y
CONFIG_I2CDUMP=y
CONFIG_I2CDETECT=y
CONFIG_LESS=y
CONFIG_FEATURE_LESS_MAXLINES=9999999
CONFIG_FEATURE_LESS_BRACKETS=y
CONFIG_FEATURE_LESS_FLAGS=y
CONFIG_FEATURE_LESS_TRUNCATE=y
CONFIG_FEATURE_LESS_MARKS=y
CONFIG_FEATURE_LESS_REGEXP=y
CONFIG_FEATURE_LESS_WINCH=y
CONFIG_FEATURE_LESS_ASK_TERMINAL=y
CONFIG_FEATURE_LESS_DASHCMD=y
CONFIG_FEATURE_LESS_LINENUMS=y
CONFIG_NANDWRITE=y
CONFIG_RFKILL=y
CONFIG_SETSERIAL=y
CONFIG_TASKSET=y
CONFIG_FEATURE_TASKSET_FANCY=y
CONFIG_UBIATTACH=y
CONFIG_UBIDETACH=y
CONFIG_UBIMKVOL=y
CONFIG_UBIRMVOL=y
CONFIG_UBIRSVOL=y
CONFIG_UBIUPDATEVOL=y
CONFIG_BBCONFIG=y
CONFIG_FEATURE_COMPRESS_BBCONFIG=y
CONFIG_FEATURE_BEEP_FREQ=0
CONFIG_FEATURE_BEEP_LENGTH_MS=0
CONFIG_CHAT=y
CONFIG_FEATURE_CHAT_NOFAIL=y
CONFIG_FEATURE_CHAT_TTY_HIFI=y
CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
CONFIG_FEATURE_CHAT_SWALLOW_OPTS=y
CONFIG_FEATURE_CHAT_SEND_ESCAPES=y
CONFIG_FEATURE_CHAT_VAR_ABORT_LEN=y
CONFIG_FEATURE_CHAT_CLR_ABORT=y
CONFIG_CRONTAB=y
CONFIG_DEVMEM=y
CONFIG_FLASHCP=y
CONFIG_FLASH_LOCK=y
CONFIG_FLASH_UNLOCK=y
CONFIG_FLASH_ERASEALL=y
CONFIG_INOTIFYD=y
CONFIG_HDPARM=y
CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
CONFIG_MAKEDEVS=y
CONFIG_FEATURE_MAKEDEVS_TABLE=y
CONFIG_MICROCOM=y
CONFIG_MOUNTPOINT=y
CONFIG_RX=y
CONFIG_SETSID=y
CONFIG_STRINGS=y
CONFIG_TIME=y
CONFIG_TIMEOUT=y
CONFIG_WATCHDOG=y
CONFIG_NBDCLIENT=y
CONFIG_NC=y
CONFIG_NC_SERVER=y
CONFIG_NC_EXTRA=y
CONFIG_PING=y
CONFIG_PING6=y
CONFIG_FEATURE_FANCY_PING=y
CONFIG_STUN_IP=y
CONFIG_WGET=y
CONFIG_FEATURE_WGET_STATUSBAR=y
CONFIG_FEATURE_WGET_AUTHENTICATION=y
CONFIG_FEATURE_WGET_LONG_OPTIONS=y
CONFIG_FEATURE_WGET_TIMEOUT=y
CONFIG_FEATURE_WGET_OPENSSL=y
CONFIG_WHOIS=y
CONFIG_FEATURE_IPV6=y
CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
CONFIG_VERBOSE_RESOLUTION_ERRORS=y
CONFIG_ARP=y
CONFIG_ARPING=y
CONFIG_BRCTL=y
CONFIG_FEATURE_BRCTL_FANCY=y
CONFIG_FEATURE_BRCTL_SHOW=y
CONFIG_DNSD=y
CONFIG_ETHER_WAKE=y
CONFIG_FTPD=y
CONFIG_FEATURE_FTP_WRITE=y
CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
CONFIG_FEATURE_FTP_AUTHENTICATION=y
CONFIG_FTPGET=y
CONFIG_FTPPUT=y
CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
CONFIG_HOSTNAME=y
CONFIG_HTTPD=y
CONFIG_FEATURE_HTTPD_RANGES=y
CONFIG_FEATURE_HTTPD_SETUID=y
CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
CONFIG_FEATURE_HTTPD_AUTH_MD5=y
CONFIG_FEATURE_HTTPD_CGI=y
CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
CONFIG_FEATURE_HTTPD_ERROR_PAGES=y
CONFIG_FEATURE_HTTPD_PROXY=y
CONFIG_FEATURE_HTTPD_GZIP=y
CONFIG_IFCONFIG=y
CONFIG_FEATURE_IFCONFIG_STATUS=y
CONFIG_FEATURE_IFCONFIG_HW=y
CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
CONFIG_IFENSLAVE=y
CONFIG_IFUPDOWN=y
CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN=y
CONFIG_FEATURE_IFUPDOWN_IPV4=y
CONFIG_FEATURE_IFUPDOWN_IPV6=y
CONFIG_FEATURE_IFUPDOWN_MAPPING=y
CONFIG_INETD=y
CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
CONFIG_FEATURE_INETD_RPC=y
CONFIG_IP=y
CONFIG_FEATURE_IP_ADDRESS=y
CONFIG_FEATURE_IP_LINK=y
CONFIG_FEATURE_IP_ROUTE=y
CONFIG_FEATURE_IP_ROUTE_DIR="y"
CONFIG_FEATURE_IP_TUNNEL=y
CONFIG_FEATURE_IP_RULE=y
CONFIG_FEATURE_IP_SHORT_FORMS=y
CONFIG_IPADDR=y
CONFIG_IPLINK=y
CONFIG_IPROUTE=y
CONFIG_IPTUNNEL=y
CONFIG_IPRULE=y
CONFIG_IPCALC=y
CONFIG_FEATURE_IPCALC_FANCY=y
CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
CONFIG_NETSTAT=y
CONFIG_FEATURE_NETSTAT_WIDE=y
CONFIG_FEATURE_NETSTAT_PRG=y
CONFIG_NSLOOKUP=y
CONFIG_NTPD=y
CONFIG_FEATURE_NTPD_SERVER=y
CONFIG_FEATURE_NTPD_CONF=y
CONFIG_PSCAN=y
CONFIG_ROUTE=y
CONFIG_SLATTACH=y
CONFIG_TCPSVD=y
CONFIG_TELNET=y
CONFIG_FEATURE_TELNET_TTYPE=y
CONFIG_FEATURE_TELNET_AUTOLOGIN=y
CONFIG_TELNETD=y
CONFIG_FEATURE_TELNETD_STANDALONE=y
CONFIG_FEATURE_TELNETD_INETD_WAIT=y
CONFIG_TFTP=y
CONFIG_TFTPD=y
CONFIG_FEATURE_TFTP_GET=y
CONFIG_FEATURE_TFTP_PUT=y
CONFIG_FEATURE_TFTP_BLOCKSIZE=y
CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
CONFIG_TFTP_DEBUG=y
CONFIG_TRACEROUTE=y
CONFIG_TRACEROUTE6=y
CONFIG_FEATURE_TRACEROUTE_VERBOSE=y
CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE=y
CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y
CONFIG_TUNCTL=y
CONFIG_FEATURE_TUNCTL_UG=y
CONFIG_UDHCPC6=y
CONFIG_UDHCPD=y
CONFIG_DHCPRELAY=y
CONFIG_DUMPLEASES=y
CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y
CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC=y
CONFIG_DHCPD_LEASES_FILE="/var/tmp/udhcpd.leases"
CONFIG_UDHCPC=y
CONFIG_FEATURE_UDHCPC_ARPING=y
CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y
CONFIG_FEATURE_UDHCP_PORT=y
CONFIG_UDHCP_DEBUG=9
CONFIG_FEATURE_UDHCP_RFC3397=y
CONFIG_FEATURE_UDHCP_8021Q=y
CONFIG_UDHCPC_DEFAULT_SCRIPT="/var/tmp/udhcpc.script"
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
CONFIG_UDPSVD=y
CONFIG_VCONFIG=y
CONFIG_ZCIP=y
CONFIG_MAKEMIME=y
CONFIG_FEATURE_MIME_CHARSET="iso-8859-1"
CONFIG_REFORMIME=y
CONFIG_SENDMAIL=y
CONFIG_IOSTAT=y
CONFIG_LSOF=y
CONFIG_MPSTAT=y
CONFIG_NMETER=y
CONFIG_PMAP=y
CONFIG_PSTREE=y
CONFIG_PWDX=y
CONFIG_SMEMCAP=y
CONFIG_TOP=y
CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
CONFIG_FEATURE_TOP_SMP_CPU=y
CONFIG_FEATURE_TOP_SMP_PROCESS=y
CONFIG_FEATURE_TOPMEM=y
CONFIG_UPTIME=y
CONFIG_FREE=y
CONFIG_FUSER=y
CONFIG_KILL=y
CONFIG_KILLALL=y
CONFIG_KILLALL5=y
CONFIG_PGREP=y
CONFIG_PIDOF=y
CONFIG_FEATURE_PIDOF_SINGLE=y
CONFIG_FEATURE_PIDOF_OMIT=y
CONFIG_PKILL=y
CONFIG_PS=y
CONFIG_FEATURE_PS_WIDE=y
CONFIG_FEATURE_PS_LONG=y
CONFIG_RENICE=y
CONFIG_BB_SYSCTL=y
CONFIG_FEATURE_SHOW_THREADS=y
CONFIG_WATCH=y
CONFIG_RUNSV=y
CONFIG_RUNSVDIR=y
CONFIG_FEATURE_RUNSVDIR_LOG=y
CONFIG_SV=y
CONFIG_SV_DEFAULT_SERVICE_DIR="/var/custom/var/service"
CONFIG_SVLOGD=y
CONFIG_CHPST=y
CONFIG_SETUIDGID=y
CONFIG_ENVUIDGID=y
CONFIG_ENVDIR=y
CONFIG_SOFTLIMIT=y
CONFIG_ASH=y
CONFIG_ASH_BASH_COMPAT=y
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_GETOPTS=y
CONFIG_ASH_BUILTIN_ECHO=y
CONFIG_ASH_BUILTIN_PRINTF=y
CONFIG_ASH_BUILTIN_TEST=y
CONFIG_ASH_HELP=y
CONFIG_ASH_CMDCMD=y
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
CONFIG_ASH_RANDOM_SUPPORT=y
CONFIG_ASH_EXPAND_PRMT=y
CONFIG_FEATURE_SH_IS_ASH=y
CONFIG_FEATURE_BASH_IS_NONE=y
CONFIG_SH_MATH_SUPPORT=y
CONFIG_SH_MATH_SUPPORT_64=y
CONFIG_FEATURE_SH_EXTRA_QUIET=y
[COLOR="#FF0000"][B]CONFIG_FEATURE_SH_STANDALONE=y
CONFIG_FEATURE_SH_NOFORK=y[/B][/COLOR]
CONFIG_FEATURE_SH_HISTFILESIZE=y
CONFIG_SYSLOGD=y
CONFIG_FEATURE_ROTATE_LOGFILE=y
CONFIG_FEATURE_REMOTE_LOG=y
CONFIG_FEATURE_SYSLOGD_DUP=y
CONFIG_FEATURE_SYSLOGD_CFG=y
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
CONFIG_FEATURE_IPC_SYSLOG=y
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=32
CONFIG_LOGREAD=y
CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
CONFIG_KLOGD=y
CONFIG_FEATURE_KLOGD_KLOGCTL=y
CONFIG_LOGGER=y
kein Problem mit der "rc.S" hat (7490, sieht man ja am Prompt oben), obwohl auch hier die "S11-piglet" vorhanden ist und auch der Rest praktisch identisch zur 7412 läuft:
Code:
root@FB7490:~ $ [COLOR="#0000FF"][B]grep -r /dev/debug /etc/init.d/[/B][/COLOR]
/etc/init.d/S01-head:mknod /dev/debug c $debug_c_major 0
/etc/init.d/S11-piglet:echo AVM_PRINTK >/dev/debug
/etc/init.d/S11-piglet:cat /dev/debug &
/etc/init.d/rc.net:# echo STD_PRINTK >/dev/debug ; echo 9 >/proc/sysrq-trigger
/etc/init.d/rc.tail.sh:if `ps | grep -v grep | grep -q "cat /dev/debug"` ; then
/etc/init.d/rc.tail.sh:echo Info: have to stop 'cat /dev/debug'.
/etc/init.d/rc.tail.sh:echo AVMDBG_EOF 1 >/dev/debug
root@FB7490:~ $ [COLOR="#0000FF"][B]for l in $(find /proc/*/fd/ -type l); do [ "$(realpath $l 2>/dev/null)" = "/etc/init.d/rc.S" ] && echo $l; done[/B][/COLOR]
root@FB7490:~ $
Da versteckt sich auch kein "rc.S" hinter irgendeinem anderen Namen im "ps" - offenbar wird die Abarbeitung ordentlich beendet. Entweder hier wird also der Eintrag für das "cat /dev/debug" in der Prozessliste gefunden (was interaktiv ja nicht klappt, wie ich in einem früheren Beitrag gezeigt habe) oder da wird dann eben doch auch dieses "cat /dev/debug" einfach mit abgeräumt, wenn die Abarbeitung der "rc.S" zum Ende kommt.
Dabei geht es mir gar nicht so sehr um die Unterschiede in der Prozessliste (Du kennst sicherlich auch den Patch für "exec -a" in der Mailing-Liste, irgendwo Mitte April 2017, der das noch einmal explizit änderbar macht) als viel mehr um das Verständnis, warum das nun bei mir eben nicht hängenbleiben will.
Vielleicht ist es ja doch so simpel wie ein "exit"-Kommando in der "debug.cfg" (wenn die wieder eingebaut wurde und auch genau mit dem alten Mechanismus, dann beendet das "exit" dort ja auch die "rc.tail.sh" und die Suche nach dem "cat /dev/debug" findet gar nicht erst statt - selbst wenn das "nicht-interaktiv" wirklich als "cat /dev/debug" in der Prozessliste stehen sollte) - das sind alles diese Unwägbarkeiten, wo man m.E. auch ganz schnell mit Vollgas in die falsche Richtung rennen kann.
Dafür gibt es einfach zu viele denkbare Ursachen für dieses Hängenbleiben und ich würde (zumindest als Versuch oder für eine erste Idee) noch einmal auf die "wchan" zurückkommen wollen bzw. auf eine komplette Prozessliste (am besten ein "ps l" in Kombination mit einem "pstree -p") verweisen wollen, wenn man die Ursache des Hängenbleibens nicht durch Probieren ermitteln will. Das wird zwar irgendwann auch unumgänglich werden, aber dann sollte das m.E. mit einer gezielten Idee verbunden sein.
Die Vermutung, daß es an der anderen Benennung der Prozesse liegen
könnte, habe ich zwar selbst ins Spiel gebracht ... aber ich beharre da auch nicht drauf, wenn andere Tests das Gegenteil nahelegen. Wie gesagt ... es kann sein, daß das ohne Terminal-Device für die Shell wieder ganz anders aussieht (man braucht bloß mal in "shellexec()" in der "ash.c" hineinschauen und findet da sofort ein paar Stellen, wo dann argv[0] und dessen zu setzender Wert auch ein Thema ist) und irgendwoher muß dieses "-sh" ja auch kommen. Das ist - auch wieder nur als Vermutung - ggf. ein "geerbter" Prozessname des Elternprozesses (hier könnte NOEXEC/NOFORK dann ins Spiel kommen), wenn dieser eben eine interaktive Shell ist ... wenn das über das System ginge (also über "exec" und Syscalls), müßte es ein "/bin/sh" sein, was da steht.
Aber genau da könnte dann eben auch wieder die Frage mit dem "controlling tty" eine Rolle spielen anstelle von "NOEXEC/NOFORK" (bei mir ist es immer noch das "/dev/ttyS0" aus der AVM-"inittab", das von "init" an "rc.S" wohl vererbt werden wird), wenn die Shell da die Entscheidung treffen soll, in welchem Modus sie läuft und was als argv[0] für einen Prozess gesetzt werden soll.
Was mich halt irritieren würde, wäre die Frage, wieso aus dem Parsen eines "cat irgendwas
&" am Ende tatsächlich ein "interner" Aufruf werden sollte ... das "cat" ist zwar an sich ein NOFORK-Applet, aber das kommt ja hier gar nicht in Betracht, wenn es als paralleler Prozess weiterlaufen soll und damit müßte der Interpreter hier ja auf "normales Kommando" (ggf. sogar direkt auf ein BB_EXECVP, meinetwegen noch mit "find_applet_by_name", aber keinesfalls mit dem Gedanken "NOEXEC kommt in Frage" im Hinterkopf) umschalten - wenn ich nicht meinerseits etwas fundamental falsch interpretiere.
Da stellt sich dann aber angesichts von "BB_EXECVP()" weiter oben wieder die Frage, wie da ein "-sh" in die Prozessliste kommt, wenn das doch entweder ein "cat" sein sollte (das über den Pfad gesucht wird) oder eben die "/proc/self/exe" des aufrufenden Prozesses und das kann als Symlink ja kein simples "-sh" sein, sondern sollte immer auf eine Datei (mit vollem Pfad sogar) verweisen:
Code:
root@FB7490:~ $ [COLOR="#0000FF"][B]for pid in $(pidof -- "-sh"); do ls -l /proc/$pid/exe; done[/B][/COLOR]
lrwxrwxrwx 1 root root 0 May 18 00:20 /proc/29046/exe -> /bin/busybox
lrwxrwxrwx 1 root root 0 May 18 00:20 /proc/4371/exe -> /bin/busybox
root@FB7490:~ $
Also müßte dieses "-sh" die Folge irgendeines merkwürdigen Ablaufes in "ash.c" sein, wenn es auch für Kommandos "verwendet" wird, die als gesonderter Prozess laufen sollen und damit nicht mit dem NOEXEC-/NOFORK-Geraffel gestartet werden können. Oder wo bin ich da besonders begriffsstutzig? Ich kann auch Deiner Überlegung nicht folgen, daß es sich wirklich um einen NOFORK-Aufruf handeln würde (der ist ja nicht zwingend, nur weil das Applet dafür geeignet wäre). Wenn das als gesonderter Job läuft, sollte das m.E. über "forkshell()" in "ash.c" gestartet werden (mit "FORK_BG") und das ist dann ein neuer Prozess und hat mit dem NOFORK-Mechanismus (für mich) gar nichts mehr zu tun.
NOFORK führt das Kommando/Applet eben in demselben Prozess/Thread aus und das muß dann auch definitiv zu einem Ende kommen - das geht also schon mal nicht, wenn es um eine parallele Abarbeitung geht. Beim NOEXEC wird dann zwar geforkt (gibt eine neue PID, vererbt praktisch alles vom Elternprozess inkl. ctty), aber das auszuführende Applet wird jetzt direkt aufgerufen (und nicht über eine der "exec...()"-Funktionen) - damit ist der Kindsprozess die (mehr oder weniger exakte) Kopie der aktuellen BusyBox (theoretisch inkl. argv[0] vom Parent und da könnte das "-sh" herkommen) und da es kein "exec...()" gibt, ändert der jetzt auch den Inhalt des argv-Arrays für den Prozess nicht. Das würde zumindest erklären, wie es zu diesem Phänomen mit dem "-sh" kommt - der Ausweg hier wäre dann eben der Weg über das Vermeiden von NOEXEC in diesem konkreten Fall und anstatt das komplett abzuschalten in der BusyBox, würde ich dann eher den Weg wählen, das Kommando eben anders zu formulieren - wenn es nicht als Applet erkannt wird, kann weder NOEXEC noch NOFORK in Betracht kommen und es wird ein ganz normaler Aufruf über eine der "exec...()"-Funktionen, die dann auch sauber die Daten für die Prozesssteuerung setzen.
Alternative wäre vielleicht ein Patch, der beim "forkshell()" mit "FORK_BG"-Option (wenn meine Annahme stimmt, daß dieses "cat"-Kommando tatsächlich zu einem solchen Aufruf führen müßte) versucht, die kopierten Daten der Prozesssteuerung (hier speziell argv[0], woraus sich m.W. auch /proc/<pid>/cmdline bedient) auch noch passend zu setzen, selbst wenn die BusyBox ansonsten mit NOEXEC arbeiten kann/darf ... dieser Fall sollte jetzt nicht so häufig auftreten, daß Performance-Gewinne durch NOEXEC/NOFORK an anderer Stelle damit gleich wieder aufgehoben wären.
Vielleicht könnte man sogar auf die Idee kommen, einen entsprechenden Patch am Upstream einzureichen (wenn es nicht schon einen geben sollte, das habe ich nicht nachgesehen) - denn in diesem Falle (neuer Prozess, der ein Kommando <> "sh" ausführt als neuen Job und damit eben nicht diese "interactive shell" ist) sollte m.E. auch der Prozessname richtig gesetzt sein (argv[0], aber nicht mit prctl(PR_SET_NAME) verwechseln), damit man mit "ps" und den anderen Kommandos aus dieser Kategorie über das procfs vernünftig darauf zugreifen kann.
Aber auch das sind alles nur theoretische Überlegungen und ein paar Recherchen im C-Quellcode der BusyBox. Ob das die richtige Richtung ist, will ich um Gottes Willen nicht beschwören ... ich halte nur die andere auch für falsch bzw. man müßte sich ja auch dann, wenn sich diese Vermutungen bestätigen sollten, gleich noch überlegen, welche Konsequenzen man daraus zu ziehen gewillt ist.