OpenSolaris, OpenIndiana, Nexenta Troubleshooting > Hardware
Драйвер для ATI Radeon HD 5650
keremet:
На ноут с такой видеокартой поставил OpenSolaris 2009.06. На момент выпуска дистриба такой видюхи еще не было и вместо специализированного драйвера (ati или radeonhd) загружается vesa. Разрешение экрана ноута не попадает в список стандартных расширений vesa, поэтому все отображается искаженно. Попробую скомпилировать свежий (17-Mar-2011) драйвер: http://ftp.x.org/pub/individual/driver/xf86-video-ati-6.14.1.tar.bz2
./configure
checking for DRI... configure: error: Package requirements (libdrm >= 2.2 xf86driproto) were not met:
No package 'libdrm' found
Как выяснилось, проблема в том, что версия имеющегося в репозитории libdrm ниже версии 2.2, значит надо компилировать.
скачать http://dri.freedesktop.org/libdrm/libdrm-2.4.24.tar.bz2
распаковать
./configure
make
pfexec make install
test -z "/usr/local/lib" || /usr/gnu/bin/mkdir -p "/usr/local/lib"
/bin/sh ./libtool --mode=install /usr/bin/ginstall -c libdrm.la '/usr/local/lib'
libtool: install: /usr/bin/ginstall -c .libs/libdrm.so.2.4.0 /usr/local/lib/libdrm.so.2.4.0
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm.so.2.4.0 libdrm.so.2 || { rm -f libdrm.so.2 && ln -s libdrm.so.2.4.0 libdrm.so.2; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm.so.2.4.0 libdrm.so || { rm -f libdrm.so && ln -s libdrm.so.2.4.0 libdrm.so; }; })
libtool: install: chmod +x /usr/local/lib/libdrm.so.2.4.0
libtool: install: /usr/bin/ginstall -c .libs/libdrm.lai /usr/local/lib/libdrm.la
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib
----------------------------------------------------------------------
test -z "/usr/local/include" || /usr/gnu/bin/mkdir -p "/usr/local/include"
/usr/bin/ginstall -c -m 644 xf86drm.h xf86drmMode.h '/usr/local/include'
test -z "/usr/local/lib/pkgconfig" || /usr/gnu/bin/mkdir -p "/usr/local/lib/pkgconfig"
/usr/bin/ginstall -c -m 644 libdrm.pc '/usr/local/lib/pkgconfig'
test -z "/usr/local/lib" || /usr/gnu/bin/mkdir -p "/usr/local/lib"
/bin/sh ../libtool --mode=install /usr/bin/ginstall -c libdrm_intel.la '/usr/local/lib'
libtool: install: warning: relinking `libdrm_intel.la'
libtool: install: (cd /export/home/keremet/compilation/libdrm-2.4.24/intel; /bin/sh /export/home/keremet/compilation/libdrm-2.4.24/libtool --silent --tag CC --mode=relink gcc -Wall -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wstrict-aliasing=2 -Winit-self -Wdeclaration-after-statement -Wold-style-definition -Wno-unused-parameter -Wno-long-long -Winline -I.. -I../intel -I../include/drm -g -O2 -version-number 1:0:0 -no-undefined -o libdrm_intel.la -rpath /usr/local/lib intel_bufmgr.lo intel_bufmgr_fake.lo intel_bufmgr_gem.lo mm.lo ../libdrm.la )
libtool: install: /usr/bin/ginstall -c .libs/libdrm_intel.so.1.0.0T /usr/local/lib/libdrm_intel.so.1.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm_intel.so.1.0.0 libdrm_intel.so.1 || { rm -f libdrm_intel.so.1 && ln -s libdrm_intel.so.1.0.0 libdrm_intel.so.1; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm_intel.so.1.0.0 libdrm_intel.so || { rm -f libdrm_intel.so && ln -s libdrm_intel.so.1.0.0 libdrm_intel.so; }; })
libtool: install: chmod +x /usr/local/lib/libdrm_intel.so.1.0.0
libtool: install: /usr/bin/ginstall -c .libs/libdrm_intel.lai /usr/local/lib/libdrm_intel.la
test -z "/usr/local/include/libdrm" || /usr/gnu/bin/mkdir -p "/usr/local/include/libdrm"
/usr/bin/ginstall -c -m 644 intel_bufmgr.h '/usr/local/include/libdrm'
test -z "/usr/local/lib/pkgconfig" || /usr/gnu/bin/mkdir -p "/usr/local/lib/pkgconfig"
/usr/bin/ginstall -c -m 644 libdrm_intel.pc '/usr/local/lib/pkgconfig'
/bin/sh ../libtool --mode=install /usr/bin/ginstall -c libdrm_radeon.la '/usr/local/lib'
libtool: install: warning: relinking `libdrm_radeon.la'
libtool: install: (cd /export/home/keremet/compilation/libdrm-2.4.24/radeon; /bin/sh /export/home/keremet/compilation/libdrm-2.4.24/libtool --silent --tag CC --mode=relink gcc -Wall -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wstrict-aliasing=2 -Winit-self -Wdeclaration-after-statement -Wold-style-definition -Wno-unused-parameter -Wno-long-long -Winline -I.. -I../radeon -I../include/drm -g -O2 -version-number 1:0:0 -no-undefined -o libdrm_radeon.la -rpath /usr/local/lib radeon_bo_gem.lo radeon_cs_gem.lo radeon_cs_space.lo radeon_bo.lo radeon_cs.lo bof.lo ../libdrm.la )
libtool: install: /usr/bin/ginstall -c .libs/libdrm_radeon.so.1.0.0T /usr/local/lib/libdrm_radeon.so.1.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm_radeon.so.1.0.0 libdrm_radeon.so.1 || { rm -f libdrm_radeon.so.1 && ln -s libdrm_radeon.so.1.0.0 libdrm_radeon.so.1; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libdrm_radeon.so.1.0.0 libdrm_radeon.so || { rm -f libdrm_radeon.so && ln -s libdrm_radeon.so.1.0.0 libdrm_radeon.so; }; })
libtool: install: chmod +x /usr/local/lib/libdrm_radeon.so.1.0.0
libtool: install: /usr/bin/ginstall -c .libs/libdrm_radeon.lai /usr/local/lib/libdrm_radeon.la
test -z "/usr/local/include/libdrm" || /usr/gnu/bin/mkdir -p "/usr/local/include/libdrm"
/usr/bin/ginstall -c -m 644 radeon_bo.h radeon_cs.h radeon_bo_gem.h radeon_cs_gem.h radeon_bo_int.h radeon_cs_int.h '/usr/local/include/libdrm'
test -z "/usr/local/lib/pkgconfig" || /usr/gnu/bin/mkdir -p "/usr/local/lib/pkgconfig"
/usr/bin/ginstall -c -m 644 libdrm_radeon.pc '/usr/local/lib/pkgconfig'
test -z "/usr/local/include/libdrm" || /usr/gnu/bin/mkdir -p "/usr/local/include/libdrm"
/usr/bin/ginstall -c -m 644 drm.h drm_mode.h drm_sarea.h i915_drm.h mga_drm.h nouveau_drm.h r128_drm.h radeon_drm.h savage_drm.h sis_drm.h via_drm.h mach64_drm.h '/usr/local/include/libdrm'
PKG_CONFIG_PATH Задается, чтобы указать на скомпилированную версию libdrm.
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ ./configure
make
pfexec make install
Making install in src
test -z "/usr/local/lib/xorg/modules/drivers" || /usr/gnu/bin/mkdir -p "/usr/local/lib/xorg/modules/drivers"
/bin/sh ../libtool --mode=install /usr/bin/ginstall -c ati_drv.la '/usr/local/lib/xorg/modules/drivers'
libtool: install: /usr/bin/ginstall -c .libs/ati_drv.so /usr/local/lib/xorg/modules/drivers/ati_drv.so
libtool: install: chmod +x /usr/local/lib/xorg/modules/drivers/ati_drv.so
libtool: install: /usr/bin/ginstall -c .libs/ati_drv.lai /usr/local/lib/xorg/modules/drivers/ati_drv.la
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib/xorg/modules/drivers
----------------------------------------------------------------------
test -z "/usr/local/lib/xorg/modules/drivers" || /usr/gnu/bin/mkdir -p "/usr/local/lib/xorg/modules/drivers"
/bin/sh ../libtool --mode=install /usr/bin/ginstall -c radeon_drv.la '/usr/local/lib/xorg/modules/drivers'
libtool: install: /usr/bin/ginstall -c .libs/radeon_drv.so /usr/local/lib/xorg/modules/drivers/radeon_drv.so
libtool: install: chmod +x /usr/local/lib/xorg/modules/drivers/radeon_drv.so
libtool: install: /usr/bin/ginstall -c .libs/radeon_drv.lai /usr/local/lib/xorg/modules/drivers/radeon_drv.la
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib/xorg/modules/drivers
----------------------------------------------------------------------
test -z "/usr/local/lib/xorg/modules/multimedia" || /usr/gnu/bin/mkdir -p "/usr/local/lib/xorg/modules/multimedia"
/bin/sh ../libtool --mode=install /usr/bin/ginstall -c theatre200_drv.la '/usr/local/lib/xorg/modules/multimedia'
libtool: install: /usr/bin/ginstall -c .libs/theatre200_drv.so /usr/local/lib/xorg/modules/multimedia/theatre200_drv.so
libtool: install: chmod +x /usr/local/lib/xorg/modules/multimedia/theatre200_drv.so
libtool: install: /usr/bin/ginstall -c .libs/theatre200_drv.lai /usr/local/lib/xorg/modules/multimedia/theatre200_drv.la
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib/xorg/modules/multimedia
----------------------------------------------------------------------
test -z "/usr/local/lib/xorg/modules/multimedia" || /usr/gnu/bin/mkdir -p "/usr/local/lib/xorg/modules/multimedia"
/bin/sh ../libtool --mode=install /usr/bin/ginstall -c theatre_detect_drv.la '/usr/local/lib/xorg/modules/multimedia'
libtool: install: /usr/bin/ginstall -c .libs/theatre_detect_drv.so /usr/local/lib/xorg/modules/multimedia/theatre_detect_drv.so
libtool: install: chmod +x /usr/local/lib/xorg/modules/multimedia/theatre_detect_drv.so
libtool: install: /usr/bin/ginstall -c .libs/theatre_detect_drv.lai /usr/local/lib/xorg/modules/multimedia/theatre_detect_drv.la
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib/xorg/modules/multimedia
----------------------------------------------------------------------
test -z "/usr/local/lib/xorg/modules/multimedia" || /usr/gnu/bin/mkdir -p "/usr/local/lib/xorg/modules/multimedia"
/bin/sh ../libtool --mode=install /usr/bin/ginstall -c theatre_drv.la '/usr/local/lib/xorg/modules/multimedia'
libtool: install: /usr/bin/ginstall -c .libs/theatre_drv.so /usr/local/lib/xorg/modules/multimedia/theatre_drv.so
libtool: install: chmod +x /usr/local/lib/xorg/modules/multimedia/theatre_drv.so
libtool: install: /usr/bin/ginstall -c .libs/theatre_drv.lai /usr/local/lib/xorg/modules/multimedia/theatre_drv.la
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib/xorg/modules/multimedia
----------------------------------------------------------------------
test -z "/usr/local/share/man/man7" || /usr/gnu/bin/mkdir -p "/usr/local/share/man/man7"
/usr/bin/ginstall -c -m 644 ati.7 radeon.7 '/usr/local/share/man/man7'
Получились 32-битные драйвера в каталоге /usr/local/lib/xorg
./modules/drivers/radeon_drv.so
./modules/drivers/ati_drv.so
./modules/multimedia/theatre_detect_drv.so
./modules/multimedia/theatre_drv.so
./modules/multimedia/theatre200_drv.so
Заменил ими имеющиеся в /usr/X11/lib/modules/ файлы с теми же именами. radeon_drv.so зависит от libdrm.so.2. Разместил libdrm.so.2.4.0 в /usr/X11/lib/ и сделал на нее ссылку libdrm.so.2 из /usr/lib
При запуске с 32-битным ядром они работают хорошо, по крайней мере проблема с разрешением решена. Для полного решения вопроса надо скомпилить 64-битные версии (оптимизированные и без отладочной информации):
wget http://dri.freedesktop.org/libdrm/libdrm-2.4.24.tar.bz2
tar xf libdrm-2.4.24.tar.bz2
cd libdrm-2.4.24
CFLAGS="-m64 -O3" ./configure --prefix=/data/solaris/compilation/atiout
make
make install
wget http://ftp.x.org/pub/individual/driver/xf86-video-ati-6.14.1.tar.bz2
tar xf xf86-video-ati-6.14.1.tar.bz2
cd xf86-video-ati-6.14.1
PKG_CONFIG_PATH=/data/solaris/compilation/atiout/lib/pkgconfig/ CFLAGS="-m64 -O3" ./configure --prefix=/data/solaris/compilation/atiout
make
make install
Полученные so разместил аналогично прежним, но в подкаталогах amd64. Разрешение на ноуте установилось адекватное как в 32-ом, так и в 64-битном режимах.
sCode:
Все сделал как написано в статье:
--- Код: ---ls /usr/X11/lib/modules/
amd64 drivers extensions multimedia NVIDIA
ls /usr/X11/lib/modules/drivers
amd64 ati_drv.so nvidia_drv.so radeon_drv.so
/usr/X11/lib/modules/multimedia
theatre_detect_drv.la theatre_drv.la theatre200_drv.la
theatre_detect_drv.so theatre_drv.so theatre200_drv.so
ls /usr/X11/lib/ | grep libdrm
libdrm.so.2
libdrm.so.2.4.0
ls /usr/lib | grep libdrm
libdrm.so.2
--- Конец кода ---
Но окна по прежнему отображаются "рывками".
Я понял что нужно сгенерировать xorg.conf, но как это сделать под OpenSolaris?
--- Код: ---/usr/X11/bin/Xorg -configure
--- Конец кода ---
Переименование и перенос полученного xorg.conf.new в /etc/X11 ничего не дает.
P.S.: Драйверов для ati и radeon в папке /usr/X11/lib/modules/drivers изначально не было вообще, папки /usr/X11/lib/modules/multimedia тоже.
keremet:
Скинь сюда вывод команды
pfexec scanpci
sCode:
--- Код: ---pci bus 0x0000 cardnum 0x00 function 0x00: vendor 0x1022 device 0x9601
Advanced Micro Devices [AMD] RS780 Host Bridge Alternate
pci bus 0x0000 cardnum 0x01 function 0x00: vendor 0x1022 device 0x9602
Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (int gfx)
pci bus 0x0000 cardnum 0x05 function 0x00: vendor 0x1022 device 0x9605
Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (PCIE port 1)
pci bus 0x0000 cardnum 0x06 function 0x00: vendor 0x1022 device 0x9606
Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (PCIE port 2)
pci bus 0x0000 cardnum 0x11 function 0x00: vendor 0x1002 device 0x4391
ATI Technologies Inc SB700/SB800 SATA Controller [AHCI mode]
pci bus 0x0000 cardnum 0x12 function 0x00: vendor 0x1002 device 0x4397
ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
pci bus 0x0000 cardnum 0x12 function 0x02: vendor 0x1002 device 0x4396
ATI Technologies Inc SB700/SB800 USB EHCI Controller
pci bus 0x0000 cardnum 0x13 function 0x00: vendor 0x1002 device 0x4397
ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
pci bus 0x0000 cardnum 0x13 function 0x02: vendor 0x1002 device 0x4396
ATI Technologies Inc SB700/SB800 USB EHCI Controller
pci bus 0x0000 cardnum 0x14 function 0x00: vendor 0x1002 device 0x4385
ATI Technologies Inc SBx00 SMBus Controller
pci bus 0x0000 cardnum 0x14 function 0x02: vendor 0x1002 device 0x4383
ATI Technologies Inc SBx00 Azalia (Intel HDA)
pci bus 0x0000 cardnum 0x14 function 0x03: vendor 0x1002 device 0x439d
ATI Technologies Inc SB700/SB800 LPC host controller
pci bus 0x0000 cardnum 0x14 function 0x04: vendor 0x1002 device 0x4384
ATI Technologies Inc SBx00 PCI to PCI Bridge
pci bus 0x0000 cardnum 0x14 function 0x05: vendor 0x1002 device 0x4399
ATI Technologies Inc SB700/SB800 USB OHCI2 Controller
pci bus 0x0000 cardnum 0x16 function 0x00: vendor 0x1002 device 0x4397
ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
pci bus 0x0000 cardnum 0x16 function 0x02: vendor 0x1002 device 0x4396
ATI Technologies Inc SB700/SB800 USB EHCI Controller
pci bus 0x0000 cardnum 0x18 function 0x00: vendor 0x1022 device 0x1200
Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] HyperTransport Configuration
pci bus 0x0000 cardnum 0x18 function 0x01: vendor 0x1022 device 0x1201
Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Address Map
pci bus 0x0000 cardnum 0x18 function 0x02: vendor 0x1022 device 0x1202
Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] DRAM Controller
pci bus 0x0000 cardnum 0x18 function 0x03: vendor 0x1022 device 0x1203
Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Miscellaneous Control
pci bus 0x0000 cardnum 0x18 function 0x04: vendor 0x1022 device 0x1204
Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Link Control
pci bus 0x0001 cardnum 0x05 function 0x00: vendor 0x1002 device 0x9712
ATI Technologies Inc M880G [Mobility Radeon HD 4200]
pci bus 0x0002 cardnum 0x00 function 0x00: vendor 0x168c device 0x002b
Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express)
pci bus 0x0003 cardnum 0x00 function 0x00: vendor 0x10ec device 0x8136
Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller
--- Конец кода ---
keremet:
Судя по исходникам, видюха должна поддерживаться. Ее id на PCI в исходниках упомянуты (0x1002, 0x9712).
Покажи содержимое /etc/X11/xorg.conf
Навигация
Перейти к полной версии