Hi Leute,

mein Problem ist, dass ich ein Kernel-Modul für eine Netzwerkkarte laden muss. Ich habe den Treiber kompilliert und eine .ko-Datei erhalten.
Wo muss ich die hinpacken? Woher weiß insmod, dass es dieses modul kennen soll?
Bisher geht es nur indem ich mit cd ins Verzeichnis des Moduls gehe und dort insmod aufrufe.
Ich hätte es aber lieber beim Systemstart automatisch geladen mittels /etc/modules-load.d/spezialmodul.conf

Danke für eure Vorschläge


mfg JohnDVD
Du hast schon selber geschrieben, wie man das machen muss...

/etc/modules-load.d/spezialmodul.conf anlegen.

Gegebenenfalls noch Optionen dort eintragen. Genaueres steht im Wiki.
Ich habe versucht sowohl nur den Dateinamen oder Pfad+Dateiname in die .conf-Datei zu schreiben. Beides hat nicht funktioniert.
Schon klar. Aber, es ist ein fremdes Modul, was nicht original zum Kernel gehört. Ich habs in /lib/modules/4.*-ARCH/kernel/drivers/net/ gespeichert.
Wenn ich jetzt insmod modul.ko eingebe, dann geht das nur, wenn ich zuvor in das Verzeichnis gewechselt habe. Ansonsten kommt:
insmod: ERROR: could not load module modul.ko: No such file or directory
Und somit funktioniert es mit der module-load.d/spezialmodul.conf nicht so, wie mit einem "original"-Modul vom Kernel.

Gibt es einen Befehl, der die Module indiziert, in einer Datenbank registriert, oder ähnliches?

Ich hoffe jetzt ist klar, was das Problem ist.
Das r8168-Paket aus dem offiziellen [community] Repo mach folgendes in seinem install-File. Entscheidend sollte der Aufruf von depmod sein.
rebuild_module_dependencies() {
	EXTRAMODULES='extramodules-4.12-ARCH'
	depmod $(cat /usr/lib/modules/$EXTRAMODULES/version)
}

post_install() {
  rebuild_module_dependencies
	echo '>>> The module r8168 conflicts with r8169. You can blacklist it with:'
	echo '>>>  `echo "blacklist r8169" > /etc/modprobe.d/r8169_blacklist.conf`'
}
post_upgrade() {
	rebuild_module_dependencies
}

post_remove() {
	rebuild_module_dependencies
}
Am einfachste ist es vielleicht wirklich, ein PKGBUILD nebst install-file zu schreiben, das sich daran orientiert, und den pacman-Hooks den Rest zu überlassen.
Eigentlich sollte als root ein "depmod -a" genügen, nachdem sich das Modul im Modulverzeichnis befindet.
  • [gelöscht]

Kann mich an sowas wie make modules_install erinnern, welches ich damals immer anwand habe bei Modulerstellung. Falls es über PKGBUILD läuft müßte soetwas im BUILD stehen.
Habs jetzt ohne PKGBUILD gemacht.
# depmod -a
# modprobe modul
$ lsmod | grep modul
haben funktioniert. insmod funktioniert in dem Fall nicht.
Auch das automatische Laden beim Boot funktioniert jetzt über die .conf-Datei.

Danke für eure Hilfe.
Mit "depmod -a" funktioniert es aber nur für den Kernel, der aktuell läuft. Nach Neuinstallation eines Kernels also entweder diesen erst neu booten oder bei depmod die Kernelversion als Parameter mit angeben (wie es in den angesprochenen Skripten gemacht wird, siehe 'man depmod').

VG, LW