SDB:Nouveau

Перейти к: навигация, поиск
Это руководство поможет вам использовать свободный драйвер nouveau (xorg-x11-driver-video-nouveau/xf86-video-nouveau). Это обеспечит неплохую поддержку 2D с ускорением EXA и некоторую поддержку 3D.

Первым делом

Во-первых, уточните имя вашей карты и её чипсета:

/sbin/lspci | grep VGA 

После выполнения указанной команды будет выведена строка, подобная этой:

 01:00.0 VGA compatible controller: NVIDIA Corporation G96 [GeForce 9500 GT] (rev a1)

Поддерживаемое оборудование

Версия ядра 3.9+, экспериментальная поддержка управления вращением вентилятора для карт под кодовым именем NV40, NV50.
Версия ядра 3.8+, включена поддержка 3D-ускорения для всех карт на чипе GeForce.
Внимание: Начиная с версии дистрибутива openSUSE 11.3, по умолчанию используется KMS. Если вы испытываете проблемы с поддержкой KMS, то в качестве дополнительного варианта используется драйвер nv, в противном случае, по умолчанию задействован fbdev. Это возможно только при передачи параметра nomodeset в командной строке ядра (см. примечание к выпуску через центр управления YaST).

Список поддерживаемого оборудования (с расшифровкой кодовых имен) можно найти здесь. Для более детального изучения обратитесь к таблице особенностей свободного драйвера nouveau.

Следует отметить, что nouveau не может автоматически контролировать скорость вентилятора и для карт без поддержки интерфейса управления выставляется максимальное число оборотов.

Установка драйвера nouveau

Это необходимо при использовании проприетарного драйвера nvidia, в случае возврата на nouveau . По умолчанию для установки и использования драйвера nouveau ничего предпринимать не надо. Данный драйвер установлен и готов к применению, за исключением случаев с прошивкой (см. Firmware), которую можно установить в одно нажатие.

Удаление проприетарного драйвера nvidia

1. Выполните деинсталляцию драйвера с помощью сценария, например, установленного сложным способом. Если же вы установили драйвер в одно нажатие или напрямую с репозитория (cм. драйверы NVIDIA), тогда для удаления используйте YaST (GUI) или zypper (CLI), отключив перед этим соответствующий репозиторий. В последнем случае, вы можете просто удалить все пакеты содержащие имя "nvidia":

sudo zypper mr -dR $(grep -r 'download.nvidia.com' /etc/zypp/repos.d | sed -n '/url/s/.*\=//p')
sudo zypper rm -U nvidia*

2. Переустановите GLX библиотеки сервера Xorg (версия проприетарного драйвера ниже 319.x):

sudo zypper in -f xorg-x11-server Mesa Mesa-libGL1

3. Удалите строку, предотвращающую загрузку модуля nouveau (blacklist nouveau):

sudo sed -i '/nouveau$/d' /etc/modprobe.d/*

4. Создайте резервную копию файла конфигурации xorg.conf сгенерированного утилитой nvidia-xconfig:

sudo mv /etc/X11/xorg.conf /etc/x11/xorg.conf.backup 

5. Убедитесь в отсутствии параметра nomodeset (drm.modeset=0, nouveau.modeset=0) в командной строке ядра центра управления YaST -> Загрузчик:

  • для GRUB Legacy: Управление секциями -> Редактировать -> Дополнительный параметр командной строки ядра
  • для GRUB 2: Настройка загрузчика -> Дополнительный параметр командной строки ядра
  • разрешите загрузку модуля drm на раннем этапе загрузки системы (до загрузки модуля nouveau::openSUSE < 13.2):
sudo /sbin/yast2 sysconfig set NO_KMS_IN_INITRD="no" 

6. Перезагрузите систему.

Тестирование драйвера

Внимание: Возможно ваша карта не поддерживает 3D-ускорение (см. версию ядра).

Установите демонстрационную программу на основе GLX, возможно она еще не установлена:

sudo zypper in Mesa-demo-x 

Для тестирования драйвера используйте следующую команду:

glxgears 

Вы должны увидеть новое окно с вращающимися шестеренками, а в окне терминала частоту кадров (FPS).

Использование Optimus

Версия ядра 3.12, добавлена поддержка динамического управления питанием GPU для технологии Optimus.

Сперва проверьте список видеокарт, подключенных к монитору:

$ xrandr --listproviders 
Providers: number : 2
Provider 0: id: 0x8a cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 2 outputs: 2 associated providers: 1 name:Intel
Provider 1: id: 0x66 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 2 outputs: 5 associated providers: 1 name:nouveau

Из вышеприведенного видно, что присутствуют две графические карты: интегрированная Intel и дискретная nouveau, которая может использоваться для ресурсоемких приложений. Например, чтобы использовать дискретную карту nouveau, необходимо определить ее в качестве поставщика выгрузки для интегрированной карты Intel:

$ xrandr --setprovideroffloadsink nouveau Intel

Теперь вы можете запускать ресурсоемкие приложения на дискретной карте nouveau, используя следующую команду:

$ DRI_PRIME=1 <имя_приложения>

Поиск и устранение неисправностей

Kernel mode-setting (KMS)

Прежде всего убедитесь в том, что не загружены модули фрэймбуфера: nvidiafb, uvesafb или vesafb. Это не относится к параметрам vga командной строки ядра, поскольку предыдущей драйвер fb автоматически отключается. Поддержку фреймбуфера консоли обеспечивает fbcon и nouveaufb. Убедитесь в использование данного фрэймбуфера: dmesg | grep fbcon

В идеале это может быть так:

~> dmesg|egrep 'fb|drm' 
[    0.836519] vesafb: mode is 1280x1024x32, linelength=5120, pages=0 
[    0.836523] vesafb: scrolling: redraw 
[    0.836526] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0 
[    0.837003] vesafb: framebuffer at 0xf1000000, mapped to 0xf8080000, using 5120k, total 5120k 
[    0.943721] fb0: VESA VGA frame buffer device 
[    1.461526] [drm] Initialized drm 1.1.0 20060810 
[    1.503934] fb: conflicting fb hw usage nouveaufb vs VESA VGA - removing generic driver 
[    1.682724] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). 
[    1.682730] [drm] No driver support for vblank timestamp query. 
[    2.079174] nouveau  [     DRM] allocated 1280x1024 fb: 0x70000, bo f590fc00 
[    2.079277] fbcon: nouveaufb (fb0) is primary device 
[    2.097755] fb0: nouveaufb frame buffer device 
[    2.097757] drm: registered panic notifier 
[    2.097763] [drm] Initialized nouveau 1.1.0 20120801 for 0000:01:00.0 on minor 0

В вышеприведенным примере используется параметр vga (vesafb), это возможно при передаче управления фреймбуфером (fb0) под контроль nouveaufb (CONFIG_VT_HW_CONSOLE_BINDING=y), что в openSUSE является настройкой по умолчанию. Также следует отметить, что намеком в использовании KMS являются строки, начинающиеся со следующих строк: nouveau [ DRM], fbcon, fb0: nouveaufb.

Отладка KMS

Если вы не можете загрузиться с KMS, то для отладки проблемы используйте текстовый режим с отключенным KMS. Загрузившись в многопользовательский режим (Grub - командная строка: добавить параметры nomodeset 3) вам необходимо вызгрузить/загрузить модули ядра drm/nouveau c помощью modprobе (желательно через ssh из другой системы):

sudo /sbin/modprobe -rv drm nouveau  
sudo /sbin/modprobe -v drm debug=1     
sudo /sbin/modprobe -v nouveau modeset=1 

За деталями обращайтесь в буфер сообщений ядра (dmesg) и журнала событий /var/log/Xorg.0.log.

glxgears не работает?

1. Удостоверьтесь в том, что используется nouveau, а не другой драйвер. Загляните в файл журналирования /var/log/Xorg.0.log и убедитесь в выгрузке ненужных модулей (UnloadModule: ..), например, вы должны увидеть приблизительно следующие строки:

[    24.723] (II) UnloadModule: "nv" 
[    24.723] (II) Unloading nv 
[    24.723] (II) UnloadModule: "modesetting" 
[    24.723] (II) Unloading modesetting 
[    24.723] (II) UnloadModule: "fbdev" 
[    24.723] (II) Unloading fbdev 
[    24.723] (II) UnloadSubModule: "fbdevhw" 
[    24.723] (II) Unloading fbdevhw 
[    24.723] (II) UnloadModule: "vesa" 
[    24.724] (II) Unloading vesa 
[    24.724] (--) Depth 24 pixmap format is 32 bpp 
[    24.725] (II) NOUVEAU(0): Opened GPU channel 0 
[    24.733] (II) NOUVEAU(0): [DRI2] Setup complete 
[    24.733] (II) NOUVEAU(0): [DRI2]   DRI driver: nouveau 
[    24.733] (II) NOUVEAU(0): [DRI2]   VDPAU driver: nouveau 
[    24.735] (II) EXA(0): Driver allocated offscreen pixmaps 
[    24.735] (II) EXA(0): Driver registered support for the following operations: 
[    24.735] (II)         Solid 
[    24.735] (II)         Copy 
[    24.735] (II)         Composite (RENDER acceleration) 
[    24.735] (II)         UploadToScreen 
[    24.735] (II)         DownloadFromScreen 
[    24.735] (==) NOUVEAU(0): Backing store disabled 
[    24.735] (==) NOUVEAU(0): Silken mouse enabled 
[    24.735] (II) NOUVEAU(0): [XvMC] Associated with Nouveau GeForce 8/9 Textured Video. 
[    24.735] (II) NOUVEAU(0): [XvMC] Extension initialized. 
[    24.735] (==) NOUVEAU(0): DPMS enabled 
[    24.735] (II) NOUVEAU(0): RandR 1.2 enabled, ignore the following RandR disabled message.

2. Если драйвер используется, но вы испытываете проблемы с поддержкой OpenGL, тогда запустите следующую команду:

glxinfo|egrep 'OpenGL|^direct' 
  • где direct rendering — если прописано "No", то ваша карта не поддерживает 3D ускорение, в любом случае, смотрите журнал событий X-сервера: /var/log/Xorg.0.log; OpenGL version string — если прописано "NVIDIA ...", то убедитесь в том, что вы полностью удалили проприетарный драйвер.

3. Вы все еще продолжаете испытывать трудности, тогда проверьте приложение glxgears на использование библиотек драйвера nouveau:

ldd /usr/bin/glxgears|grep found 
  • и переустановите пакеты отсутствующих библиотек.

Как проверить управление питанием?

Установите утилиту для мониторинга состояния оборудования:

sudo zypper in sensors 

Запустите в консоли sensors. В ответ вы увидите приблизительно следующие строки:

~> sensors 
nouveau-pci-0100 
Adapter: PCI adapter 
temp1:        +46.0°C  (high = +95.0°C, crit = +125.0°C)

Уровни производительности карты?

Некоторые карты не содержат информацию о частоте шейдерного блока, напряжения и скорости вращения вентилятора.

Загляните в буфер сообщений ядра, выполнив:

dmesg | grep -A4 "available performance level" 

В ответ вы удите что-то наподобие этого:

[    1.711040] nouveau  [     DRM] 2 available performance level(s) 
[    1.711053] nouveau  [     DRM] 0: core 200MHz shader 400MHz memory 100MHz voltage 950mV fanspeed 100% 
[    1.711062] nouveau  [     DRM] 3: core 550MHz shader 1375MHz memory 800MHz voltage 1000mV fanspeed 100% 
[    1.711070] nouveau  [     DRM] c: core 400MHz shader 800MHz memory 601MHz voltage 1000mV fanspeed 59%

Эти же значения вы найдете в файлах /sys/class/drm/card0/device/performance_level*.
Обратите внимание, что в настоящее время используются только статические настройки производительности и в большинстве случаев частоты занижены.