Статьи

Борьба с ошибкой Bad return status for module build on kernel

При установке драйверов видеокарт в дистрибутивах с ядром LInux иногда возникает ошибка

Bad return status for module build on kernel: номер_ядра-generic (x86_64)

Затем обычно идет строчка, в которой указывается информация о логе, в котором содержится более подробная информация о проблемной инсталляции, например:

Consult /var/lib/dkms/amdgpu/.../build/make.log

Лог содержит ошибки компиляции, например:

...error: incompatible type for argument ...

...

...build/amd/amdgpu/... Error ...

или

dpkg: error processing package amdgpu-dkms (--configure): 
installed amdgpu-dkms package post-installation script subprocess returned error exit status 10 
dpkg: dependency problems prevent configuration of amdgpu...

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

Подобные проблемы возникают как при установке драйверов Nvidia, так и AMD. Они часто связаны с наличием ошибок в коде драйверов, проявляющихся на конкретном ядре Linux.

Как устранить ошибку Bad return status for module build on kernel?

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

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

Для запуска видеокарт AMD Radeon R9 290/390 согласно статье «Как добиться от видеокарт Radeon R9 290/390 хешрейта 29-30 Mh/s на Ethash» на компьютерах с некоторыми ubuntu-дистрибутивами нужно ставить драйвер на вновь установленную систему (релиз 16.04), и только потом ее обновлять. Нужно отметить, что дистрибутив xubuntu 16.04 обычно ведет себя адекватно и драйвера на него ставятся как до, так и после обновления системы.

Проверить версию установленного ядра системы можно командой

uname -r

На вновь установленной xubuntu 16.04.6 стоит ядро 4.10.0-45:

после установки последних обновлений версия ядра меняется на 4.15.0-132-generic:

Для устранения ошибки нужно:

  • полностью удалить драйвер (модуль), который вызывал ошибку. Для драйверов AMD для этого выполняют команду (из папки с распакованным пакетом драйверов):
amdgpu-pro-uninstall
  • перезагрузить систему
sudo reboot
  • при загрузке компьютера удерживать кнопку shift, выбрать Advanced options for Ubuntu:

  • выбрать предыдущую версию ядра (4.10.0-45), загрузиться:

  • установить нужный драйвер (модуль). Для драйверов AMD версии 17.40 установка производиться командой:
sudo ./amdgpu-pro-install --compute
  • добавить пользователя в группу видео:
sudo usermod -a -G video логин_пользователя
  • включить в Grub значение фрагментации, равное 9, а также отключить устаревшие radeon-драйвера:
sudo nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.vm_fragment_size=9"

GRUB_CMDLINE_LINUX="radeon.si_support=0 radeon.cik_support=0 amdgpu.si_support=1 amdgpu.cik_support=1"

ctrl+O ctrl+X

sudo update-grub
  • обновить систему
sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove
  • перезагрузить компьютер
sudo reboot

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

English EN French FR German DE Russian RU Spanish ES Turkish TR