[Info] modfs - SquashFS-Image (AVM-Firmware) ändern für NAND-basierte FRITZ!Boxen

Danke für den neuen GUI-Boot-Manager

Ich bin nur etwas irritiert, dass hier auf beiden Partitionen, die ich extra frisch mit modfs_version=0.4.1-061120161026 bearbeitet habe, die jeweils inaktive, die durchaus bootfähig sind, als unbekannt angesehen werden? Siehe Anhänge

Sollte ich etwas überlesen bzw. nicht verstanden haben zw. Anpassung, bitte ich um Entschuldigung

LG
 

Anhänge

  • Screen Shot 16-11-06 at 02.25 PM.JPG
    Screen Shot 16-11-06 at 02.25 PM.JPG
    219.2 KB · Aufrufe: 44
  • Screen Shot 16-11-06 at 02.32 PM.JPG
    Screen Shot 16-11-06 at 02.32 PM.JPG
    237.1 KB · Aufrufe: 31
Kann ich bestätigen, war bei mir auch so.
Gruß Carlos

Gesendet von meinem SM-G930F mit Tapatalk
 
Habe ich mich eventuell vertan und eine falsche Version in das "modscript" übernommen ... es war schon spät am Vormittag und ich war müde. Der im "modscript" unterscheidet sich minimal von dem im YourFritz-Repo, da könnte ich durcheinander gekommen sein.

Ich schaue es mir während der Football-Übertragung nachher mal in Ruhe an - bis dahin dann ggf. auf den alten ausweichen. Wie das mit einer "custom_modscripts"-Datei funktioniert, steht im Thread von @eisbaerin.

Wer vor 18:55 Uhr die Fehlersuche unterstützen will und einen Shell-Zugang zur FRITZ!Box hat, kann mit dem Kommando
Code:
sh -x /usr/bin/guibootmanager html_display >/var/tmp/output.html 2>/var/tmp/trace.txt
ja mal ein Protokoll des ersten Aufrufs erstellen und die beiden erzeugten Dateien (output.html und trace.txt) dann hier als Anhang (oder zumindest als Code-Block) einfügen. Ich muß mir ansonsten erst einmal auf einer anderen Box (da gibt es das Skript zwar und es funktioniert wie erwartet, aber eben von Hand eingebaut und nicht per "modscript") ein passendes Image installieren.

Bei der 7490, auf der ich das geändert habe, sieht das so aus:

HTML-Ausgabe
HTML:
<br /><h3>Folgende Systeme stehen auf dieser FRITZ!Box zur Auswahl bei einem Neustart:</h3><br />
<input type="radio" id="radioRunning" name="linux_fs_start" value="running" checked="checked" />
<label for="radioRunning">das aktuell laufende System</label><br /><br />
Version 113.06.69-41756 vom 28.10.2016 13:20:46 (linux_fs_start=1), das System wurde am 01.11.16 20:02 zuletzt modifiziert<br /><br />
<input type="radio" id="radioAlternative" name="linux_fs_start" value="alternative" />
<label for="radioAlternative">das derzeit inaktive System</label><br /><br />
Version 113.06.69-41670 vom 20.10.2016 12:02:23 (linux_fs_start=0), das System wurde am 23.10.16 15:58 zuletzt modifiziert<br /><br />
<span id="running_branding">
<h4>Das oben ausgew&auml;hlte System unterst&uuml;tzt mehrere Firmware-Versionen (Brandings), im Moment ist "avm" eingestellt.</h4>
<label for="idRunningBranding">Beim n&auml;chsten Start wird folgender Wert gesetzt und bis zur n&auml;chsten &Auml;nderung verwendet: </label>
<select id="idRunningBranding" name="running_branding">
<option value="1und1">1und1</option>
<option value="avm" selected="selected">avm</option>
</select>
</span>
<span id="alternative_branding">
<h4>Das oben ausgew&auml;hlte System unterst&uuml;tzt mehrere Firmware-Versionen (Brandings), im Moment ist "avm" eingestellt.</h4>
<label for="idAlternativeBranding">Beim n&auml;chsten Start wird folgender Wert gesetzt und bis zur n&auml;chsten &Auml;nderung verwendet: </label>
<select id="idAlternativeBranding" name="alternative_branding">
<option value="1und1">1und1</option>
<option value="avm" selected="selected">avm</option>
</select>
</span>
<script type="text/javascript">
function onBootManagerClick(evt) {
var radioButton = jxl.evtTarget(evt);
if ( radioButton.id == "radioRunning" ) {
jxl.show("running_branding");
jxl.hide("alternative_branding");
} else {
jxl.hide("running_branding");
jxl.show("alternative_branding");
}
}
function initBootManager() {
jxl.addEventHandler("radioRunning","click",onBootManagerClick);
jxl.addEventHandler("radioAlternative","click",onBootManagerClick);
jxl.display("running_branding", true);
jxl.display("alternative_branding", false);
}
ready.onReady(initBootManager);
</script>
Trace-Log
Code:
+ envpathname=/proc/sys/urlader/environment
+ procmtd=/proc/mtd
+ mtdprefix=mtd
+ mtdblockprefix=/dev/mtdblock
+ mmcdevice=mmcblk0
+ mmcprefix=/dev/mmcblk0p
+ pumaparts=/proc/avm_partitions
+ kernelname=kernel
+ filesystemname=filesystem
+ reservedprefix=reserved
+ fsvarname=linux_fs_start
+ brandingvarname=firmware_version
+ wrapper=/wrapper
+ statfile=/var.tar
+ rootfsimage=filesystem_core.squashfs
+ versionfilename=etc/version
+ defaultspath=etc/default.Fritz_Box_HW185
+ tmpdirbase=/var/tmp
+ altfs=altfs
+ altroot=altroot
+ . /etc/puma6_helper.sh
+ date +%s
+ tempdir=/var/tmp/26050_1478451777
+ mkdir -p /var/tmp/26050_1478451777
+ trap cleanup HUP EXIT INT TERM
+ rc=127
+ html_display
+ get_system_switch
+ sed -n -e s/^linux_fs_start\t\([01]\)/\1/p /proc/sys/urlader/environment
+ switchvalue=1
+ get_partition_by_name kernel
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ name=kernel
+ sed -n -e s|mtd\([0-9]\{1,2\}\): [0-9a-f]\{8\} [0-9a-f]\{8\} "kernel"|\1|p /proc/mtd
+ running_kernel=2
+ get_partition_by_name kernel reserved
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ name=reserved-kernel
+ sed -n -e s|mtd\([0-9]\{1,2\}\): [0-9a-f]\{8\} [0-9a-f]\{8\} "reserved-kernel"|\1|p /proc/mtd
+ alternative_kernel=0
+ get_partition_by_name filesystem
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ name=filesystem
+ sed -n -e s|mtd\([0-9]\{1,2\}\): [0-9a-f]\{8\} [0-9a-f]\{8\} "filesystem"|\1|p /proc/mtd
+ running_filesystem=3
+ get_partition_by_name filesystem reserved
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ name=reserved-filesystem
+ sed -n -e s|mtd\([0-9]\{1,2\}\): [0-9a-f]\{8\} [0-9a-f]\{8\} "reserved-filesystem"|\1|p /proc/mtd
+ alternative_filesystem=1
+ get_system_branding
+ sed -n -e s/^firmware_version\t\(.*\)$/\1/p /proc/sys/urlader/environment
+ current_branding=avm
+ [ 1 -eq 0 ]
+ [ 1 -eq 0 ]
+ [ 1 -eq 0 ]
+ [ 1 -eq 0 ]
+ [ 1 -eq 0 ]
+ mount_alternative_system 1 /var/tmp/26050_1478451777
+ mkdir -p /var/tmp/26050_1478451777/altfs
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ command -v blkid
+ blkid=blkid
+ [ -z blkid ]
+ [ -z ]
+ blkid 1
+ sed -n -e s|.*TYPE="\(.*\)"|\1|p
+ fstype=
+ [ -z ]
+ fstype=yaffs2
+ mount -t yaffs2 /dev/mtdblock1 /var/tmp/26050_1478451777/altfs
+ [ yaffs2 = yaffs2 ]
+ mkdir -p /var/tmp/26050_1478451777/altroot
+ mount -t squashfs -o ro /var/tmp/26050_1478451777/altfs/filesystem_core.squashfs /var/tmp/26050_1478451777/altroot
+ printf %s/%s /var/tmp/26050_1478451777 altroot
+ return 0
+ mp=/var/tmp/26050_1478451777/altroot
+ [ -z /var/tmp/26050_1478451777/altroot ]
+ get_system_version /var/tmp/26050_1478451777/altroot
+ get_version_values /var/tmp/26050_1478451777/altroot
+ sed -n -e s|^export FIRMWARE_\(.*\)=\"\?\([^\"]*\)\"\?$|\1=\"\2\"|p /var/tmp/26050_1478451777/altroot/etc/version
+ sed -e s| |\ |g
+ eval VERSION="${CONFIG_VERSION_MAJOR}.06.69" SUBVERSION="-41670" DATE="20.10.2016 12:02:23"
+ VERSION=113.06.69 SUBVERSION=-41670 DATE=20.10.2016 12:02:23
+ printf %s%s 113.06.69 -41670
+ alternative_version=113.06.69-41670
+ get_system_date /var/tmp/26050_1478451777/altroot
+ get_version_values /var/tmp/26050_1478451777/altroot
+ sed -n -e s|^export FIRMWARE_\(.*\)=\"\?\([^\"]*\)\"\?$|\1=\"\2\"|p /var/tmp/26050_1478451777/altroot/etc/version
+ sed -e s| |\ |g
+ eval VERSION="${CONFIG_VERSION_MAJOR}.06.69" SUBVERSION="-41670" DATE="20.10.2016 12:02:23"
+ VERSION=113.06.69 SUBVERSION=-41670 DATE=20.10.2016 12:02:23
+ printf %s 20.10.2016 12:02:23
+ alternative_date=20.10.2016 12:02:23
+ [ -d /wrapper ]
+ get_image_name /var/tmp/26050_1478451777/altroot
+ get_loop_device /var/tmp/26050_1478451777/altroot
+ sed -n -e s|^\(/dev/loop[0-9]\{1,2\}\) /var/tmp/26050_1478451777/altroot .*|\1|p /proc/mounts
+ loop=/dev/loop3
+ [ -z /dev/loop3 ]
+ get_loop_device_file 3
+ [ -d /sys/block/loop3/loop ]
+ cat /sys/block/loop3/loop/backing_file
+ stat -c %Y /var/tmp/26050_1478451777/altfs/filesystem_core.squashfs
+ alternative_fsdate=1477231094
+ alternative_brandings=avm
+ [ -z 1477231094 ]
+ date -d @1477231094 +%d.%m.%y %H:%M
+ alternative_fsdate=23.10.16 15:58
+ get_brandings /var/tmp/26050_1478451777/altroot
+ path=/var/tmp/26050_1478451777/altroot/etc/default.Fritz_Box_HW185
+ find /var/tmp/26050_1478451777/altroot/etc/default.Fritz_Box_HW185 -type d -maxdepth 1
+ sed -n -e s|^/var/tmp/26050_1478451777/altroot/etc/default.Fritz_Box_HW185/\(.*\)|\1|p+ sed -e /^$/d -e :x;$!N;s/\n/ /;tx
+ alternative_brandings=1und1 avm
+ dismount_alternative_system /var/tmp/26050_1478451777/altroot
+ umount /var/tmp/26050_1478451777/altroot
+ rmdir /var/tmp/26050_1478451777/altroot
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ sed -n -e s|[^ ]* \(/var/tmp/26050_1478451777/[^ ]*\) .*|\1|p /proc/mounts
+ mp=/var/tmp/26050_1478451777/altfs
+ [ -z /var/tmp/26050_1478451777/altfs ]
+ umount /var/tmp/26050_1478451777/altfs
+ rmdir /var/tmp/26050_1478451777/altfs
+ return 0
+ get_system_version
+ get_version_values
+ sed -n -e s|^export FIRMWARE_\(.*\)=\"\?\([^\"]*\)\"\?$|\1=\"\2\"|p /etc/version
+ sed -e s| |\ |g
+ eval VERSION="${CONFIG_VERSION_MAJOR}.06.69" SUBVERSION="-41756" DATE="28.10.2016 13:20:46"
+ VERSION=113.06.69 SUBVERSION=-41756 DATE=28.10.2016 13:20:46
+ printf %s%s 113.06.69 -41756
+ running_version=113.06.69-41756
+ get_system_date
+ get_version_values
+ sed -n -e s|^export FIRMWARE_\(.*\)=\"\?\([^\"]*\)\"\?$|\1=\"\2\"|p /etc/version
+ sed -e s| |\ |g
+ eval VERSION="${CONFIG_VERSION_MAJOR}.06.69" SUBVERSION="-41756" DATE="28.10.2016 13:20:46"
+ VERSION=113.06.69 SUBVERSION=-41756 DATE=28.10.2016 13:20:46
+ printf %s 28.10.2016 13:20:46
+ running_date=28.10.2016 13:20:46
+ [ -d /wrapper ]
+ get_image_name /
+ get_loop_device /
+ sed -n -e s|^\(/dev/loop[0-9]\{1,2\}\) / .*|\1|p /proc/mounts
+ loop=/dev/loop0
+ [ -z /dev/loop0 ]
+ get_loop_device_file 0
+ [ -d /sys/block/loop0/loop ]
+ cat /sys/block/loop0/loop/backing_file
+ stat -c %Y /wrapper/filesystem_core.squashfs
+ date -d @1478026961 +%d.%m.%y %H:%M
+ running_fsdate=01.11.16 20:02
+ get_brandings
+ path=/etc/default.Fritz_Box_HW185
+ find /etc/default.Fritz_Box_HW185 -type d -maxdepth 1
+ sed -n -e s|^/etc/default.Fritz_Box_HW185/\(.*\)|\1|p
+ sed -e /^$/d -e :x;$!N;s/\n/ /;tx
+ running_brandings=1und1 avm
+ is_switched
+ switched=0
+ build_partitions
+ get_partition_by_name kernel
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ name=kernel
+ sed -n -e s|mtd\([0-9]\{1,2\}\): [0-9a-f]\{8\} [0-9a-f]\{8\} "kernel"|\1|p /proc/mtd
+ k1=2
+ get_partition_by_name filesystem
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ name=filesystem
+ sed -n -e s|mtd\([0-9]\{1,2\}\): [0-9a-f]\{8\} [0-9a-f]\{8\} "filesystem"|\1|p /proc/mtd
+ f1=3
+ g1=2:3
+ get_partition_by_name kernel reserved
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ name=reserved-kernel
+ sed -n -e s|mtd\([0-9]\{1,2\}\): [0-9a-f]\{8\} [0-9a-f]\{8\} "reserved-kernel"|\1|p /proc/mtd
+ k2=0
+ get_partition_by_name filesystem reserved
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ name=reserved-filesystem
+ sed -n -e s|mtd\([0-9]\{1,2\}\): [0-9a-f]\{8\} [0-9a-f]\{8\} "reserved-filesystem"|\1|p /proc/mtd
+ f2=1
+ g2=0:1
+ [ 2 -lt 0 ]
+ printf %s %s 0:1 2:3
+ set -- 0:1 2:3
+ get_system_switch
+ sed -n -e s/^linux_fs_start\t\([01]\)/\1/p /proc/sys/urlader/environment
+ [ 1 -gt 0 ]
+ shift
+ kernel=2
+ get_partition_by_number 2
+ is_puma6
+ is_puma_arm
+ [ Fritz_Box_HW185 = Fritz_Box_HW199a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220a ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231a ]
+ return 1
+ is_puma_atom
+ [ Fritz_Box_HW185 = Fritz_Box_HW199x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW204x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW213x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW220x ]
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ sed -n -e s|mtd2: [0-9a-f]\{8\} [0-9a-f]\{8\} "\(.*\)"|\1|p /proc/mtd
+ kname=kernel
+ [ kernel = kernel ]
+ switched=1
+ return 1
+ running_checked= checked="checked"
+ alternative_checked=
+ show_running=1
+ count_of_items 1und1 avm
+ set -- 1und1 avm
+ printf 2
+ [ 2 -gt 1 ]
+ chg_running_branding=1
+ count_of_items 1und1 avm
+ set -- 1und1 avm
+ printf 2
+ [ 2 -gt 1 ]
+ chg_alternative_branding=1
+ [ 113.06.69-41670 = unknown ]
+ [ de = de ]
+ printf <br /><h3>Folgende Systeme stehen auf dieser FRITZ!Box zur Auswahl bei einem Neustart:</h3><br />\n
+ printf <input type="radio" id="radioRunning" name="%s" value="running"%s />\n linux_fs_start  checked="checked"
+ printf <label for="radioRunning">das aktuell laufende System</label><br /><br />\n
+ get_system_switch
+ sed -n -e s/^linux_fs_start\t\([01]\)/\1/p /proc/sys/urlader/environment
+ printf Version %s vom %s (linux_fs_start=%d), das System wurde am %s zuletzt modifiziert<br /><br />\n 113.06.69-41756 28.10.2016 13:20:46 1 01.11.16 20:02
+ printf <input type="radio" id="radioAlternative" name="%s" value="alternative"%s />\n linux_fs_start
+ printf <label for="radioAlternative">das derzeit inaktive System</label><br /><br />\n
+ [ 113.06.69-41670 = unknown ]
+ get_system_switch
+ sed -n -e s/^linux_fs_start\t\([01]\)/\1/p /proc/sys/urlader/environment
+ printf Version %s vom %s (linux_fs_start=%d), das System wurde am %s zuletzt modifiziert<br /><br />\n 113.06.69-41670 20.10.2016 12:02:23 0 23.10.16 15:58
+ printf <span id="running_branding">\n
+ [ 1 -eq 1 ]
+ printf <h4>Das oben ausgew&auml;hlte System unterst&uuml;tzt mehrere Firmware-Versionen (Brandings), im Moment ist "%s" eingestellt.</h4>\n avm
+ printf <label for="idRunningBranding">Beim n&auml;chsten Start wird folgender Wert gesetzt und bis zur n&auml;chsten &Auml;nderung verwendet: </label>\n
+ selectbox idRunningBranding running_branding 1und1 avm avm
+ printf <select id="%s" name="%s">\n idRunningBranding running_branding
+ printf <option value="%s" 1und1
+ [ 1und1 = avm ]
+ printf >%s</option>\n 1und1
+ printf <option value="%s" avm
+ [ avm = avm ]
+ printf  selected="selected"
+ printf >%s</option>\n avm
+ printf </select>\n
+ printf </span>\n
+ printf <span id="alternative_branding">\n
+ [ 1 -eq 1 ]
+ printf <h4>Das oben ausgew&auml;hlte System unterst&uuml;tzt mehrere Firmware-Versionen (Brandings), im Moment ist "%s" eingestellt.</h4>\n avm
+ printf <label for="idAlternativeBranding">Beim n&auml;chsten Start wird folgender Wert gesetzt und bis zur n&auml;chsten &Auml;nderung verwendet: </label>\n
+ selectbox idAlternativeBranding alternative_branding 1und1 avm avm
+ printf <select id="%s" name="%s">\n idAlternativeBranding alternative_branding
+ printf <option value="%s" 1und1
+ [ 1und1 = avm ]
+ printf >%s</option>\n 1und1
+ printf <option value="%s" avm
+ [ avm = avm ]
+ printf  selected="selected"
+ printf >%s</option>\n avm
+ printf </select>\n
+ printf </span>\n
+ printf <script type="text/javascript">\n
+ printf function onBootManagerClick(evt) {\n
+ printf var radioButton = jxl.evtTarget(evt);\n
+ printf if ( radioButton.id == "radioRunning" ) {\n
+ printf jxl.show("running_branding");\n
+ printf jxl.hide("alternative_branding");\n
+ printf } else {\n
+ printf jxl.hide("running_branding");\n
+ printf jxl.show("alternative_branding");\n
+ printf }\n
+ printf }\n
+ printf function initBootManager() {\n
+ printf jxl.addEventHandler("radioRunning","click",onBootManagerClick);\n
+ printf jxl.addEventHandler("radioAlternative","click",onBootManagerClick);\n
+ [ 1 -eq 1 ]
+ printf true
+ printf jxl.display("running_branding", %s);\n true
+ [ 1 -eq 0 ]
+ printf false
+ printf jxl.display("alternative_branding", %s);\n false
+ printf }\n
+ printf ready.onReady(initBootManager);\n
+ printf </script>\n
+ return 0
+ rc=0
+ exit 0
+ cleanup
+ [ -z /var/tmp/26050_1478451777 ]
+ sed -n -e s|[^ ]* \(/var/tmp/26050_1478451777/altroot\) .*|\1|p /proc/mounts
+ mp=
+ [ -z ]
+ sed -n -e s|[^ ]* \(/var/tmp/26050_1478451777/altfs\) .*|\1|p /proc/mounts
+ mp=
+ [ -z ]
+ rm -r /var/tmp/26050_1478451777
Es funktioniert also in der Theorie (und auf meiner 7490/6490 auch in der Praxis) und ich wäre mir im Moment auch keines Problems mit irgendwelchen fehlenden Programmen bewußt ... ggf. fällt einem hier aber das "blkid" (gibt es bei der 6490 nicht) und seine unterschiedlichen Varianten bei der Ausgabe auf die Füße, auch wenn ich schon versucht habe, das Auslesen des Dateisystem-Typs (das macht einen Unterschied zwischen den Boxen mit (7490) und ohne (75x0) "/wrapper" und der 6490, letztere auch ohne "/wrapper", noch dazu mit anderen Device-Namen) so sparsam wie möglich von der tatsächlichen Ausgabe abhängig zu machen. Da wird nur ein 'TYPE="<fstype>"' gesucht und das sollte eigentlich jede Variante von "blkid" (ob nun das aus der BusyBox oder das aus den GNU-Utilities) ausgeben, wenn das Dateisystem erkannt wurde.

EDIT: Ich sehe gerade, daß da beim "blkid"-Aufruf tatsächlich ein Problem (falscher Device-Name) besteht ... das sollte (dürfte) aber nicht die Ursache sein, weil der "blkid"-Aufruf bei einer 7490 nur für die Erkennung der "yaffs2"-Partition versucht wird (auf der 6490 fehlt dann das "blkid" ja ohnehin) und das führt ohnehin zu einer leeren Ausgabe, weil das Dateisystem in der Partition (erwartbar) nicht erkannt wird. Das Problem tritt erst bei einem System auf, welches "blkid" hat und gleichzeitig direkt in der Partition ein SquashFS-Image hat (und keine wrapper-Partition), wie das bei den 75x0-Modellen (da ist das auch noch ungetestet) der Fall wäre.

- - - Aktualisiert - - -

Ich habe jetzt den Fehler im "Original" korrigiert (der hat m.E. mit dem Problem hier aber nichts zu tun) - wenn das Problem bei der 7490 geklärt ist, gibt es auch ein neues "modfs"-Archiv.

Bisher ist es mir aber weiter unklar, selbst das Fehlen der /etc/.modfs_version in einer Firmware-Version, die mit einem älteren "modfs" behandelt wurde, sollte nicht dazu führen, daß das System gar nicht erkannt wird, wenn das Mounten erst einmal funktioniert hat:
Code:
                mp=$(mount_alternative_system $alternative_filesystem $tempdir)
                if [ -z $mp ]; then
                        alternative_version="unknown"
                        alternative_date="unknown"
                        alternative_fsdate="unknown"
                        alternative_brandings="$current_branding"
                else
                        alternative_version=$(get_system_version $mp)
                        alternative_date=$(get_system_date $mp)
                        [ -d $wrapper ] \
                                && alternative_fsdate=$(stat -c %Y $(get_image_name $mp) 2>/dev/null) \
                                || alternative_fsdate=$(stat -c %Y $mp$statfile 2>/dev/null)
                        alternative_brandings="$current_branding"
                        if [ -z $alternative_fsdate ]; then
                                alternative_fsdate="unknown"
                        else
                                alternative_fsdate="$(date -d @$alternative_fsdate +'%d.%m.%y %H:%M')"
                                alternative_brandings="$(get_brandings $mp)"
                        fi
                        dismount_alternative_system $mp
                fi
Da dürfte dann maximal beim Datum der letzten Modifikation (da "modfs" ja mehrere iterative Anwendungen erlaubt, braucht es eben so einen Zeitstempel an irgendeiner passenden Stelle) ein "unknown" angezeigt werden und eigentlich kann bei einer 7490 (bzw. "NAND mit /wrapper") nicht einmal das passieren, denn da wird ja das Datum des Images in "/wrapper" herangezogen für diese Angabe. Das müßte also ein Fehler beim Mounten des zweiten Systems sein und da fehlt mir gerade jede Idee, wo das Problem liegen könnte.
 
Zuletzt bearbeitet:
Zur Kontrolle. Ein tracelog.txt im Anhang und output.html

Code:
<br /><h3>Folgende Systeme stehen auf dieser FRITZ!Box zur Auswahl bei einem Neustart:</h3><br />
<input type="radio" id="radioRunning" name="linux_fs_start" value="running" checked="checked" />
<label for="radioRunning">das aktuell laufende System</label><br /><br />
Version 113.06.69-41875 vom 04.11.2016 09:57:24 (linux_fs_start=0), das System wurde am 06.11.16 13:58 zuletzt modifiziert<br /><br />
<input type="radio" id="radioAlternative" name="linux_fs_start" value="alternative" />
<label for="radioAlternative">das derzeit inaktive System</label><br /><br />
Version 113.06.69-41887 vom 04.11.2016 13:51:28 (linux_fs_start=1), das System wurde am 06.11.16 14:16 zuletzt modifiziert<br /><br />
<span id="running_branding">
<h4>Das oben ausgew&auml;hlte System unterst&uuml;tzt mehrere Firmware-Versionen (Brandings), im Moment ist "avm" eingestellt.</h4>
<label for="idRunningBranding">Beim n&auml;chsten Start wird folgender Wert gesetzt und bis zur n&auml;chsten &Auml;nderung verwendet: </label>
<select id="idRunningBranding" name="running_branding">
<option value="1und1">1und1</option>
<option value="avm" selected="selected">avm</option>
</select>
</span>
<span id="alternative_branding">
<h4>Das oben ausgew&auml;hlte System unterst&uuml;tzt mehrere Firmware-Versionen (Brandings), im Moment ist "avm" eingestellt.</h4>
<label for="idAlternativeBranding">Beim n&auml;chsten Start wird folgender Wert gesetzt und bis zur n&auml;chsten &Auml;nderung verwendet: </label>
<select id="idAlternativeBranding" name="alternative_branding">
<option value="1und1">1und1</option>
<option value="avm" selected="selected">avm</option>
</select>
</span>
<script type="text/javascript">
function onBootManagerClick(evt) {
var radioButton = jxl.evtTarget(evt);
if ( radioButton.id == "radioRunning" ) {
jxl.show("running_branding");
jxl.hide("alternative_branding");
} else {
jxl.hide("running_branding");
jxl.show("alternative_branding");
}
}
function initBootManager() {
jxl.addEventHandler("radioRunning","click",onBootManagerClick);
jxl.addEventHandler("radioAlternative","click",onBootManagerClick);
jxl.display("running_branding", true);
jxl.display("alternative_branding", false);
}
ready.onReady(initBootManager);
</script>

In der otput.html scheint es richtig angezeigt zu werden. Auf die Schnelle sehe ich nicht wo es hakt.
LG

- - - Aktualisiert - - -

Ausser u.U. irgendetwas um die Brandingabfrage/-auswahl herum
Code:
 ...chg_alternative_branding=1
+ [ 113.06.69-41887 = [COLOR=#ff0000]unknown[/COLOR] ] ...
 

Anhänge

  • trace.txt
    16.2 KB · Aufrufe: 2
Zuletzt bearbeitet:
Danke für die Logs ... es liegt also nicht an "/usr/bin/guibootmanager" an sich. Da aber dessen Ausgabe auch bloß in die Webseite eingebunden wird und da ja kein Fehler bei der Ausführung des Programms angezeigt wird, sondern ebenfalls gültiger HTML-Text, wird das Problem eher noch unklarer.

Daher noch einmal die deutliche Nachfrage: Tritt das Problem (welches in den beiden Screenshots zu sehen ist) denn jetzt immer noch auf?

Ein Grund, warum das passieren kann, ist eine bereits gemountete alternative Dateisystem-Partition ... da wird dann das zweite Mounten durch "in use" behindert. Das sollte aber dann irgendwo anders in der Firmware seine Ursache haben oder gar in eigenen Modifikationen, denn selbst unmittelbar nach der Anwendung von "modfs" (auch wenn dabei "linux_fs_start" umgeschaltet wurde) sollte die alternative "filesystem"-Partition nicht gemountet sein und auch das dort liegende (neue) SquashFS-Image nicht.

Wenn das Problem weiterhin besteht, werde ich um ein eigenes Image nicht umhinkommen - das würde ich gerne vermeiden. Erst recht mit den neueren Versionen, die installiere ich immer erst dann, wenn ich die Änderungen (die meisten jedenfalls und soweit sie sich ohne den Einsatz eines Disassmblers nachvollziehen lassen) so halbwegs angesehen habe.

Die Abfrage im Nachtrag ist vollkommen in Ordnung. Da wird in Abhängigkeit von der Anzahl der Brandings in der Firmware entschieden, ob eine Auswahl möglich sein soll oder nicht und die rot markierte Zeile ist das Ergebnis der Abfrage, ob das alternative System erkannt wurde, weil ohne die Information zu enthaltenen Brandings eine Umschaltung auch keinen Sinn ergibt (die Abfrage in grün):
Code:
                [ $(count_of_items "$running_brandings") -gt 1 ] && chg_running_branding=1 || chg_running_branding=0
                [ $(count_of_items "$alternative_brandings") -gt 1 ] && chg_alternative_branding=1 || chg_alternative_branding=0
[COLOR="#008000"]                [ $alternative_version = unknown ] && chg_alternative_branding=0[/COLOR]
Eigentlich ist diese Abfrage sogar unnötig (aber auch nicht die Ursache des Fehlers, fliegt trotzdem bei der nächsten Änderung mit heraus), denn bei unbekannter Version des alternativen Systems kann die Anzahl der Brandings dort auch nicht größer als 1 sein (das aktuelle Branding wird dann als "Liste" verwendet, aber das ist eben nur ein Eintrag) - mithin erbringt dieses zusätzliche Statement gar keine Änderung von "chg_alternative_branding".

- - - Aktualisiert - - -

Eine denkbare Erklärung wäre noch der (quasi-)parallele Aufruf zweier HTTP-Requests für die Reboot-Seite, was bei diesem tollen "responsive design" ohne weiteres passieren könnte - dann würde der zweite Aufruf auf ein gemountetes Dateisystem treffen (spätestens beim eigenen Mount-Versuch) und am Ende "gewinnt" die Ausgabe des Aufrufs, der die Partition nicht mounten konnte.

Ich werde mal über die "Serialisierung" der Aufrufe der Shell-Datei nachdenken - wobei man solche doppelten Aufrufe dann trotzdem in den Developer-Tools des Browsers (als XHR-Requests) sehen müßte. Die Frage, ob das dann der Browser ist, der zuviele Events auslöst oder ein Fehler beim "Bubbling" von Events im AVM-Code, wo zweimal dieselbe Behandlung für eine solches "bubbling event" aufgerufen wird, wäre dann erst im Nachgang zu klären.

Wobei bei mir eben auch beim Aufruf über das GUI keine zwei Requests erzeugt werden ... bei mir sieht das genauso aus, wie es sein soll(te):
reboot.PNG
Man kann recht gut erkennen, daß bei mir immer etwas Zeit zwischen der Freigabe durch AVM (die Angabe nach "vom") und der Installation (letzte Modifikation) vergeht - ich will einfach keine Zeit an "mayflies" unter den Labor-Versionen verschwenden und es braucht auch mit weitgehend automatisierten Tests für die Unterschiede schon seine Zeit, bis man das aufbereitet und angesehen hat.

Das ist also irgendwie auch kein "generelles Problem", zumindest nicht bis zur 41756. Aber die Serialisierung der Zugriffe auf "guibootmanager" (zumindest während die zusätzlichen Partitionen zur Informationsgewinnung gemountet sind) macht trotzdem Sinn - die werde ich wohl ohnehin einbauen.
 
Zuletzt bearbeitet:
Ich habe es nochmals mit einer 06.60 versucht. Sorry wenn ich schnell an meine Grenzen stosse. U.U. kann ein erfahrener User Dir gezielter weiterhelfen. Ausser einem Speicher-Stick ...Schau bitte selbst falls etwas im Argen liegt spez. hier bei mir?
.
Code:
# mount
rootfs on / type rootfs (rw)
/dev/root on /wrapper type yaffs (ro,relatime)
devtmpfs on /wrapper/dev type devtmpfs (rw,relatime,size=119568k,nr_inodes=29892,mode=755)
/dev/loop0 on / type squashfs (ro,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=119568k,nr_inodes=29892,mode=755)
proc on /proc type proc (rw,relatime)
tmpfs on /var type tmpfs (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)
none on /sys/kernel/debug type debugfs (rw,relatime)
/dev/mtdblock4 on /var/flash type yaffs2 (rw,sync,relatime)
/var/dev/nand on /var/media/ftp type yaffs2 (rw,sync,relatime)
debug on /debug type debugfs (rw,relatime)
/dev/sda6 on /var/media/ftp/Intenso-MicroLine-06 type ext4 (rw,noexec,relatime,data=ordered)
/dev/sda7 on /var/media/ftp/modfs type ext3 (rw,noexec,relatime,errors=continue,barrier=1,data=writeback)
https://webdav.mc.gmx.net on /var/media/ftp/Onlinespeicher type fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,max_read=69632)

LG
 

Anhänge

  • Screen Shot 16-11-06 at 09.35 PM.JPG
    Screen Shot 16-11-06 at 09.35 PM.JPG
    234.8 KB · Aufrufe: 17
Ich denke mir mal etwas dazu aus ... bei mir hat es jedenfalls auch mit dem Einbau über "modfs" erst einmal funktioniert. Nun ist das bei mir ja immer ein ohnehin noch weiter modifiziertes System und die "modscripts" sind nur herausgezogene und veröffentlichte Teile - wenn das ein Seiteneffekt einer anderen Änderung sein sollte, muß ich erst mit einer wirklich "frischen" Box und ohne zusätzliche Erweiterungen mal testen.

Wenn Du dann so eine geänderte Version zeitnah auch in Deiner Umgebung testest und hier berichtest, ist das auch schon mehr, als manch anderer beiträgt (und es ist auch keine "Pflicht") - wenn ich mir die Hits des Thread und die Anzahl der Beiträge ansehe und dann noch die Zugriffe auf yourfritz.de betrachte (auch wenn das meinetwegen für jede Ausführung ein Zugriff ist, weil viele das nicht dauerhaft irgendwo bei sich ablegen), dann funktioniert es aber entweder bei vielen doch relativ problemlos oder es kommen immer wieder Neugierige dazu, die es ausprobieren, damit nicht zurechtkommen und das dann hier aber doch nicht schreiben.

Bei aktuell 946 Beiträgen und knapp 120.000 Hits für diesen Thread kann das doch nicht soo kompliziert am Ende sein - oder die Leute laden die Datei von yourfritz.de auch immer gleich am Beginn (man sieht es ja an der Summierung nach "user agents", welche Downloads von einer FRITZ!Box - zumindest vom wget der BusyBox - kommen). Wobei nach dem Beitrag bei tecchannel.de und auf pcwelt.de die Download-Zahlen auch sichtbar gestiegen sind.

- - - Aktualisiert - - -

Ne, ich kann mich bemühen wie ich will, ich kriege den Fehler bei mir nicht nachgestellt.
reboot.PNG

Auch wenn ich alle eigenen Pakete abschalte oder wirklich ein System nur mit den im "modfs" angebotenen Paketen baue, wird das nichts - allerdings mit eigener BusyBox (die brauche ich auch), aber in "/usr/bin/guibootmanager" wird eigentlich kein Programm aufgerufen, was nicht in der AVM-BusyBox auch enthalten wäre, das sind nur Aufrufe von "shell builtins" und den folgenden BusyBox-Applets:

  • sed
  • mkdir
  • mount
  • blkid (nur wenn vorhanden)
  • umount
  • rmdir
  • find
  • cat

Ich habe absolut keine Idee, was da schieflaufen sollte (außer irgendein "blkid"-Applet liefert für die yaffs2-Partition einen falschen Dateisystemtyp) und das Vorhandensein der Applets in der AVM-BusyBox habe ich auch überprüft. Zwar hat AVM zwischen der 41222 und der 41457 (dazwischen habe ich keine Versionen, war m.E. auch eine etwas längere Pause zwischen dem 22.09. und dem 04.10. bei der Labor-Reihe) irgendeinen anderen BusyBox-Patch hinzugefügt oder entfernt (es war jedenfalls auch keiner, der das Auspacken an die falsche Stelle über einen Symlink verhindern würde, wie ich es direkt mit der AVM-BusyBox immer wieder aufs Neue teste), aber das sollte auch keine Auswirkungen haben.

Ich müßte jetzt als Höchststrafe ein Image bauen, welches nur diese eine Änderung (und ggf. den Telnet-Daemon als einfachen Shell-Zugang) enthält - da habe ich eigentlich keinen Bock drauf und ich wäre mir eben auch keiner Seiteneffekte durch andere Pakete bewußt (mit Ausnahme der anderen "gui_boot_managerv0.x"-Skripte, aber das setze ich mal voraus, daß man nur eines davon einbauen läßt).

Es gibt bisher zwei "Stimmen" zu Problemen mit der neuen Version, von @Micha0815 mit Screenshots belegt, von @carlos nur als "Wortmeldung" ohne nähere Erläuterung der Umstände.

Ich warte jetzt auch mit der Aufnahme der anderen Änderungen am Bootmanager-Skript - die haben keine Auswirkungen bei den derzeit unterstützten Boxen (erst bei den 75x0 ohne den "yaffs2"-Wrapper ist das interessant).

Wenn es noch (mehrere) weitere Meldungen zu Problemen mit dem neuen Bootmanager geben sollte (dann bitte mit Debug-Log des "modfs"-Laufs, um die konkrete Zusammenstellung der verwendeten Modifikationen zu belegen und ebenfalls mit dem Screenshot der Reboot-Seite), ist es das Skript - ansonsten ggf. auch die Umgebung bzw. die Anwendung von "modfs" bei denjenigen, wo das Problem auftritt.

- - - Aktualisiert - - -

So, jetzt wird eine zweite Instanz, während das alternative System zur Informationsbeschaffung gemountet ist, für max. 10 Sekunden ins Warten geschickt. Wenn jetzt nicht außen herum noch irgendjemand die betreffende Partition mit Beschlag belegt (keine Ahnung, ob der "ctlmgr" als Webserver da selbst serialisiert, ich vermute mal nicht - das würde bei zwei Zugriffen verschiedener Clients ja auch zu merken sein), dann sollten selbst zwei gleichzeitige Requests für die Neustart-Seite nicht mehr zu einem Problem werden.

Für das berichtete Problem der fehlenden Informationen zum alternativen System habe ich noch keine Lösung anzubieten - solange sich niemand weiter mit passenden Log-Files findet, weiß ich auch nicht, wo ich bei der Suche ansetzen sollte.
 
Zuletzt bearbeitet:
Danke für Deine Mühe

Vielleicht mache ich etwas falsch. U.U. kann jmd. anderes mal Testen. Ich komme mit der 0.4.0 zurecht. Weiter oben hatte ich ja vor Wochen gefragt (als kleiner Wunsch) ob man eben die Subversion mit visualsieren könnte in der GUI. Nur deshalb wollte ich es halt testen und vorsichtig berichten.

LG+TX

Code:
BusyBox v1.22.1 (2016-09-28 20:36:13 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

ermittle die aktuelle TTY
tty is "/dev/pts/0"
Console Ausgaben auf dieses Terminal umgelenkt
disable start/stop characters and flowcontrol
# cd var/media/ftp
Ermitteln der Hardware-Version ... OK
Prüfen, ob die Hardware-Version unterstützt wird ... OK
Suchen der Einstellung zur Umschaltung auf das alternative System ... OK
Prüfen der aktuell zu startenden Systemversion ... OK
Suchen der aktuellen Kernel-Partition ... OK
Suchen der alternativen Kernel-Partition ... OK
Vergleich der Systeme in den Kernel-Partitionen ... übersprungen
Suchen der aktuellen Dateisystem-Partition ... OK
Suchen der alternativen Dateisystem-Partition ... OK
Überprüfen des zur Verfügung stehenden Speicherplatzes im RAM ... OK
Überprüfen des freien Speicherplatzes für das Auspacken des Dateisystems ... OK

Das System erfüllt die Voraussetzungen zur Modifikation des root-Dateisystems.

Im Moment läuft auf der Box die Version: 113.06.69-41875

Die Angabe einer Datei nach dem 'update'-Parameter unterbindet jede Versionprüfung.
Somit ist jeder selbst dafür zuständig, die Kompatibilität der vorhandenen Einstellungen
mit dem verwendeten System sicherzustellen, speziell wenn ein Downgrade ausgeführt wurde
oder ggf. die 'Werkseinstellungen' wiederherzustellen.

Die angegebene Datei '/var/media/ftp/modfs5/41887.image' wird als Quelle für die Aktualisierung genutzt.
Überprüfen der Signatur der geladenen Datei ... OK
Extrahieren des neuen Kernel-Images aus dem Firmware-Image ... OK
Extrahieren des Flash-Filesystems aus dem Firmware-Image ... OK
Extrahieren des Wurzeldateisystems aus dem Flash-Filesystem ... OK
Es gibt mehrere potentielle Arbeitsverzeichnisse auf verschiedenen Datenträgern bzw.
in verschiedenen Partitionen.

Die folgenden Arbeitsverzeichnisse stehen zur Auswahl:

a - /dev/sda6 (Dateisystem ext4) eingebunden unter /var/media/ftp/Intenso-MicroLine-06 - freier Speicherplatz: 7810 MB
b - /dev/sda7 (Dateisystem ext3) eingebunden unter /var/media/ftp/modfs - freier Speicherplatz: 666 MB
q - keines dieser Verzeichnisse soll verwendet werden

Bitte den Buchstaben des gewünschten Arbeitsverzeichnisses eingeben : b

Entpacken des root-Dateisystems für die Modifikationen ... OK

Das entpackte Dateisystem ist jetzt bereit für die Modifikationen.

Verzeichnis des root-Dateisystems : /var/media/ftp/modfs/1478508554/squashfs-root


Die Modifikation 'own files' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'own files' mit folgender Beschreibung
Programme hinzufügen/ersetzen
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... nicht unterstützt
Modifikation wird ausgeführt ... Fehler (3)
Unable to find binaries file 'files/binaries_113_3.10.73.tgz' to be unpacked.

Die Modifikation 'own files' wurde angewendet, Fehlercode = 3.

Die Modifikation 'create edit_rcuser command' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'create edit_rcuser command' mit folgender Beschreibung
Kommando zum Bearbeiten der Datei 'rc.user' hinzufügen
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'create edit_rcuser command' wurde angewendet, Fehlercode = 0.

Die Modifikation 'enable system and branding selection from GUI (v0.3)' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'enable system and branding selection from GUI (v0.3)' mit folgender Beschreibung
Auswahl des zu startenden Systems und des Brandings in der "Neustart"-Seite
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'enable system and branding selection from GUI (v0.3)' wurde angewendet, Fehlercode = 0.

Die Modifikation 'customize the original firmware with extension packages' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'customize the original firmware with extension packages' mit folgender Beschreibung
Einbinden eigener Erweiterungspakete auf der Basis von Dateisystem-Images,
die beim Start gesucht und eingehangen werden, bevor dort hinterlegte
Start-Skripte aufgerufen werden
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'customize the original firmware with extension packages' wurde angewendet, Fehlercode = 0.

Die Modifikation 'unhide MAC by default' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'unhide MAC by default' mit folgender Beschreibung
Anzeige von Heimnetz-Clients mit MAC-Adresse als Standard
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
patching file usr/www/1und1/net/net_overview.js
patching file usr/www/avm/net/net_overview.js
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'unhide MAC by default' wurde angewendet, Fehlercode = 0.

Die Modifikation 'enable telnet daemon' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'enable telnet daemon' mit folgender Beschreibung
Busybox-Symlink für den Telnet-Daemon erstellen
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... Fehler (1)
Die Modifikation wurde bereits angewendet oder ist nicht erforderlich.

Die Modifikation 'enable telnet daemon' wurde angewendet, Fehlercode = 1.

Die Modifikation 'add led display tab' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'add led display tab' mit folgender Beschreibung
Wiederbeleben der GUI-Seite zur Steuerung der LED-Anzeige
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
patching file usr/www/1und1/menus/menu_data.lua
patching file usr/www/1und1/menus/menu_data.lua
patching file usr/www/1und1/system/led_display.lua
patching file usr/www/avm/menus/menu_data.lua
patching file usr/www/avm/menus/menu_data.lua
patching file usr/www/avm/system/led_display.lua
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'add led display tab' wurde angewendet, Fehlercode = 0.

Die Modifikation 'mount by label' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'mount by label' mit folgender Beschreibung
USB-Volumes mit ihrem Label als Mountpoint einbinden
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'mount by label' wurde angewendet, Fehlercode = 0.

Die Modifikation 'add night time control to system menu' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'add night time control to system menu' mit folgender Beschreibung
Eintrag im System-Bereich zur Reaktivierung der Steuerung der Nachtschaltung
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
patching file usr/www/1und1/menus/menu_data.lua
patching file usr/www/1und1/menus/menu_data.lua
patching file usr/www/avm/menus/menu_data.lua
patching file usr/www/avm/menus/menu_data.lua
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'add night time control to system menu' wurde angewendet, Fehlercode = 0.

Die Modifikation 'show phone number names' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'show phone number names' mit folgender Beschreibung
Anzeige des Namens einer eigenen Telefonnummer in der Anrufliste
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
patching file usr/lua/foncalls.lua
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'show phone number names' wurde angewendet, Fehlercode = 0.

Die Modifikation 'enable custom profile extension' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'enable custom profile extension' mit folgender Beschreibung
Kommandos in /var/custom/etc/profile in /etc/profile einschließen
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'enable custom profile extension' wurde angewendet, Fehlercode = 0.

Die Modifikation 'enable rc.user execution' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'enable rc.user execution' mit folgender Beschreibung
Kommandos aus dem TFFS-Node 98 beim Systemstart ausführen
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'enable rc.user execution' wurde angewendet, Fehlercode = 0.

Die Modifikation 'show device name instead of type on GUI' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'show device name instead of type on GUI' mit folgender Beschreibung
Start mit der Anzeige des Gerätenamens anstelle des Typs in der Kopfzeile und im HTML-Titel;
dann nützlich, wenn man mehrere Boxen desselben Typs verwaltet und sofort sehen will, auf
welcher man gerade ist
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
patching file usr/www/1und1/content.lua
patching file usr/www/1und1/content.lua
patching file usr/www/1und1/content.lua
patching file usr/www/avm/content.lua
patching file usr/www/avm/content.lua
patching file usr/www/avm/content.lua
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'show device name instead of type on GUI' wurde angewendet, Fehlercode = 0.

Die Modifikation 'add VPN summary on overview page' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'add VPN summary on overview page' mit folgender Beschreibung
Anzeige der VPN-Verbindungen auf der Startseite, inkl. Schnell-Link zur VPN-Konfiguration
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
patching file usr/www/1und1/home/home.lua
patching file usr/www/1und1/home/home.lua
patching file usr/www/1und1/home/home.js
patching file usr/www/1und1/home/home.js
patching file usr/www/1und1/home/home.js
patching file usr/www/avm/home/home.lua
patching file usr/www/avm/home/home.lua
patching file usr/www/avm/home/home.js
patching file usr/www/avm/home/home.js
patching file usr/www/avm/home/home.js
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'add VPN summary on overview page' wurde angewendet, Fehlercode = 0.

Die Modifikation 'remove affected swap space before stopping USB devices' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'remove affected swap space before stopping USB devices' mit folgender Beschreibung
wird das USB-Subsystem gestoppt, während wichtige Teile des Hauptspeichers
in eine Swap-Partition (oder -Datei) ausgelagert sind, bleibt es u.U. beim
Neustart hängen - das wird hier versucht zu korrigieren
angewendet werden? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
patching file etc/hotplug/storage
patching file etc/hotplug/usb.pandu
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'remove affected swap space before stopping USB devices' wurde angewendet, Fehlercode = 0.

Das ist die letzte Chance zum manuellen Modifizieren des Dateisystems in folgendem Verzeichnis: /var/media/ftp/modfs/1478508554/squashfs-root

Die Eingabetaste drücken, um mit dem Packen des neuen root-Dateisystems zu beginnen
oder 'q' eingeben, um die letzte Möglichkeit zum Abbruch zu nutzen :

Packen des neuen root-Dateisystems ... OK
Erstellen eines neuen 'äußeren Dateisystems' ... OK
Kopieren des neuen root-Dateisystems in die inaktive Dateisystem-Partition ... OK
Kopieren des neuen Kernel-Images in die Zielpartition ... OK
Festlegen des alternativen Systems als aktives System beim nächsten Start der Box ... OK
Das neue root-Dateisystem wurde erfolgreich in die inaktive Partition kopiert.

Beim nächsten Start der Box wird das System in den alternativen Partitionen benutzt.

Sollte beim Start ein Problem auftreten, kann man leicht wieder über den Bootloader auf das hier verwendete System umschalten.
Eine kurze Anleitung, wie das in einer FTP-Sitzung zum Bootloader funktioniert, ist in der Datei BOOTSELECTION.ger enthalten.

# reboot
# telefon: SIGTERM received!
telefon: SIGCHLD PID 10003 received!
telefon: SIGCHLD PID 3240 received!
killall: printserv: no process killed
Stopping all swap devices
Filename                                Type            Size    Used    Priority
/dev/sda5                               partition       2097148 396     -1
Filename                                Type            Size    Used    Priority
/dev/sda5                               partition       2097148 396     -1
storage:unmounting /var/media/ftp/Intenso-MicroLine-06
Stop swapping to /dev/sda5
Nov  7 10:07:40 faxd[3295]: listen conf for 1
Nov  7 10:07:40 faxd[3295]: listen conf for 5
Nov  7 10:07:40 faxd[3295]: listen conf for 4
storage:unmounting /var/media/ftp/modfs
deactivating XHCI root hubs
ls: /var/USB-*-bus-usb-*: No such file or directory
rc.wlan: Stop WLAN...
[9991]++ ++ do internalflash 'prepare unmount'... ++ ++
[9991] WARNING: /var/media/ftp still used by process 4496
 4496 root      1400 S    -sh
[9991]++ ++ ...done ++ ++

----- Start supportlog: -----
01:00:46: open
WLAND:[03137]:01:00.47/[47.31]:derived config 'AP+WDS_R Dual', ID: 7 (0x00000000)
WLAND:[03137]:01:01.21/[81.56]:kickout_invalid_fd:59: Error occured reading event mgr fd '9'.
WLAND:[03137]:01:01.21/[81.56]:kickout_invalid_fd:60: Error detected on event_manager fd '9', flags: POLLERR
WLAND:[03137]:01:01.21/[81.56]:event_mgr_handle_error:637: External event manager recovery for fd '9' not possible: no error handler registered.
WLAND:[03137]:01:01.21/[81.90]:hal_scan_set_offloadnf: ioctl request 'offload scan' for wdsup3 failed, reason: Unknown error 524
WLAND:[03137]:01:01.21/[81.90]:hal_scan_handle_scan_comp: Disable offload scan failed.
WLAND:[03137]:01:01.21/[81.90]:dispatch_ioctl_req:131: Error while handling ioctl request '8B19'.
WLAND:[03137]:10:07.55/[44310.12]:kickout_invalid_fd:59: Error occured reading event mgr fd '11'.
WLAND:[03137]:10:07.55/[44310.12]:kickout_invalid_fd:60: Error detected on event_manager fd '11', flags:   POLLNVAL
WLAND:[03137]:10:07.55/[44310.12]:event_mgr_handle_error:637: External event manager recovery for fd '11' not possible: no error handler registered.
WLAND:[03137]:10:07.55/[44310.14]:Unload 'libwlanrext'((nil))
WLAND:[03137]:10:07.55/[44310.18]:util_deinit:28: ENTER
----- End supportlog -----
Connection closed by foreign host.
 
Weiter oben hatte ich ja vor Wochen gefragt (als kleiner Wunsch) ob man eben die Subversion mit visualsieren könnte in der GUI.
Wo war das, was ist damit gemeint und was bringt das am Ende? Bitte einfach mal die Idee dahinter erklären, ich habe jetzt bis Anfang Oktober zurück gelesen und keine Ahnung, welche Frage in dieser Richtung Du meinst.

Das Anzeigen der kompletten Versionsnummer (inkl. Subversion) der installierten Firmware für jede Partition (wenn Du das meinst) sollte aber nun funktionieren, wenn es denn bei AVM in der /etc/version eine eingetragene "SUBVERSION" gibt - das ist bei Release-Firmware aber nicht der Fall (daher fehlt die auch in Deinem Screenshot von der 06.60).

Seitdem das direkt ausgelesen und nicht mehr über das Ausführen von "/etc/version" ermittelt wird (auf diesem Weg funktioniert das auch noch dann, wenn aus irgendeinem Grund ein alternatives Dateisystem auch mit "noexec"-Option gemountet wird - beim laufenden System besteht diese Gefahr eher selten), wüßte ich auch nicht mehr, woran es scheitern sollte - die Anzeige ist jedenfalls inzwischen um die Angabe der Subversion ergänzt, was man auch bei der Anzeige für das laufende System sehen kann (übrigens auch bei Dir in #942).

Wenn es das ist, was Du vorgeschlagen hast, ist das an mir vorbeigegangen oder ich habe es nicht richtig verstanden - wobei ich die Überarbeitung des Boot-Managers (in kleinen Schritten) schon etwas länger in der Mangel hatte - im Prinzip seit dem Erscheinen der 75x0-Versionen mit der abweichenden Architektur (und der Bereitstellung von 6490-Firmware durch AVM), wo das Ermitteln der Systeminformationen dann jeweils anders ablaufen muß.
 
Danke für Deine Mühe

Hier im Letzten Satz hatte ich vorsichtig gefragt. Vormals sah man halt nur die Hauptrevision . Nun sieht man es kompletter in der aktiven Partition. (Das sieht man eigentlich gleichfalls und einfacher auf der Hauptseite). Schade dass es wohl ausschliesslich bei mir irgendwie hakt mit der Anzeige.

LG

OT: Ich bedaure es gleichfalls, dass trotz hoher clicks nur wenige hier feedback geben. Es liegt wohl daran, dass laut

#1 Zitat: ... Die Verwendung von "modfs" braucht (meiner Meinung nach) keine speziellen Kenntnisse, aber Basiswissen in Bezug auf die Bedienung der Kommandozeile (Shell) von Linux-Systemen (dazu gehören auch die "Standardkommandos") kann es derzeit dem Anwender noch nicht abnehmen ...Zitat-Ende

es sich doch zuwenige Anwender zutrauen?
 
Laß uns diese Diskussion nicht wieder anfangen ... daß es hier kein Thread ist: "Wie bediene ich den 'vi' und wie kann ich auf der FRITZ!Box eine Datei 'custom_modscripts' bearbeiten?", ist mir persönlich sehr recht.

Ich meinte auch weniger die Leute, die sich trotz fehlenden Basiswissens unbedingt ihren Router modifizieren wollen (trotz der damit verbundenen Gefahren, man eröffnet ja - vor allem bei unsachgemäßem Vorgehen mit eigenen Diensten - auch wieder zusätzliche Angriffsmöglichkeiten), sondern die Probleme, die bei der Anwendung von "modfs" tatsächlich auftreten könn(t)en.

Wenn sich jemand um die Vermittlung von Standardkenntnissen zur Bedienung von Linux verdient machen möchte, habe ich damit auch kein Problem - aber es muß/soll eben nicht dieser Thread sein und (imho) es gibt eigentlich genug andere Stellen im Internet, wo das bereits ausführlich und in hoher Qualität (das reicht von der Verständlichkeit bis zur korrekten Wiedergabe von Fakten) erfolgt. Wenn sich jemand tatsächlich für so gut hält, daß er solche Angebote toppen kann, möge er das tun - ist er/sie aber schlechter, braucht es kein weiteres negatives Beispiel ... auch davon gibt es genug.

Und nein, man kann nicht einmal eine allgemeine Empfehlung solcher Quellen abgeben, weil die Eignung für eine bestimmte Person immer auch von deren Vorkenntnissen (und auch den Sprachkenntnissen) abhängt - nur falls jemand fragen wollte, wo man so etwas findet. Ansonsten gibt es häufig genug bei irgendwelchen Computerzeitschriften auch solche Linksammlungen oder andere Empfehlungen/Tests, auch dabei reicht die Zielgruppe von "beginners" bis zu "experts".


-Solange nicht klar wird, warum bei Dir der manuelle Aufruf der Skript-Datei das richtige Ergebnis liefert und das aber beim Aufruf über die Lua-Seite nicht mehr der Fall ist, weiß ich auch nicht, wie ich bei der Fehlersuche weiterhelfen soll.

Die einzige Idee, die ich hätte, wäre das Hinzufügen zweier Zeilen in der Datei "/usr/bin/guibootmanager" (das kann vor dem "case" am Ende der Datei stehen oder auch irgendwo am Beginn nach der ersten Zeile mit dem SheBang) - das darf aber erst dann erfolgen, wenn die Modifikationen bereits abgewandt wurden (außer man ändert gleich das "modscript").
Code:
exec 2>/var/media/ftp/bootmanager_$$.log
set -x
Dann wird bei jeder Ausführung (aka jedem Seitenaufruf der "reboot.lua") auf dem NAS-Speicher eine Protokoll-Datei (mit einer Nummer im Namen) erzeugt (wie deren Inhalt in etwa ausssieht, steht schon weiter oben) und die kann man dann über die NAS-Funktionen auslesen. Natürlich kann man das auch irgendwo anders ablegen lassen, dann braucht es aber wieder eine Shell für das Auslesen (inkl. C&P, wenn man es hier einstellen will).

Wenn man dann die Stelle des Fehlers gefunden hat und das betreffende Kommando leitet die Fehlernachrichten ins Null-Device, dann muß man dort diese Umleitung eben mal entfernen, wenn die Ursache des Fehlers nicht ins Auge springen sollte. Bisher vermute ich ja nur, daß der Mount-Vorgang fehlschlägt - an welcher Stelle das genau erfolgt, ist immer noch unklar und aus dem bereits bereitgestellten Trace-Log nicht zu ersehen, denn da lief das Skript ja ohne Probleme durch.

- - - Aktualisiert - - -

Die Frage in dem von Dir verlinkten Beitrag habe ich eher darauf bezogen, ob man die Abfrage bei AVM nach einer neueren Firmware auch für die in der inaktiven Partition installierte Version machen könnte (wenn da z.B. einmal die deutsche und einmal die internationale Version installiert wäre) - irgendwie geht es da ja die ganze Zeit um den neuen automatischen Update-Check und nicht um die Umschaltung zwischen den Systemen bzw. den "gui_boot_manager".

Da das mit der Prüfung nicht problemlos machbar ist, habe ich das allerdings erst einmal verworfen.

Die bisher beim "check_update" einfach zurate gezogene "jason_boxinfo.xml" ist dynamisch erzeugt (existiert also in der inaktiven Firmware nicht) und man müßte sich für die inaktive Partition die Datei selbst zusammenschustern bzw. die Werte in der aktuellen mit den abweichenden Angaben des alternativen Systems mischen - erst einmal zuviel Aufwand für zuwenige Anwendungsfälle, denn der Normalfall ist sicherlich die Verwendung nur einer (D vs. intl.) Version und da ist dann das Ergebnis so einer Abfrage für eine neuere und eine ältere installierte Version dasselbe.

Jedenfalls dann, wenn man nicht in einer Partition eine "inhouse version" und in der anderen eine offizielle hat. Wer das machen will (ich nehme die "inhouse versions" grundsätzlich nicht für die Box, höchstens mal zum Reinschauen), dem kann man auch von der Inhouse-Version aus (schließlich hat die SIAB) die manuelle Ermittlung der Versionsnummern mit einem passenden "juis_check"-Aufruf zumuten.

Abgesehen davon könnte die jason_boxinfo.xml vielleicht demnächst ohnehin verschwinden zugunsten der irgendwann (keine Ahnung, wann genau) neu eingeführten juis_boxinfo.xml mit anderer Aufteilung der Versionsnummer und ein paar mehr Angaben. Dann muß ich das "check_update" aber auch nur beim Dateinamen anpassen und das Thema unterschiedlicher "Brandings" (da rechne ich jetzt mal deutsche vs. internationale Version dazu) ist zwar beim Reboot eines, aber nicht bei der Prüfung auf Updates. Wobei auch hier die Verwendung der juis_boxinfo.xml gleich den richtigen Wert liefern würde, ob es sich um eine "inhouse version" handelt oder nicht - bisher setzt das mein "check_update"-Skript fix auf "nur öffentlich verfügbare Versionen" und prüft damit auch nur dafür - das will ich eigentlich auch nicht wirklich ändern.
 
Ich werde es mir nochmals verinnerlichen. Btw. bezog sich mein OT #951 lediglich auf Absatz 3 aus #948 als wertungsfreie Feststellung, ohne weitergehende Reaktionen dazu implizieren zu wollen.

...Bei aktuell 946 Beiträgen und knapp 120.000 Hits für diesen Thread kann das doch nicht soo kompliziert am Ende sein - oder die Leute laden die Datei von yourfritz.de auch immer gleich am Beginn (man sieht es ja an der Summierung nach "user agents", welche Downloads von einer FRITZ!Box - zumindest vom wget der BusyBox - kommen). Wobei nach dem Beitrag bei tecchannel.de und auf pcwelt.de die Download-Zahlen auch sichtbar gestiegen sind....

LG
 
Zuletzt bearbeitet:
Das hatte ich durchaus verstanden ... aber Du wolltest mir ja wohl vermitteln, daß sich einige (und für Relevanz müßten es dann sogar "viele" sein) vom Schreiben eigener Fragen zur Anwendung/Benutzung/Erweiterung von "modfs" oder gar generell von der Benutzung von "modfs" von dem von Dir zitierten Text in #1 abhalten lassen würden (weil sie sich nun nicht mehr trauen - egal ob es dabei um die Verwendung von "modfs" oder um das Stellen von Fragen dazu geht) - und genau das sehe ich nicht so.

Dort wird deutlich zum Ausdruck gebracht, daß es hier nicht um die Vermittlung von Basiswissen zur Linux-Bedienung gehen soll - es gibt immer genug Leute, die sich den ersten besten Thread schnappen, der irgendwie so aussieht, als könne er mit ihrer Frage in Zusammenhang gebracht werden und dann wird da eben geschrieben.

Da kann so ein kleines "Vorbauen" und ein Hinweis auf erforderliche Eingangskenntnisse nicht schaden ... ja, es steht bei vielen "Bildungsangeboten" auch dabei, was man an vorhandenen Kenntnissen mitbringen sollte. Ich lese ja auch keine Doktorarbeit über abgehobene mathematische Themen, weil mir dafür die Grundlagen fehlen ... und das, obwohl ich ohne Finger bis zur Zehn zählen kann (und sogar zweimal bis unendlich).

Wenn es Dir darum ging, daß es sich viele Leute nach meinen einleitenden Worte selbst nicht mehr zutrauen, dann unterschätzt Du meines Erachtens "die Leute" - wenn meine warnenden Worte hingegen dazu führen, daß man es sich noch einmal überlegt, ob man wirklich einen Telnet-Zugang braucht oder nicht (es soll sogar Leute geben, die einen solchen unbedingt haben wollen und tatsächlich nicht einmal die Basiskommandos einer Linux-Installation kennen - auch wenn so ein "embedded device" noch einmal etwas ganz anderes sein kann), dann haben sie ihren Zweck auch erfüllt.

Zwar ist das finale "Bricken" tatsächlich schwierig, aber es ist auch nicht vollkommen unmöglich - ich habe z.B. gerade in den Quellen für die 6490 gelesen, daß die eigentlich mal (gegen das Überschreiben eines geschützten Bereiches des Bootloaders im Flash) in den SPI-Treiber eingebaute "Bremse" (in "puma6_spi_write()"):
Code:
static int puma6_spi_write(unsigned int address, unsigned char *pdata, unsigned int len) {

    unsigned int  Bytes = 0;
    unsigned int  written, write;
    /*--- int           config_area, config_len; ---*/
    /*--- unsigned char buffer[FLASH_BUFFER_SIZE]; ---*/
    unsigned int  buffer_size = FLASH_BUFFER_SIZE;

    DBG_SPI("[puma6_spi_write] address 0x%x len %d pdata 0x%p\n", address, len, pdata);

    if (lock_flash_mutex() == 0) {     /* Lock the HW Mutex */
        DebugPrintf("<%s failed to lock HW Mutex>\n", __func__);
        return 0;
    }

    while (Bytes < len) {
        if ((address & 3) || ((unsigned int)pdata & 3) || ((len - Bytes) < 4)) {     /*--- byteweise lesen ---*/
            DBG_SPI("[puma6_spi_write] Bytes addr 0x%x\n", address);
            written = puma6_spi_write_byte(address, pdata);
        } else {
            write = (len - Bytes) > buffer_size ? buffer_size : (len - Bytes);
            write &= ~3;
            DBG_SPI("[puma6_spi_write] Integer 0x%x len %d\n", address, write);

[COLOR="#FF0000"][B]#if 0[/B]
            config_area = (address -  save_urlader_config.start_addr);

            if (!Delete_Default_Config && (config_area >= 0) && (config_area < save_urlader_config.size)) {
                config_len = save_urlader_config.size - config_area;
                config_len = (config_len > buffer_size) ? buffer_size : config_len;
                /*--- wir dürfen maximal "write" Bytes schreiben ---*/
                config_len = (config_len > write) ? write : config_len;
                memcpy(buffer,
                       &save_urlader_config.data[address - save_urlader_config.start_addr],
                       config_len);
                written = spi_write_block((unsigned int)address, buffer, config_len);
            } else {
                if ((config_area < 0) && ((address + write) > save_urlader_config.start_addr)) {
                    /*--- wir würden in den Configbereich hineinschreiben - also write verkleinern ---*/
                    write = save_urlader_config.start_addr - address;
                }
                written = puma6_spi_write_block(address, pdata, write);
            }
#else
            written = puma6_spi_write_block(address, pdata, write);
#endif[/COLOR]
        }
        address += written;
        pdata += written;
        Bytes += written;

        if (written == 0) {
            DebugPrintf("<ERROR: Flash write aborted 0x%x>\n", (int)address);
            break;
        }
    }

    unlock_flash_mutex();  /* Release HW Mutes */
    return Bytes;
}
durch bedingte Übersetzung (das "#if 0") offenbar gar nicht aktiv ist. Zwar habe ich das nicht getestet - aber es soll auch nur ein Beispiel sein, daß man sich eben von der (selbst eingebauten) Kommandozeile das System auch problemlos so richtig zerstören kann, wenn der Hersteller nicht irgendwelche Schutzmaßnahmen getroffen hat und warum sollte er das tun, wenn er den Kunden gar nicht an diese Stellen heranlassen will?

Da kann man also mit allzu unbedarftem Vorgehen auch Schaden anrichten und wenn ich Leute davon abgehalten habe, ist mir das am Ende auch recht.

Ich will nämlich auch den Ruf von "modfs" nicht riskieren (viele finden es immer noch einfacher, als wenn sie sich selbst ein Freetz-Image bauen sollen/wollen) ... ansonsten hätte ich vermutlich schon längst eine Version auch für die 7390 veröffentlicht (das ist bis auf wenige Abweichungen dasselbe Vorgehen). Dort gibt es aber kein Zurück oder ein "Andersüberlegen" bis zum nächsten Restart - dann mit einem unvollständigen Flashen verbundene Probleme (bei einer NAND-Box wird dann eben "linux_fs_start" entweder gar nicht erst umgeschaltet oder vom Besitzer wieder zurückgesetzt) und die ggf. notwendige Verwendung des Recovery-Programms mit Verlust aller Einstellungen, würden nämlich bei den meisten auch auf "modfs" zurückfallen und wer würde denn bei einer NAND-Box zum "modfs" greifen, wenn er immer wieder die Einstellungen wiederherstellen müßte und dann seinen ganzen DECT-Gerätepark neu koppeln soll? Das ist unzumutbar und ich will den Leuten ja bei Problemen helfen und ihnen nicht neue bescheren, die sie ohne mich gar nicht hätten.

Wenn es sich dann jemand tatsächlich nicht zutraut und an die Stelle des "Schlaumachens" lieber die Resignation setzt, dann hat man denjenigen mit einiger Wahrscheinlichkeit auch vor einigem Frust bewahrt - ich finde nämlich auch eine falsche, nicht funktionierende oder unzureichend erklärte Anleitung immer noch wesentlich schlimmer als gar keine. Bei letzterem sucht der Leser einfach weiter - denkt er aber, er habe seine Lösung gefunden, wird er nicht weiter suchen und dann ist er mit so einer unzureichenden Anleitung viel schlechter dran als ohne eine solche.
 
Zuletzt bearbeitet:
Oh weh

es lag mir absolut fern Dich in irgendeiner Weise provozieren zu wollen :smlove: Ich greife halt auf einige PN-Anfragen zurück, die sich eben genau aus (Ehr-)Furcht scheuen hier Nachzufragen, weil sie eben nicht das geforderte Grundwissen -dem Grunde nach reihe ich mich dort als primus inter pares ein- parat haben, wenn es zwackt.

Egal back to Topic.

Ich habe Dir die gewünschten Logs erstellt durch Abändern/Einfügen des Zweizeilers. Ich erkenne dort auf die Schnelle nix, was ursächlich sein könnte. Mein Auge ist auch nicht so geschult ;)

LG
4145 bei script modfs-Ausführung
4229 bei Umschalten via GUI
 

Anhänge

  • bootmanager_4145.log.txt
    12.4 KB · Aufrufe: 5
  • bootmanager_4229.log.txt
    4 KB · Aufrufe: 5
Zuletzt bearbeitet:
Da fehlt einfach (für eine NAND-Box untypisch) das "blkid"-Kommando im System
Code:
+ command -v blkid
+ blkid=
+ [ -z ]
und damit landet der in der falschen Annahme, die "filesytem"-Partition direkt als SquashFS zu mounten.

Wenn ich bei AVM in die originale Firmware
Code:
# find 113.06.69-4* -name blkid | grep -v yaffs2
113.06.69-40416/sbin/blkid
113.06.69-40416/usr/sbin/blkid
113.06.69-40520/sbin/blkid
113.06.69-40520/usr/sbin/blkid
113.06.69-40766/sbin/blkid
113.06.69-40766/usr/sbin/blkid
113.06.69-40929/sbin/blkid
113.06.69-40929/usr/sbin/blkid
113.06.69-41049/sbin/blkid
113.06.69-41049/usr/sbin/blkid
113.06.69-41222/sbin/blkid
113.06.69-41222/usr/sbin/blkid
113.06.69-41457/sbin/blkid
113.06.69-41457/usr/sbin/blkid
113.06.69-41556/sbin/blkid
113.06.69-41556/usr/sbin/blkid
113.06.69-41670/sbin/blkid
113.06.69-41670/usr/sbin/blkid
113.06.69-41875/sbin/blkid
113.06.69-41875/usr/sbin/blkid
schaue (das rausgefilterte Unterverzeichnis "yaffs2" enthält die Dateien aus dem Wrapper, dort gibt es auch ein "blkid"), ist das vorhanden (aus dem util-linux-Paket) und da frage ich mich dann, wo das bei Dir geblieben sein mag.

Das "command" sollte eigentlich ein "shell builtin" sein und wenn ich das mit einer AVM-Busybox probiere, funktioniert das ebenfalls:
Code:
root@FB7490:~ $ bin/busybox_avm sh

BusyBox v1.22.1 (2016-09-28 20:36:13 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

# command -v blkid
/sbin/blkid

Somit wäre die Frage zu klären, warum es bei Dir kein "blkid"-Kommando gibt:
Code:
$ [COLOR="#008000"]IFS=:;for p in $PATH; do echo "$p: $(ls -la $p/blkid 2>/dev/null)"; done[/COLOR]
/var/media/ftp/root/bin:
/var/media/ftp/root:
/var/custom/bin:
/bin:
/var/custom/usr/bin:
/usr/bin:
/var/custom/sbin:
/sbin: lrwxrwxrwx    1 root     root            17 Nov  7 02:50 /sbin/blkid -> ../usr/sbin/blkid
/var/custom/usr/sbin:
/usr/sbin: -rwxrwxrwx    1 root     root         62672 Nov  4 09:57 /usr/sbin/blkid
Wenn da nirgendwo eines ist, stimmt etwas nicht und wenn da nicht wenigstens vier Verzeichnisse im Pfad stehen, ist das eine komische Umgebung, in der das aufgerufen wurde.

Unabhängig davon werde ich noch einmal versuchen, den Test auf das richtige "mount"-Kommando etwas anders zu gestalten - aber ohne das "blkid" würde theoretisch nicht einmal der AVM-Mechanismus zum Mounten irgendwelcher USB-Volumes funktionieren, denn auch dort wird das "blkid" verwendet:
Code:
$ grep blkid /etc/hotplug/udev-mount-sd
/sbin/blkid -i /dev/${SDEV_DISK} > /dev/null
/sbin/blkid -i /dev/${SDEV_DISK} > /dev/null
local FSTYPE=$(/sbin/blkid ${DEVNODE} -do value -s TYPE)
local LABEL=$(/sbin/blkid ${DEVNODE} -do value -s LABEL |tr -s "[:cntrl:][:space:]" " "| tr -sc "'${WHITELIST}'" "_")
echo "MOUNT: use blkid to get device $DEVNODE data" >/dev/console
filesystem_type=$(/sbin/blkid -d ${DEVNODE} -s TYPE -o value)
if [ -z "`/sbin/blkid | grep "^/dev/$SDEV_DISK"`" ] ; then
Wenn das bei Dir funktioniert, wird es wohl irgendwo ein "blkid" geben und es fehlt die korrekte Einstellung des Suchpfads im Environment beim Aufruf (das "command" sucht ja nur dort). Wie das nun wieder passieren mag, weiß ich auch nicht - aber zur Kontrolle kannst Du noch ein "env 1>&2" nach dem "set -x" einfügen, dann landet das komplette Environment auch noch in der Protokolldatei.

PS: Für die Shell-Versteher, die hier mitlesen und bevor die Frage danach doch noch kommt: Wenn doch AVM beim Hotplug über den "udevd" selbst auf "blkid" setzt, warum ist dann überhaupt ein Test erforderlich, ob das Kommando existiert? Das ist der 6490 geschuldet - dort läuft das GUI (inkl. des Bootmanager-Skripts) auf dem ARM-Core, die USB-Volumes werden aber auf dem x86-Core gemountet (da gibt es auch das "blkid" dann wieder) und der ARM-Core greift dort per NFS (und damit ohne die Notwendigkeit der Kenntnis irgendwelcher Dateisystemformate) zu.
 
Zuletzt bearbeitet:
Code:
password:


BusyBox v1.22.1 (2016-11-01 19:55:42 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

ermittle die aktuelle TTY
tty is "/dev/pts/0"
Console Ausgaben auf dieses Terminal umgelenkt
disable start/stop characters and flowcontrol
# command -v blkid
/sbin/blkid
# IFS=:;for p in $PATH; do echo "$p: $(ls -la $p/blkid 2>/dev/null)"; done
/bin:
/usr/bin:
/sbin: lrwxrwxrwx    1 root     root            17 Nov  7 09:49 /sbin/blkid -> ../usr/sbin/blkid
/usr/sbin: -rwxrwxrwx    1 root     root         62672 Nov  4 13:51 /usr/sbin/blkid
#
Verloren gegangen wohl nicht? Gegen später werde ich das "env 1>&2" nochmals einbauen in das script. Sorry wenn ich da etw. überfordert bin aus dem Stehgreif.
LG

- - - Aktualisiert - - -

Vom reinen Umschalten der log
 

Anhänge

  • bootmanager_4035.log.txt
    12.4 KB · Aufrufe: 2
Zuletzt bearbeitet:
Ich sehe nicht, was sich geändert hätte ... das fehlende "blkid" steht immer noch im Protokoll (ab Zeile 127) und die Ausgabe von "env 1>&2" kann ich auch nicht entdecken (ebensowenig den Aufruf). Damit sollte man auch nichts Neues erwarten können ...
 
Vorschlag: die Error-Umleitung nach /dev/null bei Zeile:
"blkid=$(command -v blkid 2>/dev/null)"
mal herausnehmen; evtl. beraubt dieses Statement uns einer unschönen Botschaft wie:
Code:
# /bin/busybox command -v blkid
command: applet not found
#
 
Zuletzt bearbeitet:
# /bin/busybox command -v blkid
command: applet not found
#
Das stünde in direktem Widerspruch zu #957 - ich gehe davon aus, daß diese BusyBox (vom 01.11.2016) die von AVM ist. Außerdem sollte "command" eigentlich gar kein Applet sein, sondern mehr ein "shell builtin" wie "if" oder "for" - wobei die POSIX-Spezifikation das auch eher als Kommando beschreibt. Trotzdem sollte es "zur Basis" von "ash" gehören, auch bei der AVM-BusyBox, selbst wenn meine Test-Version der AVM-BusyBox schon ein paar Labor-Versionen älter ist:
Code:
$ type command
command is a shell builtin
$ busybox_avm sh -c "type command"
command is a shell builtin
 
Ich hatte den Abschnitt
Code:
 ##############################################################################
#                                                                            #
# check parameters and call requested function                               #
#                                                                            #
##############################################################################
exec 2>/var/media/ftp/bootmanager_$$.log
set -x
env 1>&2
case $1 in
    (html_display)
        spinlock_pid=$$
        html_display
        rc=$?
        ;;
    (switch_to)
        switch_system_to $2 $3
        rc=$?
        ;;
esac
exit $rc
wie angewiesen geändert. Im Log taucht dazu leider nichts auf.

Laut Pokemon habe ich auch versucht
Code:
 ##############################################################################
#                                                                            #
# mount alternative system                                                   #
# $1 - source partition index                                                #
# $2 - temporary directory as mount point                                    #
#                                                                            #
##############################################################################
mount_alternative_system()
(
    mkdir -p $2/$altfs 2>/dev/null || return 1
    if is_puma6; then
        mount -t squashfs -o ro $mmcprefix$1 $2/$altfs 2>/dev/null || return 1
        printf '%s/%s' $2 $altfs
    else
        blkid=$(command -v blkid)
        [ -z $blkid ] && fstype=squashfs
        [ -z $fstype ] && fstype=$(blkid $mtdblockprefix$1 | sed -n -e 's|.*TYPE="\?\([^"]*\)"\?|\1|p')
        [ -z $fstype ] && fstype=yaffs2
        mount -t $fstype -o ro $mtdblockprefix$1 $2/$altfs 2>/dev/null || return 1
        ! [ $fstype = yaffs2 ] && printf '%s/%s' $2 $altfs && return 0
        mkdir -p $2/$altroot 2>/dev/null || return 1
        mount -t squashfs -o ro $2/$altfs/$rootfsimage $2/$altroot 2>/dev/null || return 1
        printf '%s/%s' $2 $altroot
    fi
    return 0
)
was auch im log nichts neues erscheinen lässt.
Code:
+ [ Fritz_Box_HW185 = Fritz_Box_HW231x ]
+ return 1
+ return 1
+ command -v blkid
+ blkid=
+ [ -z ]
+ fstype=squashfs
+ [ -z squashfs ]
+ [ -z squashfs ]
+ mount -t squashfs -o ro /dev/mtdblock3 /var/tmp/4090_1478594490/altfs

Ich lasse es besser bleiben hier weiter zu nerven, falls es (m)ein Einzelproblem darstellt. Vielleicht kann jmd. anderes als carlos in #943 und ich das mal checken. Ich komme auch mit dem status quo zurecht.
LG
 
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.