Forum: PC Hard- und Software Kernel-Treiber in Ubuntu bauen


von brechpunkt (Gast)


Angehängte Dateien:

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.

von Carl D. (jcw2)


Lesenswert?

Schau mal nach libusb.
Sowas sollte auch als "User-Mode-Treiber" moglivh sein.

von Andre R. (physicist)


Lesenswert?

Ich bin mir ziemlich sicher, daß sie nicht die Kernelsourcen meinen, 
sondern wie üblich nur die header. Und diese installierst Du über den 
Paketmanager. Du willst ja nur ein Treibermodul kompilieren und nicht 
einen eigenen Treiber.

von Andre R. (physicist)


Lesenswert?

brechpunkt schrieb:
> - 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/)

Und auf dieser Seite werden mir für die Treiberinstallation debs 
angeboten. Und es wird ausdrücklich erwähnt, daß nur binaries zur 
Verfügung gestellt werden. Wo hast Du das her?

von Clemens L. (c_l)


Lesenswert?

Das Verzeichnis /lib/modules/x.y.z/build enthält die Konfiguration des 
Kernels (zusätzliche Module müssen genau die selben Einstellungen 
verwenden). In Ubuntu findet man es im Paket linux-kernel-devel; den 
Pfad solltest du nicht verändern müssen.

: Bearbeitet durch User
von brechpunkt (Gast)


Lesenswert?

Andre R. schrieb:
> Wo hast Du das her?

Ich habe mir das vga2usb-3.30.2.10-ubuntu-3.19.0-25-generic-x86_64.deb 
von dieser Seite runter geladen. Das ReadMe befindet sich darin unter 
vga2usb-3.30.2.10-ubuntu-3.19.0-25-generic-x86_64/usr/src/vga2usb-3.30.2 
.10/README

von brechpunkt (Gast)


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

von Tux (Gast)


Lesenswert?

Installier es halt von Hand mit "dkpg -i paketname.deb", dann sollte die 
Meldung iirc nicht kommen.

von Tux (Gast)


Lesenswert?

dpkg, nicht dkpg ;)

von Rolf M. (rmagnus)


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.

von brechpunkt (Gast)


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.

von Rolf M. (rmagnus)


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.

von knollo (Gast)


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.

von Rolf M. (rmagnus)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.