драйвер displaylink не устанавливается с ядром 6.1.0-25-amd64

Вопрос или проблема

Есть ли решение, которое я могу применить в своей системе? Нужно ли мне пожаловаться на ошибку evdi или в другой трекер ошибок пакета?

Последнее обновление ядра завершилось неудачно. Мне пришлось удалить пакет evdi. После этого обновление прошло успешно. Мне нужен evdi для пакета displaylink-driver, чтобы использовать док-станцию. При попытке установить displaylink-driver я получаю следующий вывод терминала с ошибкой постобработки и кодом выхода 10. Упомянутый make.log доступен здесь.

У меня не так много вариантов, чтобы заставить док-станцию работать. В одном из багов, поданных для pop os, кажется, рассматривается эта проблема, однако, он остался без ответа. Я не в первый раз устанавливаю этот пакет, поэтому один комментарий в релизных примечаниях, указывающий на обходное решение для uefi sec, не должен меня беспокоить. Тем не менее, я попробовал это, и не удалось, потому что я не могу установить пакет evdi. Трекер ошибок evdi имеет одну проблему с кодом возврата 10 после установки, однако это старая проблема и относится к более раннему ядру. На ядре 6.1.0-24-amd64 это работало раньше.

# apt install displaylink-driver
Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Следующий пакет был установлен автоматически и больше не требуется:
  linux-headers-6.1.0-21-common
Используйте 'apt autoremove', чтобы удалить его.
Следующие дополнительные пакеты будут установлены:
  evdi
Предлагаемые пакеты:
  update-notifier-common
Следующие НОВЫЕ пакеты будут установлены:
  displaylink-driver evdi
0 обновлено, 2 новоустановлено, 0 к удалению и 0 не обновлено.
Нужно загрузить 0 B/6,905 kB архивов.
После этой операции будет использовано 0 B дополнительного пространства на диске.
Хотите продолжить? [Y/n]
Выбор ранее не выбранного пакета evdi.
(Чтение базы данных ... 268277 файлов и каталогов в настоящее время установлено.)
Подготовка к распаковке .../evdi_1.14.6-100_amd64.deb ...
Распаковка evdi (1.14.6-100) ...
Выбор ранее не выбранного пакета displaylink-driver.
Подготовка к распаковке .../displaylink-driver_6.0.0-24_amd64.deb ...
Распаковка displaylink-driver (6.0.0-24) ...
Настройка evdi (1.14.6-100) ...
Команда подписи: /usr/lib/linux-kbuild-6.1/scripts/sign-file
Ключ подписи: /var/lib/dkms/mok.key
Публичный сертификат (MOK): /var/lib/dkms/mok.pub
Создание символической ссылки /var/lib/dkms/evdi/1.14.6/source -> /usr/src/evdi-1.14.6

Сборка модуля:
Очистка области сборки...
make -j16 KERNELRELEASE=6.1.0-25-amd64 all INCLUDEDIR=/lib/modules/6.1.0-25-amd64/build/include KVERSION=6.1.0-25-amd64 DKMS_BUILD=1...(неправильный код выхода: 2)
Ошибка! Неверный код возврата для сборки модуля на ядре: 6.1.0-25-amd64 (x86_64)
Обратитесь к /var/lib/dkms/evdi/1.14.6/build/make.log для получения дополнительной информации.
dpkg: ошибка при обработке пакета evdi (--configure):
 скрипт постустановки установленного пакета evdi завершился с ошибкой (код выхода 10)
dpkg: проблемы с зависимостями препятствуют настройке displaylink-driver:
 displaylink-driver зависит от evdi (>= 1.14.4); однако:
  Пакет evdi еще не сконфигурирован.
 displaylink-driver зависит от evdi (<< 1.15.0); однако:
  Пакет evdi еще не сконфигурирован.

dpkg: ошибка при обработке пакета displaylink-driver (--configure):
 проблемы с зависимостями - оставлен несконфигурированным
Ошибки были обнаружены при обработке:
 evdi
 displaylink-driver
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)

Относительно вопроса Стивена Китта:

$ cat synaptics.list
deb [signed-by=/usr/share/keyrings/synaptics-repository-keyring.gpg] https://www.synaptics.com/sites/default/files/Ubuntu/ stable main
deb [signed-by=/usr/share/keyrings/synaptics-repository-keyring.gpg] https://www.synaptics.com/sites/default/files/Ubuntu/ stable non-free

Ошибка возникает из-за несовместимости с недавним (ну, 2022) изменением в ядре:

/var/lib/dkms/evdi/1.14.6/build/evdi_fb.c: В функции ‘evdifb_create’:
/var/lib/dkms/evdi/1.14.6/build/evdi_fb.c:408:23: ошибка: ‘struct drm_fb_helper’ не имеет члена с именем ‘info’
  408 |         efbdev->helper.info = info;
      |                       ^
/var/lib/dkms/evdi/1.14.6/build/evdi_fb.c: В функции ‘evdi_fbdev_destroy’:
/var/lib/dkms/evdi/1.14.6/build/evdi_fb.c:468:27: ошибка: ‘struct drm_fb_helper’ не имеет члена с именем ‘info’
  468 |         if (efbdev->helper.info) {
      |                           ^
/var/lib/dkms/evdi/1.14.6/build/evdi_fb.c:469:38: ошибка: ‘struct drm_fb_helper’ не имеет члена с именем ‘info’
  469 |                 info = efbdev->helper.info;
      |                                      ^
/var/lib/dkms/evdi/1.14.6/build/evdi_fb.c: В функции ‘evdi_fbdev_unplug’:
/var/lib/dkms/evdi/1.14.6/build/evdi_fb.c:560:27: ошибка: ‘struct drm_fb_helper’ не имеет члена с именем ‘info’
  560 |         if (efbdev->helper.info) {
      |                           ^
/var/lib/dkms/evdi/1.14.6/build/evdi_fb.c:563:38: ошибка: ‘struct drm_fb_helper’ не имеет члена с именем ‘info’
  563 |                 info = efbdev->helper.info;
      |                                      ^

Драйвер evdi, который вы пытаетесь собрать, ожидает новое имя поля info, но у вас установлено более старое ядро, которое по-прежнему использует имя fbdev, и они не согласуются относительно того, какая версия ядра должна делать что. Это можно исправить, если вы знакомы с ядром, но это может быть большим если; вам нужно будет настроить обработку полей, видимой в этом evdi изменении.

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

На будущее, поскольку вы, похоже, используете Debian, вам может быть полезно использовать пакеты evdi от Debian вместо тех, что предоставляются Synaptics для Ubuntu.

Ответ или решение

К сожалению, для устранения проблемы с установкой драйвера DisplayLink и пакета evdi, как вы заметили, требуется разобраться с несовместимостью между версией ядра и исходным кодом драйвера.

Возможные решения:

  1. Обновление пакета evdi:
    На данный момент вы используете evdi версии 1.14.6, которая может быть несовместима с ядром 6.1.0-25-amd64. Убедитесь, что вы используете последнюю доступную версию evdi. К сожалению, информация о совместимости между версиями часто бывает отсутствующей. Проверьте, существуют ли новые версии драйвера в официальных репозиториях или на GitHub.

  2. Проверка на наличие патчей:
    Возможно, проблема уже была решена другими пользователями. Поиск по каталогам ошибок может помочь вам найти соответствующий патч или решение для вашей проблемы. На странице сообществ вы можете открыть новую проблему, описав текущую ситуацию.

  3. Использование предыдущего ядра:
    Если у вас есть возможность, попробуйте использовать более старую версию ядра, например 6.1.0-24-amd64, которая, как вы отметили, работала корректно. Возможно, нужно будет удалить новые конфигурации и зависимые пакеты. Для этого можете воспользоваться командой:

    sudo apt install linux-image-6.1.0-24-amd64

    Затем перезагрузите систему и выберите нужное ядро в загрузчике GRUB.

  4. Ручное редактирование драйвера:
    Если у вас есть опыт работы с кодом, вы можете вручную изменить проблемные части кода evdi, которые вызывают ошибки. Например, как указано в выводе, не удается найти член структуры info. Вам, возможно, нужно будет изучить изменения в драйверах и модифицировать их в соответствии с требованиями вашего ядра.

  5. Обратитесь в службу поддержки:
    Так как вы работаете с драйверами Synaptics, полезно сообщить о проблеме в их службу поддержки. Иногда такие компании предлагают обходные решения или более старые версии драйверов, которые обеспечивают совместимость с последними обновлениями ядра.

  6. Рассмотрение альтернатив:
    Если драйверы DisplayLink становятся слишком неудобными, возможно, стоит рассмотреть альтернативные решения, например, использование других могла бы помочь вместо DisplayLink или изменение конфигурации вашего оборудования.

Заключение:

Ваша текущая ситуация требует внимательного подхода и, возможно, некоторых тестов. Файлы журналов из make.log будут полезны в истолковании ошибок. Для более сложных инструментов, возможно, вам потребуется обратиться к сообществу или профессионалам, которые специализируются на Linux-дистрибутивах и драйверах.

Оцените материал
Добавить комментарий

Капча загружается...