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.
kernel
configuration
linux-kernel
vprisivko
quelle
quelle
lspci
,lsusb
,/proc/cpuinfo
usw. 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.make localmodconfig
ist eine einfache Lösung. Darüber hinaus gibt es einige (wahrscheinlich veraltete) Tools wie cateee.net/autokernconf ./
). Noch wichtiger ist vielleicht: Der Code, den Sie nicht [kompiliert und installiert] haben, kann Ihnen keinen Schaden zufügen.Antworten:
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.
quelle
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.
quelle
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.
quelle