Настраиваем NVIDIA Optimus в ROSA 2012.1
Dec. 19th, 2012 11:50 amDisclaimer:
Данный способ является исключительно обходным манёвром (workaround, если кому привычнее) ровно до тех пор, пока не будет собран правильно работающий пакет и DKMS-модуль, в котором всё будет "из коробки". И ничего и нижеописанного уже не потребуется.
Для начала, мы пойдём на сайт nvidia.com и скачаем свежую версию драйвера для вашей архитектуры. На момент публикации это был драйвер за версией 310.19.
Update:
На текущий момент уже всё исправлено и более эта статья не требуется. Разве что только с точки зрения корректности конфигурационных файлов.
А теперь, поехали!
Скачиваем драйвер, кладём его куда-нибудь в корень ~/, чтобы потом не искать в завалах. Далее, открываем ваш любимый эмулятор терминала, логинимся как пользователь root и выполняем cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak. Сделать это обязательно, иначе в случае проблем вы получите неработоспособную графическую подсистему. Затем необходимо установить из репозиториев пакет bumblebee командой urpmi bumblebee.
Теперь необходимо заблокировать драйвер nouveau, в противном случае, ничего не заработает. Для решения этой проблемы можно поступить двумя способами:
1. Заблокировать драйвер в initrd. Переходим в /etc/dracut.conf.d и редактируем там файлик 50-dracut-mandriva.conf. А именно, находим там следующую строчку:
После удаления драйвера мы должны перезагрузиться в init 3, в противном случае нам не удастся установить драйвер видеокарты. Делается следующим образом. Перезагружаетесь. Как появится меню загрузчика, нажимаете буковку "E" на клавиатуре и вы попадаете в конфигурационный файл GRUB2. Далее, находим там строчку init=/lib/systemd/systemd и добавляем в конец цифру 3. После чего нажимаем F10.
А можно и не перезагружаться, а просто из под пользователя root выполнить команду init 3. :)
Логинимся пользователем root, заходим в каталог, куда мы сохранили run-файл с драйвером и запускаем его командой sh NVIDIA-Linux-x86_64-310.19.run. Отвечаем на все вопросы "Yes" и дожидаемся окончания установки.
После окончания снова перезагружаемся. Первая перезагрузка будет сильно дольше обычной, поэтому просьба не волноваться. Это устанавливается и регистрируется DKMS-модуль. Скорее всего, после перезагрузки подсистема X просто-напросто не загрузится. Чинится это это возвратом сохранённого xorg.conf на место, вместо сгенерированного инсталлятором драйвера. Всё. Можно перезагрузиться, а можно просто залогиниться обычным пользователем и скомандовать startx. Как вам удобнее. В дальнейшем всё будет загружаться автоматически.
Снова заходим пользователем root и выполняем:
На всякий случай привожу конфигурационный файл /etc/bumblebee/bumblebee.conf:
Данный способ является исключительно обходным манёвром (workaround, если кому привычнее) ровно до тех пор, пока не будет собран правильно работающий пакет и DKMS-модуль, в котором всё будет "из коробки". И ничего и нижеописанного уже не потребуется.
Для начала, мы пойдём на сайт nvidia.com и скачаем свежую версию драйвера для вашей архитектуры. На момент публикации это был драйвер за версией 310.19.
Update:
На текущий момент уже всё исправлено и более эта статья не требуется. Разве что только с точки зрения корректности конфигурационных файлов.
А теперь, поехали!
Скачиваем драйвер, кладём его куда-нибудь в корень ~/, чтобы потом не искать в завалах. Далее, открываем ваш любимый эмулятор терминала, логинимся как пользователь root и выполняем cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak. Сделать это обязательно, иначе в случае проблем вы получите неработоспособную графическую подсистему. Затем необходимо установить из репозиториев пакет bumblebee командой urpmi bumblebee.
Теперь необходимо заблокировать драйвер nouveau, в противном случае, ничего не заработает. Для решения этой проблемы можно поступить двумя способами:
1. Заблокировать драйвер в initrd. Переходим в /etc/dracut.conf.d и редактируем там файлик 50-dracut-mandriva.conf. А именно, находим там следующую строчку:
omit_drivers+=" radeon nouveau "Её необходимо раскомментировать. После чего надо сохранить и выполнить команду для пересборки initrd: dracut -f /boot/initrd-3.6xxxx.img. В моём случае это было так:
dracut -f /boot/initrd-3.6.10-nrj-desktop-1rosa.img2. Способ для людей любящих решения порадикальнее. Удаляем драйвер nouveau из системы. Делается так: rpm -e --nodeps x11-driver-video-nouveau. Тогда ничего из вышеперечисленного делать не придётся. :)
После удаления драйвера мы должны перезагрузиться в init 3, в противном случае нам не удастся установить драйвер видеокарты. Делается следующим образом. Перезагружаетесь. Как появится меню загрузчика, нажимаете буковку "E" на клавиатуре и вы попадаете в конфигурационный файл GRUB2. Далее, находим там строчку init=/lib/systemd/systemd и добавляем в конец цифру 3. После чего нажимаем F10.
А можно и не перезагружаться, а просто из под пользователя root выполнить команду init 3. :)
Логинимся пользователем root, заходим в каталог, куда мы сохранили run-файл с драйвером и запускаем его командой sh NVIDIA-Linux-x86_64-310.19.run. Отвечаем на все вопросы "Yes" и дожидаемся окончания установки.
После окончания снова перезагружаемся. Первая перезагрузка будет сильно дольше обычной, поэтому просьба не волноваться. Это устанавливается и регистрируется DKMS-модуль. Скорее всего, после перезагрузки подсистема X просто-напросто не загрузится. Чинится это это возвратом сохранённого xorg.conf на место, вместо сгенерированного инсталлятором драйвера. Всё. Можно перезагрузиться, а можно просто залогиниться обычным пользователем и скомандовать startx. Как вам удобнее. В дальнейшем всё будет загружаться автоматически.
Снова заходим пользователем root и выполняем:
modprobe nvidia && bumblebeedДалее, проверяем работу командой: optirun glxgears. Если у вас красиво забегали колёсики, Optimus заработал.
На всякий случай привожу конфигурационный файл /etc/bumblebee/bumblebee.conf:
grep -v ^# /etc/bumblebee/bumblebee.conf
[bumblebeed]
VirtualDisplay=:8
KeepUnusedXServer=false
ServerGroup=bumblebee
TurnCardOffAtExit=true
NoEcoModeOverride=false
Driver=nvidia
[optirun]
VGLTransport=proxy
AllowFallbackToIGC=false
[driver-nvidia]
KernelDriver=nvidia
Module=nvidia
PMMethod=auto
LibraryPath=/usr/lib/nvidia-current:/usr/lib64/nvidia-current
XorgModulePath=/usr/lib/nvidia-current/xorg,/usr/lib64/nvidia-current/xorg,/usr/lib/xorg/modules,/usr/lib64/xorg/modules,/usr/lib/xorg/extra-modules,/usr/xorg/extra-modules
XorgConfFile=/etc/bumblebee/xorg.conf.nvidia
no subject
Date: 2013-01-30 01:29 pm (UTC)no subject
Date: 2013-01-30 02:18 pm (UTC)Либо он может быть в /lib/modules/версия драйвера/kernel/drivers/video/
Там должен быть nvidia.ko. Если он есть, подгрузите модуль руками с указанием абсолютного пути.
no subject
Date: 2013-01-30 08:12 pm (UTC)Section "Device"
Identifier "Card0"
Driver "modesetting"
BusID "PCI:0:2:0"
EndSection
Section "Device"
Identifier "Card1"
Driver "intel"
BusID "PCI:0:2:0"
EndSection
и т.д.
[root@Nout fossa]# modprobe nvidia
[root@Nout fossa]# modprobe bumblebeed
FATAL: Module bumblebeed not found.
[root@Nout fossa]# optirun status
[ 196.630141] [ERROR]Cannot access secondary GPU - error: Could not enable discrete graphics card
[ 196.630181] [ERROR]Aborting because fallback start is disabled.
no subject
Date: 2013-01-30 09:26 pm (UTC)Section "Device"
Identifier "device1"
BoardName "Intel 810 and later"
Driver "intel"
Option "DPMS"
EndSection
Section "Screen"
Identifier "screen1"
Device "device1"
Monitor "monitor1"
EndSection
Section "ServerLayout"
Identifier "layout1"
Screen "screen1"
EndSection
Скорее всего, у вас аналогично будет в этих секциях.
Кстати, что за дистрибутив у вас? Просто фраза "Собрал ядро без nouveau" как-то настораживает. К тому же, драйвер достаточно просто не устанавливать. Но судя по ошибкам, собрано верно у вас. Не настроен только.
И да, сам демон bumblebee у вас установлен? И ещё, bumblebee, это не модуль ядра, это обычный демон. Поэтому просто от пользователя root: bumblebeed. Чуть внимательнее читайте, что я писал в тексте. :)
no subject
Date: 2013-01-30 09:44 pm (UTC)"bumblebee у вас установлен?" - как же без него...
no subject
Date: 2013-01-30 09:49 pm (UTC)Кстати, конфиг xorg для встроенной интеловской можете сгенерить и сами. Запустите drakx11 от рута. И выберите драйвер Intel 810 and higher.
no subject
Date: 2013-01-30 10:13 pm (UTC)при использовании инструкции..
no subject
Date: 2013-01-30 10:34 pm (UTC)no subject
Date: 2013-01-31 08:39 am (UTC)[fossa@Nout ~]$ grep EE /var/log/Xorg.0.log
[ 22.550] Current Operating System: Linux Nout 3.6.10-nrj-desktop-1rosa #1 SMP PREEMPT Wed Dec 12 13:59:22 UTC 2012 x86_64
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[ 22.660] Initializing built-in extension MIT-SCREEN-SAVER
[ 25.626] (EE) Failed to initialize GLX extension (Compatible NVIDIA X driver not found)
no subject
Date: 2013-01-31 12:04 pm (UTC)no subject
Date: 2013-01-31 12:11 pm (UTC)и...этот конфиг должен сам изменяться в следствии установки дров nvidia, или вручную переписывать настройки с nouveau?
no subject
Date: 2013-01-31 12:58 pm (UTC)no subject
Date: 2013-01-31 01:16 pm (UTC)4952 frames in 5.0 seconds = 990.201 FPS
4962 frames in 5.0 seconds = 992.143 FPS
5047 frames in 5.0 seconds = 1009.309 FPS
5071 frames in 5.0 seconds = 1013.905 FPS
[fossa@Nout ~]$ glxgears
Xlib: extension "GLX" missing on display ":0".
Error: couldn't get an RGB, Double-buffered visual
no subject
Date: 2013-01-31 03:03 pm (UTC)no subject
Date: 2013-01-31 03:41 pm (UTC)no subject
Date: 2013-01-31 03:54 pm (UTC)no subject
Date: 2013-01-31 04:02 pm (UTC)[root@Nout fossa]# glxinfo
name of display: :0
Xlib: extension "GLX" missing on display ":0".
Xlib: extension "GLX" missing on display ":0".
Xlib: extension "GLX" missing on display ":0".
Xlib: extension "GLX" missing on display ":0".
Xlib: extension "GLX" missing on display ":0".
Error: couldn't find RGB GLX visual or fbconfig
Xlib: extension "GLX" missing on display ":0".
Xlib: extension "GLX" missing on display ":0".
Xlib: extension "GLX" missing on display ":0".
Xlib: extension "GLX" missing on display ":0".
Xlib: extension "GLX" missing on display ":0".
Xlib: extension "GLX" missing on display ":0".
Xlib: extension "GLX" missing on display ":0".
no subject
Date: 2013-01-31 04:28 pm (UTC)no subject
Date: 2013-02-01 02:54 pm (UTC)name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
[fossa@Nout ~]$ optirun glxinfo
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: VirtualGL
server glx version string: 1.4
server glx extensions:
[fossa@Nout ~]$ optirun glxgears
5138 frames in 5.0 seconds = 1027.524 FPS
5329 frames in 5.0 seconds = 1065.757 FPS
5365 frames in 5.0 seconds = 1072.965 FPS
Установил с репозитория Nvidia и bumblebee, удалил nouveau (rpm -e --nodeps x11-driver-video-nouveau), исправил конфиг bumblebee ( driver = nvidia , kernel driver = nvidia-current, TurnCardOffAtExit=true) далее modprobe nvidia-current && bumblebee и все - optirun работает, как и все эффекты. Xorg.conf не правил, не создавал.
no subject
Date: 2013-02-01 03:13 pm (UTC)