Установка видеодрайверов ATI на OpenSuSE 10.0, 10.1, 10.2 ( перевод с http://opensuse.org/ATI ) Легкий путь. Преимущество легкого пути в том что вам не придется перекомпилировать kernel при каждом его обновлении. Шаг 1. Добавление репозитория. Добавьте репозиторий в YaST: 10.2 - http://www2.ati.com/suse/10.2 10.1 - http://www2.ati.com/suse/sle10 Шаг 2. Версия kernel Узнайте какая у вас версия kernel, выполнив следующую команду: $ uname – r Шаг 3. Установка пакетов В зависимости от версии вашего дистрибутива установите один из следующих пакетов: 10.2 - x11-video-fglrxG01 ati-fglrxG01-kmp-<версия kernel> 10.1 - x11-video-fglrx ati-fglrx-kmp-<версия kernel> Шаг 4 - SaX2 В терминале в режиме супер-пользователя выполните следующую команду: #sax2 –r Шаг 5 – Перезапустить X Теперь перезапустите Иксы( Нажав Ctrl+Alt+Backspace ) Шаг 6. Проверьте работает ли… Найдите игру xmoto в меню и попробуйте ее запустить. Или выполните команду в терминале: $ glxgears Сложный путь. Преимущество сложного пути в том, что вы получите последнюю версию драйвера. Для 32-х битовых систем. Перед тем как что либо устанавливать, проверьте установлены ли у вас следующие пакеты: • kernel-sourse • qt3 • compat • compat-libstdc++ • libstdc++ • libstdc++-devel • libgcc • xorg-x11-libs • xorg-x11-devel • Mesa • Mesa-devel • fontconfig • fontconfig-devel • expat • freetype • freetype2 • freetype2-devel • zlib • zlib-devel • gcc Примечание : версия libdrm должна быть 2.3. Через YaST проверьте версию Kernel-default и Kernel-source пакетов. Оба должны быть одинаковыми. Если они разные, загрузите обновления kernel через YaST. Для 64-х битовых систем. Перед тем как что либо устанавливать проверьте установлены ли у вас следующие 32-х битовые пакеты, так же как 64-х битовые «коллеги» пакетов перечисленных выше в секции «для 32-х битовых систем» : • kernel-source • compat-32bit • qt3-32bit • libstdc++ • libgcc • xorg-x11-libs-32bit • xorg-x11-devel-32bit • Mesa-32bit • Mesa-devel-32bit • Fontconfig-32bit • expat-32bit • freetype2-32bit • zlib-32bit • gcc Примечание : версия libdrm должна быть 2.3 Опционально: Установка Xorg 7.2 Final Если у вас OpenSuSE 10.2 или если вы хотите обновить версию X к 7.2 выполнте следующие действия: OpenSuSE 10.2 поставляется с Xorg 7.2 RC2. Вы можете оставить текущую версию, но большинство людеq предпочитают иметь последний релиз. Итак здесь написано как получить последнюю версию. Примечание : Самые новые драйвера ATI не поддерживают Xorg 7.2. Только 7.11 и ниже. Примечание : Самыая новая версия драйвера ( по крайней мере 64-х битовый драйвер ) не появляется на главной странице загрузки драйверов ATI linux ( http://ati.amd.com/support/drivers/linux64...x64-firegl.html ). Самая последняя версия драйвера может быть найдена на странице «предыдущие версии»: http://ati.amd.com/support/drivers/linux64...us-linux64.html. В мае был выпущен очередной драйвер, и в установочных инструкциях было написано что драйвер должен работать с «XOrg 6.7, 6.8, 6.9, 7.0, 7.1 или 7.2;». Тем не менее пока что это не совсем так... Via YaST В YaST просто добавьте репозиторий к источникам установки: type: http (если не работает попробуйте ftp) server: ftp.skynet.be directory: /pub/software.opensuse.org/xorg72/openSUSE_10.2/ Теперь запустите программу Install Software(установка пакетов) и выберите Установить из Источника и выберите только что добавленный источник. Обновите все. Или обновите только Xorg пакеты. Via Zypper Шаг 1. Добавить источник # zypper service-add http://ftp.skynet.be/pub/software.opensuse.../openSUSE_10.2/ Xorg72 Determining http://ftp.skynet.be/pub/software.opensuse.../openSUSE_10.2/ source type... http://ftp.skynet.be/pub/software.opensuse.../openSUSE_10.2/ is type YUM Added Installation Sources: [x]* Xorg72 (http://ftp.skynet.be/pub/software.opensuse.org/xorg72/openSUSE_10.2/) Шаг 2. Обновить исходники # zypper refresh ... ... ... Refreshing Xorg72 URI: http://ftp.skynet.be/pub/software.opensuse.../openSUSE_10.2/ DONE ... ... ... Шаг 3. Обновить систему Примечание: это обновит все системные пакеты для которых есть обновления # zypper update --type=package --no-confirm --skip-interactive Примечание: С 5/5/2007, официальные ATI драйвера не поддерживают Xorg 7.2 и выше (версия драйвера – 8.36.5)(исходник?) Файл изменений(change log) показывает поддержку с версии 8.33.6 Примечание: это обновление установит ранее упоминаемую libdrm. Рекомендовано. Подготовить kernel к установке новых драйверов. Этот шаг не обязателен, но желателен. Если вы уже пытались установить ATI драйвера выполните этот шаг. Откройте консоль и выполните следуюющие команды: # su password # cd /usr/src/linux # make mrproper # make cloneconfig # make modules_prepare # make clean Если вы раньше уже пытались устанавливать драйвера, выполните следующую команду, если нет, двигайтесь дальше. Удалите предыдущие драйвера выполнив команду: # rpm -e $(rpm -qa | grep fglrx) Загрузка и установка ATI драйверов. Шаг 1. Загрузка последнего драйвера. Скачайте на сайте ATI последний драйвер (8.39.4 на момент написания статьи) Шаг 2. Генерация драйвера для вашего дистрибутива. В режиме супер-пользователя запустите инсталятор выполнив команду: # sh ati-driver-installer-8.37.6-x86.x86_64.run –listpkg Будет выведен список дистрибутивов для которых можно сгенерировать драйвер: SuSE/NLD9-IA32 SuSE/SLES9-IA32 SuSE/SUSE91-IA32 SuSE/NLD9-AMD64 SuSE/SLES9-AMD64 SuSE/SUSE91-AMD64 SuSE/SUSE100-IA32 SuSE/SUSE92-IA32 SuSE/SUSE93-IA32 SuSE/SUSE100-AMD64 SuSE/SUSE92-AMD64 SuSE/SUSE93-AMD64 SuSE/SLED10-IA32 SuSE/SLES10-IA32 SuSE/SUSE101-IA32 SuSE/SLED10-AMD64 SuSE/SLES10-AMD64 SuSE/SUSE101-AMD64 SuSE/SUSE102-IA32 SuSE/SUSE102-AMD64 Теперь выполните следующую команду добавив имя вашего дистрибутива в конце: # sh ati*.run --buildpkg SuSE/SUSE102-IA32 ( для 32х битовой OpenSuSE 10.2 ) или # sh ati*.run --buildpkg SuSE/SUSE102-AMD64 ( для 64х битовой OpenSuSE 10.2) Сгенерированный драйвер будет помещен в: /usr/src/packages/RPMS/i386 (для 32х битовых систем) /usr/src/packages/RPMS/x86_64 (для 64х битовых систем) Шаг 3. Установка драйвера. Если вы на 5 уровне выполнения (runlevel 5), переключитесь на уровень выполнения 3 написав следующую команду в консоли( в режиме супер-пользователя): # init 3 Это выгрузит X(иксы) и вернет вас к TTY 1. Авторизуйтесь как суперпользователь, и переместитесь в директорию содержащую драйвер: # cd /usr/src/packages/RPMS/i386 или: # cd /usr/src/packages/RPMS/x86_64 ( для 64х битовых систем) Установите драйвер выполнив команду: # rpm –Uvh fgl*.rpm После того, как установка завершится, необходимо запустить утилиту aticonfig: # ldconfig # aticonfig --initial --input=/etc/X11/xorg.conf Примечание( для тех кто уже пытался устанавливать драйвера): команда rmp –e не всегда удаляет установленные файлы. В этом случае вам необходимо вручную удалить их или ввести полное имя, в другом случае у вас возникнут ошибки с конфликтующими файлами. Опционально: Шаг 4. Настройка установленного драйвера Выполните команду: # sax2 –r –m 0=fglrx Это заставит SaX2 использовать fglrx драйвер. Установите необходимое разрешение экрана сохранитесь и закройте программу. Внимание: если SaX2 не работает(это касается некоторых х1000 карточек (х1400, х1600, х1600 pro), выполните следующие действия, ели это не поможет, следуйте инструкциям из секции «Устранение проблем». Итак, если SaX2 останавливается во время загрузки драйвера, в файле /var/log/SaX.log вы можете найти что-то вроде: (EE) fglrx(0): PreInitDAL failed (EE) fglrx(0): PreInit failed Для устранения проблемы необходимо отключить framebuffer в консоли. Откройте файл /boot/grub/menu.lst и удалите выражение vga=xxx из строки kernel. (смотрите http://bugzilla.novell.com/show_bug.cgi?id=222993 ) SaX2 будет запускать свою конфигурационную программу в Х. Здесь у вас будет больше настроек, чем в ATI Control Center, но это ваш выбор, что использовать… От себя добавлю, что лучше не использовать SaX2, если у вас несколько мониторов, т. к. возникает много ошибок. SaX2 пишет что подключен 1 монитор, а ATI Control Center видит два, отключаю, перегружаюсь, ни один монитор не работает... Если в SaX2 добавить один монитор, та же история - после перезагрузки не работает ни один монитор. 3D Акселерация. Включенная по умолчанию опция «составные расширения»(Composite Extensions) отключает поддержку DRI и 3D акселерацию в некоторых случаях. Внимание: если вы планируете использовать Beryl пропустите этот шаг(конфигурирование Beryl описано в конце данной статьи). Итак, чтобы отключить составные расширения, подредактируйте/добавьте следующие строчки в файл /etc/X11/xorg.conf : Section “Extensions” Option “Composite” “false” EndSection Другие важные опции в xorg.conf Для наиболее стабильной работы fglrx драйвера установите следующие опции в секции “Device” в файле xorg.conf: Option "BlockSignalsOnLock" "on" Option "KernelModuleParm" "locked-userpages=0" Option "OpenGLOverlay" "off" Option "UseFastTLS" "2" Option "UseInternalAGPGART" "no" Option "VideoOverlay" "on" Option "mtrr" "off" Option "no_accel" "no" Option "no_dri" "no" Option "EnablePrivateBackZ" "no" Option "backingstore" "true" Шаг 5. Перезагрузка. Наконец перезагрузите вашу систему, и у вас должна появится 3d акселерация # shutdown –r now Тестирование. Чтобы удостоверится в том, что у вас работает 3d акселерация, выполните команду: $ glxinfo если появится что-то вроде: ... OpenGL vendor string: ATI Technologies Inc. OpenGL renderer string: RADEON X850 PRO Generic OpenGL version string: 2.0.6286 (8.33.6) ... значит все получилось, если же: ... OpenGL vendor string: Mesa project: www.mesa3d.org OpenGL renderer string: Mesa GLX Indirect OpenGL version string: 1.2 (1.5 Mesa 6.5.1) ... тогда не вышло... читайте секцию «Устранение проблем» Еще одна команда для проверки: $ fglrxingo чтобы протестировать 3D выполните: $ fgl_glxgears Мои результаты(OpenSuSE 10.2, Xorg 7.2, Ati Radeon x1600 pro 256 mb, driver - 8.39): 1618 frames in 5.0 seconds = 323.600 FPS 2810 frames in 5.0 seconds = 562.000 FPS 2036 frames in 5.0 seconds = 407.200 FPS Не густо... Поздравляю, вам удалось установить видеодрайвер. Если что-то не вышло, читайте секцию «устранение проблем». Устранение проблем Если SaX2 зависает, или в строке OpenGL vendor написано Mesa следуйте инструкциям ниже: Убедитесь, что вы обновили libdrm к версии 2.3. Сначала посмотрите log файл расположенный в /var/log/SaX.log чтобы увидеть какие ошибки повлекли за собой зависание. Также посмотрите Xorg log файлы на наличие ошибок по поводу fglrx модуля в /var/log/Xorg.0.log : $ cat /var/log/Xorg.0.log | grep "(EE)" Устранение проблем. Шаг 1. Переключитесь на уровень выполнения 3 (runlevel 3) ( $ init 3 ) и выполните следующие команды: # cd /usr/src/linux # make mrproper # make cloneconfig # make modules_prepare # make clean Удалите предыдущие драйвера выполнив следующую команду: # rpm –e $(rpm –qa | grep fglrx) Устранение проблем. Шаг 2. Переустановите драйвер выполнив: # rpm –Uvh –force fgl*.rpm Устранение проблем. Шаг 3. Используйте ldconfig и aticonfig чтобы настроить xorg.conf : # ldconfig # aticonfig --initial --input=/etc/X11/xorg.conf После этого проверьте другие важные опции в xorg.conf (описано выше) После переключитесь на уровень выполнения 3. ( # init 3 ); Устранение проблем. Шаг 4. Теперь нам нужно удостоверится что модули kernel на месте: # fglrx-kernel-build.sh # sax2 –r –m 0=fglrx –b /usr/share/doc/packages/fglrx/sax2-profile Если не работает попробуйте: # sax2 –r –m 0=fglrx [u]Внимание: если и после этого SaX2 виснет, попробуйте обновить sax2. После этого попробуйте запустить SaX2 опять. Примечание: для того чтобы изменения вступили в силу, необходимо перезагрузится.[/u] type: http server: ftp-linux.cc.gatech.edu directory: /pub/suse/suse/update/10.2 Устранение проблем ++. Эти инструкции были взяты с уже удаленной страницы драйверов ATI: 3D не работает, даже если fglrx загружен. Симптомы: Когда запускается тест в SaX2, он виснет и log файл содержит ошибку: Error: No screens found Эта проблема вызвана несовместимостью между драйверами OSS Radeon и fglrx. Выполните: lsmod | grep radeon lsmod | grep fglrx Если оба модуля kernel загружены, вам необходимо удалить модуль radeon : # modprobe –r radeon После этого перезагрузитесь. 3D не работает для обычного пользователя, но работает для супер-пользователя(root) Проблема возникала на драйвере 8.36.5-1.i386, OpenSuSE 10.2, Radeon X1300 Для пользователей bash: LIBGL_DEBUG=verbose glxinfo посмотрите на предмет ошибки: undefined symbol: __glXFindDRIScreen Удалите libGL.so файлы из /usr/lib и замените их символическими ссылками из /usr/X11R6/lib : ln -s /usr/X11R6/lib/libGL.so libGL.so ln -s /usr/X11R6/lib/libGL.so.1 libGL.so.1 ln -s /usr/X11R6/lib/libGL.so.1.2 libGL.so.1.2 Возможно вам также понадобится включить POSIX shared memory. [fglrx] API ERROR: could not register entrypoit for… Загрузите файл http://www.ground-impact.com/libGL.so.1.2 Замените оригинальный libGL.so.1.2 в /usr/X11R6/lib [fgl_glxgears] Пишет “Permission denied” в режиме обычного пользователя При выполнении команды # fgl_glxgears выводятся следующие данные: Using GLX_SGIX_pbuffer FGLTexMgr: open of shared memory object failed (Permission denied) FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! FGLTexMgr: open of shared memory object failed (Permission denied) FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! FGLTexMgr: open of shared memory object failed (Permission denied) FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! FGLTexMgr: open of shared memory object failed (Permission denied) FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! FGLTexMgr: open of shared memory object failed (Permission denied) FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! FGLTexMgr: open of shared memory object failed (Permission denied) FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! FGLTexMgr: open of shared memory object failed (Permission denied) ... Решение: Включить POSIX shared memory добавьте следующую строчку в /etc/fstab : tmpfs /dev/shm tmpfs defaults 0 0 после смонтируйте командой: mount /dev/shm Примечание: эта строка может выглядеть отличной от других, но это правильное решение. Video Output Driver Xv не проигрывает видео Решение: использовать в качестве Video Output драйвер gl2 Mplayer: mplayer -vo gl2 <file> GMplayer: echo "vo_driver = \"gl2\"" >> .mplayer/gui.conf Xine: echo "video.driver:opengl" >> .xine/config AIGLX error __driCreateNewScreen ATI драйверы не поддерживают AIGLX (исключение если у вас старая ATI карта (pre-r300)) в данный момент, значит нужно «приклеится» к Xorg или Xgl. Если в xorg.0.log есть ошибка, что-то вроде: (EE) AIGLX error: dlsym for __driCreateNewScreen_20050727 failed (/usr/lib/dri/fglrx_dri.so: undefined symbol: __driCreateNewScreen_20050727) (EE) AIGLX: reverting to software rendering добавьте следующие строчки в /etc/X11/xorg.conf : Section “ServerFlags” Option “AIGLX” “off” EndSection cp: missing destionation file operand Когда вы запускаете: ./ati-driver-installer-8.xx.xx-i386.run –buildpkg SuSE/SUSE100-IA32 может появится что-то вроде: cp: missing destination file operand after Вам нужно выполнить LC_ALL=C перед выполнением команды чтобы решить проблему # LC_ALL=C ./ati-driver-installer-8.xx.xx-i386.run –buildpkg SuSE/SUSE100-IA32 ATI + Beryl + XGL + OpenSuSE 10.2 Примечание: убедитесь вы выполнили все необходимые действия описанные выше, перед тем как устанавливать Beryl Шаг 1. Установка Beryl В YaST просто добавте репозиторий к источникам установки. type: http (если не работает измените на ftp) server: ftp.skynet.be directory: /pub/software.opensuse.org/X11:/XGL/openSUSE_10.2/ Установите следующее: aquamarine-snapshot beryl-core-snapshot beryl-manager-snapshot beryl-plugins-snapshot beryl-settings-snapshot beryl-vidcap-snapshot emerald-snapshot emerald-themes-snapshot Также вы должны удалить все compiz пакеты игнорируя зависимости с XGL Шаг 2. Конфигурация Если вы используете несколько мониторов, вам необходимо добавить «Xinerama» к файлу xorg.conf чтобы предотвратить баги. Откройте xorg.conf ( /etc/X11/xorg.conf ) и добавьте следующие строчки: Section "ServerLayout" Option "Xinerama" "on" EndSection Выполните следующую команду( как обычный пользователь, не root! ) чтобы запустить Beryl-manager : $ beryl-manager В менеджер задач будет добавлена иконка, похожая на рубин, кликните на ней правой кнопкой мыши, убедитесь, что вдополнительных(advanced) опциях включены следующие: Composite Overlay Window -> "Don't use COW" или "use COW" или "Automatic" (проверьте что работает лучше) Rendering platform -> Force XGL Binding -> XGL Binding Rendering -> XGL Rendering Теперь добавьте Beryl в KDE Если запущен другой составной менеджер По всей вероятности KDE управляет собственными эффектами ( используя kompmgr), и из-за этого Beryl не может запустится. Чтобы отменить эффекты окон KDE, откройте центр управления и отмените эффекты полупрозрачности(translucency) K Menu -> Configure Desktop (Personal Settings). Переместитесь к Desktop -> Window Behaviour. Переместитесь на послендюю вкладку, «Полупрозрачность», и снимите галочку «Использовать полупрозрачность/тени». Теперь можете запустить beryl-manager снова, все должно работать… Автозапуск Beryl Для КDE просто выполните команды(как обычный пользователь, не root): ln -s /usr/bin/beryl-manager ~/.kde/Autostart/beryl-manager ln -s /usr/bin/beryl ~/.kde/Autostart/beryl Для Gnome : Откройте центр управления -> Сессии(Control Center -> Sessions). Переместитесь на последнюю вкладку «Программы автозагрузки»(Startup Programs). Здесь, добавьте 2 элемента: beryl-manager beryl Шаг 3. Включить XGL и перезагрузится. Из YaST переместитесь к System и запустите редактор sysconfig Sysconfig Editor -> Desktop -> Display Manager -> DISPLAYMANAGER_XSERVER. Измените XSERVER из Xorg на Xgl. После этого нажмите finish и перезагрузитесь или Просто откройте консоль, в режиме суперпользователя выполните: # rcxdm restart Или если вы используете gdm # rcgdm restart Beryl должен автоматически загрузится и вы должны увидеть иконку в панели задач. Нажмите на ней, выберите Select Window Manager и нажмите на Beryl. Вы должны увидеть анимацию, это значит что Beryl работает. Если Beryl настроить не удалось поищите возможное решение на сайт Beryl. Для пользователей GNOME c XGL: Если после того как gdm загружается у вас возникают проблемы с X сервером, и появляется сообщение «X Server is already running…» вам нужно подредактировать файл /etc/opt/gnome/gdm/custom.conf. Найдите следующее и измените при необходимости: [daemon] GdmXserverTimeout=30 #Нужно вставить или модифицировать к 30 [servers] 0=inactive #вставте или модифицируйте 0 к inactive 1=Xgl #вставте или модифицируйте 1 к Xgl [server-Standard] #модифицируйте стандартный сервер к этому: name=Xgl command=/usr/bin/Xgl :1 -ac -accel glx=pbuffer -accel xv=pbuffer chooser=false handled=true flexible=true priority=0 Фу, справился Может не очень грамотно... Пишите замечания, подредактирую. Если после установки дров команда glxinfo от рута выдает OpenGL Vendor: Ati а от пользователя та же команда первой строчкой ругается на DRI: operation not permitted (или что то подобное) то нужно подправить xorg.conf В этом файле есть секция Section "DRI" ищем строчку Mode 0660 и меняем цифру на 0666 И еще проверяем Section "Module" там должно быть Load "dri" После перезагруза все будет пахать как надо. А то я вчера впервые столкнулся с этим на 32 битном дистрибе весь вечер мучался )) В 64 битном такого не наблюдал...