Kernel-Treiber in Ubuntu bauen

Gast #4527782
Lesenswert?

Vorab
- sorry, falls es für jemanden dumm klingt, aber mein LinuxWissen ist 
nicht riesig
- ich verwende Ubuntu 14.04 (Trusty Tahr)
- ich benötige einen Treiber um das USB-device DVI2USB-3.0 der Firma 
Epiphan verwenden zu können 
(http://www.epiphan.com/products/dvi2usb-3-0/downloads/)

Zu meiner Frage
Ich habe ein USB-device, welches standardmäßig nicht mit Treibern von 
Ubuntu unterstützt wird. Laut Hersteller (dessen readme ist im Anhang) 
muss ich dazu einen KernelSourceTree installieren um den Treiber 
kompilieren zu können. Das habe ich wie hier beschrieben getan:
https://wiki.ubuntuusers.de/Kernel/Kompilierung/

Nun habe ich jede Menge Dateien vor mir liegen, die ich nun zum bauen 
benötigen soll. Mit dem kurzen Hinweis "2) Verify path to the kernel 
source tree in Config.mak", erwähnt der Hersteller, dass ich vor dem 
Bauen einen Pfad eventuell anpassen muss.
Auszug aus "Config.mak":
1
# Where is the target kernel
2
ifeq ($(KDIR),)
3
KDIR  := /lib/modules/$(shell uname -r)/build
4
endif

Aber wohin? In dem vom KernelSourceTree runter geladenen Dateien gibt es 
im Ordner ".../lib/" keinen Unterordner "modules". Im Ubuntu-eigenem 
Verzeichnis "/lib" gibt es den Ordner zwar, aber dann würde es doch 
keinen Sinn machen zuvor die ganzen Linux-sourcen mit KernelSourceTree 
runter zu laden.
Angehängte Dateien:
Gast #4527892
Lesenswert?

Andre R. schrieb:
> Und diese installierst Du über den Paketmanager.

Installiere ich das Paket mit Ubuntu Software Centre erhalte ich 
lauter Fehlermeldungen:
1
The package is of bad quality
2
The installation of a package which violates the quality standards isn't allowed. This could cause serious problems on your computer. Please contact the person or organisation who provided this package file and include the details beneath.
3

4
Details:
5
Lintian check results for /home/user/Desktop/vga2usb-3.30.2.10-ubuntu-3.19.0-25-generic-x86_64.deb:
6
E: vga2usb-dkms: arch-independent-package-contains-binary-or-object usr/src/vga2usb-3.30.2.10/drvwrapper.o
7
E: vga2usb-dkms: arch-independent-package-contains-binary-or-object usr/src/vga2usb-3.30.2.10/drvwrapper_lib.o
8
E: vga2usb-dkms: arch-independent-package-contains-binary-or-object usr/src/vga2usb-3.30.2.10/vga2usb.ko
9
E: vga2usb-dkms: arch-independent-package-contains-binary-or-object usr/src/vga2usb-3.30.2.10/vga2usb.mod.o
10
E: vga2usb-dkms: arch-independent-package-contains-binary-or-object usr/src/vga2usb-3.30.2.10/vga2usb.o
11
E: vga2usb-dkms: arch-independent-package-contains-binary-or-object usr/src/vga2usb-3.30.2.10/vga2usb_bins.o
12
E: vga2usb-dkms: arch-independent-package-contains-binary-or-object usr/src/vga2usb-3.30.2.10/vga2usb_bins.o_shipped
#4529460
Lesenswert?

brechpunkt schrieb:
> Auszug aus "Config.mak":# Where is the target kernel
> ifeq ($(KDIR),)
> KDIR  := /lib/modules/$(shell uname -r)/build
> endif
> Aber wohin? In dem vom KernelSourceTree runter geladenen Dateien gibt es
> im Ordner ".../lib/" keinen Unterordner "modules".

Wo steht denn, dass das innerhalb der Kernel-Sourcen sein muss? Das ist 
einfach in deinem Verzeichnisbaum. /lib/modules ist das Verzeichnis, in 
dem alle Kernel-Module installiert sind. $(shell uname -r) ruft das 
Kommando "uname -r" auf, das die Versionsnummer des aktuell laufenden 
Kernels ergibt. build sollte darin dann ein Link auf die dazugehörigen 
Kernel-Headers sein.

> Im Ubuntu-eigenem Verzeichnis "/lib" gibt es den Ordner zwar, aber dann
> würde es doch keinen Sinn machen zuvor die ganzen Linux-sourcen mit
> KernelSourceTree runter zu laden.

Warum nicht?

brechpunkt schrieb:
> Installiere ich das Paket mit Ubuntu Software Centre erhalte ich
> lauter Fehlermeldungen:

> Details:
> Lintian check results for
> /home/user/Desktop/vga2usb-3.30.2.10-ubuntu-3.19.0-25-generic-x86_64.deb :
> E: vga2usb-dkms: arch-independent-package-contains-binary-or-object
> usr/src/vga2usb-3.30.2.10/drvwrapper.o
[...]

Offenbar hat derjenige, der das Paket zusammengepackt hat, vergessen, 
vorher ein "make clean" auszuführen. Sprich: Er hat selber den Treiber 
gebaut und dann die generierten Object-Files mit ins Paket gepackt, was 
er eigentlich nicht soll.
Gast #4529629
Lesenswert?

Rolf M. schrieb:
>> Im Ubuntu-eigenem Verzeichnis "/lib" gibt es den Ordner zwar, aber dann
>> würde es doch keinen Sinn machen zuvor die ganzen Linux-sourcen mit
>> KernelSourceTree runter zu laden.
>
> Warum nicht?

Ok, soweit habe ich es nun verstanden, dass einfach nur der Pfad zu den 
aktuellen / bereits im System abgelegten modul-headers benötigt. Mein 
Gedanke war nur, dass es dann doch garnicht nötig gewesen wäre die 
linux-sourcen (KernelSourceTree ) vorher runter zu laden.
#4530741
Lesenswert?

brechpunkt schrieb:
> Ok, soweit habe ich es nun verstanden, dass einfach nur der Pfad zu den
> aktuellen / bereits im System abgelegten modul-headers benötigt. Mein
> Gedanke war nur, dass es dann doch garnicht nötig gewesen wäre die
> linux-sourcen (KernelSourceTree ) vorher runter zu laden.

Ja. Zum Bauen von Kernel-Modulen reichen in der Regel die 
Kernel-Headers. Die sind ein Teil der Kernel-Sourcen. Sollte genauso 
gehen mit den kompletten Kernel-Sourcen, aber kann sein, dass man sich 
den Kernel damit zuerst bauen muss, damit alles generiert worden ist, 
was benötigt wird. In den Kernel-Headers ist schon alles nötige drin.
Gast #4530801
Lesenswert?

Gerade mal ausprobiert: Das passende .deb Paket von epiphan 
heruntergeladen.
Mit dpkg installiert. Nun nach /usr/src/vga2usb-3.30.2.10 gewechselt.
Ein beherztes sudo make eingegeben - geht schon mal ohne Fehler.
sudo make install habe ich nicht, da ohnehin keine Hardware vorhanden. 
Du musst eventl. noch den gcc installieren, bei mir sind die 
Kernel-Header unter /usr/src schon da, keine Ahnung wieso.
Ich habe aber gerade noch festgestellt, das offenbar bereits bei der 
dpkg-Installation das Kernelmodul mitgebaut wird - ganz von allein.
Kleiner Wehrmutstropfen: bei jeden Kernelupdate muß die Prozedur 
wiederholt werden.
#4530808
Lesenswert?

knollo schrieb:
> Du musst eventl. noch den gcc installieren, bei mir sind die
> Kernel-Header unter /usr/src schon da, keine Ahnung wieso.

Vielleicht hast du dkms drauf für irgendwelche Module, z.B. VirtualBox 
oder NVidia.

> Ich habe aber gerade noch festgestellt, das offenbar bereits bei der
> dpkg-Installation das Kernelmodul mitgebaut wird - ganz von allein.
> Kleiner Wehrmutstropfen: bei jeden Kernelupdate muß die Prozedur
> wiederholt werden.

Wenn der Treiber auch dkms-fähig wäre, würde das von alleine passieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren