• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Wo steht, welche Kernel-Module geladen werden?

zwirni

Member
Hallo zusammen,

ich habe folgendes Problem:
Mein neuer PC verfügt noch nicht über ein DVD-Laufwerk. Da das Booten von USB-Stick nicht geklappt hat, habe ich kurzerhand die Festplatte in den alten PC eingebaut, openSUSE 11.4 dort ganz normal installiert und die Platte in den neuen PC eingebaut.
Das ganze läuft auch wunderbar, Problem ist nur, dass ein paar Kernelmodule zu viel geladen werden - z.B. das nouveau Modul für die Nvidia Grafikkarte im alten PC, sata_nv, ...
Wie werde ich die Module wieder los? Ich kann sie als root per rmmod entfernen, aber das ist ja nicht Sinn der Sache... Muss ich dazu die Dateien in /etc/modprobe.d ändern?

Danke und Gruß,
der Zwirni
 
A

Anonymous

Gast
zwirni schrieb:
Problem ist nur, dass ein paar Kernelmodule zu viel geladen werden - z.B. das nouveau Modul für die Nvidia Grafikkarte im alten PC, sata_nv, ...
Wie werde ich die Module wieder los? Ich kann sie als root per rmmod entfernen, aber das ist ja nicht Sinn der Sache... Muss ich dazu die Dateien in /etc/modprobe.d ändern?

unter /etc/modprobe werden nur die Modulaliase bestimmt, einigen Modulen spezielle default Parametern verpasst, und festgelegt was er auf gar keinen Fall laden sollte, weil zB diese Module nicht sauber funktionieren, oder weil man für ein bestimmtes Gerät mehrere Treiber hat, und man verhindern muss, das neben dem Treiber den man haben will auch noch ein anderer Treiber geladen wird.
Was geladen wird, steht dort nicht drin.

die meisten Module werden geladen wenn sie benötigt werden. Ein paar Ausnahmen:
  • 1. Die initrd benötigt ein paar Module um erst einmal die Platte, das eventuelle logische Device wo das Rootfilesystem drauf ist und das Filesystem des root Filesystem selbst anzusprechen. Diese Module werden schon beim Start innerhalb der initrd geladen
    2. In seltenen Fällen muss dem System gesagt werden, das beim booten automatisch spezielle Treiber zu laden sind.
    3. Einige Scripte, insbesondere Startscripte laden Module ob sie nun benötigt werden oder nicht.


zu 1. Dazu gibt es eine Konfiguration /etc/sysconfigure/kernel Variable INITRD_MODULES und außerdem ist es zumindests bei Suse so, das beim Erstellen der initrd das System untersucht wird, welche Module hier zwingend benötigt werden, damit die initrd den Zugang zum Rootfilesystem herstellen sicher kann. Das erfolgt während der Erstellung der initrd. Nach einer Aktion wie du sie gemacht hast, muss (sonst geht machmal gar nichts) oder sollte auf alle Fälle diese Konfiguration mal überprüft werden und eine neue initrd erzeugt werden.
Erzeugen einer neuer initrd , entweder mit "mkinitrd" oder einen Kernelupdate machen, da wird das automatisch mit gemacht.

zu 2. Steht in /etc/sysconfigure/kernel unter Variable MODULES_LOADED_ON_BOOT Suse schreibt dort aber per default glaube ich nichts hin, sollten also nur eventuelle eigene spezifische Änderungen dort zu finden sein. Würde man benötigen wenn ein benötigter Treiber sich aus irgend einem Grund nicht automatisch laden würde.

zu 3. Sollte es sich um "saubere" Bootscripte handeln, dann sollte ein solches Modul unterhalb von /etc/sysconfigure/ mit dem Namen des Dienstes der gestartet wird, in analoger Art wie oben beschrieben, konfiguriert sein.

Bei dem Grafiktreiber der dort bei dir scheinbar zu viel geladen wird, halte ich mich mal mangels Ahnung raus, normalerweise sollte das xorg regeln, früher gab es da auch Konfigurationsdateien, nur ist das mittlerweile so, das das xorg seine Konfiguration beim starten auch ohne Konfigurationsdateien selber zusammenbaut. Vielleicht kann dir da ein anderer einen Tip geben. Die spartanischen Grafikkarten auf meinen Rechnern brauchen keine Konfiguration. ;)

robi
 

josef-wien

Ultimate Guru
Der Default-Wert NO_KMS_IN_INITRD="no" in /etc/sysconfig[ohne ure]/kernel veranlaßt, daß auch der Grafikkarten-Treiber in initrd enthalten ist. *) Du solltest INITRD_MODULES vorsichtig bereinigen und - wie robi schon schrieb - eine neue initrd erstellen; wenn Du dann noch aus Deiner Sicht "unnötige" Module geladen hast, teile sie uns mit.

*) Zumindest bei ATI-Karten wird hier - im Gegensatz zum Namen der Variablen und zum Kommentar - nur festgelegt, ob das Modul in initrd enthalten ist oder nicht, KMS wird mit dieser Variablen nicht gesteuert.
 
OP
Z

zwirni

Member
Perfekt, läuft :)
Ich hab die beiden Module sata_nv und pata_amd aus der /etc/sysconfig/kernel gelöscht und ne neue initrd erstellt. Dabei ist dann auch das nouveau Kernelmodul hinten rüber gefallen.

Vielen Dank euch beiden,
Reinhard
 

spoensche

Moderator
Teammitglied
zwirni schrieb:
Perfekt, läuft :)
Ich hab die beiden Module sata_nv und pata_amd aus der /etc/sysconfig/kernel gelöscht und ne neue initrd erstellt. Dabei ist dann auch das nouveau Kernelmodul hinten rüber gefallen.

Vielen Dank euch beiden,
Reinhard

Hm, den ersten Schritt Richtung eigenen Kernel bauen hast du ja schon gemacht. Du könntest also jetzt den Weg weiter gehen und alle Treiber, die du nicht benötigst aus dem Kernel entfernen und genau passend für deinen Rechner bauen. :)
 
OP
Z

zwirni

Member
Das habe ich für den Vorgängerpc schonmal gemacht - allerdings fehlt mir gerade die Zeit und Muße einen rennenden eigenen Kernel zu bauen... Aber irgendwann wird das wieder kommen :)

Gruß,
Reinhard
 
Oben