staging.inyokaproject.org

Autokernel...ein Wunschtraum

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Thorsten_Reinbold Team-Icon

Anmeldungsdatum:
10. Juli 2006

Beiträge: 4784

Ich schreibs mal hier rein...da es kein konkretes Projekt ist und so wohl auch nie umgesetzt wird. Ich beschäftige mich seit einer Weile mit dem optimalem Kernel für mein System. Ist leider nicht so einfach wie es scheint, einen perfekt optimierten Kernel für das eigene System zu bauen. Da entfernt man ein kleines, unscheinbares und fürs eigene System scheinbar unwichtige Modul...und schon funktioniert die halbe Hardware nicht mehr.

Wie genial wäre es, ein Programm zu haben das einem die Arbeit abnimmt? Ich stelle mir das so vor: ich lade mir die gewünschten Kernelquellen + Patches runter, packe alles in ein Verzeichnis und starte das Programm, welches nun meine Hardware analysiert. Im Anschluß fragt das Tool dann noch nach evtl. benötigter Unterstützung für gerade nicht angeschlossene Geräte und baut nach diesen Vorgaben einen exakt auf die Hardware zugeschnittenen Kernel. Wäre doch spitze, oder?

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Warum sollte das nicht umzusetzen sein?

Im Prinzip musst du nur hwdetect (Arch) mit genkernel (gentoo) verheiraten. Das sind die ersten Programme, die mir dazu einfallen, gibt sicher noch andere.

Cleanblue

Avatar von Cleanblue

Anmeldungsdatum:
8. September 2006

Beiträge: 479

Wäre das eigentlich effektiv oder überhaupt sinnvoll? Schließlich würden dann nicht meh alle .deb pakte funktionieren, oder?

eisbaer006

Anmeldungsdatum:
7. November 2006

Beiträge: 534

nunja das ist die frage...
man kann sich ja die software dann
als quellcode holen und selber compilieren.

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Cleanblue hat geschrieben:

Wäre das eigentlich effektiv oder überhaupt sinnvoll? Schließlich würden dann nicht meh alle .deb pakte funktionieren, oder?

Unter Umständen nicht, aber dafür will nordlicht.ol ja eine Abfrage einbauen für Kernelfunktionen, die sich nicht aus der Hardware ergeben. Sicherlich der aufwändigste Teil.

Thorsten_Reinbold Team-Icon

(Themenstarter)

Anmeldungsdatum:
10. Juli 2006

Beiträge: 4784

Eben das dürfte das Problem sein. Da müsste derart viel an Infos rein...das wäre eine echte Mammutaufgabe. Genial wäre das allerdings schon... wäre doch toll wenn eine Distri schon während der Installation einen derart optimierten Kernel quasi automatisch mitinstallieren würde. Vielleicht kommt sowas ja eines Tages noch...

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Die Frage ist doch, was bringt dir diese Optimierung.

Sicher du sparst grob geschätzt 10 MB Festplattenspeicher, bezahlst diese 10 MB aber mit totaler Unflexibilität. Was wenn du doch mal eine Soundkarte kaufst? Dann muss immer gleich ein neuer Kernel her.

Die Startzeit für einen modulierten Kernel ggü. einem voll monolitischen ist ein paar Millisekunden höher. Hast du auch nur einmal eine Wartezeit, weil du einen neuen Kernel kompilieren musst, bekommst du das nie wieder rein. Sooft kannst du den dein ganzes Leben lang nicht starten.

Wenn das Modul mal geladen ist, ist es dem Kernel herzlich egal ob es fest einkompiliert ist oder nicht. Für Veränderungen musst du ihn dann auch jedes Mal wieder neu starten.

Also aus ästhetischen Gründen kann man sowas durchaus machen, rationale gibt es nicht.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Wie adun bereits schrieb, macht das Anpassen des Kernels für die eigene Hardware wenig bis gar keinen Sinn. Moderne Kernel sind modularisiert, es liegen also sowieso nur die benötigten Treiber im RAM. Der Rest liegt zwar auf der Platte, aber mal ehrlich, was machen denn 50 - 100 MB bei 200 GB Platten aus?

Sinnvoll ist das Kompilieren eines eigenen Kernels nur dann, wenn man spezielle Kernelfeatures einbauen möchte, die normalerweise nicht in normale Distributionsbuilds einkompiliert werden. Die Entscheidung, ob man solche Features braucht, kann ein Programm allerdings eh nicht übernehmen, da das eine individuelle Entscheidung ist. Woher z.B. soll den ein Programm wissen, ob du z.B. DM_SNAPSHOT oder NO_HZ einbauen möchtest? Diese Features haben ja nichts mit der Hardware zu tun, sondern ergeben sich aus individuelle Anforderungen, die ein Programm ja niemals erahnen kann. Wer weiß, vielleicht gibt es auch Leute, die einen Kernel ohne FUTEX bauen möchten, woher soll ein Programm das den wissen?

Außerdem ist die Kernelkonfiguration im Bezug auf Hardware nicht wirklich schwierig. Mit lshw, lspci und lsusb ist die eingebaute Hardware schnell identifiziert. Die Zuordnung zu den richtigen Treiber ist auch nicht wirklich fordernd, besitzen doch die meisten wichtigen Treiber entsprechend aufschlussreiche Namen und ausführliche Beschreibungen.

Ich zumindest hatte noch nie Hardware-Probleme mit einen selbst gebauten Kernel. Problematisch war vielmehr Software wie Virtual Box, die sich mit bestimmten Kernelfeatures (in diesem Fall NO_HZ) nicht vertrug. Aber das kann man aufgrund der Vielfalt der Abhängigkeiten und Kernelfeatures eh schwer programmatisch verhindern.

just my 2 cents
lunar

Thorsten_Reinbold Team-Icon

(Themenstarter)

Anmeldungsdatum:
10. Juli 2006

Beiträge: 4784

Da ich einen Laptop verwende und somit der Austausch von GraKa/Soundkarte extrem unwahrscheinlich ist, macht das Ganze für mich durchaus sinn. Ausserdem ist der von mir selbst angepasste Kern durchaus flotter, was ich z.B. an schnellerem Reaktionsverhalten merke. Gute Gründe für einen selbstgebackenen Kernel gibt es durchaus...auch wenn das ganze auf einem (erweiterbarem) Desktoprechner natürlich mit dem Risiko der geringeren Flexibilität einhergeht. Andererseits: wäre so ein Tool verfügbar, könnte man bei anstehenden Umbauten die unterstützung auch flott wieder aktivieren. Wäre halt nur ein geringfügig höherer Zeitaufwand.

adun Team-Icon

Avatar von adun

Anmeldungsdatum:
29. März 2005

Beiträge: 8606

Lunar hat geschrieben:

Die Zuordnung zu den richtigen Treiber ist auch nicht wirklich fordernd, besitzen doch die meisten wichtigen Treiber entsprechend aufschlussreiche Namen und ausführliche Beschreibungen.

Also bei Mainboards kann das schon mal lustig werden, gerade weil es sehr viele Optionen gibt, da hab ich dann auch so manches mal lieber ein M mehr gesetzt als unbedingt notwendig. Liegt aber auch an der Struktur der ncurses Oberfläche. 😉

google.de/linux hilft.

Edit: Das ein selbst kompilierter nicht besser sein kann, habe ich nie behauptet, nur liegt das bei mir (und vielen anderen) nicht generell an der Modularisierung. Mein selbstgebastelter modularisierter Kernel war immer genauso wie der nichtmodularisierte.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

adun hat geschrieben:

Lunar hat geschrieben:

Die Zuordnung zu den richtigen Treiber ist auch nicht wirklich fordernd, besitzen doch die meisten wichtigen Treiber entsprechend aufschlussreiche Namen und ausführliche Beschreibungen.

Also bei Mainboards kann das schon mal lustig werden, gerade weil es sehr viele Optionen gibt, da hab ich dann auch so manches mal lieber ein M mehr gesetzt als unbedingt notwendig. Liegt aber auch an der Struktur der ncurses Oberfläche. 😉

Genau deswegen verwendet man ja auch xconfig/gconfig... die sind einfach übersichtlicher.

adun hat geschrieben:

Edit: Das ein selbst kompilierter nicht besser sein kann, habe ich nie behauptet, nur liegt das bei mir (und vielen anderen) nicht generell an der Modularisierung.

Es liegt wohl eher daran, dass man bei selbstkompilierten Kerneln Dinge ausschalten kann, die man normalerweise nicht braucht (Debugging-Features), und andere einschalten kann, die zwar nicht zu einer wirklichen Beschleunigung führen, aber das System interaktiver (also gefühlt schneller) machen. Dazu gehören z.B. die Tickless Timer oder andere Scheduler (wie CFQ und CFS).

adun hat geschrieben:

Mein selbstgebastelter modularisierter Kernel war immer genauso wie der nichtmodularisierte.

Bis auf die Tatsache, dass man in manchen Setups (z.B. / auf LVM) sowieso eine initrd braucht, und ein statischer Kernel deswegen mehr oder weniger sinnlos ist.

Sigma7

Avatar von Sigma7

Anmeldungsdatum:
25. Oktober 2007

Beiträge: 438

Ich hatte schon oft Probleme, dass ich Programm z nicht kompilieren/starten konnte, weil Kernelfeature x gefehlt hat... wie soll ein automatisches Kernelkonfigurier-Programm so etwas rausfinden. So weit sind wir mit der KI leider noch nicht ☹ oder das programm bräcute einen gigantischen Wartungsaufwand.

Thorsten_Reinbold Team-Icon

(Themenstarter)

Anmeldungsdatum:
10. Juli 2006

Beiträge: 4784

Nichtsdesto trotz...einen selbstgemachten Kernel finde ich dennoch prima. Nicht nur das man beim durchforsten der möglichen Optionen viel über die Hardware und das System herrausfindet, es lässt sich auch eine Menge am Reaktionsverhalten machen und sogar Fehler beheben. Erst seit ein paar Anpassungen am Standardkernel läuft bei mir der Suspendmodus einwandfrei. Schade nur daß ich bislang auf keine gute Seite gestossen bin die Großteile der möglichen Optionen genauer erklären und evtl. sogar Tips geben.

Sigma7

Avatar von Sigma7

Anmeldungsdatum:
25. Oktober 2007

Beiträge: 438

Eine gute Seite um viel über Kernel (Linux) zu lernen:
www.gentoo.org
😀

Ich fands am Anfang auch ziemlich verwirrend... aber bei vielen Optionen stehen ja auch Hilfetexte etc. dabei

cornix Team-Icon

Avatar von cornix

Anmeldungsdatum:
9. März 2007

Beiträge: 4763

Lunar Linux ist eine Source-Distribution, die (soweit ich es verstanden habe) schon bei der Installation Hilfsmittel bereitstellt, einen optimierten Kernel zu bauen und zu installieren. Weitere Software wird auf diesen Kernel optimiert kompiliert und installiert. Ist auf jeden Fall etwas, was ich mir bei Zeiten näher ansehen werde.

Gruß, cornix

Antworten |