# Kernel automatisch konfigurieren/anpassen

## LinuxTom

Hi Leute,

gibt es vielleicht ein Script, dass mir die Kernel-config an meine gerade im Rechner steckende Hardware anpassen kann?

Danke & Gruß

Thomas

----------

## Max Steel

Gibts bestimmt... sys-apps/brain-1.0.0 hat sowas *hust*

Spaß beiseite, am einfachsten ist es sicherlich alles als Module zu bauen und dann per initrd die benötigten Module nachzuladen...

Was komplett automatisiertes um die kernel-config nur für die entsprechende Hardware zu baun kenne ich selbst nicht.

----------

## bell

Du kannst keinen Kernel voll-automatisch konfigurieren. Denn neben den Hardware-Abhängigen Einstellungen müssen auch noch von der Distribution geforderten Einstellungen gemacht werden (zB. DEVTMPFS), Einstellungen nach eigenen Vorliebe (zB. Dateisysteme, Scheduler) und nach dem Einsatz-Zweck optional benötigte Module (zB. xtables+iptables für Firewall).

Also musst Du schon mit sys-apps/brain-1.0.0 ran. Eine gute Hilfe für den Einstieg in das Thema ist http://kernel-seeds.org/

----------

## LinuxTom

Mir geht es in erster Linie um eine Vorselektion der Hardware. Dass ich dann Gentoo-Spezifische Sachen oder gar Software (Filesystem, welche USB-Geräte, Netzwerke usw) nachjustieren muss ist klar.

----------

## bell

Die Vorselektion ist unter http://kernel-seeds.org/working.html beschrieben.

----------

## Finswimmer

http://www.heise.de/open/artikel/Linux-Kernel-massgeschneidert-1402386.html

Wie gut "make localmodconfig" nun wirklich funktioniert weiß ich allerdings nicht, da ich es noch nie genutzt habe.

----------

## Christian99

für hardwarekonfiguration kann ich das hier empfehlen: http://kmuto.jp/debian/hcl/

EDIT: das ist die Seite, die auch auf der kernelseeds seite verlinkt ist, sorry, hab erst hinterher die anderen links durchgeschaut...

----------

## bell

Nette Sache das mit localmodconfig!

```
cp .config .config-bak

make localmodconfig

meld .config-bak .config   #Prüfen und ggf. Punkte wieder aktivieren

make oldconfig                # Konsistenz nach manuellen Änderungen

make
```

Endlich eine Möglichkeit mal den Kernel "richtig" aufzuräumen!

EDIT: Bin durch. Das /lib/modules/3.5.7-gentoo ist jetzt von 60M auf 33M geschrumpft. Der Kernel ist 0,5 MB leichter geworden. Bin bespannt auf den nächsten Reboot!

----------

## LinuxTom

 *bell wrote:*   

> Bin bespannt auf den nächsten Reboot!

 

Und wie war der Reboot? Ich will das jetzt nämlich auch mal ausprobieren.

----------

## bell

Der Reboot lief ohne Probleme. Im Nachhinein fehlten dann doch noch ein Paar Treiber, die nicht oft verwendet werden. zB. TUN/TAP für OpenVPN und PPP für UMTS. Diese habe ich dann nachträglich wieder aktiviert.

Wo ich Bedenken hatte war dass localmodconfig einiges der Iptables-Module deaktiviert hat. Aber Iptables läuft weiterhin ohne Probleme. Anscheinend wurden diese Module doch nicht gebraucht.

Ich kann es nur empfehlen. Auch wenn man anschließend doch wieder was aktivieren muss, so hat es den Vorteil dass man anschließend wirklich weiß was man im Kernel wofür braucht.

----------

## Schorchgrinder

@bell

sicher das deine /lib/modules von 60MiB auf 30 MiB runter sind?

Bei mir ist bei allen noch installierten Sources der Platz wie folgt belegt:

```
1,9M    3.3.0-gentoo

1,9M    insgesamt

2,9M    3.5.3-gentoo

2,9M    insgesamt

3,0M    3.6.0-gentoo/

3,0M    insgesamt

3,1M    3.6.6-gentoo/

3,1M    insgesamt

```

----------

## root_tux_linux

 *bell wrote:*   

> Der Reboot lief ohne Probleme. Im Nachhinein fehlten dann doch noch ein Paar Treiber, die nicht oft verwendet werden. zB. TUN/TAP für OpenVPN und PPP für UMTS. Diese habe ich dann nachträglich wieder aktiviert.
> 
> Wo ich Bedenken hatte war dass localmodconfig einiges der Iptables-Module deaktiviert hat. Aber Iptables läuft weiterhin ohne Probleme. Anscheinend wurden diese Module doch nicht gebraucht.
> 
> Ich kann es nur empfehlen. Auch wenn man anschließend doch wieder was aktivieren muss, so hat es den Vorteil dass man anschließend wirklich weiß was man im Kernel wofür braucht.

 

Naja, 33 MB sind schon massig, im gegensatz zu nem von Hand optimierten Kernel!!!

In meinem Fall wären es gerade mal 6MB im /lib/modules/*-gentoo

Mit Nvidia-Drivers und Virtualbox-Modules

```
gentoo ~ # du -sh /lib/modules/3.6.8-gentoo/

21M     /lib/modules/3.6.8-gentoo/

gentoo ~ #
```

```
gentoo ~ # du -sh /lib/modules/3.6.8-gentoo/video/nvidia.ko 

13M     /lib/modules/3.6.8-gentoo/video/nvidia.ko

gentoo ~ # 

```

```
gentoo ~ # du -sh /lib/modules/3.6.8-gentoo/misc/vbox*

1.9M    /lib/modules/3.6.8-gentoo/misc/vboxdrv.ko

12K     /lib/modules/3.6.8-gentoo/misc/vboxnetadp.ko

32K     /lib/modules/3.6.8-gentoo/misc/vboxnetflt.ko

32K     /lib/modules/3.6.8-gentoo/misc/vboxpci.ko

gentoo ~ # 

```

----------

## bell

Ok, da hatte ich nicht differenziert. Natürlich sind da auch externe Module mit drinne, wie nvidia, vmware und WLAN. Ich kann genauere Zahlen liefern, wenn ich an dem Rechner wieder dran bin. Dazu zu sagen ist dass es eine relativ junge Installation ist, wo ich bisher bis auf die CPU und die zum Booten benötigte Dinge noch nichts optimiert habe. Insofern war das Aufräumen um die Hälfte in einem Rutsch schon ein Erfolg.

Ich mache es auch gleich mit meinem Desktop. Da hatte ich schon etwas mehr aufgeräumt. Ausgangsbasis: 34 MB, btw. nur aus den Sources: (/lib/modules/3.5.7-gentoo/kernel/) 17 MB.

EDIT: Ergebnis: nicht nennenswert: Weiterhin gerundet 34 MB / 17 MB.

Um das ganze auf 3 MB runterzukriegen benötige ich wohl sys-apps/brain-2.0.0, was ich aktuell nicht habe. Eine Möglichkeit wäre natürlich alles in den Kernel zu packen. Dann wäre das Modules-Verzeichnis kleiner. Aber mein Motto ist alles als Modul soweit wie möglich zu halten. Der Kernel selbst ist aktuell 2,1 MB.

----------

## arfe

Was wird denn das? Soll es einen kleinen Kernel geben oder sowenig Modules wie möglich?

Letzteres macht wenig Sinn mit Ausnahme wenn man die Module nicht braucht. Hat man

dann alles anstatt als Module im Kernel drin, wird der Kernel logischerweise größer.

```

3.6.8 # cd /lib/modules/3.6.8

murphy 3.6.8 # du -sch .

28M     .

28M     total
```

28M sind dabei wirklich nur die Module, die ich auch tatsächlich brauche bzw geladen werden,

wenn es von Nöten ist wie z.B. USB.

----------

## Randy Andy

 *arfe wrote:*   

> Was wird denn das? Soll es einen kleinen Kernel geben oder sowenig Modules wie möglich?

 

arfe, was das wird?

Ich würde sagen: Ball verkehrt, oder so... 

Die heutige Challenge lautet: Wer hat den Kleinsten  :Laughing: 

Da möchte ich natürlich nicht länger hinten anstehen und präsentiere voller Stolz meinen Kleinen.

```
du -sh /lib/modules/3.6.8-gentoo/

20M     /lib/modules/3.6.8-gentoo/

big-server andy # du -sh /lib/modules/3.6.8-gentoo/video/nvidia.ko

13M     /lib/modules/3.6.8-gentoo/video/nvidia.ko

big-server andy # du -sh /lib/modules/3.6.8-gentoo/misc/vbox*

1,9M    /lib/modules/3.6.8-gentoo/misc/vboxdrv.ko

240K    /lib/modules/3.6.8-gentoo/misc/vboxguest.ko

12K     /lib/modules/3.6.8-gentoo/misc/vboxnetadp.ko

28K     /lib/modules/3.6.8-gentoo/misc/vboxnetflt.ko

24K     /lib/modules/3.6.8-gentoo/misc/vboxpci.ko

56K     /lib/modules/3.6.8-gentoo/misc/vboxsf.ko
```

Sicher geht's auch noch deutlich kleiner, mal sehen wer als nächster blank zieht   :Laughing: 

Aber da ja jeder Vergleich hinkt, müsste man eigentlich verschiedene Kategorien zum Vergleich festlegen wie z.B. Prozessorfamilie, externe Module müsste man der gerechteren Vergleichbarkeit wegen ja eigentlich auch ausklammern, von wegen der balance of performance, gelle.   :Wink: 

Bei meinem o.a. handelt es sich um einen Abkömmling aus der x86_64 Familie, auch landläufig als amd64 bekannt.

Erheiterten Gruß, Andy.

----------

## bell

Naja, das Thema ist doch wie man einen Kernel am besten an seine eigenen Bedürfnisse anpasst. Dazu gehört, dass im Kernel nur das drin ist was man braucht und was man nicht braucht draussen ist. Ich war von der Möglichkeit begeistert, dass es eine automatische Möglichkeit gibt alles was "zum Zeitpunkt X" nicht in Gebrauch ist aus dem Kernel zu schmeißen. Damit nähert man sich schon dem Ideal-Kernel. Anschließend muss ich mich danach nur mit den Optionen ausseinander setzen, die ggf. doch benötigt werden. 

Die Größe des Kernels/Module-Verzeichnisses sah ich relativ, also als Vergleich für vorher-nachher. Also als Indikator für den Erfolg der Prozedur oder andersherum für das Unangepasst-sein des Kernels davor.  Ich kann mit meinem 34 großen ganz gut leben. Am PC hat die Prozedur auch nichts dran geändert, denn der war schon vorher mühselig optimiert. Aber die anfänglichen 60 MB am Laptop waren einfach zu lang.

----------

## Josef.95

Hm, meiner Meinung nach ist es schwieriger und aufwändiger einen vorhandenen Kernel auf das nötigste "abzuspecken" (wozu auch, nur um ein paar MB zu sparen...?)

Bisher hab ich meist mit der defconfig angefangen, und dort nur das deaktiviert was sicher nicht benötigt wird, und aktiviert was für die aktuelle Hardware benötigt wird - damit bin ich bisher immer gut gefahren.

----------

## arfe

 *Randy Andy wrote:*   

>  *arfe wrote:*   Was wird denn das? Soll es einen kleinen Kernel geben oder sowenig Modules wie möglich? 
> 
> arfe, was das wird?
> 
> Ich würde sagen: Ball verkehrt, oder so... 
> ...

 

Du solltest am besten nochmal genau meine Erklärung und Erläuterung genau lesen.

Das das Unsinn ist, weiß Du sicherlich auch. Aber das hatte ich bereits oben genau erläutert und Josef.95 hat völlig recht.

----------

## Randy Andy

Klar war das Blödsinn, ich wollte den thread einfach homorvoll abrunden.

Leider hatte ich den thread eh zu spät entdeckt, um den mir bereits seit Einführung bekannten "make localmodconfig" Tipp beisteuern zu können.

Auch sonst schienen mir die meisten sachlichen Argumente bereits genannt worden zu sein.

Ich hab mich seinerzeit bei der Erstellung meines ersten kernels Tagelang durch manpages, kenel newbee Seiten und erst viel später durch das überaus hilfreiche Pappys kernel-seeds gewühlt, bis ich soweit war meinen eigenen minimalen kernel, mit maximal von mir benötigter Funktionalität zu erstellen.

localmodeconfig kam erst Jahre später und als ich davon hörte dachte ich auch: "Sowas hätt's zu meiner Zeit mal geben sollen", doch vermulich hat Josef recht damit, dass es mehr Arbeit macht einen vorhandenen/generischen kernel abzuspecken, als gleich nur das zu konfigurieren was man braucht.

Vergleichbares hab ich schon mal auf anderer Ebene erlebt. IMHO macht es viel mehr Arbeit aus einem aufgeblähten installierten Sabayon zu versuchen ein minimalistisches Gentoo, optimal angepasst an die verwendete Hardware, zu erstellen.

Zurück zur kernel.config fällt mir noch ein weiterer Nachteil auf. Manchmal möchte man vielleicht bestimmte Designentscheidungen abweichend von seinem vorgefertigten abzuspeckenden kernel treffen, derer man so eben nicht Gewahr wird. 

Beispiele wie scheduler, cgroups, preemtion model, memory model, Timer frequency, Virtualization, filesystem & notify support, nls kommen mir da z.B. in den Sinn.

So, hoffe das war nun doch noch was konstruktives zum Thema und meinetwegen wieder zurück zum sachlichen Part  :Wink: 

Gruß, Andy.

----------

## root_tux_linux

 *Randy Andy wrote:*   

> 
> 
> Vergleichbares hab ich schon mal auf anderer Ebene erlebt. IMHO macht es viel mehr Arbeit aus einem aufgeblähten installierten Sabayon zu versuchen ein minimalistisches Gentoo, optimal angepasst an die verwendete Hardware, zu erstellen. 
> 
> Gruß, Andy.

 

Das stimmt allerdings  :Wink: 

Mein Sabayon Ausflug endete nachdem der Sabayon Installer abbrach, weil die / Partition keine 10 oder warens 15GB hat, was ja Minimum ist für Sabayon, also vor paar Jahren als Sabayon noch "neu" war.  :Smile: 

----------

