hallo miteinander, im Kernel der SuSE 9.3 "linux-2.6.11.4-20a" gibt es am Ende nicht mehr (wie bisher bei SuSE-Kernel) den Absatz "Build options". Zusätzlich ist ja unter "General setup" die Position « # define CONFIG_LOCALVERSION "...." (z.B. "-default") » vorhanden. Wird mit Angaben an dieser Stelle ausreichend für "eine eindeutige Versions-Angabe" sprich "UTS_RELEASE" gesorgt? Für Infos zu dieser Frage vorab mein Dankeschön Gruß Rolf
Rolf Hoff wrote:
im Kernel der SuSE 9.3 "linux-2.6.11.4-20a" gibt es am Ende nicht mehr (wie bisher bei SuSE-Kernel) den Absatz "Build options".
Jetzt hat SuSE das schon wieder geaendert... Manchmal bekommt man echt die Krise, wenn man so ein Kernel-Howto verwaltet - mit jeder SuSE Version aendern sich wieder fundamentale Sachen beim Kernel und dessen Konfiguration... Ein bissl mehr Kontinuitaet waere echt mal schoen!!!
Zusätzlich ist ja unter "General setup" die Position « # define CONFIG_LOCALVERSION "...." (z.B. "-default") » vorhanden.
Wird mit Angaben an dieser Stelle ausreichend für "eine eindeutige Versions-Angabe" sprich "UTS_RELEASE" gesorgt?
Ja. SuSE scheint das UTS_RELEASE mittlerweile wie folgt aufzubauen: $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(RPM_RELEASE)$(LOCALVERSION) Die Variablen VERSION, PATCHLEVEL, SUBLEVEL und EXTRAVERSION werden im Makefile definiert, das RPM_RELEASE entstammt der Datei rpm-release aus dem Kernel-Source Verzeichnis, und LOCALVERSION kann bei der Konfiguration gesetzt werden. Beim Standard SuSE 9.3 Kernel wuerde bei einer LOCALVERSION von "-blabla" das UTS_RELEASE dann wie folgt aussehen: 2.6.11.4-20a-blabla. Das sorgt fuer Eindeutigkeit. Cheers, Th.
hallo Thomas und ML vielen Dank für Deine Antwort. Ich habe mich heute etwas länger mit dem Kernel von SuSE 9.3 beschäftigt. Hier einige Infos zur Überprüfung auf Richtigkeit: 1) Im Ausdruck der ".config"-Datei werden stückzahlmäßig eine andere Anzahl von Zeilen / Positionen angezeigt, als unter /usr/src/linux -> make xconfig zu finden sind. (Abweichungen auf beiden Seiten mal mehr mal weniger) 2) Die Reihenfolge der im Ausdruck aufgeführten Positionen weicht m.E. von der Reihenfolge in "make xconfig" ab. Auch wegen der Verschachtelungen in "make xconfig" ist es so ausgesprochen schwierig, den Fortgang der Prüfung in "make xconfig" anhand des Ausdrucks vorzunehmen und auf Vollständigkeit zu prüfen. (Anders gesagt: mit einem Ausdruck des zuletzt selbst kompilierten Kernels lassen sich Neuerungen nur schwer manuell aufspüren (um sie dann selbst vergleichsweise an- oder abzuwählen). Wie kann man das vereinfachen und gleichzeitig die Änderungen im Kernel beim Kompilieren einbringen? Gruß Rolf Thomas Hertweck schrieb:
Rolf Hoff wrote:
im Kernel der SuSE 9.3 "linux-2.6.11.4-20a" gibt es am Ende nicht mehr (wie bisher bei SuSE-Kernel) den Absatz "Build options".
Jetzt hat SuSE das schon wieder geaendert... Manchmal bekommt man echt die Krise, wenn man so ein Kernel-Howto verwaltet - mit jeder SuSE Version aendern sich wieder fundamentale Sachen beim Kernel und dessen Konfiguration... Ein bissl mehr Kontinuitaet waere echt mal schoen!!!
Zusätzlich ist ja unter "General setup" die Position « # define CONFIG_LOCALVERSION "...." (z.B. "-default") » vorhanden.
Wird mit Angaben an dieser Stelle ausreichend für "eine eindeutige Versions-Angabe" sprich "UTS_RELEASE" gesorgt?
Ja.
SuSE scheint das UTS_RELEASE mittlerweile wie folgt aufzubauen:
$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(RPM_RELEASE)$(LOCALVERSION)
Die Variablen VERSION, PATCHLEVEL, SUBLEVEL und EXTRAVERSION werden im Makefile definiert, das RPM_RELEASE entstammt der Datei rpm-release aus dem Kernel-Source Verzeichnis, und LOCALVERSION kann bei der Konfiguration gesetzt werden. Beim Standard SuSE 9.3 Kernel wuerde bei einer LOCALVERSION von "-blabla" das UTS_RELEASE dann wie folgt aussehen: 2.6.11.4-20a-blabla. Das sorgt fuer Eindeutigkeit.
Cheers, Th.
Rolf Hoff wrote:
Ich habe mich heute etwas länger mit dem Kernel von SuSE 9.3 beschäftigt. Hier einige Infos zur Überprüfung auf Richtigkeit:
1) Im Ausdruck der ".config"-Datei werden stückzahlmäßig eine andere Anzahl von Zeilen / Positionen angezeigt, als unter /usr/src/linux -> make xconfig zu finden sind. (Abweichungen auf beiden Seiten mal mehr mal weniger)
Oehm??? Ich weiss nicht, was genau Du vorhast, aber das erscheint auf den ersten Blick mal nicht so sinnvoll. Die Datei .config enthaelt schlicht jede Menge Variablen, manche sind gesetzt, manche sind auskommentiert... Die Anzahl der Zeilen hat nicht unmittelbar etwas mit dem Erscheinungsbild der grafischen Konfiguration zu tun. Die Darstellung der grafischen Konfiguration beruht ja auf Abhaengigkeiten, so wird ein Sub-Menue nur angezeigt, wenn auch das Haupt-Menu aktiv ist, usw. Wie das alles funktioniert, kannst Du in ./Documentation/kbuild/kconfig-language.txt nachlesen.
2) Die Reihenfolge der im Ausdruck aufgeführten Positionen weicht m.E. von der Reihenfolge in "make xconfig" ab.
Spielt das eine Rolle? In .config werden lediglich Variablen gesetzt, mehr nicht. Die Datei .config wird im Haupt-Makefile eingebunden, und letztendlich wird dort entschieden anhand der Konfiguration, was zu compilieren ist und was nicht. Und die grafische Konfiguration ermittelt daraus, welche Menues ein- und welche ausgeblendet werden muessen.
Auch wegen der Verschachtelungen in "make xconfig" ist es so ausgesprochen schwierig, den Fortgang der Prüfung in "make xconfig" anhand des Ausdrucks vorzunehmen und auf Vollständigkeit zu prüfen. (Anders gesagt: mit einem Ausdruck des zuletzt selbst kompilierten Kernels lassen sich Neuerungen nur schwer manuell aufspüren (um sie dann selbst vergleichsweise an- oder abzuwählen).
Dafuer gibt es ja "make oldconfig". Kopiere die alte .config in das neue Source-Verzeichnis und fuehre den Befehl aus. Zu allen neuen Features wirst Du dann gefragt werden, ob Du sie aktivieren moechtest. Alle alten Features werden uebernommen. Im Anschluss kannst Du per "make xconfig" das alles nochmal grafisch anschauen.
[TOFU entsorgt]
Du weisst sicher, was ich hier nun schreiben moechte, deswegen erspare ich es mir. Zu TOFU wurde schon alles gesagt! Gruesse, Thomson
Thomas Hertweck schrieb:
Rolf Hoff wrote: [ . . .] Oehm??? Ich weiss nicht, was genau Du vorhast, aber das erscheint auf den ersten Blick mal nicht so sinnvoll. Die Datei .config enthaelt [ . . . ] Dafuer gibt es ja "make oldconfig". Kopiere die alte .config in das neue Source-Verzeichnis und fuehre den Befehl aus. Zu allen neuen [. . . .]
Lasst mich hier nochmals sagen, was ich suche und warum: Ich habe nur einen Einzelplatzrechner. Das Angebot des Kernels ist deshalb für mich viel zu umfangreich. Wenn ich einen Kernel kompiliere, dann eigentlich nur, um im Kernel unbenutzte Angebote zu deaktivieren. Eine zusätzliche Aktivierung (wie z.B. für das SCSI-Modul "Advansys" o.ä.) bleibt selten. (Ich weiß, ich könnte viel von dem hier Gesagten auch sein lassen). Sicher könnte ich mich dabei auch blind auf die gesetzten Mechanismen wie "make oldconfig" u.a.m. verlassen. Aber weil ich von dem qualifi- zierten Fachlichen nicht viel verstehe (und das bei meinem Bedarf an einem PC auch nicht mehr ändern will), deshalb versuche ich durch manuelles Nachvollziehen manche Lücke zu schließen. Aufgrund meiner Erfahrungen mit Kernel ab SuSE-Version 6.4 habe ich mir vermerkt, dass jeder neue Kernel nicht nur neue Angebote enthält, sondern das auch immer wieder vorher vorhandene Module entfallen. Mit "make oldconfig" wird ein Abgleich Alt gegen Neu m.E. nicht komplett (wie in einer Buchhaltung) nachvollzogen. (Das kann falsch sein, ich weiss es nicht besser. ) Ein "make oldconfig" bietet mir z.B. auch keine neuen Positionen zur An- oder Abwahl an, wenn bereits eine Auswahl getroffen ist (wer immer diese dann wohl gemacht hat ?). Mit meiner jeweils alten ".config"-Datei schreibe ich nun meine ",config" von Kernel zu Kernel manuell fort. U.a. deshalb, weil ich so im Kernel jeweils deaktivieren kann, wofür ich keine Verwendung habe. (Weil ich grundsätzlich mit den Angaben von "make oldconfig" keine Entscheidung treffen kann - ohne Hinzuziehung der Erläuterungen von "make xconfig" -) Die Makefile und auch andere Dateien steuern sicher den Kernel. Aber bei mir ist Makefile nicht sowas wie eine Kopie von ".config". Insoweit bleibt m.E. doch für eine Fortschreibung des Kernels nur die ".config"-Datei oder (z.B.) "make xconfig" (jeweils alt gegen neu und -> aktivieren bzw deaktivieren. Am Ende entsteht bei mir so die ".config"-Datei für "make oldconfig" bzw "make xconfig" bzw "make prepare", d.h. die ".config" für das Kompilieren des Kernels. Dies vorausgeschickt sollte meine Frage sein: Gibt es eine Möglichkeit, d.h. einen Befehl, um ".config"-alt gegen ".config"-neu auszulesen mit plus und minus für beide Seiten (alt und neu) , wobei auch unterschiedliche Aktivierung (y/m) angezeigt wird. Wie würde man dafür eine Auswahl treffen können, so dass nur unterschiedliche Angaben dargestellt werden Kann das eventuell auch "diff", wenn ja wie? So, nun habe ich dargelegt, dass ich eigentlich zu denen gehöre, denen man oft rät, vom Kompilieren eines Kernels lieber die Finger zu lassen. Und außerdem soll erkennbar sein, dass mir oft nur ein "Kochbuch" hilft, mein Ziel zu erreichen (wie z.B. mit dem Kernel-How-To) Gruß Rolf
Hallo Rolf, hallo Leute, Am Dienstag, 26. April 2005 20:17 schrieb Rolf Hoff: [...]
Gibt es eine Möglichkeit, d.h. einen Befehl, um ".config"-alt gegen ".config"-neu auszulesen mit plus und minus für beide Seiten (alt und neu) , wobei auch unterschiedliche Aktivierung (y/m) angezeigt wird. Wie würde man dafür eine Auswahl treffen können, so dass nur unterschiedliche Angaben dargestellt werden Kann das eventuell auch "diff", wenn ja wie?
generell: diff -u datei1 datei2 Statt -u würde ich in diesem Fall -U0 empfehlen, da der Kontext wohl nicht interessiert. Tipp: Zum Abgleich der Kernel-.config alte und neue Version erstmal durch sort jagen ;-) Gruß Christian Boltz -- Die SuSE 9.2 ist ein gutes Argument 20 Euro in die Hand zu nehmen und ein DVD-Laufwerk zu kaufen. [Manfred Tremmel in suse-linux]
Hallo, Am Wed, 27 Apr 2005, Christian Boltz schrieb:
Am Dienstag, 26. April 2005 20:17 schrieb Rolf Hoff: [...]
Gibt es eine Möglichkeit, d.h. einen Befehl, um ".config"-alt gegen ".config"-neu auszulesen mit plus und minus für beide Seiten (alt und neu) , wobei auch unterschiedliche Aktivierung (y/m) angezeigt wird. Wie würde man dafür eine Auswahl treffen können, so dass nur unterschiedliche Angaben dargestellt werden Kann das eventuell auch "diff", wenn ja wie?
generell: diff -u datei1 datei2 Statt -u würde ich in diesem Fall -U0 empfehlen, da der Kontext wohl nicht interessiert.
Tipp: Zum Abgleich der Kernel-.config alte und neue Version erstmal durch sort jagen ;-)
Nein! Ausnahmsweise nicht! Die Eintraege der .config sind thematisch gruppiert. Sortiert bleiben dann die Abhaengigkeiten auf der Strecke und man kann z.B. nicht nachvollziehen, wenn z.B.: # CONFIG_ACPI is not set die ganzen CONFIG_ACPI_* Optionen ausblendet -- und bei anderen Sachen gibt's keine solche eindeutige Praefix wie "CONFIG_ACPI_". Achso: ich bastel mir die config so, dass ich mit 2 xterms aufmache und dort einmal 'make menuconfig' des alten und einmal mit dem 'make menuconfig' des neuen Kernels aufrufe. Dann klapper ich eben die Einstellungen ab. -dnh -- Das Schicksal beschützt Narren, kleine Kinder und Schiffe mit dem Namen Enterprise. -- "William T. Riker"
David Haller schrieb:
Hallo,
Am Wed, 27 Apr 2005, Christian Boltz schrieb:
Am Dienstag, 26. April 2005 20:17 schrieb Rolf Hoff: [...]
Achso: ich bastel mir die config so, dass ich mit 2 xterms aufmache und dort einmal 'make menuconfig' des alten und einmal mit dem 'make menuconfig' des neuen Kernels aufrufe. Dann klapper ich eben die Einstellungen ab.
-dnh
Wenn Du das auch so machst, dann kann ich das ja auch so weitermachen. Danke Rolf
Christian Boltz schrieb:
Hallo Rolf, hallo Leute,
Am Dienstag, 26. April 2005 20:17 schrieb Rolf Hoff: [ . . .] generell: diff -u datei1 datei2 Statt -u würde ich in diesem Fall -U0 empfehlen, da der Kontext wohl nicht interessiert.
Tipp: Zum Abgleich der Kernel-.config alte und neue Version erstmal durch sort jagen ;-)
Gruß
Christian Boltz
Danke, sowas hab ich gesucht. werde ich ausprobieren. Gruß Rolf
Rolf Hoff wrote:
Lasst mich hier nochmals sagen, was ich suche und warum: Ich habe nur einen Einzelplatzrechner. Das Angebot des Kernels ist deshalb für mich viel zu umfangreich. Wenn ich einen Kernel kompiliere, dann eigentlich nur, um im Kernel unbenutzte Angebote zu deaktivieren. Eine zusätzliche Aktivierung (wie z.B. für das SCSI-Modul "Advansys" o.ä.) bleibt selten. (Ich weiß, ich könnte viel von dem hier Gesagten auch sein lassen).
Es waere nicht unbedingt noetig, das ist richtig. Der SuSE Kernel ist modular aufgebaut, von Dir nicht benoetigte Module sind zwar physikalisch auf der Festplatte vorhanden und nehmen ein bissl Platz weg, aber sie werden nicht geladen. Aehnlich kann man theoretisch auch mit eigenen Kerneln verfahren. Aber man kann auch - wie Du schreibst - die Konfiguration abspecken oder aendern.
Aufgrund meiner Erfahrungen mit Kernel ab SuSE-Version 6.4 habe ich mir vermerkt, dass jeder neue Kernel nicht nur neue Angebote enthält, sondern das auch immer wieder vorher vorhandene Module entfallen. Mit "make oldconfig" wird ein Abgleich Alt gegen Neu m.E. nicht komplett (wie in einer Buchhaltung) nachvollzogen. (Das kann falsch sein, ich weiss es nicht besser. )
Das verstehe ich nicht ganz... Ein "make oldconfig" hat eine ganz bestimmte Aufgabe, nicht mehr, nicht weniger. Die Aufgabe ist (vereinfacht ausgedrueckt), die Konfigurationspunkte, die beim alten und neuen Kernel identisch sind, zu uebernehmen. Punkte, die beim neuen Kernel entfallen sind, wirst Du dabei nicht zu Gesicht bekommen. Punkte, die neu beim neuen Kernel sind, werden Dir angezeigt und Du wirst ueber deren Aktivierung gefragt. Mehr macht das "make oldconfig" nicht. Aber das ist i.d.R. genau das, was man braucht, um sich eine gute Ausgangsbasis fuer eine neue Kernel-Konfig zu schaffen.
Ein "make oldconfig" bietet mir z.B. auch keine neuen Positionen zur An- oder Abwahl an, wenn bereits eine Auswahl getroffen ist (wer immer diese dann wohl gemacht hat ?).
Wenn es schon eine "Auswahl" gibt, dann ist die Position ja auch nicht neu, sie war ja schon in der alten .config enthalten. Deswegen bekommst Du sie nicht angezeigt; das "make oldconfig" macht eben genau das, was ich oben beschrieben habe.
Mit meiner jeweils alten ".config"-Datei schreibe ich nun meine ",config" von Kernel zu Kernel manuell fort. U.a. deshalb, weil ich so im Kernel jeweils deaktivieren kann, wofür ich keine Verwendung habe. (Weil ich grundsätzlich mit den Angaben von "make oldconfig" keine Entscheidung treffen kann - ohne Hinzuziehung der Erläuterungen von "make xconfig" -)
Ich verstehe Dein Vorgehen, und wie die anderen schon schrieben, kannst Du es manuell vergleichen. Ich bevorzuge es jedoch, die alte Konfiguration per "make oldconfig" erst einmal zu uebernehmen soweit es geht (von der alten Konfig weiss ich ja, dass sie funktioniert), und dann gehe ich ueber "make xconfig" nochmal die Liste durch und schaue mir Dinge an, fuer die ich mich naeher interessiere. Das Vorgehen ist sicher Geschmackssache, muss jeder fuer sich entscheiden.
Die Makefile und auch andere Dateien steuern sicher den Kernel. Aber bei mir ist Makefile nicht sowas wie eine Kopie von ".config".
Habe ich auch nicht geschrieben. Die .config wird im Makefile eingebunden und anhand der .config steuert das Makefile letztendlich das, was es zu compilieren gilt. Ist sehr vereinfacht ausgedrueckt, das Build-System fuer den Kernel ist doch etwas komplizierter. Mit der eigentlichen Konfiguration hat das Makefile nichts zu tun.
[...] Gibt es eine Möglichkeit, d.h. einen Befehl, um ".config"-alt gegen ".config"-neu auszulesen mit plus und minus für beide Seiten (alt und neu) , wobei auch unterschiedliche Aktivierung (y/m) angezeigt wird. Wie würde man dafür eine Auswahl treffen können, so dass nur unterschiedliche Angaben dargestellt werden Kann das eventuell auch "diff", wenn ja wie?
Antworten darauf hast Du ja schon bekommen. Unabhaengig von Davids Bedenken ueber ein Vergleich per "diff" denke ich, der folgende Befehl koennte evtl. in die Richtung gehen, die Du moechtest: $> sdiff /src/alt/.config /src/neu/.config | less Gruesse, Thomson
participants (4)
-
Christian Boltz
-
David Haller
-
Rolf Hoff
-
Thomas Hertweck