SDB:Nouveau
Рекомендуемые статьи
Связанные статьи
Содержание
Первым делом
Во-первых, уточните имя вашей карты и её чипсета:
/sbin/lspci | grep VGA
После выполнения указанной команды будет выведена строка, подобная этой:
01:00.0 VGA compatible controller: NVIDIA Corporation G96 [GeForce 9500 GT] (rev a1)
Поддерживаемое оборудование
Список поддерживаемого оборудования (с расшифровкой кодовых имен) можно найти здесь. Для более детального изучения обратитесь к таблице особенностей свободного драйвера 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. Перезагрузите систему.
Тестирование драйвера
Установите демонстрационную программу на основе GLX, возможно она еще не установлена:
sudo zypper in Mesa-demo-x
Для тестирования драйвера используйте следующую команду:
glxgears
Вы должны увидеть новое окно с вращающимися шестеренками, а в окне терминала частоту кадров (FPS).
Использование 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*
.
Обратите внимание, что в настоящее время используются только статические настройки производительности и в большинстве случаев частоты занижены.