Die Software, die das Installieren eines Updates vornimmt, scheint darin allerdings nicht enthalten zu sein, da nicht Open Source.
Vielleicht verstehen wir unterschiedliche Dinge unter "Installieren eines Updates" ... aber die Software, die am Ende die einzelnen Partitionen beschreibt, ist durchaus enthalten (als
w724_2.0_opensource/package/base-files/files/usr/sbin/upgrade.sh
) und auch der Teil, der dieses Skript dann aufruft, findet sich im OpenSource-Paket bei der Telekom - und zwar als "middleware" von Arcadyan (d.h. allerdings auch hier: nur in Form fertiger DSO-Dateien, aka "libraries", bzw. notwendiger Header-Dateien):
Rich (BBCode):
vidar:~/tmp $ find w724_2.0_opensource/extern/target-install/arc-middle-mod-sys -ls
10138869 0 drwxrwxr-x 1 505 505 14 Jun 9 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys
10138870 0 drwxr-xr-x 1 505 505 28 Jun 27 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr
10138871 0 drwxr-xr-x 1 505 505 192 Jun 27 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/lib
10138872 12 -rwxrwxr-x 1 505 505 11292 Jun 9 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/lib/libmapi_sys.so.0.1
10138873 4 lrwxrwxrwx 1 505 505 18 Jun 27 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/lib/libmhdl_sys.so.0 -> libmhdl_sys.so.0.1
10138874 8 -rwxrwxr-x 1 505 505 6600 Jun 9 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/lib/libmhdl_sys.so.0.1
10138875 4 lrwxrwxrwx 1 505 505 18 Jun 27 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/lib/libmhdl_sys.so -> libmhdl_sys.so.0.1
10138876 4 lrwxrwxrwx 1 505 505 18 Jun 27 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/lib/libmapi_sys.so.0 -> libmapi_sys.so.0.1
10138877 4 lrwxrwxrwx 1 505 505 18 Jun 27 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/lib/libmapi_sys.so -> libmapi_sys.so.0.1
10138878 0 drwxr-xr-x 1 505 505 72 Jun 27 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/include
10138879 4 -rw-rw-r-- 1 505 505 284 Jun 9 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/include/mid_hdl_sys.h
10138880 4 -rw-r--r-- 1 505 505 1293 Jun 27 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/include/mid_mapi_sys.h
10138881 8 -rw-r--r-- 1 505 505 4321 Jun 27 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/include/mid_sys.h
10138882 0 drwxr-xr-x 1 505 505 0 Jun 9 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/sbin
10138883 0 drwxr-xr-x 1 505 505 0 Jun 27 2014 w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/host
vidar:~/tmp $ strings w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/lib/libmhdl_sys.so.0.1
[...]
sprintf
osSystem
osSystem_GetOutput
strcpy
osRunTask
[...]
(upgrade.sh full %s %s >& /dev/null; echo $?)
(upgrade.sh full2 %s %s >& /dev/null ; echo $?)
(upgrade.sh kernel %s >& /dev/null ; echo $?)
(upgrade.sh kernel2 %s >& /dev/null ; echo $?)
(upgrade.sh rootfs %s >& /dev/null ; echo $?)
(upgrade.sh rootfs2 %s >& /dev/null ; echo $?)
(upgrade.sh module %s >& /dev/null ; echo $?)
(upgrade.sh uboot %s >& /dev/null ; echo $?)
(upgrade.sh fullN %s %s >& /dev/null ; echo $?)
cat /tmp/tmp_upgrade_failure_result | grep RESULT
cat /tmp/tmp_upgrade_failure_result | grep VER
[...]
(upgrade.sh type %s ; echo $?)
full
rootfs
kernel
module
uboot
[...]
vidar:~/tmp $ nm -D w724_2.0_opensource/extern/target-install/arc-middle-mod-sys/usr/lib/libmhdl_sys.so.0.1
00011380 A _GLOBAL_OFFSET_TABLE_
w _Jv_RegisterClasses
000113d4 A __bss_start
w __cxa_finalize
w __deregister_frame_info
w __register_frame_info
000113d4 A _edata
00011400 A _end
000113d4 A _fbss
00011380 D _fdata
00000f50 T _fini
00000660 T _ftext
00019370 A _gp
000005e8 T _init
000007b0 T mid_hdl_sys
U osRunTask
U osSystem
U osSystem_GetOutput
U sprintf
U strcmp
U strcpy
U strtok_r
vidar:~/tmp $
Ich würde jedenfalls Wetten mit sehr hohem Einsatz eingehen, daß das Schreiben der neuen Firmware (unter Zuhilfenahme des erwähnten Shell-Skripts) tatsächlich in der oben gezeigten
libmhdl_sys.so
erfolgt und zwar in der dort enthaltenen Funktion
mid_hdl_sys
(denn das ist die einzige "echte" Funktion, die von dieser Library exportiert wird - parallel dazu findet man auch ein (wenig aussagekräftiges) Header-File für diese Funktion) - ob da dann bereits eine "zerlegte" Firmware angeliefert werden muß beim Aufruf oder ob es eher das "komplette Image" sein sollte, muß man dann sicherlich eingehender untersuchen; auch unter Einbeziehung der Include-Files für dieses "Package".
Angesichts des Feldes
char fwFile[MID_SYS_FW_FILENAME_LEN];/* file name of firmware */
in der C-Struktur
mid_sys_fw_upgrade_s
wäre ich (ohne nähere Untersuchungen vorgenommen zu haben) jedenfalls erst mal für die These empfänglich, daß dort der Name der KOMPLETTEN Image-Datei übergeben werden dürfte und dann wäre davon auszugehen, daß genau in dieser Funktion eben auch das Extrahieren des jeweils benötigten Teils aus dem gesamten Image erfolgt ... oder die wird eben doch schon zuvor zerlegt.
Etwas Zauberei mit einem Disassembler (je nach persönlichen Vorlieben) dürfte recht schnell die tatsächlichen Abläufe in
mid_hdl_sys
aufdecken ... ich wollte nur der Annahme/Auffassung entgegentreten, daß GAR NICHTS von der Software, die bei der Installation von Updates verwendet wird, im OpenSource-Paket enthalten ist. Allerdings fehlt an DIESER Stelle tatsächlich der Quelltext für die Funktion in der o.a. Library ... sicherlich ist die auch DESHALB nur unter
extern
zu finden; aber immerhin IST sie enthalten.