Вопрос или проблема
Я пытаюсь установить amdgpu-dkms на своём компьютере с Ubuntu 22.04.5 (обратите внимание, что ОС защищена, а /tmp смонтирована с параметром noexec).
каждый раз, когда я пытаюсь использовать amdgpu-install для установки драйверов amdgpu (включая amdgpu-dkms), не удаётся собрать этот модуль из-за какой-то проблемы с выполнением файла…
$ dpkg –configure -a:
Настройка amdgpu-dkms (1:6.10.5.60300-2084815.22.04) ...
Удаление старых файлов DKMS amdgpu-6.10.5-2084815.22.04...
Полное удаление модуля amdgpu-6.10.5-2084815.22.04 из дерева DKMS.
Загрузка новых файлов DKMS amdgpu-6.10.5-2084815.22.04...
Сборка для 6.8.0-52-generic
Сборка для архитектуры x86_64
Создание начального модуля для 6.8.0-52-generic
Предупреждение: скрипт pre_build не исполняем.
Ошибка: не удаётся создать отчет: [Errno 17] Файл существует: '/var/crash/amdgpu-dkms.0.crash'
Ошибка! Плохой статус возврата при сборке модуля на ядре: 6.8.0-52-generic (x86_64)
Обратитесь за информацией в файл /var/lib/dkms/amdgpu/6.10.5-2084815.22.04/build/make.log.
dpkg: ошибка при обработке пакета amdgpu-dkms (--configure):
установленный amdgpu-dkms пакет, скрипт постустановки вернул код ошибки 10
При обработке произошли ошибки:
amdgpu-dkms
$ cat /var/lib/dkms/amdgpu/6.10.5-2084815.22.04/build/make.log:
DKMS make.log для amdgpu-6.10.5-2084815.22.04 для ядра 6.8.0-52-generic (x86_64)
Вс фев 2 12:03:30 PM EET 2025
/usr/sbin/dkms: строка 81: /tmp/amd.b7U8AUSC/.env: Нет такого файла или каталога
$ amdgpu-install –opengl=mesa –opencl=rocr –accept-eula:
< apt-get update >...
linux-headers-6.8.0-52-generic уже самая новая версия (6.8.0-52.53~22.04.1).
amdgpu-dkms уже самая новая версия (1:6.10.5.60300-2084815.22.04).
amdgpu-lib уже самая новая версия (1:6.3.60300-2084815.22.04).
amdgpu-lib32 уже самая новая версия (1:6.3.60300-2084815.22.04).
rocm-hip-runtime уже самая новая версия (6.3.0.60300-39~22.04).
rocm-opencl-runtime уже самая новая версия (6.3.0.60300-39~22.04).
Следующие пакеты были автоматически установлены и больше не требуются:
<...>
Используйте 'apt autoremove', чтобы удалить их.
0 обновлено, 0 новых установлено, 0 удалено и 0 не обновлено.
1 не полностью установлен или удален.
После этой операции будет использовано 0 B дополнительного места на диске.
Продолжить? [Y/n] y
Настройка amdgpu-dkms (1:6.10.5.60300-2084815.22.04) ...
Удаление старых файлов DKMS amdgpu-6.10.5-2084815.22.04...
Полное удаление модуля amdgpu-6.10.5-2084815.22.04 из дерева DKMS.
Загрузка новых файлов DKMS amdgpu-6.10.5-2084815.22.04...
Сборка для 6.8.0-52-generic
Сборка для архитектуры x86_64
Создание начального модуля для 6.8.0-52-generic
Предупреждение: скрипт pre_build не исполняем.
Ошибка: не удаётся создать отчет: [Errno 17] Файл существует: '/var/crash/amdgpu-dkms.0.crash'
Ошибка! Плохой статус возврата при сборке модуля на ядре: 6.8.0-52-generic (x86_64)
Обратитесь за информацией в файл /var/lib/dkms/amdgpu/6.10.5-2084815.22.04/build/make.log.
dpkg: ошибка при обработке пакета amdgpu-dkms (--configure):
установленный amdgpu-dkms пакет, скрипт постустановки вернул код ошибки 10
При обработке произошли ошибки:
amdgpu-dkms
needrestart пропускается, поскольку dpkg завершился с ошибкой
E: Подпроцесс /usr/bin/dpkg вернул код ошибки (1)
Ответ или решение
Проблема, с которой вы столкнулись при установке пакета amdgpu-dkms на систему Ubuntu 22.04.5, характерна для систем с жесткими настройками безопасности. Так как ваша система является "hardened" и имеет каталог /tmp, примонтированный с опцией noexec, это вызывает определенные проблемы при установке и компиляции модулей ядра. Разберем данную ситуацию по шагам, выявив причины неисправностей и предложив возможные решения.
Теория
Компиляция и установка DKMS (Dynamic Kernel Module Support) модулей требует, чтобы временные файлы могли исполняться. нотация noexec на /tmp не позволяет выполнять файлы из этого каталога, что может стать главной причиной ошибок, связанных с невозможностью исполнять скрипты, такие как pre_build.
Ошибка выполнения скрипта отображается в сообщениях об ошибках:
Warning: The pre_build script is not executable.
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/amdgpu-dkms.0.crash'
Error! Bad return status for module build on kernel: 6.8.0-52-generic (x86_64)
Это указывает на то, что установки amdgpu-dkms не могут быть завершены из-за невозможности запустить исполняемый скрипт.
Пример
Файлы, которые обычно создаются и исполняются в каталоге /tmp, не смогут работать, так как он примонтирован с noexec. Это может вызвать трудности не только в установке пакетов, но и в работе любых временных процессов, связанных с компиляцией и установкой модулей программ.
Ваши журналы ошибок показывают, что скрипт /usr/sbin/dkms: line 81: /tmp/amd.b7U8AUSC/.env не может быть найден, что может быть результатом неправильной установки или операции удаления.
Применение
Для исправления данной проблемы, необходимо предпринять следующие шаги:
-
Временное изменение монтирования /tmp:
Вы можете временно перенастроить монтирование каталога /tmp без флага noexec. Сделать это можно следующими командами:
sudo mount -o remount,exec /tmp
После успешной установки вы можете вернуть флаг noexec:
sudo mount -o remount,noexec /tmp
Это позволит временно разрешить исполнение файлов и завершить установку модуля.
-
Изменение пути для временных файлов:
Вы можете переместить каталоги временных файлов в другое место, которое не имеет флага noexec. Это можно сделать, например, так:
export TMPDIR=/var/tmp export TMP=/var/tmp
Эти команды перенаправят приложения, использующие /tmp, на /var/tmp, что должно обойти ограничение исполнения.
-
Исправление права на выполнение скриптов:
Убедитесь, что все скрипты установки имеют исполнение для необходимых групп пользователей:
sudo chmod +x /var/lib/dkms/amdgpu/6.10.5-2084815.22.04/bld/pre_build
-
Чтение и исправление журнала ошибок:
Сообщения журнала make.log и amdgpu-dkms.0.crash могут предоставить дополнительные детали. Если возникли ошибки, связанные с файлом /.env, возможно, он не скопирован правильно или создан. Убедитесь, что все требуемые файлы присутствуют.
Эти шаги могут помочь в разрешении проблемы с установкой amdgpu-dkms в конфигурациях, подобных вашему случаю. Важно руководствоваться здравым смыслом, особенно когда дело касается изменения монтирования и прав доступа в системных каталогах. Возвращение настроек к первоначальному состоянию после успешного завершения установки также является важным этапом в поддержании безопасности вашей системы.