Вопрос или проблема
У меня установлена Ubuntu 24.04, и я запускаю sudo dpkg –configure -a, и получаю следующую ошибку
ОШИБКА (dkms apport): двоичный пакет для evdi: 1.12.0 не найден
Ошибка! Неправильный код возврата при сборке модуля для ядра: 6.8.0-47-generic (x86_64)
Консультируйтесь с /var/lib/dkms/evdi/1.12.0/build/make.log для получения дополнительной информации.
dkms autopinstall на 6.8.0-47-generic/x86_64 прошел успешно для nvidia
dkms autopinstall на 6.8.0-47-generic/x86_64 завершился неудачей для evdi(10)
Ошибка! Один или несколько модулей не удалось установить во время автозагрузки.
Обратитесь к предыдущим ошибкам для получения дополнительной информации.
* dkms: автозагрузка для ядра 6.8.0-47-generic
...не удалось
И в make.log первая ошибка, которую я замечаю, это
# cmd_gen_objtooldep /var/lib/dkms/evdi/1.12.0/build/evdi_params.o
{ echo ; echo '/var/lib/dkms/evdi/1.12.0/build/evdi_params.o: $(wildcard ./tools/objtool/objtool)' ; } >> /var/lib/dkms/evdi/1.12.0/build/.evdi_params.o.cmd
# cmd_gen_symversions_c /var/lib/dkms/evdi/1.12.0/build/evdi_params.o
if nm /var/lib/dkms/evdi/1.12.0/build/evdi_params.o 2>/dev/null | grep -q ' __export_symbol_'; then gcc-13 -E -D__GENKSYMS__ -Wp,-MMD,/var/lib/dkms/evdi/1.12.0/build/.evdi_params.o.d -nostdinc -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -I./ubuntu/include -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -mharden-sls=all -fpatchable-function-entry=16,16 -fno-delete-null-pointer-checks -O2 -fno-allow-store-data-races -fstack-protector-strong -fno-omit-frame-pointer -fno-optimize-sibling-calls -ftrivial-auto-var-init=zero -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -fstrict-flex-arrays=3 -fno-strict-overflow -fno-stack-check -fconserve-stack -Wall -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=1024 -Wno-main -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-dangling-pointer -Wvla -Wno-pointer-sign -Wcast-function-type -Wno-stringop-overflow -Wno-array-bounds -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-restrict -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -g -gdwarf-5 -Iinclude/drm -fsanitize=bounds-strict -fsanitize=shift -fsanitize=bool -fsanitize=enum -DMODULE -DKBUILD_BASENAME='"evdi_params"' -DKBUILD_MODNAME='"evdi"' -D__KBUILD_MODNAME=kmod_evdi /var/lib/dkms/evdi/1.12.0/build/evdi_params.c | scripts/genksyms/genksyms -r /dev/null >> /var/lib/dkms/evdi/1.12.0/build/.evdi_params.o.cmd; fi
В файле включения /var/lib/dkms/evdi/1.12.0/build/evdi_gem.c:24:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:29:10: фатальная ошибка: drm/drm_legacy.h: Такой файл или каталог не существует
29 | #include <drm/drm_legacy.h>
| ^~~~~~~~~~~~~~~~~~
компиляция прервана.
Если я не хочу переустанавливать свою ОС, какие у меня есть варианты для исправления этого?
Ответ или решение
Ошибка, с которой вы столкнулись при выполнении команды sudo dpkg --configure -a
, указывает на проблему с установкой модуля DKMS (Dynamic Kernel Module Support) для evdi
, который является драйвером для виртуальных мониторов и использует поддержку динамических модулей ядра. Давайте разберем детали и предложим возможные решения.
Возможные причины ошибки
-
Отсутствие бинарного пакета: Сообщение говорит о том, что бинарный пакет для
evdi: 1.12.0
не найден. Это может быть связано с тем, что модуль не был правильно установлен или с необходимостью его пересборки под вашу текущую версию ядра (6.8.0-47-generic). -
Недостаточные зависимости: Для успешной компиляции драйвера могут отсутствовать необходимые заголовочные файлы (например,
drm/drm_legacy.h
), что также может привести к сбоям в сборке модуля. -
Несоответствие версий: Некоторые модули могут не поддерживать новейшие версии ядра, и возможно, что версия 1.12.0
evdi
не совместима с вашим текущим ядром Linux.
Шаги по устранению ошибки
1. Установка зависимостей
Убедитесь, что у вас установлены все необходимые пакеты для сборки:
sudo apt update
sudo apt install build-essential linux-headers-$(uname -r) dkms
2. Пересборка модуля evdi
Поскольку dkms
не может найти бинарный пакет, попробуйте пересобрать модуль evdi
. Для этого выполните следующие команды:
sudo dkms remove evdi/1.12.0 --all
sudo dkms add evdi/1.12.0
sudo dkms build evdi/1.12.0
sudo dkms install evdi/1.12.0
Проверьте, нет ли ошибок во время этих операций.
3. Проверка логов сборки
Если возникают ошибки, внимательно изучите лог файл, указанный в вашем сообщении об ошибке. В логах по адресу /var/lib/dkms/evdi/1.12.0/build/make.log
вы можете найти более детальную информацию о том, что пошло не так при компиляции. Обратите внимание на строки с "fatal error".
4. Обновление или переустановка evdi
Если предыдущие шаги не сработали, возможно, имеет смысл обновить версию модуля evdi
. Вы можете скачать более новую версию из репозитория GitHub или использовать пакетный менеджер:
sudo apt install --reinstall evdi
Если установлено несколько версий evdi
, проверьте и удалите старые версии, чтобы избежать конфликта.
5. Обратитесь за поддержкой
Если вы продолжаете сталкиваться с трудностями, возможно, стоит обратиться к сообществу Ubuntu или разработчикам evdi
. Можно создать новый вопрос на форумах, предоставив подробности о ваших действиях и сообщениях об ошибках.
Заключение
Ваша проблема может быть решена с помощью управления пакетом DKMS и обновления необходимых зависимостей. Следуя указанным шагам, вы сможете устранить ошибку и продолжить использовать вашу систему без необходимости переустановки. Если у вас останутся вопросы или проблемы, не стесняйтесь обращаться за помощью к сообществу.