NEU: Stark verbessertes Menuconfig-Werkzeug
Wie angekündigt, veröffentliche ich im Vorgriff auf die nächste ds26-Version eine nützliche Verbesserung für den Menükonfigurator (a.k.a "make menuconfig").
Neue Features
Es handelt sich um Verbesserungen, die man von der Konfiguration des Linux-Kernels oder der Busybox her evtl. schon kennt. Ich habe sie auch nicht erfunden, sondern nur das übernommen, was es im Buildroot-Projekt zum freien Download gibt. Meine "Leistung" besteht lediglich darin, es bei uns eingebaut und ein bißchen in Richtung DS-Mod_26 "gebrandet" zu haben. Im Einzelnen gibt es jetzt Folgendes:
- Die Hilfeseite jeder Option zeigt im unteren Teil jetzt zusätzlich immer folgende Informationen an:
- Symbolname und Menü-Prompt
- Ort der Definition (Datei und Zeile)
- Ort in der Menüstruktur
- von der Option automatisch ausgewählte weitere Optionen
- Optionen bzw. Bedingungen, welche diese Option ausgewählt haben
- Suchfunktion: Mittels "/"-Taste kann in der gesamten Konfiguration nach Substrings von Symbolnamen gesucht werden. Es ist auch möglich, die Suche so einzugrenzen , daß der gesuchte Substring am Anfang oder Ende des Symbolnamens stehen muß.
- Gute Online-Hilfe zu allen Features (auch mal im Suchdialog probieren!)
Nutzen & Beispiele
Es ist nun einfach festzustellen, ob eine angekreuzte Bibliothek wirklich noch benötigt wird oder ob sie nur aktiviert wurde, weil füher mal ein sie benötigendes Paket ausgewählt war. Indem man sich "selected by" anschaut und prüft, ob eine der dort genannten Bedingungen auf die gewünschte Konfiguration zutrifft, kann man das feststellen. Beispiel: Die zu
uClibc gehörige Bibliothek
libnsl-0.9.28.so ist ausgewählt, aber editierbar. Brauchen wir sie noch? Mal eben kurz in die Hilfe schauen:
Code:
Symbol: DS_LIB_libnsl [=y]
Prompt: libnsl-0.9.28.so
Defined at make/libs/Config.in:84
Location:
-> Advanced options
-> Shared libraries
-> uClibc
Selected by: DS_REPLACE_KERNEL && DS_TYPE_FON_WLAN_7170 && !DS_TYPE_LABOR
|| DS_PACKAGE_VPNC && (DS_LANG_DE || !DS_SELECTED_LANG_ONLY)
|| DS_PACKAGE_TINYPROXY
|| DS_LIB_libgcrypt
Die Zeilenumbrüche bei der in diesem Beispiel sehr langen Bedingung - ich habe das komplexe Beispiel absichtlich ausgesucht, die meisten Abhängigkeiten sind viel harmloser und bestehen oft nur aus einem einzigen Symbolnamen - habe ich manuell eingefügt, um die vier Oder-Bedingungen einzeln darzustellen. Was bedeutet das? Die
libnsl-0.9.28.so wird ausgewählt,
- wenn "Replace kernel" für die 7170 ausgewählt wurde, aber keine Laborversion benutzt wird
- ODER wenn vpnc mit deutscher Sprache oder ohne bestimmte Sprachangabe ausgewählt wurde ODER
- ODER wenn Tinyproxy ausgewählt wurde
- ODER wenn libgcrypt ausgewählt wurde.
In meinem Fall wußte ich bspw., daß ich den Original-Kernel und keines der anderen Pakete bzw. auch nicht die Krypto-Bibliothek benutze. Weil ich für einen Support-Fall aber einmal
Tinyproxy benutzt hatte, war die
libnsl-0.9.28.so damals zu Recht ausgewählt worden. Inzwischen brauchte ich sie also nicht mehr und konnte sie so gefahrlos deaktivieren.
Andere Beispiele sind, wenn eine Bibltiothek fest vorausgewählt ist (nicht änderbar, erkennbar an "---") und man einfach nicht weiß, warum dem so ist. Auch dann schaut man sich "selected by" an und weiß dann, welches andere Paket oder welche andere Bibltiothek die Anwesenheit der gerade untersuchten Bibltiothek voraussetzt.
Umgekehrt wird auch ein Schuh daraus: Wenn man wissen möchte, welche Sub-Elemente mit ausgewählt werden, sobald man ein bestimmtes Paket aktiviert, kann man es sich vorher schon einmal unter "selects" anschauen. Das
Firewall-CGI z.B. selektiert einen ganzen Wust von Kernelmodulen und Bibliotheken, das kann man sich dann einfach anschauen.
Praxis-Tip: Wenn eine Zeile in der Hilfe sehr lang ist, wird sie nicht umgebrochen, aber mit Cursor rechts/links kann man horizontal scrollen und sich alles anschauen.
Beispiele für die Suche:
- "ip": Findet beispielsweise eine riesige Menge Iptables-Module und -Bibliotheken, aber natürlich auch alle anderen Symbole, die zufällig "ip" beinhalten, z.B. "Streamripper". Da inzwischen gerade die Iptables-Bestandteile in der Menüstruktur an einem Ort versammelt wurden, ist diese Suche nicht mehr unbedingt nötig, aber das Prinzip wird klar, hoffe ich.
- "^ds_package_": Sucht am Symbolanfang ("^") nach Paketnamen. Ähnlich könnte man mit "ds_module" nach Kernelmodule oder mit "ds_lib" nach Bibliotheken suchen - immer vorausgesetzt, die Verwendung von Symbolnamen im DS-Mod folgt sauber diesem Schema. Ich glaube, das ist im wesentlichen gewährleistet.
- "lua": Findet zielsicher das Lua-Paket.
- "x$": Findet am Wortende den Buchstaben "x" und somit Sachen wie "DS_PACKAGE_LYNX", "DS_REPLACE_BUSYBOX", "DS_MODULE_minix", "DS_LIB_libuClibcxx". Kleine Spielerei...
Goodie
Ein weiterer Praxistip: Das ging bisher auch schon, aber vermutlich wußte es kaum jemand: Es ist auch möglich, sich die gesamte Menü-Hierarchie in einer großen Baumstruktur anstatt verteilt auf mehrere Bildschirmseiten anzeigen zu lassen:
Code:
make MENUCONFIG_MODE=single_menu menuconfig
Die Info habe ich übrigens auch in der Online-Hilfe gefunden.
Installation
Es handelt sich der Einfachheit halber nicht um einen Patch, sondern um ein Archiv, welches ein ganzes Mod-Unterverzeichnis ersetzt. Das dürfte auch für die Patch-Unkundigen gut funktionieren und hat den Vorteil, daß man das alte Verzeichnis einfach vorher durch Umbenennen sichern kann. Zunächst lädt man sich aus Posting #1 dieses Threads die Datei
menuconfig-update.tar.bz2 (67,5 KB) herunter und legt sie ins Mod-Hauptverzeichnis. Dort führt man folgende Befehle aus:
Code:
mv tools/config tools/config.old
tar xvjf menuconfig-update.tar.bz2
make menuconfig
Der letzte Aufruf kompiliert auch gleichzeitig die neuen Dateien, bevor anschließend die neue Oberfläche gestartet wird.