не удалось создать evdi, устанавливающий displaylink драйверы

Таким образом, я пытаюсь установить этот драйвер для включения displaylink. На 12,04 Это предупредило, что мое ядро устарело, таким образом, я установил 3,14 ядра. Это затем прошло проверку ядра, но привело к сбою при создании evdi ядро. Я затем обновил целую ОС до 14,04, а также ядро. Ошибка все еще показывает. Мой терминал похож на это:

blaineatkins@ubuntu:~$ cd ~/Downloads
blaineatkins@ubuntu:~/Downloads$ sudo ./displaylink-driver-1.3.54.run
[sudo] password for blaineatkins: 
Verifying archive integrity... All good.
Uncompressing DisplayLink Linux Driver 1.3.54  100%  
DisplayLink Linux Software 1.3.54 install script called: install
Distribution discovered: Ubuntu 14.04.5 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/1.3.54. Consult /var/lib/dkms/evdi/1.3.54/build/make.log for details..
blaineatkins@ubuntu:~/Downloads$ 

И вот содержание журнала, который это упоминает:

DKMS make.log for evdi-1.3.54 for kernel 3.14.0-031400-generic (x86_64)
Sat Jul 22 10:13:12 PHT 2017
make KBUILD_VERBOSE=1 SUBDIRS=/var/lib/dkms/evdi/1.3.54/build SRCROOT=/var/lib/dkms/evdi/1.3.54/build CONFIG_MODULE_SIG= -C /lib/modules/3.14.0-031400-generic/build modules
make[1]: Entering directory `/usr/src/linux-headers-3.14.0-031400-generic'
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (        \
    echo >&2;                           \
    echo >&2 "  ERROR: Kernel configuration is invalid.";       \
    echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
    echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";  \
    echo >&2 ;                          \
    /bin/false)
mkdir -p /var/lib/dkms/evdi/1.3.54/build/.tmp_versions ; rm -f /var/lib/dkms/evdi/1.3.54/build/.tmp_versions/*
make -f scripts/Makefile.build obj=/var/lib/dkms/evdi/1.3.54/build
  gcc -Wp,-MD,/var/lib/dkms/evdi/1.3.54/build/.evdi_drv.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/src/linux-headers-3.14.0-031400-generic/arch/x86/include -Iarch/x86/include/generated  -Iinclude -I/usr/src/linux-headers-3.14.0-031400-generic/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/usr/src/linux-headers-3.14.0-031400-generic/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-headers-3.14.0-031400-generic/include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m64 -mno-mmx -mno-sse -mpreferred-stack-boundary=3 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=1024 -fstack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -DCC_HAVE_ASM_GOTO -Iinclude/drm  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(evdi_drv)"  -D"KBUILD_MODNAME=KBUILD_STR(evdi)" -c -o /var/lib/dkms/evdi/1.3.54/build/.tmp_evdi_drv.o /var/lib/dkms/evdi/1.3.54/build/evdi_drv.c
  if [ "-pg" = "-pg" ]; then if [ /var/lib/dkms/evdi/1.3.54/build/evdi_drv.o != "scripts/mod/empty.o" ]; then /usr/src/linux-headers-3.14.0-031400-generic/scripts/recordmcount  "/var/lib/dkms/evdi/1.3.54/build/evdi_drv.o"; fi; fi;
  gcc -Wp,-MD,/var/lib/dkms/evdi/1.3.54/build/.evdi_modeset.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/usr/src/linux-headers-3.14.0-031400-generic/arch/x86/include -Iarch/x86/include/generated  -Iinclude -I/usr/src/linux-headers-3.14.0-031400-generic/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/usr/src/linux-headers-3.14.0-031400-generic/include/uapi -Iinclude/generated/uapi -include /usr/src/linux-headers-3.14.0-031400-generic/include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m64 -mno-mmx -mno-sse -mpreferred-stack-boundary=3 -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=1024 -fstack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -DCC_HAVE_ASM_GOTO -Iinclude/drm  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(evdi_modeset)"  -D"KBUILD_MODNAME=KBUILD_STR(evdi)" -c -o /var/lib/dkms/evdi/1.3.54/build/.tmp_evdi_modeset.o /var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c
/var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c: In function ‘evdi_crtc_mode_set’:
/var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c:67:10: error: ‘struct drm_crtc’ has no member named ‘primary’
  if (crtc->primary == NULL) {
          ^
In file included from include/drm/drmP.h:45:0,
                 from /var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c:14:
/var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c:74:23: error: ‘struct drm_crtc’ has no member named ‘primary’
  efb = to_evdi_fb(crtc->primary->fb);
                       ^
include/linux/kernel.h:833:49: note: in definition of macro ‘container_of’
  const typeof( ((type *)0)->member ) *__mptr = (ptr); \
                                                 ^
/var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c:74:8: note: in expansion of macro ‘to_evdi_fb’
  efb = to_evdi_fb(crtc->primary->fb);
        ^
/var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c: In function ‘evdi_sched_page_flip’:
/var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c:136:11: error: ‘struct drm_crtc’ has no member named ‘primary’
  fb = crtc->primary->fb;
           ^
/var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c: In function ‘evdi_crtc_page_flip’:
/var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c:192:40: error: ‘struct drm_crtc’ has no member named ‘primary’
   struct drm_framebuffer *old_fb = crtc->primary->fb;
                                        ^
/var/lib/dkms/evdi/1.3.54/build/evdi_modeset.c:200:7: error: ‘struct drm_crtc’ has no member named ‘primary’
   crtc->primary->fb = fb;
       ^
make[2]: *** [/var/lib/dkms/evdi/1.3.54/build/evdi_modeset.o] Error 1
make[1]: *** [_module_/var/lib/dkms/evdi/1.3.54/build] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.14.0-031400-generic'
make: *** [all] Error 2
1
задан 22 July 2017 в 05:19

1 ответ

Можно зафиксировать это также

  • обновление из Ubuntu 14.04 LTS к Ubuntu 16.04 LTS или
  • установка ядра от 16.04 LTS, которое было официально бэкпортировано к 14.04 LTS.

Я протестировал это с графическим программным обеспечением DisplayLink USB для Ubuntu (1.3.54) в виртуальных машинах VirtualBox, выполняющих 64-разрядные версии 14.04 LTS и 16.04 LTS.

Удаление (или по крайней мере прекращают использовать) ядро Вы вручную установили.

Вы в настоящее время выполняете 3,14 ядра, которые Вы установили в 12,04 прежде, чем обновить до 14,04, потому что 14.04 поставок LTS с 3,13 ядрами и GRUB автоматически перечислят самую высокую пронумерованную версию сначала и загрузятся к сначала перечисленной записи. Можно проверить это путем выполнения uname -r. Отметьте верхнюю строку в журнале сборки DisplayLink:

DKMS make.log for evdi-1.3.54 for kernel 3.14.0-031400-generic (x86_64)

Ошибки сборки, которые Вы получаете, кажутся характерными для ядра, которое Вы установили. Я не могу воспроизвести их с официальным ядром Ubuntu.

Если Вы только установили его, чтобы заставить этот драйвер работать, то я рекомендую удалить его перед продолжением, хотя я не могу сказать Вам, как сделать это, потому что я не знаю, как Вы установили его. Хотя DisplayLink требует версии ядра 3,14 или выше, Вам не нужна та версия конкретно (и это не одна из версий, официально предусмотрел Ubuntu 14.04).

Я протестировал и следующие опции в виртуальных машинах, и я смог создать и установить драйвер DisplayLink успешно.

Опция 1: обновите до 16.04 LTS

Вы просто обновили от 12.04 LTS до 14.04 LTS. Если у Вас нет определенной причины, Вы хотите придерживаться с 14,04, то необходимо рассмотреть обновление до 16,04. Мало того, что это должно решить эту проблему, но и она будет также поддерживаться дольше, и она имеет другое более новое программное обеспечение, официально упакованное для него.

Для обновления работайте:

do-release-upgrade

Исключение sudo делает немного легче гарантировать, чтобы Вы случайно не обновляли до неверной версии. (Иначе должен проверить /etc/update-manager/release-upgrades имеет a Prompt=lts строка без продвижения # символ.) Это должно сказать:

Checking for a new Ubuntu release
Get:1 Upgrade tool signature [836 B]
Get:2 Upgrade tool [1,265 kB]
Fetched 1,266 kB in 0s (0 B/s)
authenticate 'xenial.tar.gz' against 'xenial.tar.gz.gpg'
extracting 'xenial.tar.gz'
[sudo] password for blaineatkins:

Таким образом, должен сказать xenial как выпуск, который будет обновлен до. Затем можно ввести пароль и выполнить обновление.

Опция 2: установите бэкпортированные 4.4 ядра

Однако 14.04 остается поддерживаемым до апреля 2019 и нет никакой общей причины не использовать его. Кроме того, существуют различные причины, которые Вы могли бы предпочесть продолжать работать с 14,04. В частности, если Вы полагаетесь (или просто предпочтите), Выскочка, а не systemd, который может быть причиной придерживаться с 14,04 некоторое время дольше.

Релизы LTS Ubuntu бэкпортировали ядра официально от более поздних релизов Ubuntu, для поддержки новых аппаратных средств и драйверов - точно ситуация, в которой Вы находитесь. 4,4 ядра из Ubuntu 16.04 LTS официально бэкпортируются к 14.04 LTS. Один способ установить его состоит в том, чтобы просто работать:

sudo apt install linux-generic-lts-xenial

Затем перезагрузка.

Это было всем, что я должен был сделать, чтобы заставить драйвер DisplayLink создавать и устанавливать без ошибок. Однако мои 14,04 систем являются виртуальной машиной без установленного GUI.

Если это - настольная система (то есть, Вы выполняете графическую настольную среду), то LTSEnablementStack рекомендует установить некоторые другие пакеты. Это могло бы помочь Вам избежать ситуации, где необходимо установить пакеты позже.

Вы выполнили бы эту команду вместо этого (и все еще перезагрузка впоследствии):

sudo apt install --install-recommends linux-generic-lts-xenial xserver-xorg-core-lts-xenial xserver-xorg-lts-xenial xserver-xorg-video-all-lts-xenial xserver-xorg-input-all-lts-xenial libwayland-egl1-mesa-lts-xenial

Я изменился apt-get кому: apt, который производит несколько более человекочитаемый вывод. (14.04 имеет apt; некоторые более ранние выпуски не делают.) --install-recommends флаг является, вероятно, ненужным, так как это - значение по умолчанию, и Вы вряд ли измените его, но это не будет делать ничего плохого.

Установите драйвер

С официальным ядром Ubuntu (с достаточно высоким номером версии), должна успешно выполниться установка. Этот раздел предоставляется главным образом другим читателям, которые не могли добраться насколько Вы сделали в установке драйвера. Вы (и кто-либо еще, кто знает, как сделать остальную часть установки драйвера) не должны следовать за этой частью сами.

Зависимости от установки:

sudo apt update
sudo apt install build-essential linux-headers-generic dkms

После cdлуг к каталогу, где Вы распаковали DisplayLink USB Graphics Software for Ubuntu 1.3.54.zip файл, запущенный установщик:

sudo ./displaylink-driver-1.3.54.run

Это должно создать (по крайней мере, часть) драйвер негласно, и на некоторых компьютерах это могло бы быть медленно, не волнуйтесь, не заканчивается ли это сразу.

Необходимо рассматривать что-то вроде этого как вывод:

Verifying archive integrity... All good.
Uncompressing DisplayLink Linux Driver 1.3.54  100%
DisplayLink Linux Software 1.3.54 install script called: install
Distribution discovered: Ubuntu 16.04.2 LTS
Installing
Configuring EVDI DKMS module
Registering EVDI kernel module with DKMS
Building EVDI kernel module with DKMS
Installing EVDI kernel module to kernel tree
EVDI kernel module built successfully
Installing x64-ubuntu-1604/DisplayLinkManager
Installing libraries
Installing firmware packages
Installing license file
Adding udev rule for DisplayLink DL-3xxx/5xxx devices

Если Вы видите что-то как этот, и нет никаких ошибок, то установка работала. Я предлагаю перезагрузить прежде, чем попытаться использовать Ваше устройство DisplayLink, хотя работая sudo modprobe evdi кажется, загружает драйвер успешно даже без прошедшей перезагрузки.

Поиск и устранение неисправностей

Когда драйвер загружается в ядро, вывод lsmod | grep evdi должно быть подобно:

evdi                   53248  0
drm_kms_helper        155648  2 evdi,vboxvideo
drm                   364544  5 ttm,evdi,drm_kms_helper,vboxvideo
syscopyarea            16384  3 evdi,drm_kms_helper,vboxvideo
sysfillrect            16384  3 evdi,drm_kms_helper,vboxvideo
sysimgblt              16384  3 evdi,drm_kms_helper,vboxvideo

Если Вам не присоединили устройство DisplayLink затем, модуль не может быть загружен в ядро автоматически. Если это присоединяется затем, это должно быть загружено. Можно попробовать sudo modprobe evdi. Для регистрации нового вопроса о проблемах, которые происходят с этим драйвером после установки его, я рекомендую включая полный вывод lsmod (т.е. без | grep evdi) а также uname -a.

2
ответ дан 7 December 2019 в 13:31

Другие вопросы по тегам:

Похожие вопросы: