не удалось создать 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

2 ответа

Вы можете исправить это, либо

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

я проверил это с технология displaylink USB и графическое программное обеспечение для Ubuntu (1.3.54) в виртуальных машин в VirtualBox под управлением 64-разрядной версии 14.04 ЛТС и ЛТС 16.04.

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

Вы в настоящее время работает на ядре 3.14 установлен в 12.04 перед обновлением до 14.04, потому что 14.04 ЛТС поставляется с ядром 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 или mct требует версией ядра 3.14 или выше, вам не нужна эта версия специально (и это не одна из версий официально предоставил для Ubuntu 14.04).

я проверил следующие варианты в виртуальных машинах, и мне удалось построить и успешно установить драйвер displaylink.[!d12 вариант]

1: обновление до 16.04 ЛЦ

вы просто обновить с 12.04 LTS на 14.04 ЛТС. Если у вас нет особых причин необходимо придерживаться 14.04, то вы должны рассмотреть возможность обновления до 16.04. Не только следует, что решить эту проблему, но она также будет больше не поддерживается и обновления программного обеспечения официально заготовок для нее.

для обновления, запустите:

do-release-upgrade

пропуск sudo делает его немного легче, чтобы убедиться, что Вы не случайно обновить неправильную версию. (Еще один способ проверить /etc/update-manager/release-upgrades имеет [от f13 линия] с # персонаж). Он должен сказать:

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: [dиода d17]то есть, следует сказать, [с f15] как релиз будет обновлен до. Затем можно ввести свой пароль и выполнить обновление.[!параметр диода d17]

2: Установить ядро версии 4.4

[однако д19], технология displaylink графика программное обеспечение USB для Ubuntu (1.3.54) и нет вообще никакой причины не использовать его. Кроме того, существуют различные причины, вы могли бы предпочесть, чтобы придерживаться с 14.04. В частности, если вы рассчитываете на (или просто предпочитаете) выскочка, а не systemd в том, что может быть причиной, чтобы держаться с 14.04 подольше.

убунту, ЛТС релизы ядра вам официально унаследованы от более поздних версий Ubuntu, для поддержки нового оборудования и драйверов--я не могу воспроизвести их с официального ядра Ubuntu.. На 4.4 ядра от Ubuntu 16.04 LTS является официально портированы в 14.04 ЛТС. Один способ установки просто запустить:

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, чтобы [f17 в], которая производит более удобочитаемого вывода. (14.04 имеет apt; некоторые более ранние выпуски не.) В [зг19] флаг является, вероятно, ненужным, так как это по умолчанию и вы вряд ли изменились, но это не принесет никакого вреда.

установить драйвер

с официального ядра Ubuntu (с достаточно высоким номером версии), установка должна пройти успешно. Этот раздел предназначен в основном для других читателей, которые, возможно, не получили, как вы делали в установке драйвера. тогда LTSEnablementStack рекомендует установить другие пакеты

зависимостей установить:

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

после cdинг в директорию, куда вы распаковали файл [клавиши f21], запустите установщик:

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 [и D40]если вы видите что-то вроде этого, и нет ошибок, то установка работала. Я предлагаю перезагрузка перед использованием вашего устройства displaylink или mct, хотя работает sudo modprobe evdi вроде успешно загрузить драйвер даже без промежуточной перезагрузки.[!и D40] [dрайвер d41]поиск и устранение неисправностей[!dрайвер d41]

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

[F9] и [d43 см.]если у вас нет displaylink или mct устройства, затем крепится модуль не может быть загружен автоматически в ядро. Если он подключен, то он должен быть загружен. Вы можете попробовать sudo modprobe evdi. Для размещения новой вопрос о проблемах, возникающих с этот драйвер после его установки, я рекомендую включая полный вывод [f25 привод датчика] (т. е. без | grep evdi), а также uname -a.[!d43 см.]
1
ответ дан 18 July 2018 в 09:53

Вы можете исправить это, либо

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

я проверил это с технология displaylink USB и графическое программное обеспечение для Ubuntu (1.3.54) в виртуальных машин в VirtualBox под управлением 64-разрядной версии 14.04 ЛТС и ЛТС 16.04.

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

Вы в настоящее время работает на ядре 3.14 установлен в 12.04 перед обновлением до 14.04, потому что 14.04 ЛТС поставляется с ядром 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 или mct требует версией ядра 3.14 или выше, вам не нужна эта версия специально (и это не одна из версий официально предоставил для Ubuntu 14.04).

я проверил следующие варианты в виртуальных машинах, и мне удалось построить и успешно установить драйвер displaylink.[!d12 вариант]

1: обновление до 16.04 ЛЦ

вы просто обновить с 12.04 LTS на 14.04 ЛТС. Если у вас нет особых причин необходимо придерживаться 14.04, то вы должны рассмотреть возможность обновления до 16.04. Не только следует, что решить эту проблему, но она также будет больше не поддерживается и обновления программного обеспечения официально заготовок для нее.

для обновления, запустите:

do-release-upgrade

пропуск sudo делает его немного легче, чтобы убедиться, что Вы не случайно обновить неправильную версию. (Еще один способ проверить /etc/update-manager/release-upgrades имеет [от f13 линия] с # персонаж). Он должен сказать:

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: [dиода d17]то есть, следует сказать, [с f15] как релиз будет обновлен до. Затем можно ввести свой пароль и выполнить обновление.[!параметр диода d17]

2: Установить ядро версии 4.4

[однако д19], технология displaylink графика программное обеспечение USB для Ubuntu (1.3.54) и нет вообще никакой причины не использовать его. Кроме того, существуют различные причины, вы могли бы предпочесть, чтобы придерживаться с 14.04. В частности, если вы рассчитываете на (или просто предпочитаете) выскочка, а не systemd в том, что может быть причиной, чтобы держаться с 14.04 подольше.

убунту, ЛТС релизы ядра вам официально унаследованы от более поздних версий Ubuntu, для поддержки нового оборудования и драйверов--я не могу воспроизвести их с официального ядра Ubuntu.. На 4.4 ядра от Ubuntu 16.04 LTS является официально портированы в 14.04 ЛТС. Один способ установки просто запустить:

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, чтобы [f17 в], которая производит более удобочитаемого вывода. (14.04 имеет apt; некоторые более ранние выпуски не.) В [зг19] флаг является, вероятно, ненужным, так как это по умолчанию и вы вряд ли изменились, но это не принесет никакого вреда.

установить драйвер

с официального ядра Ubuntu (с достаточно высоким номером версии), установка должна пройти успешно. Этот раздел предназначен в основном для других читателей, которые, возможно, не получили, как вы делали в установке драйвера. тогда LTSEnablementStack рекомендует установить другие пакеты

зависимостей установить:

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

после cdинг в директорию, куда вы распаковали файл [клавиши f21], запустите установщик:

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 [и D40]если вы видите что-то вроде этого, и нет ошибок, то установка работала. Я предлагаю перезагрузка перед использованием вашего устройства displaylink или mct, хотя работает sudo modprobe evdi вроде успешно загрузить драйвер даже без промежуточной перезагрузки.[!и D40] [dрайвер d41]поиск и устранение неисправностей[!dрайвер d41]

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

[F9] и [d43 см.]если у вас нет displaylink или mct устройства, затем крепится модуль не может быть загружен автоматически в ядро. Если он подключен, то он должен быть загружен. Вы можете попробовать sudo modprobe evdi. Для размещения новой вопрос о проблемах, возникающих с этот драйвер после его установки, я рекомендую включая полный вывод [f25 привод датчика] (т. е. без | grep evdi), а также uname -a.[!d43 см.]
1
ответ дан 24 July 2018 в 19:28
  • 1
    Вау, спасибо за очень подробный ответ. Я сейчас застрял в окнах (и буду на несколько дней), но я вернусь к вам, как только у меня появится шанс попробовать! – Blaine 24 July 2017 в 16:13
  • 2
    @ Eliah Kagan У меня очень похожая проблема, но в моем случае это, похоже, связано с тем, что у меня есть 16.04.02, в то время как Dispalylink, похоже, работает только с 16.04. https://askubuntu.com/questions/944663/failed-to-build-evdi-installing-dispalylink-driver Что бы вы порекомендовали мне? Кажется, у Dell нет другого программного обеспечения для адаптера DA100 и Ubuntu ... – johnhenry 10 August 2017 в 11:12
  • 3
    @johnhenry make.log может помочь. Вы попытались прочитать его после запроса heynnema , но получили «Permission denied». Вы можете использовать sudo cat /var/lib/dkms/evdi/1.3.54/build/make.log. Или скопируйте файл и получите право собственности на копию: cd ~/Desktop && sudo cp /var/lib/dkms/evdi/1.3.54/build/make.log . && sudo chown $USER: make.log. Измените свой вопрос, чтобы предоставить его (и любую другую соответствующую информацию). Если включить слишком долго, вы можете использовать paste.ubuntu.com и включить ссылку. – Eliah Kagan 10 August 2017 в 11:40
  • 4
    @ EliahKagan сделано! См. Мой отредактированный вопрос. Благодаря! – johnhenry 10 August 2017 в 12:18
  • 5
    @EliahKagan по последнему комментарию я имею в виду, что у меня есть обновленный мой вопрос с вашим запросом, но проблема по-прежнему сохраняется ... просто для уточнения. – johnhenry 10 August 2017 в 18:38

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

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