Automatisches Kernel-Konfigurationstool

9

Gibt es ein entwickeltes automatisches Linux-Kernel-Konfigurationstool?

Ich habe eine Methode gefunden make localmodconfig, aber sie ist sicherlich sehr begrenzt. Ich habe im Internet gesucht, bin aber leider zu keinem akzeptablen Ergebnis gekommen.

Obwohl ich mit Kernel-Konfigurationsproblemen ziemlich vertraut bin, möchte ich meine Zeit für die Konfiguration jedes neuen Systems mit bestimmter Hardware optimieren, da dies eher technische als kreative Arbeit ist.

vprisivko
quelle
3
Du meinst , wie etwas , das Zeug aus analysieren würde lspci, lsusb, /proc/cpuinfousw. und legen Sie die entsprechenden Optionen in einer Konfigurationsdatei? Ich bin mir nicht sicher, ob es wirklich eine große Nachfrage dafür gibt, da generische modulare Kernel gut für Leute funktionieren, die nicht herumspielen wollen, und es ist schwer zu erkennen, welchen Unterschied das am Ende machen würde.
Goldlöckchen
1
Die Verwendung eines generischen Kernels aus Ihrer Linux-Distribution und die anschließende Ausführung make localmodconfigist eine einfache Lösung. Darüber hinaus gibt es einige (wahrscheinlich veraltete) Tools wie cateee.net/autokernconf .
Jofel
@goldilocks Der Unterschied liegt in der Größe und damit auch in der Zeit, die für das Laden des Kernels aufgewendet wird - was wichtig ist, wenn Sie auf einen schnellen Start abzielen (natürlich müssen einige Dinge kompiliert werden, zumindest um das aufzurufen /). Noch wichtiger ist vielleicht: Der Code, den Sie nicht [kompiliert und installiert] haben, kann Ihnen keinen Schaden zufügen.
Peterph
Wenn Sie die Kernelkonfiguration als Zeitverschwendung betrachten, tun Sie dies nicht, sondern bleiben Sie bei einer generischen. Es gibt wirklich nicht so viel zu gewinnen, wenn Sie Ihren eigenen Kernel erstellen. Es gibt nur wenige Anwendungsfälle, in denen ein "optimierter" Kernel eine deutlich bessere Leistung erzielt als ein "funktionierender" Kernel.
Bananguin
@ user1129682 Vielleicht würde ich mich für einen generischen Kernel entscheiden, aber könnten Sie Hinweise geben, dass die Leistung nicht beeinträchtigt wird?
vprisivko

Antworten:

4

Nun, da wir in den Kommentaren ein wenig darüber gesprochen haben, lautet die Antwort für Sie: Nein, das gibt es nicht.

Der Hauptgrund für diese Schlussfolgerung ist, dass Sie meines Erachtens nicht nach einem Tool zum Konfigurieren eines Kernels suchen , sondern den Kernel automatisch für Ihren spezifischen (und dennoch nicht angegebenen) Anwendungsfall optimieren.

Wie in den Kommentaren angegeben, können Sie nicht benötigte Treiber überspringen und die gewünschten Treiber statisch im Kernel kompilieren. Das spart Ihnen einige Zeit während des Startvorgangs, aber nicht danach, da der wichtige Code der gleiche ist, egal ob eingebaut oder Modul.

Kernel-Tuning

Der Kernel bietet einige Alternativen, Sie haben Scheduler selbst erwähnt. Welcher Scheduler für Sie am besten geeignet ist, hängt von Ihrem Anwendungsfall, den von Ihnen verwendeten Anwendungen und der Last und Art der Last ab, die Sie auf Ihr System übertragen. Kein Installations- und Ausführungsprogramm wird den besten Planer für Sie bestimmen, wenn es überhaupt so etwas gibt.

Gleiches gilt für Puffer und Puffergrößen. Außerdem werden oder können viele (die meisten?) Einstellungen zur Laufzeit und nicht zur Kompilierungszeit festgelegt werden.

Optimale Build-Optionen

Auch ohne Automatisierung können Sie die Build-Optionen beim Kompilieren des Kernels optimieren, wenn Sie über eine sehr spezialisierte CPU verfügen. Ich kenne die Buildroot-Umgebung, die Ihnen einen guten Rahmen dafür bietet. Dies kann Ihnen auch helfen, wenn Sie dasselbe Betriebssystem für viele Plattformen erstellen möchten. Dies hilft Ihnen zwar beim Erstellen, automatisiert jedoch nicht die Kerneloptimierung.

Deshalb fordern ich und andere Sie auf, einen generischen Kernel zu verwenden. Ohne ein spezielles Problem zur Lösung lohnt es sich nicht, einen eigenen Kernel zu erstellen. Vielleicht können Sie mehr Hilfe erhalten, indem Sie das Problem identifizieren / angeben, das Sie lösen möchten.

Bananguin
quelle
Danke für die Antwort, es scheint wahr zu sein. Aber was ist mit dem CPU-Typ, wenn Sie keine sehr spezialisierte CPU haben? Lohnt es sich, mindestens diese Option manuell zu konfigurieren?
Vprisivko
Hängt von Ihrer CPU ab. Ich würde vermuten, dass die gernerischen x86- und x86_64-Kernel im Allgemeinen für die anderen ausreichen, kann ich nicht sagen.
Bananguin
@Bananguin Buildroot scheint keine optimalen Build-Optionen für die Definition der optimalen Compiler-Optionen zu bieten, um den am schnellsten laufenden Code zu erhalten (= Auswahl des Compiler-Flags). Buildroot automatisiert den Erstellungsprozess Ihres eingebetteten Systems und vereinfacht den Cross-Compilation-Prozess .
Pro Backup
@ProBackup: Ich habe nie gesagt, dass es optimale Build-Optionen bietet. Ich sagte, es ist ein Framework zur Optimierung der Build-Optionen. Nur weil Sie damit Optionen explizit festlegen können, die für Sie festgelegt wurden (oder gar nicht verfügbar sind), wenn Sie einen Kernel nativ erstellen.
Bananguin
1

Wenn Sie sich Gedanken über die Startzeit machen, ist die Kernel-Ladezeit ein Bruchteil davon. Sorgen Sie sich darum, was später passiert. Verwenden Sie z. B. systemd , um den Start durch Paralellieren zu beschleunigen, konfigurieren Sie, dass keine nutzlosen Daemons ausgeführt werden. Systemd verfügt über Tools zum Analysieren der Startzeiten. Wenn die Sorge Platz ist, sind Festplatten billig.

Ihre Zeit, um herumzuschnüffeln, die unzähligen Konfigurationen einzurichten, den richtigen Kernel für jeden Computer zu finden, Konfigurationen zu korrigieren / neu zu kompilieren, wenn sich etwas ändert, ... ist viel wertvoller als ein paar Sekunden, die beim Booten eingespart wurden.

vonbrand
quelle
Der Startvorgang ist auch ohne systemd kein Problem - siehe verschiedene Websites, die diesen systemd-Mythos entlarvt haben. Ich denke, Sie haben die Frage möglicherweise falsch verstanden - die Frage war, ob die KERNEL-Konfiguration weniger langwierig ist und nicht, was zu einem späteren Zeitpunkt passiert: "Ich möchte meine Zeit für die Konfiguration jedes neuen Systems mit bestimmter Hardware optimieren" und meine Verwendung Fall ist sehr ähnlich. Nicht das gleiche, aber ähnlich. Ich brauche auch ein Tool, um die Konfiguration zu vereinfachen. Ich würde auch vorschlagen, anderen nicht zu sagen, wie SIE ihre Zeit verbringen - stattdessen konzentrieren Sie sich auf das vorliegende Problem.
Shevy
0

Die obigen Antworten sind größtenteils ziemlich schrecklich und nutzlos. Niemand schlug wirklich eine Lösung vor.

Ich suchte auch im Internet und versuchte, einen "automatischen Linux-Kernel-Konfigurator" zu finden - so kam ich zu der hier gestellten Frage, und zu meiner Traurigkeit gab niemand wirklich eine gute Antwort, wie dies gelöst werden würde. nur theoretische an sich oder, schlimmer noch, die Aussage, dass dies nicht möglich ist.

Mein Anwendungsfall war allerdings etwas anders; Ich habe mich weniger darum gekümmert, den Kernel automatisch auf die angegebene Hardware abzustimmen, obwohl das auch schön ist. Mein Anwendungsfall war hauptsächlich, weil "make menuconfig" für mich viel zu lange dauert. Es gibt immer mehr Kernel-Optionen und das Finden, was ich brauche, dauert über die ncurses-Schnittstelle viel zu lange (und die qt-Schnittstelle ist noch schlimmer).

Soweit ich es verstanden habe, ist die gesamte Kernel-Konfiguration eine Datei, für die Sie "y" für yes und "n" für no haben - auch bekannt als Aktivierungs- oder Deaktivierungsfunktion. So können wir dies mit vernünftigen Programmiersprachen wie Ruby und Python leicht automatisch generieren.

Ich glaube, sobald ein solches Tool existiert, ist es nicht so schwierig, es in verschiedene Profile zu optimieren. Normalerweise kopieren Benutzer die alte Konfiguration als Backup nach / boot / und verwenden sie auch für neue Kernelkonfigurationsläufe.

Möglicherweise schreibe ich irgendwann einen automatischen Kernel-Konfigurator, aber dies erfordert offensichtlich einige Zeit, einige Tests ... Wenn ich fertig bin, wird er in einem meiner Ruby-Projekte verfügbar sein, mit Dokumentation, damit andere ihn in andere Sprachen portieren können, wenn sie dies möchten würde gerne. Ich ermutige auch alle anderen, diese alte Frage hier zu sehen und die ziemlich nutzlosen Botschaften der Entmutigung aufzugeben, diese Neinsager einfach zu ignorieren und stattdessen gemeinsam zu helfen, die Notwendigkeit der manuellen Optimierung für die Kernelkonfiguration in loszuwerden Allgemeines. Am Tag der KI sollte dies wirklich etwas sein, das gelöst werden kann.

Und vielleicht werden wir auf lange Sicht BESSERE Antworten und tatsächliche Lösungen für dieses Problem erhalten.

Shevy
quelle