Kernel-Treiber in Ubuntu bauen

Gast #4527782
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:
#4527868
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.
Gast #4527872
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
Gast #4527892
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.