The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Как установить AMD Catalyst в Fedor..."
Отправлено auto_tips, 07-Янв-15 00:14 
++ Преамбула
Прошу не начинать обсуждения не по теме вроде "какая ваша Fedora гадость, в нормальных дистрибутивах проблем никаких" (в Fedora просто в силу прогресса сломали раньше, дойдет и до остальных, например, в свежем Debian уже случилось), "какой ваш GNOME гадость" (проблемы не специфичны для гномовского десктопа, всякие rhythmbox и другой софт, использующий clutter сломан точно также), "какие бинарные драйверы гадость" (с открытыми драйверами на многих карточках безумно шумит кулер, пока не исправлена [[https://bugs.freedesktop.org/show_bug.cgi?id=73338 вот эта ошибка]], а еще проблемы с 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_kerne...

Накладываем патч и собираем 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. Я также опубликовал английский вариант на [[http://forums.fedoraforum.org/showpost.php?p=1719887&postcou... fedoraforum]] - это не совсем точный перевод русского текста, просто написав инструкцию на-английском, решил сделать и русский вариант, заодно упростил некоторые вещи, так как полагаю, что тут аудитория более подготовленная, чем на fedoraforum.

PPS. Ошибка в Clutter, из-за которой приходится прописывать переменные окружения можно отслеживать на [[https://bugzilla.redhat.com/show_bug.cgi?id=1054435 данной странице]].

URL:
Обсуждается: http://www.opennet.ru/tips/info/2876.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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