[HOW TO] modfs - Die Gebrauchsanleitung

eisbaerin

IPPF-Urgestein
Mitglied seit
29 Sep 2009
Beiträge
11,377
Punkte für Reaktionen
1,064
Punkte
113
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
Anhang anzeigen 77880
- Ändern des Brandings
- Anzeige von Heimnetz-Clients mit MAC-Adresse als Standard
seit 18.03.2016:
- LED's sofort oder verzögert ausschalten
Anhang anzeigen 85748
- 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.
 
Zuletzt bearbeitet:
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
 
Zuletzt bearbeitet:
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:
# [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:
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/master/BOOTSELECTION.ger
und hier:
http://www.ip-phone-forum.de/showthread.php?t=273304&p=2172113&viewfull=1#post2172113
 
Zuletzt bearbeitet:
  • Like
Reaktionen: OlliK75
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:
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:
mkdir -p /var/mod;cd /var/mod;cat /var/media/ftp/modfs.tgz | gunzip -c | tar x
@Peter: oder ist das besser?
Code:
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:
mkdir -p /var/media/ftp/mod;cd /var/media/ftp/mod;wget -qO- http://yourfritz.de/modfs.tgz | gunzip -c | tar x
 
Zuletzt bearbeitet:
  • Like
Reaktionen: OlliK75
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:
./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:
./modfs update


- Installation einer bestimmten FW von einer Datei, die z.B. im NAS liegt:
Code:
./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:
./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:
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:
[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.
 
Zuletzt bearbeitet:
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:
./modfs update /var/media/ftp/FRITZ.Box_7490.113.06.51.image
 
Zuletzt bearbeitet:
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.)
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
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:
./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:
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
 
Zuletzt bearbeitet:
8. modfs offline nutzen

Extra für Micha0815 eingefügt:
http://www.ip-phone-forum.de/showthread.php?t=273304&p=2153553&viewfull=1#post2153553

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:
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:
./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.
 
Zuletzt bearbeitet:
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:
# blkid executable path
blkid="/usr/sbin/blkid"
 
Zuletzt bearbeitet:
10. Fehlersuche und Protokoll-Modus

Fehlersuche

Code:
sh -x ./modfs ...


Protokoll-Modus

Erstmal übernommen von hier:
http://www.ip-phone-forum.de/showthread.php?t=273304&p=2106386&viewfull=1#post2106386

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:
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:
showshringbuf modfs
diese Protokolldatei anzeigen lassen, sie über eine entsprechende Umleitung
Code:
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).
 
Zuletzt bearbeitet:
11. Spezielle Funktionen von modfs

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

Code:
./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.php?t=273304&page=4&p=2150764&viewfull=1#post2150764

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

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

Installation von nur Root-Image:
Code:
./modfs installroot source_image
Für jede der oben angeführten Varianten wird aber ein vollständiges Firmware-Image benötigt.
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
Zuletzt bearbeitet:
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.php?t=273304&p=2154086&viewfull=1#post2154086
Code:
+ => 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:
-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:
ls -1 modscripts | sed -e "s/^/\?/">custom_modscripts
und dann auf seine Vorstellungen ändern.
 
Zuletzt bearbeitet:
16. Die rc.user und die debug.cfg
Von PeterPawn übernommen:
http://www.ip-phone-forum.de/showthread.php?t=273304&p=2171076&viewfull=1#post2171076

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:
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.
 
Zuletzt bearbeitet:
17. Nachwort
 
Zuletzt bearbeitet:
Notizen für mich (eigentlich nicht öffentlich)

Ergänzungen nach 5 Jahren (2020):

Änderungen für das Ausführen von modfs auf einer (nicht für eine) 7580/7590:

# supported hardware revisions as "modfs" host
# 3370, 7490, 3390, 7362SL, 3490, 7430, 7412, 7272, 3272
# hwrevs_supported="175 185 193 203 212 209 218 192 198"
# 3370, 7490, 3390, 7362SL, 3490, 7430, 7412, 7272, 3272, 7580, 7590
hwrevs_supported="175 185 193 203 212 209 218 192 198 225 226"

NOVERIFY=1
#no_sigcheck=1
# debug "modfs: no_sigcheck=1 requested"


seit modfs 0.5.0:
#
# check available swap space
#
MODFS_WITHOUT_SWAP=i_am_sure
# Man kann die Prüfung also übergehen, aber man sollte es nicht tun.

#
# get working directory decision from user
#
MODFS_WORKING_DIR=/var/tmp


MODFS_NO_PAUSE_ON_PACK= "1"

MODFS_ABORT_BEFORE_PACK= "Q"


modfs 0.6.0:
Da habe ich praktisch alle derzeit enthaltenen Modifikationen noch einmal aufgeführt und gerade zum Telnet-Daemon auch noch einiges an Hinweisen gegeben, was man dabei beachten muß - der baut jedenfalls absichtlich immer noch auf die Aktivierung per Telefon, weil ich einen ständig aktiven Telnet-Daemon "nicht verantworten" will.

Ich habe trotzdem mal die Tests für den freien Platz im "tmpfs" deaktiviert, solange man nicht "CHECK_TMPFS_SPACE=1" beim Aufruf im Environment stehen hat: https://github.com/PeterPawn/modfs/commit/5b02685f8dfbb0f356bd7e32a7ba498c748e7548

Bei 7362SL neuerdings:
die Zeile 2422 auf rc=0 zu ändern

7520/30:

EDIT: 10.11.2020
Es gibt noch einen Parameter:
INCLUDE_NAND=1
Aufruf mit "INCLUDE_NAND=1" im Environment (https://github.com/PeterPawn/modfs/blob/master/modfs#L2433) - dann wird auch der interne NAND-Flash der Box benutzt, wenn er genug Platz bieten sollte. Der wird üblicherweise ignoriert, weil zuviele Schreibzugriffe den Chip nach und nach zerstören und im Gegensatz zu einem USB-Speicher (der durchaus auch von diesem Problem betroffen sein kann, deshalb näht man das nicht unbedingt auf Kante - dann steht genug freier Platz zur Verfügung, auf den sich diese Schreibvorgänge verteilen können) ist der interne NAND-Flash eben nicht einfach so zu ersetzen.
 
Zuletzt bearbeitet:
Da einige taub auf beiden Augen (oder war es blind auf beiden Ohren?) sind, hier nochmal:

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

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


Willkommen sind aber Beiträge, die hier vorhandene Lücken schließen, Fehler aufdecken und sonstige Hinweise zu der Gebrauchsanleitung.

ABER bitte auch nur, wenn derjenige bereit ist seinen Beitrag jederzeit auf Bitte von mir wieder zu löschen!

Last but not least:
Ja, ich habe bewußt so viele Beiträge reserviert, da es hinterher sehr schwierig ist und nur wenn zufällig ein Admin/Mod da ist.
Löschen kann ich sie ja jeder Zeit wieder. ;)
 
  • Like
Reaktionen: Micha0815
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.