Frank Bauer schrieb:
Ich haette mal ne Frage in Sachen src.rpms. Obwohl ich mich jetzt noch nicht solang mit den Linuxinterna beschäftige (mehr mit Programmieren), hab ich in letzter zeit auch mit rpm --rebuild einige source-rpms installiert.
Damit hast Du die RPMs nicht installiert; Du hast aus dem Source-RPM ein Binary-RPM gebaut, d.h. der Quellcode wurde auf Deinem Rechner uebersetzt und es wurde ein RPM kreiert - das erstellte RPM muss aber im Anschluss noch von Hand installiert werden, z.B. mit "rpm -Uhv".
Damit wird ja ein normales RPM erstellt, das man installieren kann.
Genau.
Nun wollte ich eigentlich meinen Kernel 2.4.19 auf 2.4.21 bringen. Normalerweise installiert man ja das Kernel-RPM + Kernelsourcen, konfiguriert und übersetzt.
Hmm, was heisst "normwalerweise"? Es gibt verschiedene Moeglichkeiten. Du kannst Dir z.B. ein fertiges Kernel-RPM von H. Mantels FTP Ver- zeichnis herunterladen und es parallel zum alten Kernel installieren. Wie das geht, steht in http://www.thomashertweck.de/kernel.html#rpm. So brauchst Du weder die Quellen konfigurieren noch auf Deinem System einen Kernel compilieren. Andererseits kannst Du Dir das reine kernel-source.rpm installieren (oder auch die Quellen aus dem Tar- Archiv) und diese Quellen dann konfigurieren, den Kernel und die Mo- dule compilieren und anschliessend alles installieren. Vanilla-Kernel gibt es z.B. gar nicht vorcompiliert und auch nicht im RPM-Format - die musst Du also immer aus den Quellen erstellen, und diese wiederum musst Du aus dem Tar-Archiv entpacken.
Jetzt hab ich gesehen, dass es sowohl zu k_deflt als auch zu kernel-sources ein src.rpm gibt, wobei ersteres nur 380KB(!) , das zweite 40MB groß ist, beide also kleiner(???) als die eigentlichen RPMS.
Die aktuellen Kernel-Quellen (linux-2.4.21.SUSE-16.tar.bz2) von SuSE haben eine Groesse von 35430 KB, also rund 35 MB. Das Binary-RPM mit Modulen und dem Kernel selbst (k_deflt-2.4.21-108.i586.rpm) hat eine Groesse von 24808 KB, also knapp 25 MB. Die Datei k_deflt-2.4.21-108.src.rpm enthaelt lediglich ein .spec File, was man zum Bauen eines RPMs benoetigt, deswegen ist diese Datei auch nur 387 KB gross. Die eigentlichen Kernel-Quellen im RPM-Format (das ist also quasi das Paket, was identisch zu linux-2.4.21.SUSE-16.tar.bz2) ist kernel-source-2.4.21-108.i586.rpm und hat eine Groesse von 43666 KB, also einiges an Overhead im Vergleich zum komprimierten Tar-Archiv. Das Paket kernel-source-2.4.21-108.src.rpm ist das eigent- liche Source-RPM (Achtung: nicht verwechseln mit kernel-source.rpm) und beinhaltet nicht nur ein .spec File wie die anderen src.rpm mit den geringen Dateigroessen, sondern daneben auch die kompletten Kernel- Quellen. Die unterschiedlichen Groessen fuer die Dateien ergeben sich einfach aus ihrem unterschiedlichen Inhalt und dem teilweise unter- schiedlichen Format.
Kann man die auch einfach mir --rebuild aufrufen und erstellen dann die "normalen" RPMS, wie sonst bei src.rpms auch?Außerdem find ich es verwunderlich, dass das k_deflt nur 380KB groß ist.
Siehe oben. Das einzige Paket, was sich per "rpm --rebuild" uebersetzen laesst, ist das kernel-source-2.4.21-108.src.rpm - das ergibt dann ein fertiges k_deflt RPM. Wenn Du ein Athlon-optimiertes RPM haben moechtest, dann musst Du das src.rpm explizit installieren und das dann vorhandene .spec File gegen das .spec File aus dem Paket k_athlon-2.4.21-108.src.rpm austauschen. Anschliessend muss per rpm-Befehl ein neues src.rpm gebas- telt werden, das sich dann wiederum per "rpm --rebuild" uebersetzen liesse.
Braucht das dann nicht ziemlich lange(relativ) bis das RPM erstellt ist? Das müsste sogar dann noch länger dauern als das eigentlich Übersetzen nach dem Konfigurieren?
Wieso? Es gibt natuerlich einen geringen Overhead, weil das RPM und die darin enthaltenen Kernel-Quellen erst entpackt werden muessen und weil natuerlich letztendlich noch ein RPM gebastelt werden muss. Die meiste Zeit wirst Du in beiden Faellen aber mit dem Compilieren des Kernels und noch mehr mit dem Compilieren der Module verbringen, weil standard- maessig beim SuSE-Kernel fast alles als Modul realisiert ist.
Und was soll das src.rpm der kernel-sourcen?
Siehe oben. Wenn Du einen eigenen Kernel bauen moechtest, dann reicht es, wenn Du Dir das Paket kernel-source-2.4.21-108.i586.rpm oder das Tar-Archiv linux-2.4.21.SUSE-16.tar.bz2 besorgst. Daraus lassen sich alle Kernel (deflt, athlon, smp, usw.) erstellen. Siehe zum gesamten Thema auch Davids Multikernel-Howto (http://www.dhaller.de/linux/multikernel.html) und mein Kernel-Howto (http://www.thomashertweck.de/kernel.html). CU, Th.