Die Linux-Quelle -... hat ein Modul, das in der Konfiguration /boot/config-3.4-trunk-686-pae deaktiviert ist, so dass es nicht Teil von linux-image -... ist (Dies ist unter Debian, aber Die Lösung sollte für Ubuntu dieselbe sein, oder?), z
# CONFIG_CAN_PEAK_USB is not set
Wie würde man nur dieses Kernelmodul kompilieren, damit es mit dem verteilten Kernel verwendet werden kann?
Das entsprechende linux-source -... -Paket ist bereits installiert, unkomprimiert und mit / usr / src / linux verknüpft. /boot/config-3.4-trunk-686-pae wird nach /usr/src/linux/.config kopiert und mit geändert
CONFIG_CAN_PEAK_USB=m
Mit
make
make modules
Es ist möglich, den Kernel und alle Module zu kompilieren. Aber wie würde man nur dieses spezifische einzelne Modul kompilieren?
(Hinweis: auch die Kernel - Bedürfnisse vor kompiliert werden, sonst erhalten Sie die folgende Fehlermeldung: no symbol version for module_layout
)
depmod -a
schon mal versuchtmodbrobe
?Antworten:
Ich hatte das gleiche problem Ich gehe davon aus, dass Sie nicht nur .config kopieren müssen, sondern auch Module.symvers
Meine Schritte zum Kompilieren des Moduls ft1000 (unter Debian Wheeze 7.1.0; Kernel 3.2.0-4-686-pae):
quelle
make M=/path/to/module
was zu funktionieren schien.Geben Sie im Quellverzeichnis der obersten Ebene einfach den Pfad zum Modulnamen oder zum Modulverzeichnis an, z.
oder für ein einfacheres Beispiel (Intel e1000 Ethernet-Treiber):
quelle
make drivers/net/can/usb/peak_usb/pcan_usb.ko
habe nur pcan_usb.o erstellt. Doingmake drivers/net/can/usb/peak_usb/ && make drivers/net/can/usb/peak_usb/pcan_usb.ko
kompiliert es, aber Insmod beschwert sichError: could not insert module drivers/net/can/usb/peak_usb/peak_usb.ko: Invalid module format
. dmesg:peak_usb: no symbol version for module_layout
modprobe
.make modules SUBDIRS=drivers/net/can/usb/peak_usb
beliebiges anderes Unterverzeichnis verwenden. Es funktioniert gut hier.So einfach wie: (Dieses Beispiel zeigt den ft1000-Treiber. Dies sollte nur wenige Minuten dauern, wenn nicht sofort.)
Sie können das Modul dann mit
modprobe
after ladendepmod
Hinweis: Abhängig von der Modulabhängigkeit müssen Sie möglicherweise den Kernel vollständig neu erstellen
quelle