[HowTo] modfs - Die Gebrauchsanleitung

Modifizierte Firmware, sowie Erweiterungen wie z.B. Telnet, ftp oder SSH einbauen. Das Forum für echte Linux-Tüftler und solche, die es werden wollen.
Gesperrt
Nachricht
Autor
Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

[HowTo] modfs - Die Gebrauchsanleitung

#1 Beitrag von eisbaerin » 23. Okt 2017 12:13

ACHTUNG!
Hier keine Fragen und Diskussionen über die Funktionsweise oder Fehler des modfs!!!

Hauptartikel, Fragen und Diskussionen hier-> >>>klick<<<

Ich will hier mal versuchen das modfs besser zu erklären.

Vorwort

Als erstes natürlich ein großes Lob und vielen Dank an PeterPawn.
Ich habe auch erst nach und nach begriffen, was er uns da für ein geniales Tool gebaut und bereitgestellt hat.
Ich bezeichne es als das Schweizer Taschenmesser für die FB.


Grundvoraussetzungen

- Wer noch kein Recover gemacht hat und die Recover-Dateien nicht auf seinem PC liegen hat, braucht hier gar nicht weiter zu lesen.
Alles erfolgt auf eigenes Risiko! Es kann passieren, daß die FB nicht mehr startet und nur durch Recover gerettet werden kann.

- Auf der FB muß eine FW von min. 06.20 sein. Sonderfall ist in 9. beschrieben.

- Es muß in beiden Partitionen eine FW sein, d.h. es muß mindestens einmal ein Update gemacht worden sein

- Man braucht Zugriff auf die Konsole. Entweder per Telnet oder per SIAB (Shell In A Box).

- Die FB sollte online sein. Sonderfall ist in 8. beschrieben.

- Einen leere USB-Speicher-Stick, 1GB sollte reichen. Sonderfall ist in 4. beschrieben.

- An einigen Punkten muß man in den Adam/FTP Modus kommen.


Sinn und Zweck von modfs

Modfs funktioniert nur mit dualboot FB (alle NAND FB außer der 7390)! Dazu gehören z.Z. folgende:
7490, 7430, 7412, 7369i, 7362SL, 7272, 5490i, 3490, 3390, 3370, 3272
7590, 7582, 7581, 7580, 7560

Erlauben tut Peter z.Z. die Ausführung von modfs nur auf folgenden FB:
3370, 7490, 3390, 7362SL, 3490, 7430, 7272, 3272
Die anderen sind noch ungetestet. Peter sucht aber Tester.
Bitte mit ihm in dem Hauptthema in Verbindung setzen.

Kabel- und LTE-Boxen lasse ich jetzt erst mal raus, da ich die gar nicht kenne.


Ziel ist es bestimmte Funktionen in die FB zu integrieren:

- Telnet-Daemon reaktivieren
- /var/tmp/rc.user (entspricht der alten /var/flash/debug.cfg)
- Skript /sbin/edit_rcuser, um die rc.user zu ändern
- Kommandos in /var/custom/etc/profile in /etc/profile einschließen
- USB-Volumes mit ihrem Label als Mountpoint einbinden
- (Ich hoffe bald mal auch dropbear für den SSH Zugriff)

und einiges an den Menüs zu ändern und zu ergänzen:

- Umschalten in die inaktive/reserve Partition
[ATTACH=CONFIG]77880[/ATTACH]
- Ändern des Brandings
- Anzeige von Heimnetz-Clients mit MAC-Adresse als Standard
seit 18.03.2016:
- LED's sofort oder verzögert ausschalten
[ATTACH=CONFIG]85748[/ATTACH]
- Anzeige des Namens der (eigenen) Telefonnummer in der Anrufliste
- Anzeige des (groben) VPN-Status in der "Übersicht" + Direktlink zu VPN


Diese Modifikationen werden nicht in der aktiven Partition gemacht, sondern in der inaktiven!
So kann man jeder Zeit wieder zurück auf den Stand davor.
Mehr dazu in Kapitel 1.


Hinweis:
Wenn man die Änderungen von modfs behalten möchte, ist es zwingend erforderlich, FW-Updates (Downgrades, sofern es je nach FW-Ausgangsbasis überhaupt noch möglich) NIE über die AVM-interne Update-Funktion (FW-Suche oder Datei-Auf-Rechner- o.ä Quelle-) anzustoßen.
Beste Grüße vom Eisbär(in)

Router: AVM : FB7362SL-131.06.83 + FB7170-29.04.88 UMTS-Stick: Huawei: K3765-HV-11.126.03.09.00
Internet: 1&1 Doppel-Flat 50.000 für 26,99€
+ 4x Handy-Flat-Internet100 + Surfstick W21v

Umbranden hier | Eisbär's Spezialliste | ***NEU*** Qwertzy's HW-Liste | ***NEU *** Qwertzy's DSL-Modem/Router/IADs-Liste

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#2 Beitrag von eisbaerin » 23. Okt 2017 12:15

Inhaltsverzeichnis

1. Erläuterung des Dualboot Prinzips
2. Vorbereitung von modfs
3. Hauptfunktionen von modfs
4. modfs auf einer 7490/3490
5. modfs auf anderen dualboot FB (außer 7412)
6. Erstellung eines Speicher-Sticks für modfs (#199)
7. modfs für eine 7412
8. modfs offline nutzen
9. modfs mit FW 06.05
10. Fehlersuche und Protokoll-Modus (#190)
11. Spezielle Funktionen von modfs
12. Wichtige Links
13. History von modfs
14. Die modscripts Module
15. Das copy_binaries Modul
16. Die rc.user und die debug.cfg
17. Nachwort

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#3 Beitrag von eisbaerin » 23. Okt 2017 12:17

1. Erläuterung des Dualboot Prinzips

Wer erklärt das bitte?
Auch mit dem Umschalten im environment per Konsole und per FTP.
Und was bei einer jungfräulichen FB beachtet werden muß.

Abfragen und Umschalten per Konsole:

Code: Alles auswählen

# [B]cat /proc/sys/urlader/environment | grep linux[/B]
linux_fs_start  0
# [B]echo linux_fs_start 1 > /proc/sys/urlader/environment[/B]
# [B]cat /proc/sys/urlader/environment | grep linux[/B]
linux_fs_start  1

oder

# [B]cd /var/tmp;wget -q http://yourfritz.de/7490/switch_system;sh ./switch_system[/B]
Abfragen und Umschalten per Adam/FTP:

Code: Alles auswählen

FTP> [B]quote GETENV linux_fs_start[/B]
linux_fs_start        0

200 GETENV command successful
FTP> [B]quote SETENV linux_fs_start 1[/B]
200 SETENV command successful
FTP> [B]quote GETENV linux_fs_start[/B]
linux_fs_start        1

200 GETENV command successful
Jetzt auch sehr gut von Peter hier beschrieben:
https://github.com/PeterPawn/modfs/blob ... ECTION.ger
und hier:
http://www.ip-phone-forum.de/showthread ... ost2172113

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#4 Beitrag von eisbaerin » 23. Okt 2017 12:19

2. Vorbereitung von modfs

Keine Angst. Wir verändern jetzt noch nichts persistent an der FB, sondern legen nur ein paar vorbereitende Verzeichnisse an für modfs.tgz (ggfs. vom Server) und entpacken dies. Nach einem reboot ist alles wieder weg.

2.1 Wenn die FB online ist, einfach an der Konsole folgendes eingeben:

Code: Alles auswählen

mkdir -p /var/mod;cd /var/mod;wget -qO- http://yourfritz.de/modfs.tgz | gunzip -c | tar x

2.2 Wenn man offline ist, dann muß man sich vorher die Datei modfs.tgz auf den PC laden und dann in den NAS der FB kopieren. Dann folgendes eingeben:

Code: Alles auswählen

mkdir -p /var/mod;cd /var/mod;cat /var/media/ftp/modfs.tgz | gunzip -c | tar x
@Peter: oder ist das besser?

Code: Alles auswählen

mkdir -p /var/mod;cd /var/mod;gunzip -c /var/media/ftp/modfs.tgz | tar x
IMO ist das gehupft wie gesprungen.


2.3 Wenn man modfs öfters macht, dann lohnt es sich das Programm permanent zu speichern, so daß es auch nach einem reboot noch da ist:

Code: Alles auswählen

mkdir -p /var/media/ftp/mod;cd /var/media/ftp/mod;wget -qO- http://yourfritz.de/modfs.tgz | gunzip -c | tar x

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#5 Beitrag von eisbaerin » 23. Okt 2017 12:21

3. Hauptfunktionen von modfs

Weitere Funktionen unter 11.

Mit modfs kann man sehr vieles machen. Hier mal die 4 wichtigsten Funktionen:

- Die eigentliche Grundfunktion wird ohne Parameter aufgerufen:

Code: Alles auswählen

./modfs
Das funktioniert nur, wenn gleiche Kernel in beiden Partitionen sind.
Man kann aber damit das laufende System in die inaktiven Partitionen kopieren.


- Installation der neusten FW vom FTP Server von AVM:

Code: Alles auswählen

./modfs update

- Installation einer bestimmten FW von einer Datei, die z.B. im NAS liegt:

Code: Alles auswählen

./modfs update source_image

- Erzeugen einer Installations-Datei für eine andere FB:
Es wird keine vollständige FW erzeugt, sondern ein SquashFS! (siehe auch 7.)

Code: Alles auswählen

./modfs update source_image target_file_name

In allen Fällen kommen jetzt danach die Abfragen der modscripts Module.
Jetzt wird die FW modifiziert! (D.h. wenn man überall "n" für nein drückt, wird auch nichts modifiziert)
Diese Fragen beantwortet man, je nachdem was man geändert/ergänzt haben möchte, mit j oder n.
Genaueres dazu in 14.

Dann kommt die entscheidende Abschlußfrage:

Code: Alles auswählen

Das ist die letzte Chance zum manuellen Modifizieren des Dateisystems
in [COLOR="#0000FF"]/var/media/ftp/1457886776/squashfs-root[/COLOR].

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 :
An dieser Stelle hat man jetzt noch die Möglichkeit per Hand etwas am Filesystem zu ändern.
Nur für Profis!

Wenn man dann fertig ist, entscheidet man:

q - für Abbrechen, dann ist nichts an der FB verändert worden. Es erscheint:

Code: Alles auswählen

[COLOR="#FF0000"]Ausführung abgebrochen, das Dateisystem in der inaktiven Partition bleibt unverändert.[/COLOR]
oder
ENTER - für weitermachen und installieren (oder die Datei erzeugen).

Jetzt wird die modifizierte FW in die inaktive Partition installiert.
Dann wird die inaktive Partition zur aktiven umgeschaltet.

Jetzt kann man reboot eingeben, damit die FB mit der neuen FW startet.

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#6 Beitrag von eisbaerin » 23. Okt 2017 12:23

4. modfs auf einer 7490/3490

Diese beiden FB sind die einzigen, wo man modfs auch ohne Speicher-Stick machen kann, da sie genügend Speicher haben (256MB RAM, 406MB NAS).

Bedingung ist aber, daß der NAS nicht zu voll ist. Bis 100MB belegt ist es noch kein Problem.

Peter empfiehlt auch für diese FB einen Speicher-Stick!

Bei mir hat es bisher auch immer ohne diesen geklappt. Meine läuft aber auch im Client-Modus und hat somit nicht viel zu tun. Kein DSL, WLAN und DECT sind auch aus.

Wenn die FW Datei im NAS liegt, ist das Kommando dann für eine 7490 z.B.:

Code: Alles auswählen

./modfs update /var/media/ftp/FRITZ.Box_7490.113.06.51.image

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#7 Beitrag von eisbaerin » 23. Okt 2017 12:24

5. modfs auf anderen dualboot FB (außer 7412)

Diese FB haben für modfs nicht genügend Speicher (128MB RAM, 22MB NAS) und es wird unbedingt ein Speicher-Stick gebraucht (siehe 6.)

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#8 Beitrag von eisbaerin » 23. Okt 2017 12:26

6. Erstellung eines Speicher-Sticks für modfs

Siehe erst mal hier:
http://www.ip-phone-forum.de/showthread ... ost2106798

Für Windows hatte ich diese Tool rausgesucht:
MiniTool Partition Wizard Free 9.1
da es mit 30MB IMO nicht all zu groß ist und für diesen Zweck reichen sollte.
Gibt es noch kleinere?

Wer erklärt bitte mal was da alles zu tun ist?
Ich habe es noch nicht gemacht.

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#9 Beitrag von eisbaerin » 23. Okt 2017 12:27

7. modfs für eine 7412

(Ich mache diese Variante auch für meiner 7362SL, da benötige ich keinen Speicher-Stick)

Das Problem bei der 7412 sind eigentlich gleich drei.
1. hat sie wie die anderen (außer 7490) für modfs zu wenig Speicher (128MB RAM, 22MB NAS)
2. hat sie in der GUI keinen NAS
3. hat sie keinen USB-Anschluß für einen Speicher-Stick.

Deshalb kann man modfs nicht auf ihr machen.

Aber es geht trotzdem, vorausgesetzt man hat noch eine andere dualboot FB.

Man erstellt sich dann auf der anderen FB die Installations-Datei und schiebt sie dann "nur" noch in die 7412 rein.

Das ist aber nicht ganz so einfach und es gibt vieles zu beachten.

In Kurzform:

Auf z.B. der 7490:

Code: Alles auswählen

NOVERIFY=1 ./modfs update /var/media/ftp/FRITZ.Box_7412.137.06.50.image /var/media/ftp/FRITZ.Box_7412.137.06.50.squashfs
Die Datei .squashfs auf die 7412 nach /var/tmp kopieren.

Auf der 7412:
- in beiden Partionen muß eine FW installiert sein!!!
- der Kernel der inaktiven Partition muß zur .squashfs passen, sonst neuen Kernel mit normalem update installieren, und auf alte Partition zurückschalten (oder mit "modfs install", siehe 11.).

Code: Alles auswählen

cd /var/tmp;wget -q http://yourfritz.de/7490/install_inactive_rootfs
sh ./install_inactive_rootfs /var/tmp/FRITZ.Box_7412.137.06.50.squashfs

cd /var/tmp;wget -q http://yourfritz.de/7490/switch_system;sh ./switch_system

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#10 Beitrag von eisbaerin » 23. Okt 2017 12:32

8. modfs offline nutzen

Extra für Micha0815 eingefügt:
http://www.ip-phone-forum.de/showthread ... ost2153553

Wenn man offline ist, dann muß man sich vorher die Datei modfs.tgz und das FW .image auf den PC laden und dann in den NAS der FB kopieren. Dann folgendes eingeben:

Code: Alles auswählen

mkdir -p /var/mod;cd /var/mod;cat /var/media/ftp/modfs.tgz | gunzip -c | tar x
und bei einer 7490 z.B. noch folgendes (den Namen der Datei natürlich anpassen):

Code: Alles auswählen

./modfs update /var/media/ftp/FRITZ.Box_7490.113.06.51.image
Dann noch die Fragen beantworten, je nachdem was man geändert/ergänzt haben möchte.

Und bei der letzten entscheidenden Frage entweder mit q alles abbrechen oder mit ENTER bestätigen und installieren.

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#11 Beitrag von eisbaerin » 23. Okt 2017 12:34

9. modfs mit FW 06.05

Mit den älteren FW gibt es ein Problem, da die /usr/sbin/blkid Datei zu alt für modfs ist.

Man kann es beheben indem man sich eine neuere blkid Datei besorgt und in der Datei modfs eine Änderung macht.

Man muß nur den richtigen Pfad zur neuen blkid Datei eintragen. (z.Z. Zeile 72)

So sieht es original aus:

Code: Alles auswählen

# blkid executable path
blkid="/usr/sbin/blkid"

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#12 Beitrag von eisbaerin » 23. Okt 2017 12:36

10. Fehlersuche und Protokoll-Modus

Fehlersuche

Code: Alles auswählen

sh -x ./modfs ...

Protokoll-Modus

Erstmal übernommen von hier:
http://www.ip-phone-forum.de/showthread ... ost2106386

PeterPawn:
Um die Fehlersuche etwas zu vereinfachen, habe ich eine Protokollierung in das Skript eingebaut, die die AVM-Tools zur Ringpuffer-Protokollierung verwendet.

Aktiviert wird das Debug-Logging über die Umgebungsvariable MODFS_DEBUG. Hat diese den Wert "1", wird in einen Ringpuffer von 8 KB Größe mit dem (Datei-)Namen des Skripts protokolliert. Der Puffer läßt sich über die zusätzliche Variable "MODFS_BUFSIZE=n" vergrößern (Angabe in KB), wobei ich Werte > 64 nicht getestet habe. Ein Aufruf mit Debug-Ausgabe könnte also so aussehen:

Code: Alles auswählen

MODFS_DEBUG=1 MODFS_BUFSIZE=32 ./modfs update FRITZ.Box_7490.113.06.24.image
Tritt dann ein Fehler auf, kann man sich mit

Code: Alles auswählen

showshringbuf modfs
diese Protokolldatei anzeigen lassen, sie über eine entsprechende Umleitung

Code: Alles auswählen

showshringbuf modfs >/var/media/ftp/[I]my_usb_volume[/I]/modfs.debug
in einer Datei abspeichern und dann einer Fehlermeldung hinzufügen. Diese Protokollierung hilft natürlich bei spontanem Reboot einer Box auch nicht, aber da sehe ich die Ursache auch eher in allgemeinem Ressourcenmangel als in einem bestimmten Verhalten oder einer bestimmten Aktion des Skripts.

Ich hoffe auf Verständnis, wenn ich Fragen zu Problemen nur noch beantworte, wenn auch das entsprechende Protokoll als Anhang (bitte wirklich als Anhang und nicht in Code-Tags, das liest sich einfach lokal im Editor besser) in der Fehlermeldung enthalten ist (solange das Problem nicht die Protokollierung selbst betrifft).

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#13 Beitrag von eisbaerin » 23. Okt 2017 12:37

11. Spezielle Funktionen von modfs

modfs hat noch mehr Parameter außer "update":

Code: Alles auswählen

./modfs undo
Damit wird IMO die Umschaltung auf die andere Partition rückgängig gemacht.
D.h. nach dem reboot startet die FB wieder wie zuvor.

Neu seit 0.3.3:
Installation ohne Modifikationen und damit ohne aus- und einpacken:
http://www.ip-phone-forum.de/showthread ... ost2150764

Installation von Kernel, Wrapper-Partition und Root-Image:

Code: Alles auswählen

./modfs install source_image
Installation von Wrapper-Partition und Root-Image:

Code: Alles auswählen

./modfs installfs source_image
Installation von nur Root-Image:

Code: Alles auswählen

./modfs installroot source_image
Für jede der oben angeführten Varianten wird aber ein vollständiges Firmware-Image benötigt.

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#14 Beitrag von eisbaerin » 23. Okt 2017 12:38

12. Wichtige Links

Die README.ger von Peter:
https://github.com/PeterPawn/modfs/blob ... r.outdated

Die BOOTSELECTION.ger von Peter:
https://github.com/PeterPawn/modfs/blob ... ECTION.ger

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#15 Beitrag von eisbaerin » 23. Okt 2017 12:40


Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#16 Beitrag von eisbaerin » 23. Okt 2017 12:41

14. Die modscripts Module

Folgende Fragen kommen z.Z. (0.3.3):

Soll die Modifikation 'own files' mit folgender Beschreibung
add/replace some binaries at the target system
angewendet werden? (j/N)

Soll die Modifikation 'create edit_rcuser command' mit folgender Beschreibung
Kommando zum Bearbeiten der Datei 'rc.user' hinzufügen
angewendet werden? (j/N)

Soll die Modifikation 'enable system and branding selection from GUI (v0.2)' mit folgender Beschreibung
Auswahl des zu startenden Systems und des Brandings in der "Neustart"-Seite
angewendet werden? (j/N)

Soll die Modifikation 'unhide MAC by default' mit folgender Beschreibung
Anzeige von Heimnetz-Clients mit MAC-Adresse als Standard
angewendet werden? (j/N)

Soll die Modifikation 'enable telnet daemon' mit folgender Beschreibung
Busybox-Symlink für den Telnet-Daemon erstellen
angewendet werden? (j/N)

Soll die Modifikation 'mount by label' mit folgender Beschreibung
USB-Volumes mit ihrem Label als Mountpoint einbinden
angewendet werden? (j/N)

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)

Soll die Modifikation 'enable rc.user execution' mit folgender Beschreibung
Kommandos aus dem TFFS-Node 98 beim Systemstart ausführen
angewendet werden? (j/N)

Rechte und Auswirkung der modscrips Module, es kommt auf die "x" an:

r--r--r-- Modul wird nicht ausgeführt und nicht abgefragt (chmod -x)

r-xr-xr-- Modul wird zur Abfrage mit (j/N) angeboten (chmod ug+x)

r-xr-xr-x Modul wird (automatisch) ohne Abfrage ausgeführt (chmod +x)

Peter hat da gerade (16.03.2016) etwas Neues gemacht:
http://www.ip-phone-forum.de/showthread ... ost2154086

Code: Alles auswählen

+ => a+x, also automatisch anwenden
? => ug+x, also nachfragen, ob die Modifikation erfolgen soll und
- => a-x, also diese Modifikation ignorieren
Der Inhalt der custom_modscripts müßte dann z.B. so aussehen:

Code: Alles auswählen

-copy_binaries
-dectcmds.modscript
+edit_rcuser
-gui_boot_manager_v0.1
+gui_boot_manager_v0.2
?mod_default_show_mac
+mod_enable_telnet
?mod_mount_by_label
?mod_profile
+mod_rc_tail_sh
-template
-yourfritz_hooks
Erzeugen kann man die Datei auch so:

Code: Alles auswählen

ls -1 modscripts | sed -e "s/^/\?/">custom_modscripts
und dann auf seine Vorstellungen ändern.

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#17 Beitrag von eisbaerin » 23. Okt 2017 12:42

15. Das copy_binaries Modul

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#18 Beitrag von eisbaerin » 23. Okt 2017 12:44

16. Die rc.user und die debug.cfg
Von PeterPawn übernommen:
http://www.ip-phone-forum.de/showthread ... ost2171076

Die rc.user und die debug.cfg sollten identisch sein.

Warum?

So ein TFFS-Node ist nichts weiter als ein "Fenster" oder ein "spy hole" (Guckloch) in den TFFS-Treiber (der speichert seine Daten dann irgendwo, wo das genau erfolgt, spielt hier keine Rolle). Wenn da durch das Fenster mit der Nummer 98 gesehen wird, steht da irgendein Inhalt. Egal wie man das "Fenster" (die Gerätedatei) im Filesystem nennt, man sieht immer denselben Inhalt im TFFS ... halt unter verschiedenen Namen.

Da es sich beim TFFS-Treiber um einen Treiber für "zeichenorientierte Geräte" (char-Devices) handelt, unterstützt der bestimmte Dateioperationen nicht, in erster Linie ist es hier das Positionieren des Lese-/Schreibzeigers an eine festgelegte Stelle ... einer der entscheidenden Gründe dafür dürfte es sein, daß die Daten im Hintergrund komprimiert gespeichert werden und man daher zur Ermittlung so einer Position die Datei in einen Zwischenpuffer entpacken müßte. Also verzichtet man einfach auf solche Positionier-Operationen (lseek()), denn bei vielen char-Devices machen die ohnehin keinen Sinn. Es ist wenig zielführend, z.B. bei einer Tastatur (das klassische Beispiel für ein "char device") sich an das Ende der "Datei" zu positionieren.

Im Ergebnis kann man eben solche Dateien nicht fortschreiben (dazu müßte man sich ja an das Ende des bisherigen Inhalts positionieren) und da viele normale Programme auch gerne mal auf so ein lseek() zurückgreifen (das geht vom FTP-Server bis zum Editor "vi"), ist es am einfachsten, den aktuellen Inhalt so eines TFFS-Nodes in eine reguläre Datei zu schreiben (dort geht dann auch lseek() und vieles andere) und dort zu be- oder verarbeiten.

Das macht man am besten mit dem Kommando "cat", wobei auch jedes andere Kommando, welches sich auf unterstützte Operationen beschränkt, benutzt werden kann ... es gibt z.B. keinen Grund, für die Suche innerhalb einer "TFFS-Datei" mit "grep" oder "sed" erst eine solche Kopie anzulegen. Für das Zurückschreiben von Inhalten in einen TFFS-Node ("in einem Rutsch", denn Positionieren geht eben nicht) verwendet man am einfachsten ebenfalls "cat".

Damit gibt es eben nicht wirklich zwei verschiedene "Dateien" rc.user und debug.cfg ... macht man es richtig (wie gesagt, beide Namen sind Schall und Rauch und man könnte die Datei auch "Max_und_Moritz" nennen), dann beziehen sich beide Gerätedateien auf dasselbe "peephole" ins TFFS.

Die Änderung durch "modfs" beim Start macht jetzt nichts anderes, als am Ende des Init-Prozesses den Inhalt dieses TFFS-Nodes in die Datei /var/tmp/rc.user zu übertragen und von dort auszuführen. Theoretisch könnte man danach diese Datei auch gleich wieder löschen, denn eine Änderung an dieser kann keine Auswirkungen auf den Inhalt des TFFS haben ... diese Datei ist nur eine Kopie des Inhalts beim Start des Systems.

Für die Änderung am Inhalt des TFFS habe ich extra das Skript "edit_rcuser" zum modfs hinzugefügt. Dieses macht nichts anderes, als den aktuellen Inhalt des TFFS in eine temporäre Datei zu schreiben und einen Editor für diese "Kopie" des Inhalts aufzurufen. Wird dann der Editor beendet, wird der neue und der alte Inhalt verglichen und sollte etwas geändert worden sein, kann man sich entscheiden, den neuen Inhalt dieser Kopie in das TFFS zu schreiben. Auch hier besteht praktisch kein Zusammenhang mehr zur "/var/tmp/rc.user", diese ist nicht der Gegenstand der Änderung mit "edit_rcuser" und damit vorgenommene Änderungen werden auch nicht in dieser Datei sichtbar (erst nach dem nächsten Start, wenn sie wieder eine Kopie des dann aktuellen Inhalts ist).

Ändert man jetzt den Inhalt des TFFS-Node 98 auf irgendeinem anderen Weg, muß man sich nur an dieses Vorgehen halten.

Insofern kann man auch immer schlecht sagen, ob jemand bei der Nennung von "debug.cfg" nun das richtige Vorgehen beim Editieren verwendet oder nicht. Wenn es sich bei dieser "debug.cfg" um eine mit "mknod" eingerichtete Gerätedatei für den Node 98 im TFFS-Treiber handelt, dann ist das eben ein anders benanntes "Fenster" ins TFFS und man kann (unter Beachtung der oben gemachten Bemerkungen) auch den Inhalt über diesen "Namen" ändern. Ist das eine vollkommen andere (reguläre) Datei, ist das eben auch eine vollkommen andere Stelle im Dateisystem.

Normalerweise würde so eine geänderte reguläre Datei "/var/flash/debug.cfg" auch einfach beim nächsten Start wieder verschwunden sein und damit merkt man schon daran, daß man bei der Änderung etwas falsch gemacht hat ... aber hier kommt jetzt eine weitere "Besonderheit" einiger NAND-Boxen zum Tragen. Diese mounten nämlich unter dem Pfad "/var/flash" eine kleine (1-2 MB) yaffs2-Partition, in der dann die "char devices" für den TFFS-Inhalt angelegt werden. Da dieses Dateisystem auch über einen Neustart hinaus seinen Inhalt behält, wird auch eine dort als "regular file" gespeicherte "debug.cfg" einen Neustart überleben. Da das aber ein anderer Speicherplatz ist (eben das yaffs2 und nicht das TFFS), "sieht" das System durch das Fenster 98 ins TFFS eben nicht das, was in der regulären Datei "debug.cfg" unter /var/flash steht.

Wenn hier also in einer "debug.cfg" etwas steht, was beim Systemstart nicht ausgeführt wird, liegt die Vermutung nahe, daß es eben der falsche Speicherort ist. Der tatsächliche Inhalt des TFFS-Nodes wird folgendermaßen angezeigt (als Einzeiler für C&P):
Code:

Code: Alles auswählen

m=$(sed -ne "s|^\([0-9]*\) tffs\$|\1|p" /proc/devices);[ -n "$m" ] && ( mknod /tmp/98 c $m 98;cat /tmp/98;rm /tmp/98 );unset m
Zuerst wird die "major ID" des TFFS-Treibers ermittelt (die ist dynamisch und zwar relativ stabil für ein Modell (und einen Kernel), aber das muß nicht immer so bleiben - das hängt damit zusammen, wie der TFFS-Treiber im Kernel initialisiert wird) und wenn diese gefunden wird, dann wird ein "char device" mit der "minor ID" 98 angelegt im /tmp-Verzeichnis, dessen Inhalt angezeigt und im Anschluß wird diese "Datei" dann auch gleich wieder gelöscht. Wäre das jetzt eine reguläre Datei, wäre zusammen mit dem Datei-Inode natürlich auch der Inhalt verschwunden (in Grenzen, aber das ist ein anderes Thema) ... hier wird lediglich das Fenster wieder geschlossen und der Inhalt dahinter bleibt erhalten.

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#19 Beitrag von eisbaerin » 23. Okt 2017 12:45

17. Nachwort

Benutzeravatar
eisbaerin
Fan
Fan
Beiträge: 181
Registriert: 18. Okt 2017 22:06
Wohnort: Nordpol
Danksagung erhalten: 1 Mal
Status: Offline

#20 Beitrag von eisbaerin » 23. Okt 2017 12:47

Reserviert für #20

Gesperrt

Zurück zu „FRITZ!Box Modifikationen“