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

Nach der Installation von Fritz!OS 21 auf der FritzBox 7490 läuft zwar Telnet, aber Shell in a Box hat nicht gestartet, obwohl ich die Modifikation "customize the original firmware with extension packages" angewendet habe. Da hat sich wohl noch was geändert, was ich nicht berücksichtigt habe.

Auch die rc.user wurde anscheinend nicht ausgeführt, obwohl "enable rc.user execution" erfolgreich angewendet wurde.
Code:
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 freien Speicherplatzes für das Auspacken des Dateisystems ... OK
Überprüfen des verfügbaren Swap-Space ... OK                                                                                                      
                                                                                                                                                  
Das System erfüllt die Voraussetzungen zur Modifikation des root-Dateisystems.                                                                    
                                                                                                                                                  
Im Moment läuft auf der Box die Version: 113.07.12                                                                                                
                                                                                                                                                  
Die Auswahl des 'update'-Modus erfordert eine neuere Firmware-Version vom Hersteller.                                                             
                                                                                                                                                  
Ermitteln der neuesten Version durch Abfrage beim Hersteller ... OK
Es wurde eine neuere Version (113.07.21) gefunden.                                                                                                
Es gibt mehrere potentielle Arbeitsverzeichnisse auf verschiedenen Datenträgern bzw.                                                              
in verschiedenen Partitionen.                                                                                                                     
                                                                                                                                                  
Die folgenden Arbeitsverzeichnisse stehen zur Auswahl:                                                                                            
                                                                                                                                                  
a - /dev/sda2 (Dateisystem vfat) eingebunden unter /var/media/ftp/SanDisk-UltraFit-02 - freier Speicherplatz: 502 MB                              
b - /dev/sdb1 (Dateisystem antfs) eingebunden unter /var/media/ftp/My_Passport - freier Speicherplatz: 906 GB                                     
c - /dev/sda1 (Dateisystem antfs) eingebunden unter /var/media/ftp/SanDisk - freier Speicherplatz: 9936 MB                                        
q - keines dieser Verzeichnisse soll verwendet werden                                                                                             
                                                                                                                                                  
Bitte den Buchstaben des gewünschten Arbeitsverzeichnisses eingeben : c                                                                           
                                                                                                                                                  
Download eines Firmware-Images für Version 113.07.21 vom Server des Herstellers ... OK
Überprüfen der Signatur der geladenen Datei ... OK
Es gibt mehrere potentielle Arbeitsverzeichnisse auf verschiedenen Datenträgern bzw.                                                              
in verschiedenen Partitionen.                                                                                                                     
                                                                                                                                                  
Die folgenden Arbeitsverzeichnisse stehen zur Auswahl:                                                                                            
                                                                                                                                                  
a - /dev/sda2 (Dateisystem vfat) eingebunden unter /var/media/ftp/SanDisk-UltraFit-02 - freier Speicherplatz: 502 MB                              
b - /dev/sdb1 (Dateisystem antfs) eingebunden unter /var/media/ftp/My_Passport - freier Speicherplatz: 906 GB                                     
c - /dev/sda1 (Dateisystem antfs) eingebunden unter /var/media/ftp/SanDisk - freier Speicherplatz: 9903 MB                                        
q - keines dieser Verzeichnisse soll verwendet werden                                                                                             
                                                                                                                                                  
Bitte den Buchstaben des gewünschten Arbeitsverzeichnisses eingeben : c                                                                           
                                                                                                                                                  
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
Löschen des geladenen Firmware-Images ... OK
ext3-Dateisystem für loop-Mount wird entpackt ... OK
ext3-Dateisystem über loopback-Device einbinden ... OK
Entpacken des root-Dateisystems für die Modifikationen ... OK
                                                                                                                                                  
Das entpackte Dateisystem ist jetzt bereit für die Modifikationen.                                                                                
                                                                                                                                                  
Verzeichnis des root-Dateisystems : /var/tmp/3481_1601511560/squashfs-root                                                                        
                                                                                                                                                  
                                                                                                                                                  
Die Modifikation 'customize the original firmware with extension packages' wird verarbeitet ...                                                   
Überprüfen der unterstützten Sprachen ... OK
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ...sed: /var/tmp/3481_1601511560/squashfs-root/etc/init.d/rc.tail.sh: No such file or directory
 OK                                                                                                                                               
Überprüfen des Erfolgs der Modifikation ... OK
                                                                                                                                                  
Die Modifikation 'customize the original firmware with extension packages' wurde angewendet, Fehlercode = 0.                                      
                                                                                                                                                  
Die Modifikation 'enable sending of multiple fax pages in WebGUI' wird verarbeitet ...                                                            
Überprüfen der unterstützten Sprachen ... OK
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK
                                                                                                                                                  
Die Modifikation 'enable sending of multiple fax pages in WebGUI' wurde angewendet, Fehlercode = 0.                                               
                                                                                                                                                  
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) n                                                                                                                        
                                                                                                                                                  
Die Modifikation 'create edit_rcuser command' wird verarbeitet ...                                                                                
Überprüfen der Voraussetzungen für die Modifikation ... OK
Ü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                                                                                                                        
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.6)' wird verarbeitet ...                                                      
Überprüfen der Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'enable system and branding selection from GUI (v0.6)' mit folgender Beschreibung                                           
Auswahl des zu startenden Systems und des Brandings in der "Neustart"-Seite                                                                       
angewendet werden? (j/N) j                                                                                                                        
Modifikation wird ausgeführt ...      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' ...                                                                                           
      Patching file 'usr/www/avme/system/reboot.js' ...                                                                                           
      Patching file 'usr/www/avme/system/reboot.lua' ...                                                                                          
 OK                                                                                                                                               
Überprüfen des Erfolgs der Modifikation ... OK
                                                                                                                                                  
Die Modifikation 'enable system and branding selection from GUI (v0.6)' wurde angewendet, Fehlercode = 0.                                         
                                                                                                                                                  
Die Modifikation 'unhide MAC by default' wird verarbeitet ...                                                                                     
Überprüfen der Voraussetzungen für die Modifikation ... OK
Ü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                                                                                                                        
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK
                                                                                                                                                  
Die Modifikation 'unhide MAC by default' wurde angewendet, Fehlercode = 0.                                                                        
                                                                                                                                                  
Die Modifikation 'enable calllog processing' wird verarbeitet ...                                                                                 
Überprüfen der Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'enable calllog processing' mit folgender Beschreibung                                                                      
Verarbeitung der /var/flash/calllog bei eingehenden Anrufen reaktivieren                                                                          
angewendet werden? (j/N) j                                                                                                                        
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK
                                                                                                                                                  
Die Modifikation 'enable calllog processing' wurde angewendet, Fehlercode = 0.                                                                    
                                                                                                                                                  
Die Modifikation 'executable NAS files (from NAND)' wird verarbeitet ...                                                                          
Überprüfen der Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'executable NAS files (from NAND)' mit folgender Beschreibung                                                               
Mounten des NAS-Flash-Speichers ohne 'noexec'-Option                                                                                              
angewendet werden? (j/N) n                                                                                                                        
                                                                                                                                                  
Die Modifikation 'executable files on USB volumes' wird verarbeitet ...                                                                           
Überprüfen der Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'executable files on USB volumes' mit folgender Beschreibung                                                                
Mounten aller USB-Speicher (mit Linux-Dateisystemen) ohne 'noexec'-Option                                                                         
angewendet werden? (j/N) n                                                                                                                        
                                                                                                                                                  
Die Modifikation 'set fixed branding' wird verarbeitet ...                                                                                        
Überprüfen der Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'set fixed branding' mit folgender Beschreibung                                                                             
Branding fest einstellen in der 'rc.conf', die Einstellung aus dem Bootloader wird ignoriert                                                      
angewendet werden? (j/N) n                                                                                                                        
                                                                                                                                                  
Die Modifikation 'add led display tab' wird verarbeitet ...                                                                                       
Überprüfen der Voraussetzungen für die Modifikation ... OK
Ü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                                                                                                                        
Modifikation wird ausgeführt ... OK
Ü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 Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'mount by label' mit folgender Beschreibung                                                                                 
USB-Volumes immer mit ihrem Label als Mountpoint einbinden                                                                                        
angewendet werden? (j/N) j                                                                                                                        
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK
                                                                                                                                                  
Die Modifikation 'mount by label' wurde angewendet, Fehlercode = 0.                                                                               
                                                                                                                                                  
Die Modifikation 'multi-annex support' wird verarbeitet ...                                                                                       
Überprüfen der Voraussetzungen für die Modifikation ... Fehler (1)
Die Modifikation wurde bereit angewendet oder ist nicht erforderlich.                                                                             
                                                                                                                                                  
                                                                                                                                                  
Die Modifikation 'add night time control to system menu' wird verarbeitet ...                                                                     
Überprüfen der Voraussetzungen für die Modifikation ... Fehler (1)
Diese Modifikation ist nur vor FRITZ!OS 07.19 verfügbar.                                                                                          
                                                                                                                                                  
                                                                                                                                                  
Die Modifikation 'remove tainted message from GUI' wird verarbeitet ...                                                                           
Überprüfen der Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'remove tainted message from GUI' mit folgender Beschreibung                                                                
Nachricht 'Vom Hersteller nicht unterstützte Änderungen' ausblenden, das Flag wird aber davon nicht zurückgesetzt                                 
angewendet werden? (j/N) n                                                                                                                        
                                                                                                                                                  
Die Modifikation 'NTP settings on IP client' wird verarbeitet ...                                                                                 
Überprüfen der Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'NTP settings on IP client' mit folgender Beschreibung                                                                      
NTP-Einstellungen auch auf einer IP-Client-Box zugänglich machen                                                                                  
angewendet werden? (j/N) n                                                                                                                        
                                                                                                                                                  
Die Modifikation 'show phone number names' wird verarbeitet ...                                                                                   
Überprüfen der Voraussetzungen für die Modifikation ... OK
Ü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                                                                                                                        
Modifikation wird ausgeführt ... OK
Ü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 Voraussetzungen für die Modifikation ... OK
Ü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                                                                                                                        
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 Voraussetzungen für die Modifikation ... OK
Ü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                                                                                                                        
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK
                                                                                                                                                  
Die Modifikation 'enable rc.user execution' wurde angewendet, Fehlercode = 0.                                                                     
                                                                                                                                                  
Die Modifikation 'remove VPN connections from overview page' wird verarbeitet ...                                                                 
Überprüfen der Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'remove VPN connections from overview page' mit folgender Beschreibung                                                      
AVM's Anzeige jeder einzelnen (aktivierten) VPN-Verbindung aus der Startseite entfernen,                                                          
ergibt in Kombination mit dem Hinzufügen der Zusammenfassung aus mod_show_vpn_on_overview                                                         
am meisten Sinn                                                                                                                                   
angewendet werden? (j/N) n                                                                                                                        
                                                                                                                                                  
Die Modifikation 'show device name instead of type on GUI' wird verarbeitet ...                                                                   
Überprüfen der Voraussetzungen für die Modifikation ... OK
Ü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) n                                                                                                                        
                                                                                                                                                  
Die Modifikation 'add VPN summary on overview page' wird verarbeitet ...                                                                          
Überprüfen der Voraussetzungen für die Modifikation ... OK
Ü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) n                                                                                                                        
                                                                                                                                                  
Die Modifikation 'remove affected swap space before stopping USB devices' wird verarbeitet ...                                                    
Überprüfen der Voraussetzungen für die Modifikation ... OK
Ü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                                                                                                                        
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK
                                                                                                                                                  
Die Modifikation 'remove affected swap space before stopping USB devices' wurde angewendet, Fehlercode = 0.                                       
                                                                                                                                                  
Die Modifikation 'enable telnet daemon' wird verarbeitet ...                                                                                      
Überprüfen der Voraussetzungen für die Modifikation ... OK
Ü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                                                                                                                        
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK
                                                                                                                                                  
Die Modifikation 'enable telnet daemon' wurde angewendet, Fehlercode = 0.                                                                         
                                                                                                                                                  
Die Modifikation 'volatile storage on NAS' wird verarbeitet ...                                                                                   
Überprüfen der Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'volatile storage on NAS' mit folgender Beschreibung                                                                        
Mounten eines flüchtigen Speichers in einem NAS-Verzeichnis                                                                                       
angewendet werden? (j/N) n                                                                                                                        
                                                                                                                                                  
Die Modifikation 'swap sort direction icons (for FRITZ!OS < 07.08)' wird verarbeitet ...                                                          
Überprüfen der Voraussetzungen für die Modifikation ... Fehler (1)
Diese Modifikation ist nur bis FRITZ!OS 07.08 sinnvoll.                                                                                           
                                                                                                                                                  
                                                                                                                                                  
Die Modifikation 'add YourFritz key' wird verarbeitet ...                                                                                         
Überprüfen der Voraussetzungen für die Modifikation ... OK
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'add YourFritz key' mit folgender Beschreibung                                                                              
Hinzufügen des öffentlichen YourFritz-Schlüssels zur geänderten Firmware                                                                          
angewendet werden? (j/N) j                                                                                                                        
Modifikation wird ausgeführt ... OK
Der öffentliche Schlüssel wurde als 'etc/plugin_global_key.pem' installiert.                                                                      
Überprüfen des Erfolgs der Modifikation ... OK
                                                                                                                                                  
Die Modifikation 'add YourFritz key' wurde angewendet, Fehlercode = 0.                                                                            
                                                                                                                                                  
Das ist die letzte Chance zum manuellen Modifizieren des Dateisystems in folgendem Verzeichnis: /var/tmp/3481_1601511560/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 ... \telefon: SIGUSR1 received!
 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.                     
                                                                                                                                                  
ext3-Dateisystem wird abgemeldet ... OK
ext3-Dateisystem wird gelöscht ... OK
# Oct  1 02:38:45 fritznasdb[13703]: [13703] Start failed                                                                                         
                                                                                                                                                  
Oct  1 02:38:55 fritznasdb[13707]: [13707] Start failed                                                                                           
                                                                                                                                                  
Oct  1 02:40:47 ctlmgr[3104]: WLANLIB: wlan_plugin_exit:784: wlan_plugin_exit                                                                     
2020-10-01 02:40:49 Ctlmgr[3104]: Reboot
 
"mod_custom_images" erzeugt/kopiert nur die Datei "/etc/init.d/E99-custom", die in früheren Versionen vom Init-Skript bei AVM (rc.S) einfach mit abgearbeitet wurde und dann entsprechende Dienste starten konnte.

Nachdem nun das Startsystem komplett umgestellt wurde von AVM (dazu gibt es seit Dez. 2019/Jan. 2020 hier mehrere Threads und auch ein paar Beiträge in diesem hier), muß man für die neue Version selbst dafür sorgen, daß ein passendes "systemd"-Skript (auch wenn das bei AVM "supervisor" heißt, verwendet es doch die Syntax des "systemd") erzeugt wird.

Ein Beispiel ist bei der "rc.user" zu finden (in der Variante für FRITZ!OS >= 07.19: https://github.com/PeterPawn/modfs/blob/master/modscripts/mod_rc_tail_sh#L25) und warum auch deren Abarbeitung jetzt nicht funktionieren soll, weiß ich nicht.

Ich könnte mir höchstens noch vorstellen, daß sich der Start der "rc.user" (der über "delay" mit einer Sekunde Verzögerung erfolgt, um den Inhalt der "rc.user" vom Rest des Systems zu entkoppeln, was den "Prozessbaum" angeht) mit einem (Neu-)Start des "multid" überschneidet, obwohl ich den extra schon nach "net.service" gelegt habe.

Was es hier bräuchte, wäre die Ausgabe auf der Console (also von jemandem, der da einen Adapter angeschlossen hat), weil das "msg_info" von AVM (was ich beim Start der "rc.user" auch verwende) nach "/dev/console" ausgibt und man dort dann sehen könnte, ob es (a) überhaupt zur Abarbeitung der "/etc/boot.d/core/rcuser" kam und ob da in der (zeitlichen) Nähe irgendetwas mit dem "multid" passiert.

Dieser ganze Mechanismus mit dem "delay" basiert am Ende auf einem "msgsend" an ebendiesen "multid" - das ist so eine Art "crond", der sich aber keinen Auftrag "merkt" und auch bei der Handhabung der "Job-ID" so manche Besonderheit hat, die es zu berücksichtigen gilt. Das ginge (hier) wohl auch alles mit "nohup" oder irgendwelchen anderen Kommandos, die einen neuen Prozess vom Vater-Prozess abkoppeln können - nur ist davon (außer dem "nohup") nur wenig bei AVM in der BusyBox enthalten und die (primäre) Idee ist ja eigentlich, daß das - solange wie möglich - auch mit AVM-Firmware alles funktionieren sollte.

Die "mod_custom_images" hat sich nach meiner Beobachtung jetzt nicht der Beliebtheit erfreut, daß ich die auch noch auf den "supervisor" angepaßt hätte - zumal es hier ohnehin einfacher wäre, für die Systeme mit dem neuen AVM-Start ein komplett neues Skript zu verwenden.

Die "E99-custom" müßte man auch direkt aus einer Service-Datei heraus starten können (bei der "rc.user" kommt da noch das TFFS-Handling hinzu, was den Einsatz eines eigenen Shell-Skripts, das aus dem Service-File heraus gestartet werden kann, erforderlich macht), das macht AVM bei einigen anderen (Service-)Dateien ja auch so. Da braucht's also nur das zusätzliche Service-File in "/lib/systemd/system/", was man sogar ohne großartige Prüfungen erzeugen kann, solange man das immer in Gänze macht, so daß bei/nach jeder Abarbeitung auch das komplette File erzeugt wird/wurde, was eine ggf. vorher schon vorhandene Datei komplett überschreibt, damit es keine "kumulativen" Änderungen gibt.

Auch ein Shell-in-a-Box läßt sich natürlich dann direkt über ein solches Service-File starten - dazu müssen allerdings die Dateien (ist ja eigentlich nur eine, nämlich das Binary dafür) in das SquashFS-Image integriert werden. Den Mechanismus zum Mounten von Zusatz-Images und zum Ausführen dort hinterlegter Start-Skripte, bietet halt nur die E99-custom.
 
Kann ich die rc.user direkt aufrufen und die Ausgabe irgendwie umleiten, wenn ich mit Telnet auf der Box bin?
 
Die Frage verstehe ich nicht ... bitte die Pfade mit angeben.

Denn für die "/etc/boot.d/core/rcuser" wäre die Antwort: ja - für die "rc.user" im TFFS eher: nein. Deshalb unternimmt die "/etc/boot.d/core/rcuser" ja noch die anderen Aktionen - es braucht nun mal zuerst das char-Device, damit man an den Inhalt der "rc.user" überhaupt herankommt.

Ist die dann erst mal kopiert, kann man sie auch direkt aufrufen. Die "/etc/boot.d/core/rc.user" sollte eigentlich so aussehen:
Bash:
~ # cat /etc/boot.d/core/rcuser
#! /bin/sh
. /etc/boot.d/msg
. /etc/boot.d/major_nr
grep -q "rcuser=n" /proc/cmdline 2>/dev/null && msg_warn "Skipping rc.user content due to kernel command line." && exit 0
rcuser=/var/tmp/rc.user
mknod $rcuser.tffs c $(major_nr tffs) 98
cat $rcuser.tffs > $rcuser
rm $rcuser.tffs
if ! test -s $rcuser; then
msg_warn "rc.user file is empty."
exit 0
fi
delay -d 1 RCUSER "/bin/sh $rcuser"
msg_info "rc.user content gets executed soon ..."
exit 0
~ #
, wobei da noch ein "kill switch" per "kernel_args" abgefragt wird (mit dem "grep").

Ob man die "/var/tmp/rc.user" (die hat beim "delay" ja dann schon den Inhalt aus dem TFFS) direkt aufrufen kann, hängt u.a. davon ab, was man darin macht. Eine permanent laufende Schleife mit "sleep" wäre z.B. eher eine schlechte Idee bzw. die würde ggf. sogar abgebrochen, wenn die Abarbeitung des Service-Files beendet ist (falls man so eine Schleife asynchron starten sollte). Startet man dort irgendeinen Service Daemon, der selbst ordentlich dafür sorgt, daß er "detached" läuft, ist das eher kein Problem.
 
Ok, ich meinte beides, denn die "/etc/boot.d/core/rcuser" ruft ja schließlich die "/var/tmp/rc.user" auf. Die rc.user (mit . , also im /var/tmp/-Verzeichnis) ist vorhanden, also ist die "/etc/boot.d/core/rcuser" korrekt ausgeführt worden. Allerdings hatte das Skript in der rc.user dann offensichtlich Probleme.
 
Zuletzt bearbeitet:
Einfachste Möglichkeit der Ablaufverfolgung ist dann wieder die Ausgabe in das Event-Log der Box - da braucht man keine speziellen Werkzeuge zum Auslesen. Wie das geht, kann man in den Zeilen nachlesen, die (in der "mod_rc_tail.sh") in den TFFS-Node 98 geschrieben werden, wenn der leer ist - das Kommando dazu ist "eventadd". Packt man das an den Beginn der "rc.user", ist es auch egal, was dahinter passiert - man weiß dann zumindest, daß die Verarbeitung gestartet wurde. Ich gebe in der "/etc/boot.d/core/rcuser" aber absichtlich nichts ins Event-Log aus und beschränke mich auf das, was AVM selbst auch in anderen Skripten benutzt (msg_info/msg_warn) - denn das ist dann (anders als der Inhalt der "rc.user") nicht mehr zu ändern, weil es im (r/o-)SquashFS-Image landet.
 
Es sieht so aus, als ob die Shell der Busybox "local" nicht mehr außerhalb von Funktionen akzepiert, deshalb schlägt das in rc.user enthaltene Skript fehl.
 
Das sieht nicht nur so aus, siehe hier #121 und #122:
 
Das sieht nicht nur so aus...
Eigentlich wollte ich schreiben, das sieht so aus, als ob das der Grund dafür ist, dass die "/var/tmp/rc.user" nicht ausgeführt wurde.
Aber das sieht natürlich auch nicht nur so aus... Es ist zumindest ein Grund, warum das nicht mehr funktionieren kann, denn so fehlen die ganzen mit "local" definierten Variablen.
 
Probieren. Das habe ich so noch nicht gemacht.
Einfach mal so eine Zeile in der Konsole eingeben.
Entweder du erhälst eine Fehlermeldung oder nicht.
Hast du mal ein Beispiel?

Sonst jede Definition in eine neue Zeile.
 
Solange man die Shell-Instanz nicht mit "set -u" ausführt (https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#set), muß man Variablen nicht "definieren" und wenn es sich in Wirklichkeit um die Initialisierung von Variablen handelt (local var1=val1 var2=val2 (...)), entweder in einzelnen Zeilen oder ein Semikolon hinter JEDE Zuweisung. Ohne das "=valX" kann man das auch einfach komplett weglassen (solange man eben die o.a. Option nicht nutzt), das ist keine "Programmiersprache", wo man alle verwendeten Variablen zuvor deklarieren oder gar initialisieren muß.
 
"local" wird doch schon länger nur noch in Funktionen unterstützt. Freetz hat dagegen einen Busybox-Patch da (ältere) AVM Script dies noch nutzen
 
"local" wird doch schon länger nur noch in Funktionen unterstützt.
Ich weiß nicht was du unter "länger" verstehst, aber bei der FW 7.12 ging es noch.

EDIT:
OK, da hatte ich ja auch noch freetz drauf.
 
Zuletzt bearbeitet:
Nö, gerade auf einer 7490 mit 7.12 ohne freetz getestet und geht.
Code:
BusyBox v1.24.2 (2019-02-11 19:23:48 CET) built-in shell (ash)
 
"2019-02-11 19:23:48 CET" ist das Datum an dem BB compiliert wurde...
 
Ja, die ist aber in der 7.12 original drin und damit geht das "local" noch.
Und das war doch erst letztes Jahr.
 
Busybox 1.24.2 wurde Anfang 2016 veröffentlicht

Das ist wie wenn man *heute* Windows 95 compiliert. Da hilft es dir nicht wenn in Windows 10 alles gepatcht ist
 
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.