Блог о Gentoo и около-линуксовым штукам

24 мая 2014 г.

Переключение между драйверами nouveau и nvidia-drivers

5:31 Опубликовал Дмитрий Исаенко , , Нет комментариев
Это перевод статьи Nouveau & nvidia-drivers switching. Распространяется под лиценцией Creative Commons Attribution Share Alike. Пожалуйста, поместите этот перевод в wiki, если сочтёте это необходимым.

Переключение между бинарным драйвером nVidia и открытым драйвером noveau может быть несколько мудрёным, однако осуществимым. Эта статья объяснит как может быть осуществлено такое переключение на различных уровнях (т.е. на этапе загрузки, в runlevel и т.п.).
Переключение с использованием двух ядер
При загрузке
Этот метод предполагает следующее:

  • Два ядра: одно с включённым в него драйвером nouveau, другое — без (или с nouveau в виде модуля).
  • Ядро без nouveau будет иметь суффикс -nvidia
  • Загрузчик GRUB
Предполагается, что у вас уже есть ядро с nouveau и вы собираетесь собрать ещё одно, которое будет использоваться с драйвером nvidia. Начнём с добавления суффикса -nvidia в имя ядра:


Конфигурация ядра
 
General setup  --->
    (-mykernel-nvidia) Local version - append to kernel release
Теперь убедимся, что драйвер noveau отключен или собран как модуль:

Конфигурация ядра
 
Device Drivers  --->
    Graphics support  --->
        <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
            <M> Nouveau (nVidia) cards
Теперь пересоберите и установите ядро. Также убедитесь, что вы обновили GRUB и новое ядро добавлено в его список выбора. Обратите внимание, что ядра с одинаковой версией и разными именами считаются уникальными. Поэтому если вы хотите установить ядро не из дерева portage для использования совместно с nouveau-ядром, вам следует скопировать из ядра nouveau конфигурационный файл /usr/src/linux/.config
Portage использует переменную VIDEO_CARDS для включения поддержки различных видеокарт в пакетах. Установка значения VIDEO_CARDS в nvidia nouveau будет подгружать корректный драйвер:

Файл: /etc/portage/make.conf
 
 VIDEO_CARDS="nvidia nouveau"
После этой настройки следует обновить систему, чтобы изменения вступили в силу:

root # emerge --ask --changed-use --deep world

Добавьте nvidia и nouveau модули в blacklist т.к. вы не хотите чтобы udev загруджал их автоматически:
root # echo -e "blacklist nouveau\nblacklist nvidia" >> /etc/modprobe.d/nvidia-n-nouveau.conf 

В конце мы будем использовать local.d скрипт, приведённый ниже для переключения драйвера в зависимости от ядра, с которым вы загружаетесь:
Файл: /etc/local.d/nvidia.start
 
#!/bin/bash

depend() {
 need localmount
 before xdm
}

if [[ $(uname -r) == *-nvidia ]] ; then
 modprobe -q nvidia
 if [[ $(eselect opengl show) != nvidia ]] ; then
  eselect opengl set nvidia &>/dev/null
 fi
cat > /etc/X11/xorg.conf.d/01-nvidia.conf << EOF
Section "Device"
  Identifier   "Device0"
  Driver       "nvidia"
  Option       "NoLogo" "True"
EndSection
EOF
else
 modprobe -q nouveau
 if [ -f /etc/X11/xorg.conf.d/01-nvidia.conf ] ; then
  rm /etc/X11/xorg.conf.d/01-nvidia.conf
 fi
 if [[ $(eselect opengl show) != xorg-x11 ]] ; then
  eselect opengl set xorg-x11 &>/dev/null
 fi
fi
Скопируйте этот скрипт в /etc/local.d/nvidia.start
root # chmod +x /etc/local.d/nvidia.start


Переключение с использованием одного ядра и hprofile
Другим методом является переключение между двумя профилями hprofiles с использованием всего одного ядра: /etc/init.d/hprofile должен быть модифицирован с добавлением нескольких строк для переключения vga. Внимание! hprofile должен быть добавлен в boot runlevel.

0 коммент.:

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