The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Как установить AMD Catalyst в Fedora 21, не ломая GNOME и другие вещи
Преамбула
Прошу не начинать обсуждения не по теме вроде "какая ваша Fedora гадость, в
нормальных дистрибутивах проблем никаких" (в Fedora просто в силу прогресса
сломали раньше, дойдет и до остальных, например, в свежем Debian уже
случилось), "какой ваш GNOME гадость" (проблемы не специфичны для гномовского
десктопа, всякие rhythmbox и другой софт, использующий clutter сломан точно
также), "какие бинарные драйверы гадость" (с открытыми драйверами на многих
карточках безумно шумит кулер, пока не исправлена вот эта ошибка, а еще
проблемы с suspend и прочее) или так далее. А вот предложения, как сделать эти
инструкции более надежными приветствуются.

Задача

Итак, есть свежая Fedora 21, 64-х битная система с карточкой AMD, нужно
заставить работать Catalyst, чтобы не сломался gdm или программы, собранные с
clutter, в том числе GNOME. В rpmfusion каталиста нет, советы в интернете
предлагают идти на какие-то жертвы типа "снести GNOME", "выключить gdm" (лично
у меня с lightdm не работает блокировка экрана), "ставить левые пакеты
clutter/gnome-shell/etc после каждого обновления, пересобираемые каким-то
сомнительным товарищем и выкладываемые на что-то типа mediafire без подписи" и
так далее. Это не наш путь, нужно, чтобы работало все как есть и цивилизованно:
пакеты в rpm'ках, не сломанная функциональность и прочее. Это достижимо (ну,
почти). Инструкция проверена на последних версиях пакетов на данный момент
(Catalyst 14.12, ядро 3.17.7 gnome-shell 3.14.3, gdm 3.14.1, clutter 1.20.0)

Инструкция

Загружаем AMD Catalyst - amd-catalyst-omega-14.12-linux-run-installers.zip.
Распаковываем, переходим в fglrx-14.501.1003. Качаем патч, чтобы собрать с
ядром 3.17:

   wget https://bluehatrecord.files.wordpress.com/2014/11/3-17_kernel-patch.doc

Накладываем патч и собираем rpm пакет. Федоры в списке нет, зато есть RHEL7,
который почти F19, которая почти F21 - в общем, то, что надо!

   sh amd-driver-installer-14.501.1003-x86.x86_64.run --extract
   cd fglrx-install.*
   patch -p0 < ../3-17_kernel-patch.doc
   ./ati-installer.sh '14.501' --buildpkg RedHat/RHEL7_64a

Ставим пакет и создаем файл конфигурации Xorg.

   sudo rpm -i ../fglrx64_p_i_c-14.501.1003-1.x86_64.rpm
   aticonfig --initial

Выключаем драйвер radeon и kernel modesetting. 
Правим /etc/sysconfig/grub, в строку GRUB_CMDLINE_LINUX= добавляем 

   radeon.modeset=0 rd.driver.blacklist=radeon nomodeset

к тому, что там уже есть; пересоздаем конфиг grub командой 

   grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

на современной системе с UEFI, или же 

   grub2-mkconfig -o /boot/grub2/grub.cfg

на системой со старым BIOS или на UEFI-системе в legacy-режиме

Чиним ошибку в clutter. Создаем файл /etc/X11/xinit/xinitrc.d/cogl-setup.sh по такой инструкции:

   sudo sh -c "cat > /etc/X11/xinit/xinitrc.d/cogl-setup.sh" << EOF
   export COGL_DRIVER=gl
   export COGL_OVERRIDE_GL_VERSION=1.4
   export COGL_RENDERER=GLX
   export LD_PRELOAD=/usr/lib64/fglrx/fglrx-libGL.so.1.2
   EOF
   sudo chmod +x  /etc/X11/xinit/xinitrc.d/cogl-setup.sh

Чиним проверку версии X'ов в драйвере при использовании gdm. Аккуратнее - точно
выполняйте эти команды, нельзя их менять, если что-то в них непонятно - а то не
сработает, либо вообще повредите бинарник и придется переставлять fglrx:

   sudo -i
   Xorg -version > /amd_xversion 2>&1
   cd /usr/lib64/xorg/modules/drivers/
   offset=`strings -td fglrx_drv.so | grep '/proc/%i/fd/0' | sed 's/^ *//' | cut -d' ' -f1`
   echo -ne '/amd_xversion' | dd conv=notrunc of=fglrx_drv.so bs=1 count=13 seek=$offset
   cd ../extensions
   offsetext=`strings -td libglx.so | grep '/proc/%i/fd/0' | sed 's/^ *//' | cut -d' ' -f1`
   echo -ne '/amd_xversion' | dd conv=notrunc of=libglx.so bs=1 count=13 seek=$offsetext
   exit

Здесь на диске меняются два бинарника, если переставить rpm'ку fglrx, это
придется делать заново. В процессе будет создан файл /amd_xversion, не удаляйте
его! Оттуда драйвер будет считывать версию иксов.

Чиним запускаемый специальным образом gnome-shell, который выполняет gdm (да,
он сейчас не сам по себе, фон и верхнюю панель рисует именно gnome-shell).
Правим /usr/share/gdm/greeter/applications/gnome-shell.desktop и меняем строку

   Exec=gnome-shell --mode=gdm" на "Exec=env COGL_DRIVER=gl COGL_OVERRIDE_GL_VERSION=1.4 COGL_RENDERER=GLX LD_PRELOAD=/usr/lib64/fglrx/fglrx-libGL.so.1.2 gnome-shell --mode=gdm

Это самое несовершенное изменение - если обновить gdm, это придется делать
заново, так как rpm перетрет файл. Я не знаю, как это сделать более нормально -
патчить при загрузке изврат, вроде теоретически можно создать свою копию
gnome-shell.desktop и копию
/usr/share/gnome-session/sessions/gdm-shell.session, в котором прописать вместо
gnome-shell свою версию, а потом поправить dconf'ом файлик
/usr/share/gdm/greeter-dconf-defaults, чтобы gdm использовал системную сессию,
отличную от gdm-shell.session. Но, подозреваю, rpm это тоже переписывает.
В общем, если кто-то знает, как сделать аналог этого изменения, чтобы
нормально обновлялся gdm и ничего не ломалось - сообщите!


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

PPS. Ошибка в Clutter, из-за которой приходится прописывать переменные
окружения можно отслеживать на данной странице.
 
06.01.2015 , Автор: Stax
Ключи: fedora, amd, catalyst, gnome, clutter / Лицензия: CC-BY
Раздел:    Корень / Пользователю / X Window

Обсуждение [ RSS ]
  • 1.1, Zenitur (ok), 00:14, 07/01/2015 [ответить]  
  • +/
    В Opensuse уже давно разделение на core, opencl, x11 и ещё что-то. Неужели spec-файл для создания RPM для Fedora и Opensuse пишут разные люди?
     
     
  • 2.2, Stax (ok), 00:59, 07/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Разные. Стандарты на spec'и разные в разных дистрибутивах - очень много разных нестандартных макросов и стандартов, как делать те или иные вещи. У opensuse самые "простые" spec-файлы с минимумом макросов, в RH/fedora сложнее, особенно в последнее время, а в ALT (исторически со времен MDK, вероятно) самые сложные и насыщенные используемыми макросами.

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

    В любом случае, собственно само заворачивание fglrx в rpm'ку проблем не вызывает (в данном случае делается в одну команду). Ну да, штатная одним пакетом, но в данной ситуации это ни на что не влияет. В rpmfusion, кстати, для федоры тоже был разделенный пакет - драйвер, библиотеки, модуль ядра и тд все раздельно, можно оттуда взять спеки и собрать так, просто в данном случае смысла нет усложнять, если для себя делаешь. Его убрали из rpmfusion не потому, что спек написать проблема, а потому, что поддерживать некому (дело тяжелое и неблагодарное)..

     

  • 1.3, Аноним (-), 20:34, 07/01/2015 [ответить]  
  • +/
    > пока не исправлена вот эта ошибка

    Вообще-то уже исправлена - управление кулером средствами DPM запилено в ядре 3.19, -RC которого уже доступны :). В принципе там и патч с ручным управлением есть - Владимир Владимирович должен оценить.

    Так что вместо занятий таким эпичным кластерфаком лучше бы проверили что кулер более не гудит. Актуально на данный момент для GCN'ов.

     
     
  • 2.4, Stax (ok), 20:52, 07/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А почему вы считаете, что я не проверял? Совсем недавно ядро из drm-next собирал и смотрел. Ничего там исправлено - т.е. исправлено только для каких-то карточек конкретных, а например для 79XX (Southern Islands) пока решения нет. Это известные проблемы, автор обещал "в конце декабря" посмотреть.

    Да не в этом суть, исправят косяк - замечательно. Как я сказал, есть масса других причин, по которым может быть необходим каталист (нормальная настройка ТВ-выхода - выбор YUV/RGB режимов, limited/full range и тд), кому-то crossfire нужен, у кого-то ноут (с suspend'ом на открытом драйвере совсем плохо), ну мало ли что. Если вам лично нормально живется без каталиста - это прекрасно (мне тоже жилось неплохо до текущей карточки). Но вот для тех, кому он нужен, хотелось решение.

     
  • 2.8, Аноним (-), 18:47, 06/03/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >В принципе там и патч с ручным управлением есть - Владимир Владимирович должен оценить.

    Ручное управление не от хорошей жизни. Видиокарта и ос должны сразу все делать как надо, не не уши и мозги насиловать.

     

  • 1.5, Чудак (?), 16:15, 27/01/2015 [ответить]  
  • +/
    Я как-то пробовал ставить на OpenSuSe драйвер от ATI, однако после этого перестал работать необходимый для меня Skype, вернул, не разбираясь в причинах, открытый. Спасибо за то, что поделились поделился своими наработками, авось сгодятся...
     
  • 1.6, Аноним (-), 11:30, 30/01/2015 [ответить]  
  • +/
    7950. Ничего не гудит. Только смысл иметь производительную видеокарту и не пользоваться ей - для меня всегда оставалось загадкой.
     
     
  • 2.7, Аноним (-), 11:32, 30/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    *Производительную и недешевую
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру