1

Я пытался установить последние драйверы 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? Есть какой-то патч, который я должен применить? Это большой провал, и я должен сдаться?

1 ответ1

1

Благодаря комментариям @DanielB все получилось.

Итак ... что мне нужно было сделать, это перейти на более старую версию ядра /xorg и убедиться, что она придерживается (несмотря на то, что Arch Linux разрабатывался, чтобы оставаться на переднем крае). Но это было немного сложно.linux-4.2.5-1

Поскольку я застрял в консоли, я вручную загрузил более старые пакеты из архива (в частности: linux-4.2.5-1, linux-headers-4.2.5-1 и xorg-server-1.17.4-2). Мне также пришлось получить старую версию группы пакетов xorg-drivers . Я поместил эти пакеты в /var/cache/pacman/pkg/ а затем понизил их с помощью команды pacman -U /path/to/package-file.pkg.tar.xz .

Затем переустановите драйвер Crimson и запустите aticonfig --initial чтобы сгенерировать xorg.conf.

Чтобы обновление системы не притворялось, я добавил эти две строки в /etc/pacman.config:

IgnorePkg   = linux linux-headers xorg-server
IgnoreGroup = xorg-drivers

Эти строки будут генерировать предупреждения при запуске pacman -Syu ... так что вы действительно не сможете забыть об этом. Когда выйдут новые драйверы AMD Crimson, я смогу временно отключить этот драйвер.

А потом взорвалась ...

После запуска pacman -Syu и перезагрузки что-то пошло не так (при перезагрузке застряла инициализация). Я не совсем уверен, что случилось, но я сделал следующее:

  • загрузиться с install-usb
  • сделать arch-chroot в моем основном разделе
  • отключить SDDM
  • перезагружать
  • переустановите Crimson и восстановите xorg.conf
  • включить SDDM

Это исправило это. Читая различные журналы, я понял, что после обновления модуль fglrx снова портит ядро, что приводит к сбою Xorg, что, в свою очередь, делает невозможным доступ systemd-logind к SDDM. И как любой разумной части ОС, Systemd просто пошел синицы вверх замок все (клавиатура не реагирует).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .