Nvidia

Привет сообществу. Вчера инстальнул на Lenovo IdeaPad B560 - OpenSUSE 11.4 x64.

Всё нормально встало. Подключил репозитарии. Но очень неудобно без Wi-Fi. А вот тут, начались проблемы…

Гуглил. Потом в репах наустанавливал всякого… Ещё помню, во время установки всего этого тянуилсь пакеты с названием nvidia. И что-то у меня сейчас не работаю эффекты рабочего стола, пишет:

Невозможно включить эффект на текущей конфигурации. Будут возвращены прежние параметры.

Проверьте параметры графической подсистемы. Возможно, необходимо настроить дополнительные параметры, например, движок.

В общем, хотелось бы решить непонятки с Nvidia. Если нужен вывод каких-то команд - говорите, выложу.

покажи вывод команды
rpm -qa | grep nvidia

Ок. Вот:

nvidia-gfxG02-kmp-default-260.19.44_k2.6.37.1_1.2-23.1.x86_64
x11-video-nvidiaG02-260.19.44-24.1.x86_64
nvidia-gfxG02-kmp-desktop-260.19.44_k2.6.37.1_1.2-23.1.x86_64

Для работы проприетарных драйверов nvidia необходимо отключить KMS, подробнее об этом можно почитать в Release Notes (YaST → Примечания к выпуску)

А какая конкретно видеокарта, если что то типа GeForce GT 310M, то, боюсь не так все просто. Там еще есть видеокарта интел и технология NVIDIA Optimus переключения между видеокартами (которая в Linux не поддерживается). Мой случай описан частично здесь Ноут с NVIDIA GeForce GT 420M и openSUSE](http://forums.opensuse.org/p-russian/dhydh-dh-dh-dhun-dh-dh-dh/1046-1077-1083-1077-1079-1086/454595-dh-dh-n-n-n-nvidia-geforce-gt-420m-dh-opensuse.html)
После установки драйверов от NVIDIA KMS отключается (изменяется настройка) автоматически, но эффекты не работают. Я так и не понял, не работают только эффекты, потому что не запускается модуль GLX, или не работает видеокарта nvidia в целом (при загруженных драйверах)?

такого не может быть, он бы просто не загрузился.

Может быть, но проблема с технологией NVIDIA Optimus, т.к. видеокарта NVIDIA не работает без интел.
позволю себе цытату из Автоматическое переключение графики в ноутбуках — а так ли хорошо, как кажется? Часть 1](http://www.ixbt.com/portopc/nvidia-optimus.shtml)
*Однако Optimus реализован так, что выводом изображения на экран занимается по-прежнему интегрированный видеоадаптер. Т. е. в этом случае у нас работают сразу два графических контроллера: один готовит картинку, второй выводит ее на экран. Благодаря этому переключение происходит мгновенно и незаметно для пользователя.

И тут возникает следующее узкое место, которое надо преодолеть. Помните, когда в традиционной схеме происходило переключение, чип «сгружал» данные? Так вот, внешняя карта NVIDIA после формирования кадра должна передать его в оперативную память, откуда его заберет интегрированная видеокарта и выведет на экран.

Но при этом сам чип начнет выгружать данные из кадрового буфера в системную память и будет заниматься только этим, а не своими прямыми обязанностями — расчетом следующего кадра. Соответственно, производительность будет крайне невысокой.

Для решения этой проблемы компания разработала технологию Optimus Copy Engine.

Это самостоятельный механизм копирования, который занимается исключительно тем, что выводит данные в системную память, не отвлекая на это ресурсы основного чипа. Таким образом, технически Copy engine представляет собой отдельный (это важно) механизм, который забирает из локальной памяти адаптера NVIDIA сформированный кадр и отправляет его в оперативную память, откуда его должен забрать интегрированный контроллер и вывести на экран. ? *

И вот вопрос, под линух не работает только “подключение” на лету NVIDIA или вся NVIDIA в целом только имитирует работу?

Кстати, со свободным драйвером neuveau (он как оказалось стал по умалчанию) эффекты работали, с проприетарным NVIDIA случалось следующее:
grep NVIDIA /var/log/Xorg.0.log

19.030] (II) Module glx: vendor="NVIDIA Corporation"

19.030] (II) NVIDIA GLX Module  260.19.44  Sun Feb 27 22:56:46 PST 2011

19.883] (EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)

При этом # lsmod | grep nvidia

nvidia 10286158 0

Да, видео карта GeForce GT310M - с Nvidia Optimus. Винде 7, конечно всё работает на ура :frowning:

Тут кажись, опять без бубна не обойтись. А может, вообще вырубить вторую видеокарту? Что бы только Nvidia работала?

Видеокарту интел вырубить нельзя, без нее Nvidia не работает (см. пост выше). Наоборот можно!
По поводу бубна, не знаю, пробовал, не помогает. Нужна помощь спецов.

обратите внимание, есть улучшения:
OpenNews: Для Linux обеспечена возможность переключения видеоадаптеров на ноутбуках с NVIDIA Optimus

Спасибо!
эта новость тоже попала в поле зрения.
И даже выполнил make, но по поводу дальнейшей инсталляции есть вопросы.
В makefile есть варианты для fedora и ubuntu, например:

install-fedora:
install -m 0644 -D asus-switcheroo.ko /lib/modules/$(shell uname -r)/extra/asus-switcheroo/asus-switcheroo.ko
install -m 0644 -D i915-jprobe.ko /lib/modules/$(shell uname -r)/extra/asus-switcheroo/i915-jprobe.ko
depmod -a
install -m 0755 asus-switcheroo-pm /etc/pm/sleep.d/75-asus-switcheroo-pm
install -m 0644 asus-switcheroo.conf-modprobe.d /etc/modprobe.d/asus-switcheroo.conf
install -m 0644 asus-switcheroo.conf-dracut /etc/dracut.conf.d/asus-switcheroo.conf
cp /boot/initramfs-$(shell uname -r).img /boot/initramfs-$(shell uname -r).img.bak
dracut -f /boot/initramfs-$(shell uname -r).img $(shell uname -r)
**Но насколько это подходит для openSUSE, вероятно, нужно редактировать, в частности вызывают сомнения 2-3 последние строки.
В варианте для ubuntu они заменены на **
sed -i -e “/asus-switcheroo/D” /etc/initramfs-tools/modules
sed -i -e “/i915-jprobe/D” /etc/initramfs-tools/modules
echo asus-switcheroo >> /etc/initramfs-tools/modules
echo i915-jprobe >> /etc/initramfs-tools/modules
cp /boot/initrd.img-$(shell uname -r) /boot/initrd.img-$(shell uname -r).bak
update-initramfs -u -k $(shell uname -r)
Как правильно?

Есть правда и такой вариант
If these don’t do what you need, reproduce these steps on your
distribution:

    1. copy the kernel modules in place (*.ko)
    1. update modprobe.d to load asus-switcheroo before nouveau
    1. update modprobe.d to load i915-jprobe before i915
    1. add asus-switcher and i915-jprobe to the initramfs conf files
    1. install the suspend/resume script
    1. run depmod
    1. build a new initramfs
      Но не знаю как правильно исполнить п. 4 и 6 есть сомнения по 2 и3
      Какие рекомендации?

Но насколько это подходит для openSUSE
Оба варианта не подходят. В openSUSE используется /sbin/mkinitrd.

  1. build a new initramfs
    Поизучайте
man 8 mkinitrd

Простой путь: YaST - Система - Редактор /etc/sysconfig - System - Kernel - INITRD_MODULES
Естественно, с собранным и установленным модулем.

Спасибо,

если я дополню makefile для opensuse таким образом:

install-opensuse:
install -m 0644 -D asus-switcheroo.ko /lib/modules/$(shell uname -r)/extra/asus-switcheroo/asus-switcheroo.ko
install -m 0644 -D i915-jprobe.ko /lib/modules/$(shell uname -r)/extra/asus-switcheroo/i915-jprobe.ko
depmod -a
install -m 0755 asus-switcheroo-pm /etc/pm/sleep.d/75-asus-switcheroo-pm
install -m 0644 asus-switcheroo.conf-modprobe.d /etc/modprobe.d/asus-switcheroo.conf

а далее пропишу в /etc/sysconfig/kernel
INITRD_MODULES="… asus-switcheroo i915-jprobe"
и выполню
mkinitrd
будет приблизительно правильно?

Я модули собственной сборки не устанавливал. Поэтому не могу откомментировать первую часть.

Что касается

а далее пропишу в /etc/sysconfig/kernel
INITRD_MODULES="… asus-switcheroo i915-jprobe"
и выполню
mkinitrd
будет приблизительно правильно?
Выглядит правильно, если уверены в названиях модулей.
Я вижу у себя в конфиге модуль cmd64x, но сам файл называется pata_cmd64x.ko.

Если делать эту настройку через YaST, то mkinitrd не нужно выполнять. Он запустится автоматически после подтверждения изменения.

Названия модулей взял из asus-switcheroo.conf-dracut. в нем было так: add_drivers+=“asus-switcheroo i915-jprobe”
ну и походу они так называются только с .ko

Итак, модифицировал makefile, как обсуждалось выше, т.е записал
install-opensuse:
install -m 0644 -D asus-switcheroo.ko /lib/modules/$(shell uname -r)/extra/asus-switcheroo/asus-switcheroo.ko
install -m 0644 -D i915-jprobe.ko /lib/modules/$(shell uname -r)/extra/asus-switcheroo/i915-jprobe.ko
depmod -a
install -m 0755 asus-switcheroo-pm /etc/pm/sleep.d/75-asus-switcheroo-pm
install -m 0644 asus-switcheroo.conf-modprobe.d /etc/modprobe.d/asus-switcheroo.conf

Эта часть сработала, модули установились.
mkinitrd настроил через YaST, тоже вроде без проблем.
Но, файл/sys/kernel/debug/vgaswitcheroo/switch после перезагрузки не появился, хотя все доп модули загрузились, соответственно переключение видиокарт не работает.
Возможно, причина в том, что установлен проприетарный драйвер nvidia, вместо nouveau.
В этом случае нужно
Use the dummy-client=1 option for asus-switcheroo, if loaded
from initramfs, use asus-switcher.dummy-client=1.

Как реализовать это требование?

Думаю, нужно в конфиг вписать нужную опцию для модуля и пересобрать initrd.
‘man 5 modprobe.conf’ в помощь.

Да, по аналогии с другими файлами, вероятно, /etc/modprobe.d/asus-switcheroo.conf нужно переименовать в 50-asus-switcheroo.conf. Возможно, число побольше.

Предварительно попробуйте вручную загрузить модуль с опциями.
Опции модуля, для верности, можно посмотреть командой ‘/sbin/modinfo asus-switcheroo’.

modinfo asus-switcheroofilename: /lib/modules/2.6.37.6-0.5-desktop/extra/asus-switcheroo/asus-switcheroo.ko
version: 0.2
license: GPL v2
description: Experimental Asus hybrid graphics switcheroo
author: Alex Williamson <alex.williamson@redhat.com>
srcversion: C1BBAE1D57F45B1439CD920
depends:
vermagic: 2.6.37.6-0.5-desktop SMP preempt mod_unload modversions
parm: dummy_client:Enable dummy VGA switcheroo client support (bool)

Вручную модуль не грузится

modprobe options asus-switcheroo dummy_client=1

FATAL: Module options not found.
/etc/modprobe.d/asus-switcheroo.conf нужно переименовал в 50-asus-switcheroo.conf
и изменил содержание:
install nouveau /sbin/modprobe asus-switcheroo; /sbin/modprobe --ignore-install nouveau
install i915 /sbin/modprobe i915-jprobe; /sbin/modprobe --ignore-install i915
options asus-switcheroo dummy_client=1 # эту строку добавил

Не работает.
В соседней теме пытаются прикрутить switcheroo через новую версию ядра, посмотрим.

parm: dummy_client:Enable dummy VGA switcheroo client support (bool)
Тут параметр bool. Обычно, это значит yes/no или true/false. Попробуйте с каким-нибудь из этих значений, на всякий случай.

на все варианты, при попытке загрузить “вручную” ответ:
FATAL: Module options not found.