Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

10.11.2010, 20:34

[gelöst] kernelrelease

Hallo Forum,

Ich habe meinen Kernel mittels genkernel gebaut. Nun bereue ich dies, da viel zu viel "Schrott" geladen wurde, den ich gar nicht brauche. Nun zu meiner Frage: Ich wollte nun beim nächsten Kernelupgrade den neuen Kernel manuel bauen. Gibt es andere Varianten resp. klappt dies so wie ich mir das gedacht habe (neue Kernelsource emergen dann manuel bauen und grub.conf anpassen)?

Grundsätzliche Frage: Wie geht dies bei Gentoo mit den Kernelreleases vor sich? Weiss man schon, wann die nächste stable Version kommt?

Die Fragen sind ziemlich grundlegender Natur. Bis jetzt musste ich mich noch nie gross um Kernelkonfigurationen kümmern. Unter Gentoo lernt man jeden Tag was Neues, trotzdem hoffe ich, dass meine Fragen nicht allzu dämlich sind :) Schon einmal Danke für Antworten!

Gruss

nutshell4

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »nutshell4« (13.11.2010, 15:10)


2

10.11.2010, 21:21

Ich fahre mit Genkernel schon länger ganz gut.

Das Problem sind nicht die vielen Module, sondern die Auto-Detection in der mit generierten initramfs.
Damit Du diese abschalten kannst, musst Du alles zu booten notwendige (Controller + SCSI-DISK + Dateisystem) fest in den Kernel backen.
Dann kannst Du entweder die initramfs weglassen, oder zB. für lvm oder bootsplash nur die HW-Detection deaktivieren.
Das geht wie folgt:

Quellcode

1
genkernel --no-ramdisk-modules --no-keymap ....
Mit den beiden Parameter entschlackst Du die initramfs.

grub.conf

Quellcode

1
kernel /boot/kernel-genkernel ...  nodetect
Der nodetect Parameter wird das Detection deaktiviert.

Du kannst also erst mit nodetect testen und wenn das System bootet die initramfs entschlacken.

Bei Kernel-Upgrades kopiere ich manuell die .config Datei und führe "make oldconfig" aus. Beim Genkernel nutze ich dann den Parameter "--oldconfig", nur damit er meine Konfig nicht überschreibt.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

3

11.11.2010, 09:14

Ich bevorzuge es den Kernel selber zu bauen. Die initramfs gibt es bei mir nur für den Splash, mehr ist dort nicht drin. Das Meiste hab ich fest in den Kernel eingebunden [*] und nur ein paar Module.

Das Thema ob genkernel oder nicht ist einfach Geschmackssache. Aber auch beim genkernel kannst du mit --menuconfig und den Tipps von bell schon mal einen viel schlankeren Kernel bekommen.

4

11.11.2010, 09:47

Wie FelixPetzold schon sagte ist es wirklich Geschmackssache.

Ich verwende schon ewig genkernel mit --menuconfig. Damit kann man den kernel genauso Schlank machen wie von Hand, da ist also kein Unterschied. Genkernel hat halt den Vorteil, das ansonsten alles automatisiert ist. Das kopieren des Kernels, die Initramfs und so weiter.

Viele Grüße

5

11.11.2010, 10:13

Hey

Ich danke euch für die super Antworten! Die Option --menuconfig habe ich schon verwendet. Allerdings wusste ich nicht, dass die initramfs das Problem ist. Ich werde den Vorschlag von bell heute Abend einmal ausprobieren.
An alle die den Kernel mit genkernel gebaut haben: Habt ihr im Nachhinein mittels --menuconfig euren Kernel noch schlanker gemacht?

@bell: Zu deiner Vorgehensweise bei einem Kernelupgrade: Wenn ich im HowTo Kernelupgrade von Gentoo lese:

Zitat

Manchmal kann man Zeit sparen, indem man die Konfiguration des alten Kernels heranzieht, um einen neuen Kernel zu konfigurieren. Beachten Sie aber, dass das im Allgemeinen gefährlich ist, weil es meist zu viele Änderungen zwischen Kernel-Versionen gibt, um dies als einen verlässlichen Weg zur Aktualisierung ansehen zu können.
Frage ich mich: ist das wirklich gefährlich? :) Das ist doch deine Variante des Kernelupgrade. (Entschuldige, wenn ich mich irre!) Oder verwendest du diese nur, wie im Artikel beschrieben, für Upgreades von ...-rx -> ...-rx+1?


Gruss

nutshell4

6

11.11.2010, 10:51

Ich nutze statt genkernel --menuconfig lieber make menuconfig & genkernel --oldconfig. Der Unterschied: Bei genkernel --menuconfig wird der Kernel neu gebaut, sobald ich menuconfig verlasse. Bei meiner Vorgehensweise in zwei Schritten kann ich selbst entscheiden, ob der Kernel gebaut werden soll oder nicht.

ist das wirklich gefährlich?
Jedes Update ist eine Gefahr. Ja, es ist meine Vorgehensweise. Allerdings überlasse ich das "--oldconfig" nicht dem Genkernel, der dies stupide durchführt, sondern mache es selbst. Dadurch sehe ich die Änderungen im Kernel und kann selbst bestimmen, ob ich was brauche oder nicht.

Habt ihr im Nachhinein mittels --menuconfig euren Kernel noch schlanker gemacht?
Ja. Im Prinzip nutze ich den Genkernel nur zum Bauen. Die Kernel-Konfiguration hat noch wenig was mit der "originalen" Genkernel-Konfiguration zu tun.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

7

11.11.2010, 11:29

Zitat

Ich nutze statt genkernel --menuconfig lieber make menuconfig & genkernel --oldconfig. Der Unterschied: Bei genkernel --menuconfig wird der Kernel neu gebaut, sobald ich menuconfig verlasse. Bei meiner Vorgehensweise in zwei Schritten kann ich selbst entscheiden, ob der Kernel gebaut werden soll oder nicht.
Super Tipp, das hat mich auch schon gestört! Das werde ich in Zukunft auch so machen.

Wie ich dies bei einem Upgreade tun werde, muss ich mir noch überlegen. Ich danke dir aber für deine Erklärungen!

Danke an alle & Gruss


nutshell4

8

11.11.2010, 12:43

Wie FelixPetzold schon sagte ist es wirklich Geschmackssache.

Ich verwende schon ewig genkernel mit --menuconfig. Damit kann man den kernel genauso Schlank machen wie von Hand, da ist also kein Unterschied. Genkernel hat halt den Vorteil, das ansonsten alles automatisiert ist. Das kopieren des Kernels, die Initramfs und so weiter.

Viele Grüße

Wenn es nur um die Automatismen geht, kann ich dir mein kernelUpdate Skript zur Verfügung stellen. Dort passiert alles außer das "make oldconfig" beim Versionswechsel (2.6.35.rx auf 2.6.36) automatisch

9

11.11.2010, 17:41

Wenn es nur um die Automatismen geht, kann ich dir mein kernelUpdate Skript zur Verfügung stellen. Dort passiert alles außer das "make oldconfig" beim Versionswechsel (2.6.35.rx auf 2.6.36) automatisch
Felix, ist ja lieb gemeint, doch ich meine das die Leute erst mal die grundsätzlichen Vorgehensweisen des Kernelbauens verstehen sollten, bevor sie sich da solche Automatismen einbauen.. ;)

10

11.11.2010, 17:57

Das stimmt allerdings. Man sollte schon wissen, was man macht

11

11.11.2010, 20:20

Zitat

Du kannst also erst mit nodetect testen und wenn das System bootet die initramfs entschlacken.
Leider bootet er bei mir nicht mehr, wenn ich nodetect in die grub.conf einfüge! Problem hat er mit meiner root Partition, genaue Fehlermeldung habe ich nicht mehr im Kopf. Da stellt sich mir die Frage, wie weiter ?

Zitat

Felix, ist ja lieb gemeint, doch ich meine das die Leute erst mal die grundsätzlichen Vorgehensweisen des Kernelbauens verstehen sollten, bevor sie sich da solche Automatismen einbauen..
Wenn das Angebot von Felix an mich gerichtet war, dann hätte ich dies, aus eben diesem Grund, abgelehnt. Ich habe Gentoo erst seit kurzem und da kommen schon einige Fragen zusammen, wie man hier im Forum lesen kann :) Man lernt aber auch sehr viel über das System. Also bitte entschuldigt die zahlreichen Fragen!

Ich möchte hier aber auch allen danken. Dieses Forum ist wirklich super! Die Community war für mich mitunter ein Grund für den Entscheid Gentoo!

12

12.11.2010, 02:32


Also bitte entschuldigt die zahlreichen Fragen!

Was glaubst du denn, wie wir unser Gentoo kennen gelernt haben? Am Anfang hat man halt viele Fragen

13

12.11.2010, 16:15

Leider bootet er bei mir nicht mehr, wenn ich nodetect in die grub.conf einfüge
Kennst Du die Möglichkeit schon, beim Booten im Grub direkt die Command-Line zu ändern? Damit kannst Du testen, ohne die grub.conf zu editieren.

Was im Kernel fest drin sein muss, wie bereits erwähnt:

Quellcode

1
2
3
<*> Serial ATA (prod) and Parallel ATA (experimental) drivers -->
      -> [*]   ATA SFF support
             ->   Dein Controller Treiber

Quellcode

1
 <*> SCSI disk support


Das Dateisystem der Root-Partition (ext3?)

Welcher Controller-Treiber real verwendet wird, findest Du in der Ausgabe von

Quellcode

1
lspci -k
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

14

12.11.2010, 16:27

hallo bell,


Zitat

Kennst Du die Möglichkeit schon, beim Booten im Grub direkt die Command-Line zu ändern? Damit kannst Du testen, ohne die grub.conf zu editieren.
Ich weiss, dass man die Option hat eine "minimale" Command-line aufzurufen. Dort sollte ich also z.B. dann nodetect mitgeben?

Die angegebenen Kernelkonfigurationen werde ich heute Abend einmal untersuchen. Falls immer noch Probleme auftauchen, schreib ich wieder. Ich dank dir für die Hilfe.

Gruss

nutshell4

EDIT:

Teilausgabe von lspci -k

Quellcode

1
2
3
4
00:1f.2 SATA controller: Intel Corporation 82801JI (ICH10 Family) SATA AHCI Controller
	Subsystem: Lenovo Device 1022
	Kernel driver in use: ahci
	Kernel modules: ahci


Also wäre dies bei mir AHCI?

15

12.11.2010, 16:49

Ich weiss, dass man die Option hat eine "minimale" Command-line aufzurufen. Dort sollte ich also z.B. dann nodetect mitgeben?
Ich meinte, Du wählst den Eintrag in Grub und drückst auf "e". Dort kannst Du dann den Eintrag editieren. Die möglichen Tasten sollten unten aufgelistet sein.

Also wäre dies bei mir AHCI?
Ja, und eine gute Wahl (Keine IDE-Emulation).

ATA SFF support brauchst Du dann wohl nicht. Der AHCI-Teriber ist direkt unter Serial ATA...
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

16

12.11.2010, 17:30

Super, werde ich am Abend gleich testen!

Noch eine kurze Frage zu deinen letzten posts. Irgendwie steh ich da noch auf dem Schlauch:


Grundsätzlich, wenn ich make menuconfig (in /usr/src/linux) aufrufe, bekomme ich ja ein hübsches Tool um meinen Kernel zu konfigurieren. Danach wird dies in .config gespeichert, welche ebenfalls in /usr/src/linux liegt. Mittels make && make modules_install würde ich dann den Kernel "backen", dass gibt mir ein bzImage unter arch/meine_Plattform/boot. Dieses muss ich dann ins boot directory verschieben. Wichtig dabei, make menuconfig überschreibt meine alte .config Datei.

Fragen:

  1. Ist das oben Geschriebene korrekt?
  2. liefert mir make menuconfig ein komplett neuen "Baukasten". Was ich damit meine: Bsp: Ich habe im aktuellen Kernel Apple Keyboard Support aktiviert. Nun führe ich make menuconfig aus. Greift dies auf meine alte .config zurück (ich nehme schwer an) und übernimmt soweit meine Eintstellungen. D.h. wenn ich dann zur Option Apple Keyboard Support navigieren würde, wäre diese immer noch aktiviert?
  3. Macht dies genkernel genau gleich? Was ich damit meine, speichert es Dateien am gleichen Ort etc. ab? Warum ich das frage: Im HowTo Abschnitt 10. wird zum Upgraden(unter Verwendung der oldconfig) des Kernels mittels genkernel anders vorgegangen. Dort muss die Datei /etc/kernels/ kopiert werden.
  4. Wenn ich mit make menuconfig eine neue .config Datei erstellt habe(Ziel kein Upgrade sondern nur Hinzufügen/Entfernen von Optionen im Kernel) in /usr/src/linux und diese nun mit genkernel backen will, wie muss ich vorgehen? Genügt dann ein genkernel --oldconfig --bootloader=grub all?
Ich sehe klar den Vorteil von deiner Vorgehensweise (make menuconfig & genkernel --oldconfig) nur verwirrt mich, dass man hier ja zuerst manuel startet und dann doch genkernel benutzt.

Gruss & Dank


nutshell4


ps: wie gesagt, bis jetzt musste ich mich noch nie mit Kernelkompilierung auseinandersetzen. Allerdings will ich das ganze verstehen, und nicht bloss aus irgendwelchen HowTo's Befehle abtippen.

17

12.11.2010, 18:33

Ich kann zu allen Deinen Punkten:
1. Ja
2. Bei "make menuconfig" wird die .config verwendet. Es gehen also keine Änderungen verloren.

3. / 4.
Genkernel nutzt die /usr/share/genkernel/arch/$ARCH/kernel-config als Ausgangsbasis. Diese Config ist normalerweise für ältere Kernel und wird per Oldconfig auf den aktuellen Kernel aktualisiert. Wie der Genkernel beim oldconfig vorgeht, weiß ich nicht. Die aktualisierte Version wird unter /etc/kernels abgelegt. Wann diese verwendet, weiß ich nicht.
Mir ist das ganze zu unsicher, daher nutze ich IMMER die Option --oldconfig. Diese bewirkt ua., dass der Genkernel wie beim manuellen bauen die ".config" aus /usr/src/linux verwendet.

nur verwirrt mich, dass man hier ja zuerst manuel startet und dann doch genkernel benutzt.

Kritische Dinge mache ich zu fuß. Die Config will ich nicht verlieren. Das Bauen mache ich jedoch mit dem Genkernel, da ich die generierte initramfs schätze.
Mein Standard-Bau-Befehl ist in einer "build.sh" drin, damit ich das --oldconfig nicht vergesse.

Quellcode

1
genkernel --oldconfig --lvm --splash=GoGentooGo --no-ramdisk-modules --no-keymap all


--bootloader=grub nutze ich nicht. Ich passe die grub.conf lieber zu fuß an (sehe ich als kritisch).
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

18

12.11.2010, 19:49

Zitat

Genkernel nutzt die /usr/share/genkernel/arch/$ARCH/kernel-config als Ausgangsbasis. Diese Config ist normalerweise für ältere Kernel und wird per Oldconfig auf den aktuellen Kernel aktualisiert.
vs.

Zitat

Mir ist das ganze zu unsicher, daher nutze ich IMMER die Option --oldconfig. Diese bewirkt ua., dass der Genkernel wie beim manuellen bauen die ".config" aus /usr/src/linux verwendet.
welche .config nimmt er nun? die in /usr/src/linux oder die in /usr/share/genkernel/arch/$ARCH/kernel-config?

Zum Rest: Danke für deine Hilfe! Du hast echt viel zum Verständnis beitragen können! Ich werde später dann noch versuchen die initramfs abzuspecken. Bei Problemen schreib ich wieder:)

Gruss

nutshell4

ps:zu deinem vorvorletzten post

Zitat

Was im Kernel fest drin sein muss, wie bereits erwähnt:
Asche auf Haupt! Das habe ich glatt überlesen! Entschuldige!

19

12.11.2010, 20:20

Mit --oldconfig die /usr/src/linux/.config

Ohne die --oldconfig die /usr/share/genkernel/arch/$ARCH/kernel-config und/oder /etc/kernels/??
Das weiss ich nicht genau, da ich IMMER die --oldconfig verwende.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

20

12.11.2010, 22:56

So zuerst mit nodetect getestet, alles geklappt, dann die initramfs abgespeckt und alles läuft. Super, ich danke dir/euch für die Hilfe und Erklärungen!

Schönen Abend,


nutshell4