我正试图在最近升级的Ubuntu 20.04笔记本电脑上构建并安装DisplayLink驱动程序,这样我就可以使用Dell D3100扩展坞通过DisplayPorts驱动两个外部显示器。我之前在运行Ubuntu 18.04的同一台笔记本电脑上成功安装了这个驱动程序,并且能够检测和使用额外的监视器(尽管偶尔会出现黑屏(。
我已经从下载页面下载了最新的5.2.14驱动程序安装程序,但这一次当我以sudo运行时,由于某种错误配置或缺少文件/构建文件夹,它失败了,以下内容显示在生成日志文件中:
/usr/src/linux-headers-5.4.0-24-lowlatency/tools/build/Makefile.build:37: /usr/src/linux-headers-5.4.0-24-lowlatency/tools/build/Build.include: No such file or directory
确实没有/usr/src/linux headers-/tools/build/build.include文件,但我不确定为什么,以及我是否缺少所需的包?
运行安装程序的输出:
bric@home:~/System/DisplayLink$ sudo ./displaylink-driver-5.2.14.run
Verifying archive integrity... 100% All good.
Uncompressing DisplayLink Linux Driver 5.2.14 100%
DisplayLink Linux Software 5.2.14 install script called: install
Distribution discovered: Ubuntu 20.04 LTS
Installing
Configuring EVDI DKMS module
Registering EVDI kernel module with DKMS
Building EVDI kernel module with DKMS
ERROR (code 3): Failed to build evdi/5.2.14. Consult /var/lib/dkms/evdi/5.2.14/build/make.log for details..
目录显示没有生成。包括:
$ ls -la /usr/src/linux-headers-5.4.0-24-lowlatency/tools/build/
total 40
drwxr-xr-x 4 root root 4096 Apr 18 06:27 .
drwxr-xr-x 33 root root 4096 Apr 18 06:27 ..
drwxr-xr-x 2 root root 4096 Apr 18 06:27 feature
-rw-r--r-- 1 root root 1066 Nov 25 11:32 Makefile
-rw-r--r-- 1 root root 3998 Nov 25 11:32 Makefile.build
-rw-r--r-- 1 root root 8295 Nov 25 11:32 Makefile.feature
-rw-r--r-- 1 root root 257 Nov 25 11:32 Makefile.include
drwxr-xr-x 3 root root 4096 Apr 18 06:27 tests
make.log文件附在下面,如果有其他有用的内容,请告诉我。
Make.log
对我缺少的东西有什么建议吗?如有任何帮助,我们将不胜感激!
因此,问题似乎是由DisplayLink驱动程序的Makefile中的无效目录指令引起的,正如我最终在这里发现的那样(尽管这指的是驱动程序的rpm版本(。
看起来,当我升级到5.4内核时,这也改变了Makefile的解析方式,因此任何SUBDIRS=参数都被忽略,将尝试运行make的指令留在linux headers/tools/build文件夹中,而不是内核模块文件夹中。
正如上面链接的讨论线程所描述的,除了应用另一个补丁来更新引用<linux/reservation.h>
的源文件以代之以引用较新的<linux/dma-resv.h>
之外,解决方案是在Makefile中用M=blah
替换SUBDIRS=blah
。
当我用这些补丁更新DisplayLink驱动程序5.2源代码时,我能够成功构建evdi内核模块,并通过dock上的DisplayPorts连接我的其他显示器。希望这能帮助其他人,直到下一个DisplayLink驱动程序发布!