Я пытался установить последние драйверы AMD на мою Linux-машину, но после компиляции меня приветствует следующее сообщение:
modprobe: ОШИБКА: не удалось вставить 'fglrx': неизвестный символ в модуле или неизвестный параметр (см. dmesg) не удалось.
Пожалуйста, обратите внимание, что я не слишком хорош в этом вопросе о Linux, потому что я больше родом из BSD.
Ситуационные детали
- Arch Linux, x86_64, выпуск 2016.01.01
- Версия ядра: 4.3.3-2
- AMD Radeon R9 290x
- Малиновый, fglrx 15.302
Сделано
В начале сценарий установки даже не доходил до части EULA, потому что мне пришлось установить пакет kernel-headers
. В этот момент я действительно мог начать пытаться установить его.
Просто запуск скрипта дал мне ошибку:
/usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:634:9: error: void value not ignored as it ought to be
len = seq_printf(m, "%d\n", major);
^
После небольшого поиска я нашел это решение и выполнил вручную /usr/lib/modules/fglrx/build_mod/make.sh
Но компиляция закончилась этим сообщением:
WARNING: "mtrr_add" [/usr/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
WARNING: "mtrr_del" [/usr/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
Конечно, вы должны игнорировать предупреждение, и поэтому я приступил к установке только скомпилированных модулей ... что привело к сообщению:
modprobe: ОШИБКА: не удалось вставить 'fglrx': неизвестный символ в модуле или неизвестный параметр (см. dmesg) не удалось.
Посмотрев на dmesg, я вижу следующие строки:
[ 2848.332722] fglrx: module license 'Proprietary. (C) 2002 - ATI Technologies, Starnberg, GERMANY' taints kernel.
[ 2848.332725] Disabling lock debugging due to kernel taint
[ 2848.343063] fglrx: Unknown symbol mtrr_del (err 0)
[ 2848.343114] fglrx: Unknown symbol mtrr_add (err 0)
Некоторые поиски привели меня к следующему сообщению: https://patchwork.ozlabs.org/patch/510277/, в котором упоминается удаление mtrr_add()
на основании того, что оно как-то плохо:
Крестовый поход по замене mtrr_add() на независимую от архитектуры arch_phys_wc_add() завершен, это обеспечит преимущество использования объединяющих запись реализаций (PAT на x86) вместо использования MTRR. После завершения крестового похода скрыть прямой доступ MTRR для водителей.
Итак, что мне теперь делать?
Я понятия не имею, как поступить на этом этапе? Должен ли я быть в источнике, ища функции, использующие mtrr_add
и mtrr_del
? Есть какой-то патч, который я должен применить? Это большой провал, и я должен сдаться?