Das mit der klugen Auswahl der im Unterverzeichnis "modscripts" zu belassenden Dateien (der Rest sollte gelöscht werden), hatte ich weiter vorne ja schon geschrieben. Und von der Verwendung des "fakeroot"-Environments beim Aufruf von "run_modscripts" ist auch nichts zu sehen - ich habe schon in #147 versucht zu erklären, daß (und warum) es da Probleme geben wird.
Die Fehler, die sich auch beim Packen mit "fwmod -p" dann zeigen, sind (vermutlich) genau darauf auch zurückzuführen - was da jetzt genau für ein Image herauskommt und warum das sich nicht starten läßt, kann man in dem Protokoll aber nicht erkennen. Nur schon der Ansatz, sowohl "mod_rc_tail_sh" als auch die Änderung durch Freetz parallel zu verwenden, wirkt halt befremdlich:
Code:
invoking custom script restoring support for /var/flash/debug.cfg
patching ./filesystem/etc/init.d/rc.tail.sh
checking for left over version-control-system files
- auch wenn er das Problem beim Starten des Images nicht erklären kann.
Das mit dem:
Ein Modifiziertes Image ohne modfs lässt sich ohne Probleme flashen.
wage ich einfach auch mal zu bezweifeln, wobei das eben davon abhängt, was man beim "Modifizieren" tatsächlich macht und ob/wie sich das auf die Dateien unter "fakeroot control" auswirkt. Jede hinreichend weitgehende Modifikation der entpackten Strukturen hat exakt dasselbe Problem, wie Du selbst in diversen Threads zum Thema "fakeroot" und Freetz nachlesen kannst - das Problem liegt also nicht am "modfs", sondern daran, wie Du es anwendest bzw. daß Du "fwmod" zum Entpacken und Packen verwendest und das nicht als Superuser mit "unsquashfs" und "mksquashfs" selbst machst.
Auch den Thread dazu hatte ich oben verlinkt ... selbst wenn der sich mit 7580/7560/7590 befaßt, ist das Prinzip bei einer 7530/7520 dasselbe, daß man den Kernel und das Dateisystem hintereinander kopieren muß für die Datei, die man ins RAM laden lassen kann - nur wird bei diesen Modellen halt das LE-Format verwendet (und damit funktioniert das theoretisch sogar mit den "squashfs-tools" der Distro und braucht nicht mal die Tools aus Freetz bzw. die vorübersetzten aus YourFritz bzw. yf_bin).
===========================================================================================
Wenn ich das - zugegebenermaßen ohne "fwmod" - einfach einmal "durchexerziere", gibt es die ganzen Fehler, die man bei Dir sehen kann, nicht:
Rich (BBCode):
peh@vidar:~> mkdir /tmp/7530
peh@vidar:~> cd /tmp/7530
peh@vidar:/tmp/7530> wget -q -O avm.tar http://ftp.avm.de/fritzbox/fritzbox-7530/deutschland/fritz.os/FRITZ.Box_7530-07.14.image
peh@vidar:/tmp/7530> tar -x -f avm.tar -O ./var/tmp/kernel.image >kernel
peh@vidar:/tmp/7530> dd of=kernel.bin if=kernel bs=8 count=$(( ( $(stat -c %s kernel) / 8 ) - 1 )) 2>/dev/null
peh@vidar:/tmp/7530> rm kernel
peh@vidar:/tmp/7530> tar -x -f avm.tar -O ./var/tmp/filesystem.image >fs.sqfs
peh@vidar:/tmp/7530> rm avm.tar
peh@vidar:/tmp/7530> ls -l
total 23232
-rw-r--r-- 1 peh users 20295688 May 23 12:59 fs.sqfs
-rw-r--r-- 1 peh users 3012864 May 23 12:58 kernel.bin
peh@vidar:/tmp/7530> git clone --recurse-submodules https://github.com/PeterPawn/YourFritz.git
Cloning into 'YourFritz'...
remote: Enumerating objects: 718, done.
remote: Counting objects: 100% (718/718), done.
remote: Compressing objects: 100% (418/418), done.
remote: Total 3482 (delta 390), reused 526 (delta 295), pack-reused 2764
Receiving objects: 100% (3482/3482), 4.23 MiB | 6.14 MiB/s, done.
Resolving deltas: 100% (2102/2102), done.
Submodule 'bin' (https://github.com/PeterPawn/yf_bin.git) registered for path 'bin'
Submodule 'first_aid' (https://github.com/PeterPawn/first_aid.git) registered for path 'first_aid'
Cloning into '/tmp/7530/YourFritz/bin'...
remote: Enumerating objects: 396, done.
remote: Counting objects: 100% (396/396), done.
remote: Compressing objects: 100% (248/248), done.
remote: Total 825 (delta 102), reused 345 (delta 77), pack-reused 429
Receiving objects: 100% (825/825), 58.69 MiB | 11.43 MiB/s, done.
Resolving deltas: 100% (192/192), done.
Cloning into '/tmp/7530/YourFritz/first_aid'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 42 (delta 0), reused 3 (delta 0), pack-reused 38
Receiving objects: 100% (42/42), 21.63 MiB | 9.90 MiB/s, done.
Resolving deltas: 100% (13/13), done.
Submodule path 'bin': checked out '7cd06e296f58f95eb9aa3ca616fd3765cea58c56'
Submodule path 'first_aid': checked out '0359a4db07ffb555b5714184f16a2ffd7348955b'
peh@vidar:/tmp/7530> git clone --recurse-submodules https://github.com/PeterPawn/modfs.git
Cloning into 'modfs'...
remote: Enumerating objects: 33, done.
remote: Counting objects: 100% (33/33), done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 1638 (delta 14), reused 23 (delta 10), pack-reused 1605
Receiving objects: 100% (1638/1638), 17.16 MiB | 9.65 MiB/s, done.
Resolving deltas: 100% (1105/1105), done.
peh@vidar:/tmp/7530> YourFritz/bin/squashfs/x86_64/unsquashfs4-le -s fs.sqfs
Found TI checksum (0x64C552D1) at the end of the image.
Found a valid little endian SQUASHFS 4:0 superblock on fs.sqfs.
Creation or last append time is not available because of modified AVM-format (mkfs_time == bytes_used)
Filesystem size 19817.53 Kbytes (19.35 Mbytes)
Compression xz
Block size 65536
Filesystem is exportable via NFS
Inodes are compressed
Data is compressed
Fragments are compressed
Always-use-fragments option is not specified
Xattrs are not stored
Duplicates are removed
Number of fragments 314
Number of inodes 4301
Number of ids 1
peh@vidar:/tmp/7530> sudo YourFritz/bin/squashfs/x86_64/unsquashfs4-le fs.sqfs
[sudo] password for root:
Found TI checksum (0x64C552D1) at the end of the image.
Filesystem on fs.sqfs is xz compressed (4:0)
Parallel unsquashfs: Using 2 processors
4021 inodes (4644 blocks) to write
[===================================================================-] 4644/4644 100%
created 3406 files
created 280 directories
created 602 symlinks
created 13 devices
created 0 fifos
peh@vidar:/tmp/7530> sudo chown -R peh:users squashfs-root/
peh@vidar:/tmp/7530> rm fs.sqfs
peh@vidar:/tmp/7530> ls -l
total 2944
-rw-r--r-- 1 peh users 3012864 May 23 12:58 kernel.bin
drwxr-xr-x 1 peh users 340 May 23 13:18 modfs
drwxr-xr-x 1 peh users 128 Nov 8 2019 squashfs-root
drwxr-xr-x 1 peh users 738 May 23 13:06 YourFritz
peh@vidar:/tmp/7530> mv modfs/modscripts/ modfs/modscripts.org
peh@vidar:/tmp/7530> mkdir modfs/modscripts
peh@vidar:/tmp/7530> cp modfs/modscripts.org/gui_boot_manager_v0.6 modfs/modscripts/
peh@vidar:/tmp/7530> cp modfs/modscripts.org/mod_enable_calllog modfs/modscripts/
peh@vidar:/tmp/7530> cp modfs/modscripts.org/mod_fixed_branding modfs/modscripts/
peh@vidar:/tmp/7530> cp modfs/modscripts.org/mod_telnet_enable modfs/modscripts/
peh@vidar:/tmp/7530> cp modfs/modscripts.org/mod_rc_tail_sh modfs/modscripts/
peh@vidar:/tmp/7530> ls -1 modfs/modscripts
gui_boot_manager_v0.6
mod_enable_calllog
mod_fixed_branding
mod_rc_tail_sh
mod_telnet_enable
peh@vidar:/tmp/7530> cd modfs/
peh@vidar:/tmp/7530/modfs> ./run_modscripts ../squashfs-root/
Running script 'gui_boot_manager_v0.6' ...
Patching file 'usr/www/1und1/system/reboot.js' ...
Patching file 'usr/www/1und1/system/reboot.lua' ...
Patching file 'usr/www/avm/system/reboot.js' ...
Patching file 'usr/www/avm/system/reboot.lua' ...
Finished script 'gui_boot_manager_v0.6', rc=0
Running script 'mod_enable_calllog' ...
Finished script 'mod_enable_calllog', rc=0
Running script 'mod_fixed_branding' ...
Das Branding für das neue System wurde fest auf 'avm' eingestellt.
Finished script 'mod_fixed_branding', rc=0
Running script 'mod_rc_tail_sh' ...
Finished script 'mod_rc_tail_sh', rc=0
Running script 'mod_telnet_enable' ...
Finished script 'mod_telnet_enable', rc=0
peh@vidar:/tmp/7530/modfs> cd ..
peh@vidar:/tmp/7530> YourFritz/bin/squashfs/x86_64/mksquashfs4-le squashfs-root/ fs.sqfs -all-root
Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on fs.sqfs, block size 65536.
[===================================================================-] 4032/4032 100%
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 65536
compressed data, compressed metadata, compressed fragments, no xattrs
duplicates are removed
Filesystem size 19827.22 Kbytes (19.36 Mbytes)
28.58% of uncompressed filesystem size (69385.33 Kbytes)
Inode table size 35094 bytes (34.27 Kbytes)
23.75% of uncompressed inode table size (147760 bytes)
Directory table size 43342 bytes (42.33 Kbytes)
41.57% of uncompressed directory table size (104262 bytes)
Number of duplicate files found 1298
Number of inodes 4304
Number of files 3408
Number of fragments 314
Number of symbolic links 603
Number of device nodes 13
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 280
Number of ids (unique uids + gids) 1
Number of uids 1
root (0)
Number of gids 1
root (0)
peh@vidar:/tmp/7530> YourFritz/bin/squashfs/x86_64/unsquashfs4-le -s fs.sqfs
Found a valid little endian SQUASHFS 4:0 superblock on fs.sqfs.
Creation or last append time Sat May 23 13:32:16 2020
Filesystem size 19827.22 Kbytes (19.36 Mbytes)
Compression xz
Block size 65536
Filesystem is exportable via NFS
Inodes are compressed
Data is compressed
Fragments are compressed
Always-use-fragments option is not specified
Xattrs are not stored
Duplicates are removed
Number of fragments 314
Number of inodes 4304
Number of ids 1
peh@vidar:/tmp/7530> cat kernel.bin fs.sqfs >new.image
peh@vidar:/tmp/7530> ls -l
total 45544
-rw-r--r-- 1 peh users 20303872 May 23 13:32 fs.sqfs
-rw-r--r-- 1 peh users 3012864 May 23 12:58 kernel.bin
drwxr-xr-x 1 peh users 340 May 23 13:18 modfs
-rw-r--r-- 1 peh users 23316736 May 23 13:36 new.image
drwxr-xr-x 1 peh users 128 Nov 8 2019 squashfs-root
drwxr-xr-x 1 peh users 738 May 23 13:06 YourFritz
peh@vidar:/tmp/7530>
Die jetzt vorhandene
new.image
sollte sich problemlos über EVA installieren lassen -
wobei ich diesen Schritt (mangels 7520/7530) jetzt nicht prüfen kann. Dabei habe ich aber dann auch nur den Boot-Manager, den Telnet-Daemon (inkl. Start/Stop über Telefon-Codes und "system_status" bei wiederholter Aktivierung) und die Abarbeitung der "rc.user" (oder "debug.cfg") wieder einbauen lassen, ebenso das "feste" Branding mit "avm". Hier kann man natürlich auch noch "HWRevision" "festmachen", dann klappt es sogar wieder mit der Suche nach weiteren Dateien bei AVM. Wobei man die dann natürlich immer noch nicht "original" installieren lassen sollte (obwohl es klappen müßte), weil es dann beim nächsten Update nicht mehr funktionieren würde, da die AVM-Firmware ja die Modifikationen wieder nicht enthält.
Aber schreibt man die notwendigen Kommandos hintereinander in eine Datei (das nennt sich dann ja "Skript") und startet die dann nur noch, kann man auch einfach "messen", wie lange diese Aktionen insgesamt wohl dauern mögen (beim parallelen "Dokumentieren" dauert das naturgemäß alles noch länger, als wenn man die Kommandos nur eintippt) - wobei ich hier auf die Anzeigen mit
unsquashfs4-le -s ...
für die Eigenschaften des SquashFS-Images - das gibt es oben auch gleich zweimal, damit man die Eigenschaften des AVM-Images mit dem selbst erstellten vergleichen kann - und
ls -l
ebenso verzichte, wie auf die "progress indication" der SquashFS-Tools, weil mich hier nur die Dauer wirklich interessiert:
Rich (BBCode):
peh@vidar:~> cat > modify_7530.sh <<'EOT'
> mkdir /tmp/7530
> cd /tmp/7530
> wget -q -O avm.tar http://ftp.avm.de/fritzbox/fritzbox-7530/deutschland/fritz.os/FRITZ.Box_7530-07.14.image
> tar -x -f avm.tar -O ./var/tmp/kernel.image >kernel
> dd of=kernel.bin if=kernel bs=8 count=$(( ( $(stat -c %s kernel) / 8 ) - 1 )) 2>/dev/null
> rm kernel
> tar -x -f avm.tar -O ./var/tmp/filesystem.image >fs.sqfs
> git clone --recurse-submodules https://github.com/PeterPawn/YourFritz.git
> git clone --recurse-submodules https://github.com/PeterPawn/modfs.git
> sudo YourFritz/bin/squashfs/x86_64/unsquashfs4-le -no-progress fs.sqfs
> sudo chown -R peh:users squashfs-root/
> rm fs.sqfs
> mv modfs/modscripts/ modfs/modscripts.org
> mkdir modfs/modscripts
> cp modfs/modscripts.org/gui_boot_manager_v0.6 modfs/modscripts/
> cp modfs/modscripts.org/mod_enable_calllog modfs/modscripts/
> cp modfs/modscripts.org/mod_fixed_branding modfs/modscripts/
> cp modfs/modscripts.org/mod_telnet_enable modfs/modscripts/
> cp modfs/modscripts.org/mod_rc_tail_sh modfs/modscripts/
> cd modfs/
> ./run_modscripts ../squashfs-root/
> cd ..
> YourFritz/bin/squashfs/x86_64/mksquashfs4-le squashfs-root/ fs.sqfs -all-root -no-progress
> cat kernel.bin fs.sqfs >new.image
> ls -l
> EOT
peh@vidar:~> time bash ./modify_7530.sh
Cloning into 'YourFritz'...
remote: Enumerating objects: 718, done.
remote: Counting objects: 100% (718/718), done.
remote: Compressing objects: 100% (418/418), done.
remote: Total 3482 (delta 390), reused 526 (delta 295), pack-reused 2764
Receiving objects: 100% (3482/3482), 4.23 MiB | 5.98 MiB/s, done.
Resolving deltas: 100% (2102/2102), done.
Submodule 'bin' (https://github.com/PeterPawn/yf_bin.git) registered for path 'bin'
Submodule 'first_aid' (https://github.com/PeterPawn/first_aid.git) registered for path 'first_aid'
Cloning into '/tmp/7530/YourFritz/bin'...
remote: Enumerating objects: 396, done.
remote: Counting objects: 100% (396/396), done.
remote: Compressing objects: 100% (248/248), done.
remote: Total 825 (delta 102), reused 345 (delta 77), pack-reused 429
Receiving objects: 100% (825/825), 58.69 MiB | 11.41 MiB/s, done.
Resolving deltas: 100% (192/192), done.
Cloning into '/tmp/7530/YourFritz/first_aid'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 42 (delta 0), reused 3 (delta 0), pack-reused 38
Receiving objects: 100% (42/42), 21.63 MiB | 9.87 MiB/s, done.
Resolving deltas: 100% (13/13), done.
Submodule path 'bin': checked out '7cd06e296f58f95eb9aa3ca616fd3765cea58c56'
Submodule path 'first_aid': checked out '0359a4db07ffb555b5714184f16a2ffd7348955b'
Cloning into 'modfs'...
remote: Enumerating objects: 33, done.
remote: Counting objects: 100% (33/33), done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 1638 (delta 14), reused 23 (delta 10), pack-reused 1605
Receiving objects: 100% (1638/1638), 17.16 MiB | 9.65 MiB/s, done.
Resolving deltas: 100% (1105/1105), done.
[sudo] password for root:
Found TI checksum (0x64C552D1) at the end of the image.
Filesystem on fs.sqfs is xz compressed (4:0)
Parallel unsquashfs: Using 2 processors
4021 inodes (4644 blocks) to write
created 3406 files
created 280 directories
created 602 symlinks
created 13 devices
created 0 fifos
Running script 'gui_boot_manager_v0.6' ...
Patching file 'usr/www/1und1/system/reboot.js' ...
Patching file 'usr/www/1und1/system/reboot.lua' ...
Patching file 'usr/www/avm/system/reboot.js' ...
Patching file 'usr/www/avm/system/reboot.lua' ...
Finished script 'gui_boot_manager_v0.6', rc=0
Running script 'mod_enable_calllog' ...
Finished script 'mod_enable_calllog', rc=0
Running script 'mod_fixed_branding' ...
Das Branding für das neue System wurde fest auf 'avm' eingestellt.
Finished script 'mod_fixed_branding', rc=0
Running script 'mod_rc_tail_sh' ...
Finished script 'mod_rc_tail_sh', rc=0
Running script 'mod_telnet_enable' ...
Finished script 'mod_telnet_enable', rc=0
Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on fs.sqfs, block size 65536.
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 65536
compressed data, compressed metadata, compressed fragments, no xattrs
duplicates are removed
Filesystem size 19827.23 Kbytes (19.36 Mbytes)
28.58% of uncompressed filesystem size (69385.33 Kbytes)
Inode table size 35090 bytes (34.27 Kbytes)
23.75% of uncompressed inode table size (147760 bytes)
Directory table size 43342 bytes (42.33 Kbytes)
41.57% of uncompressed directory table size (104262 bytes)
Number of duplicate files found 1298
Number of inodes 4304
Number of files 3408
Number of fragments 314
Number of symbolic links 603
Number of device nodes 13
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 280
Number of ids (unique uids + gids) 1
Number of uids 1
root (0)
Number of gids 1
root (0)
total 70104
-rw-r--r-- 1 peh users 25149440 Nov 28 13:58 avm.tar
-rw-r--r-- 1 peh users 20303872 May 23 14:04 fs.sqfs
-rw-r--r-- 1 peh users 3012864 May 23 14:04 kernel.bin
drwxr-xr-x 1 peh users 340 May 23 14:04 modfs
-rw-r--r-- 1 peh users 23316736 May 23 14:04 new.image
drwxr-xr-x 1 peh users 128 Nov 8 2019 squashfs-root
drwxr-xr-x 1 peh users 738 May 23 14:04 YourFritz
real 0m49.231s
user 0m39.744s
sys 0m7.790s
peh@vidar:~>
Wenn man das also passend vorbereitet, dauert die Modifikation (inkl. Downloads von AVM und Klonen der Repos, sogar mit manueller Eingabe des "root"-Kennworts für das "sudo" - das sind natürlich "variable Kosten" hinsichtlich der benötigten Zeit) keine 50 Sekunden (und das System ist nicht mal besonders potent, auf dem ich das demonstriert habe) ... da kommt dann ggf. noch der Upload und der Start auf der Box hinzu.
Allerdings braucht es dazu tatsächlich das Wissen (und die vorbereiteten Dateien in meinen Repos, aber die stehen jedem offen) und wie lange man für dessen Erwerb braucht, kann (und will) ich nicht einschätzen. Ich wollte nur mal wieder demonstrieren, daß das Modifizieren einer Firmware für eine FRITZ!Box keine "rocket science" ist und auch wenn das hier ggf. etwas kondensierter steht und praktisch ohne "Erläuterungen", finden sich die einzelnen "Versatzstücke" definitiv auch hier im IPPF - allerdings eben auch mal in unterschiedlichen Threads, aber das ist nun mal der Natur der Sache geschuldet.