Firmware Repository als 3rd-party-apps

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Immer wenn eine neue Firmware da ist, stellt sich die Frage, was ist neu, was ist nicht mehr vorhanden, was muss ich ggf. ändern, weil ich Anpassungen gemacht habe. Schön wäre es, wenn es darüber eine automatische Übersicht gäbe.

Ich habe begonnen, mal was dazu zu schreiben.

Als erstes muss ich die vorhandenen Systemdateien sichern. Wenn zum Beispiel die Version 702 gerade aktiv ist, könnte man die Systemdateien nach /volume1/backup_702 sichern. Es geht natürlich auch auf eine externe Platte oder so; das ist eigentlich egal. Man könnte auch die .pat-Datei entpacken ... aber ich denke, es ist sinnvoll, das gerade aktive und vielleicht durch eigene Modifikationen veränderte zu sichern. Klar sollte dabei nicht gerade auf Hochtouren parallel viel passieren (Systemdateien verändern lassen durch cron), damit man auch einen relativ sauberen Schnitt hat. Die Sicherung geschieht am einfachsten per cp (Optimierungen sind nicht wirklich erforderlich, weil es sich ja nicht um wirklich viel handelt; z.B. werden die ganzen Hardlinks als Kopie angelegt, aber ich denke, dass ist auch nicht soo viel - bei mir ca. 270-300 MB). Also Sicherung per cp -r (r=rekursiv):
Rich (BBCode):
cp -r /etc /volume1/backup_702/etc
cp -r /dev /volume1/backup_702/dev
cp -r /bin /volume1/backup_702/bin
cp -r /sbin /volume1/backup_702/sbin
cp -r /usr /volume1/backup_702/usr
cp -r /var /volume1/backup_702/var
cp -r /etc.defaults /volume1/backup_702/etc.defaults
cp -r /var.defaults /volume1/backup_702/var.defaults
cp -r /lib /volume1/backup_702/lib
cp -r /root /volume1/backup_702/root

Dann brauchen wir eine MySQL-Datenbank (repos) mit Tabelle (files). SQL siehe Anhang.

Das PHP-Skript als 3rd-party-apps integrieren, damit der 'root'-Zugriff auch gewährleistet ist.

Anleitung:

(1) crawlen: Versionsnummer eingeben, crawl-Path eingeben und Taste 'crawl' drücken. Damit werden die Dateien-Informationen der Dateien des crawl-Paths in die Datenbank eingelesen: Datum, Größe, Typ, MD5 (=Hash über die Daten in der Datei, damit man Veränderungen aufsprüren kann).

Das Ergebnis kann man auch mal per phpmyadmin anschauen.

Ein weiteres crawlen nimmt nur noch die Änderungen auf; allerdings wird nichts gelöscht.

(1a) crawlen einer bereits angefertigten Sicherung: Falls man schon eine Sicherung gemacht (z.B. /volume1/backup_702) hat und nachträglich diese in die Datenbank aufnehmen möchte, geht das wie folgt:
version: 702
crawl-path: /volume1/backup_702/etc
./. Path: /volume1/backup_702

Dann wird in der Datenbank statt des Pfades /volume1/backup_702/etc nur /etc abgespeichert - das ist für einen Vergleich später wichtig!

(2) Diff: Wenn man auf diese Weise zwei Versionen des gleichen Verzeichnisses in die Datenbank aufgenommen hat, dann kann man einen Diff machen:
version: 721
crawl-path: /etc
diff-version: 702
diff-path: /volume1/backup_702

Der crawl-path wählt das Verzeichnis des Vergleichs zwischen den beiden Versionen aus, also /etc. Der diff-path ist dazu nicht von Bedeutung. Die Ausgabe in den [ ]-Klammern ist die Dateigröße. Es werden natürlich nur die Dateien angezeigt, bei denen ein Unterschied festgestellt wurde.

(2a) Diff mit Editor-Integration: In der Diff-Liste (2) werden die einzelnen Vergleiche pro Zeile angezeigt und ein Link zum Editor-Aufruf (siehe hier) mit der Übergabe der beiden Dateinamen ausgegeben. Damit nun der Pfad der gesicherten Datei auch für den Editor findbar ist, muss man noch den diff-path setzen, also diff-path=/volume1/backup_702. Dann steht einem automatischen Aufruf des Editor nichts mehr im Wege. Da der Editor in der letzten Fassung einen Vergleich zweier Dateien vornehmen kann, sieht man mehr oder weniger gut, was zwischen den Firmware-Versionen bzw. durch eigene Eintragungen geändert wurde und man kann komfortabel die Änderungen nachvollziehen bzw. nacharbeiten.

Dateien, die nur bei einer der beiden Firmware-Version dabei sind, werden auch angezeigt. Das fehlende Korrespondent ist dann mit 'n/a' (not available) gekennzeichnet.

Ich weiß, dass es sehr viele Fehlerquellen beim Zusammenspiel geben kann und dass es nicht unbedingt sofort klappen wird; aber es funktioniert bei mir!
Wahrscheinlich wird das ein oder andere noch dazukommen.;)

Ganz wichtiger Hinweis: Natürlich kann man durch das Editieren von Systemdateien sein System 'schrotten'. Also immer vorher eine Sicherung der zu ändernden Datei anfertigen und sich darauf einstellen, die Firmware erneut einzuspielen, mit all den schönen Nebeneffekten, dass sich die Platte nicht findet oder sich verweigert, das System im Netz nicht mehr gefunden wird, der Tag versaut ist, man die Welt und insbesondere sich selbst hasst usw. Sollte also was schiefgehen, sich gründlich ärgern und daran denken: Es geschieht alles auf eigene Kappe :D Nicht mehr funktionstüchtige DS werden gerne von mir kostenfrei entgegengenommen :D

itari

PS. Die Editor-Datei hat noch einmal einen Feinschliff bekommen, also ersetzen. Ich seh grad, dass im SQL-Skript der Inkrement von 202 auf 1 zurückgesetzt werden sollte. Ggf. muss man auch noch in repos.php den mysql_connect anpassen.
 

Anhänge

  • repos.jpg
    repos.jpg
    59,4 KB · Aufrufe: 148
  • repos.php.txt
    5,5 KB · Aufrufe: 3
  • application.cfg.txt
    84 Bytes · Aufrufe: 5
  • editor.php.txt
    7,7 KB · Aufrufe: 5
  • repos.sql.txt
    714 Bytes · Aufrufe: 4
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat