среда, 19 декабря 2012 г.

Настраиваем NVIDIA Optimus в ROSA 2012.1

Disclaimer:

Данный способ является исключительно обходным манёвром (workaround, если кому привычнее) ровно до тех пор, пока не будет собран правильно работающий пакет и DKMS-модуль, в котором всё будет "из коробки". И ничего и нижеописанного уже не потребуется.

Для начала, мы пойдём на сайт nvidia.com и скачаем свежую версию драйвера для вашей архитектуры. На момент публикации это был драйвер за версией 310.19.

Update:
На текущий момент уже всё в DKMS-модулях исправлено и более эта статья не требуется. Разве что только с точки зрения корректности конфигурационных файлов.

А теперь, поехали!

Скачиваем драйвер, кладём его куда-нибудь в корень ~/, чтобы потом не искать в завалах. Далее, открываем ваш любимый эмулятор терминала, логинимся как пользователь 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.img

2. Способ для людей любящих решения порадикальнее. Удаляем драйвер 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

Комментариев нет:

Отправить комментарий