Вопрос или проблема
Я пытаюсь обновиться с 22 до 24 и получаю следующую ошибку:
Сборка модуля:
Очистка области сборки...(ошибочный статус выхода: 2)
...(ошибочный статус выхода: 2)3-generic
не найден21285.20171026_COEX20170111-1414l8723de
Ошибка! Плохой статус возврата для сборки модуля на ядре: 6.8.0-53-generic (x86_64)
/build/make.log для получения дополнительной информации.1414
(10) автоматическая установка на 6.8.0-53-generic/x86_64 не удалась для rtl8723de
Ошибка! Один или несколько модулей не удалось установить во время автоматической установки.
Обратитесь к предыдущим ошибкам для получения дополнительной информации.
* dkms: авт. установка для ядра 6.8.0-53-generic
...неудача!
run-parts: /etc/kernel/header_postinst.d/dkms завершился с кодом возврата 11
dpkg: ошибка при обработке пакета linux-headers-6.8.0-53-generic (--configure):
установленный скрипт post-installation пакета linux-headers-6.8.0-53-generic возвратил ошибочный статус выхода 11
dpkg: проблемы с зависимостями предотвращают настройку linux-headers-generic:
linux-headers-generic зависит от linux-headers-6.8.0-53-generic; однако:
Пакет linux-headers-6.8.0-53-generic еще не настроен.
dpkg: ошибка при обработке пакета linux-headers-generic (--configure):
проблемы с зависимостями - оставлено неконфигурированным
Настройка linux-image-6.8.0-53-generic (6.8.0-53.55) ...
Отчет apport не был написан, так как сообщение об ошибке указывает на последующую ошибку из предыдущего сбоя.
dpkg: проблемы с зависимостями предотвращают настройку linux-generic:
linux-generic зависит от linux-headers-generic (= 6.8.0-53.55+1); однако:
Пакет linux-headers-generic еще не настроен.
запустив dkms status, я получил этот вывод, с которым я не знаю, как справиться:
dkms status
: added8_21285.20171026_COEX20170111-1414
Само собой разумеется, что выполнение dkms remove 8_21285.20171026_COEX20170111-1414
ничего не дает.
После прочтения bash-скрипта dkms
и следования процессу, который выполняется, оказалось, что это модуль с мусором в имени, который был установлен в мой dkmstree
(я изменил имя модуля, которое, по-видимому, является драйвером для моей сетевой карты, по соображениям конфиденциальности):
ll /var/lib/dkms
total 12
drwxr-xr-x 3 root root 4096 Feb 22 23:20 ./
drwxr-xr-x 98 root root 4096 Feb 22 23:15 ../
drwxr-xr-x 3 root root 4096 Jan 17 2018 '<имя модуля>'$'\r'/
Я вручную переименовал его и сделал то же самое с любыми другими мусорными именами внутри этого каталога, и смог удалить этот модуль, используя dkms remove
.
Уверен, что это не правильный способ исправить ситуацию, но это сработало.
Ответ или решение
Ошибка, с которой вы столкнулись при попытке обновить систему с Ubuntu 22 до версии 24, связана с работой системы управления ядрами DKMS (Dynamic Kernel Module Support). Ключевые проблемы возникли из-за некорректного модуля, который не удалось правильно скомпилировать и установить.
Теория
DKMS—это утилита для автоматической перекомпиляции и установки модулей ядра, когда вышла новая версия ядра или внесены изменения в существующие модули. Она обычно используется для управления модулями, которые не включены в стандартное поставляемое ядро. Ошибка, с которой вы столкнулись, связана с неудачной попыткой настройки модулей для ядра версии 6.8.0-53-generic. Сообщение об ошибке указывает на модуль rtl8723de, используемый для работы сетевой карты.
Процесс установки обновлений Ubuntu требует установки новых заголовков ядра, и если какой-либо модуль DKMS не может быть перекомпилирован, установка прерывается. Ваша проблема связана с тем, что один из модулей (rtl8723de) не смог быть установлен.
Пример
Из вашего описания видно, что в каталоге /var/lib/dkms
присутствовал модуль с повреждённым именем (например, символами, которые не должны быть в именах файлов и каталогов). Если имя модуля содержит "мусорные" символы (например, управляющие или некорректные символы), то это может нарушить работу DKMS. Из-за этого DKMS не может корректно обработать такую запись, что в свою очередь вызывает провалы во время установки обновления и ошибки зависимостей в dpkg
.
Применение
Рассмотрим шаги, которые следует предпринять для устранения подобных ошибок:
-
Поиск и идентификация проблемы: Самостоятельный анализ ошибки может быть начат с изучения
/build/make.log
для получения дополнительной информации о том, почему сборка модуля не удалась. Это лог-файл, в котором обычно содержится детализированная информация об ошибках компиляции. -
Работа с некорректными модулями DKMS:
- Проверьте все модули в
/var/lib/dkms
на наличие некорректных символов. Используйте командуls -l /var/lib/dkms
для отображения их имён. Если обнаружите некорректные названия, их необходимо исправить. - После этого попробуйте удалить анормальные модули с использованием утилиты
dkms remove
.
- Проверьте все модули в
-
Очистка и повторная установка:
- Если вы удачно удалили некорректные модули, попробуйте повторить процесс обновления ядра с помощью команды
sudo apt-get upgrade
. - Если проблема с конкретным модулем драйвера rtl8723de продолжается, попробуйте вручную установить или обновить этот модуль. Возможно, потребуется загрузить и установить его заново из официального репозитория или от производителя оборудования.
- Если вы удачно удалили некорректные модули, попробуйте повторить процесс обновления ядра с помощью команды
-
Использование dkms для ручного управления модулями:
- В случае, если использование стандартных команд не помогает, вы можете переработать процесс с помощью
dkms build
иdkms install
, указав необходимые параметры вручную.
- В случае, если использование стандартных команд не помогает, вы можете переработать процесс с помощью
-
Проверка зависимости пакетов:
- Команда
sudo apt-get -f install
может помочь исправить зависимости пакетов, если таковые не были разрешены. - Используйте
dpkg --configure -a
, чтобы выставить настраиваемые пакеты.
- Команда
Следует отметить, что ручные вмешательства, в том числе изменение названий директорий внутри системных каталогов, как вы уже сделали, могут решить проблему лишь временно и привести к другим ошибкам в будущем. Хотелось бы обратить внимание, что лучший подход заключается в устранении глубинной причины проблемы, чтобы в дальнейшем избежать аналогичных неудач.