Как установить AMD Crimson в 64-разрядной версии Arch Linux?

3808
teresko

Я пытался установить последние версии драйверов 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) 

Некоторый поиск в Google привел меня к этому сообщению в списке рассылки: https://patchwork.ozlabs.org/patch/510277/, в котором упомянуто удаление mtrr_add()на основании того, что оно как-то плохо:

Крестовый поход по замене mtrr_add () на независимую от архитектуры arch_phys_wc_add () завершен, это обеспечит преимущество использования объединяющих запись реализаций (PAT на x86) вместо использования MTRR. После завершения крестового похода скрыть прямой доступ MTRR для водителей.

Итак, что мне теперь делать?

Я понятия не имею, как поступить на этом этапе? Должен ли я искать источник, искать функции с помощью mtrr_addи mtrr_del? Есть какой-то патч, который я должен применить? Это большой провал, и я должен сдаться?

1
/ edit: Небольшое исправление: этот драйвер совместим (ну, в любом случае, вызов `seq_printf`) до Linux 4.2. AMD говорит, что она совместима до 3.19. Так что вам придется использовать более старую ветку ядра. Daniel B 8 лет назад 0
@DanielB хм .. так как я не очень хорош в этом, я просто попытаюсь переустановить до версии 2015.12.01 (это с ядром 4.2.5), потому что, исходя из того, что я погуглил, понижение недавно установленной системы может быть слишком сложно для меня. teresko 8 лет назад 0
Это не сработает, оно снова сломается при первом же обновлении. Вам нужно использовать другой пакет ядра или другой дистрибутив, потому что Arch постоянно обновляется. Старые версии пакетов удаляются быстро. Daniel B 8 лет назад 0

1 ответ на вопрос

1
teresko

Thanks to @DanielB comments I got it working.

So ... what I had to do was to downgrade to older kernel/xorg version and make sure that it sticks (despite Arch Linux being design to stay on cutting edge). But it was a bit tricky.linux-4.2.5-1

Since I was stuck in console, I manually downloaded older packages from archive (specifically: linux-4.2.5-1, linux-headers-4.2.5-1 and xorg-server-1.17.4-2). I also had to get older version of xorg-drivers package group. I placed those packages in /var/cache/pacman/pkg/ and then downgraded them with command pacman -U /path/to/package-file.pkg.tar.xz.

And then reinstalled Crimson driver and run aticonfig --initial to get xorg.conf generated.

To stop system update from faking it all up, I added these two lines in /etc/pacman.config:

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

These lines will generate warnings, when running pacman -Syu ... so you wont really be able to forget it. When the new AMD Crimson drivers come out, I will be able to temporary disable this temporary.

And then it blew up ...

After running pacman -Syu and rebooting something went wrong (on reboot the initialization got stuck). I am not entirely sure what happened, but what I did was:

  • boot from install-usb
  • do an arch-chroot in my primary partition
  • disable sddm
  • reboot
  • reinstall Crimson and regenerate xorg.conf
  • enable sddm

This fixed it. What I gathered from reading various logs was: after update fglrx module was tainting kernel again, which caused Xorg to fail, which in turn made it impossible for systemd-logind to reach SDDM. And as any reasonable part of OS, systemd just went tits-up locking everything (keyboard was not responding).

Похожие вопросы