Переход на драйверы Nvidia и fglrx

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Переход со свободных драйверов nouveau и radeon на Nvidia и fglrx соответственно сопряжён с определёнными сложностями, и для его осуществления следует выполнить целую последовательность действий. Обратный переход выполняется аналогичным образом.

Примечание: Данная статья устарела в части fglrx, так как начиная с p8 его уже нет в репозитоиии
Внимание! Переход на fglrx следует осуществлять осторожно. Драйвер поддерживается производителем крайне посредственно, и часто последняя версия не соответствует текущей версии xorg, в силу чего просто не работает. Например, altbug #31980 (p8 и p9 уже не затрагивает по причине отсутствия fglrx)



Примечание: Перед установкой проприетарных драйверов можно сделать, на всякий случай, точку восстановления


Переход со свободных драйверов nouveau и radeon на проприетарные драйвера Nvidia и fglrx

1. Если вы ещё ни разу не обновляли дистрибутив, убедитесь, что apt настроен на нужный репозитарий. Это удобно сделать с помощью команды apt-repo.

apt-repo

2. Обновить ядро до последней версии в используемом репозитории: Открыть терминал и получить права пользователя root:

su -

или нажать <Ctrl+<Alt>+<F1>(или F2...F6) и войти как root:

login: root
passwsd: <пароль root - не отображается>

Обновить индекс содержимого репозитория:

apt-get update

Обновить систему:

apt-get dist-upgrade

Обновить ядро:

update-kernel

3. Перезагрузить компьютер c новым ядром.

4. Открыть терминал и получить права пользователя root: su -

5. установить модули для текущего используемого вами ядра:

apt-get install nvidia_glx_common
nvidia-install-driver

или для fglrx

apt-get install kernel-modules-fglrx-ваше-ядро 

где ваше ядро можно определить при помощи команды uname -r, например

 $ uname -r
 2.6.39-std-def-alt1

в этом случае "ваше-ядро" называется std-def.

Внимание! Вместо 6 и 7 пунктов (ниже) можно из графики выполнить вызов центр управления системой асс и выбрать в нём нужный драйвер (см. настройку дисплея в нём), также автоматом будут сделаны все необходимые настройки. Совет подходит для p7 и выше.


6. Создать файл /etc/modprobe.d/blacklist-video.conf со следующим содержимым:

blacklist radeon
blacklist nouveau

7. Создать файл: /etc/X11/xorg.conf.d/50-driver.conf со следующим содержимым:

 Section "Device"
     Identifier  "Card0|0"
     Driver      "nvidia" 
 EndSection

или, соответственно fglrx

 Section "Device"
     Identifier  "Card0|0"
     Driver      "fglrx" 
 EndSection

Если используется /etc/X11/xorg.conf (например, дистрибутив старого поколения), файл 50-driver.conf создавать не надо, а изменения следует делать в соответствующей секции

 Section "Device"
.........
     Driver      "nvidia" (заменяем вместо того, что там прописан)
или
     Driver      "fglrx" (заменяем вместо того, что там прописан)
  .....
 EndSection

в xorg.conf.

8. Перегенерируем загрузочную запись (от root):

rmmod radeon
или
rmmod nouveau
installkernel $(uname -r)

9. Перезагрузиться.

Возможная проблема:

Несмотря на blacklist-video.conf, radeon и nouveau могут быть загружены всё равно, например, если они попали в initrd.

В случае такой проблемы можно удалить их совсем (см. Удаление модулей свободных драйверов для используемого ядра). Однако, следует помнить, что возвращать модуль, возможно, придётся из архива репозитария, если будет необходимость сохранить старое ядро. Архивы ведутся для Sisyphus и стабильных репозитариев, начиная с p7/t7.

Удаление модулей свободных драйверов для используемого ядра:

1. Удаляем модуль

apt-get remove kernel-modules-drm-radeon-std-def#1:2.6.39-alt1

или

 apt-get remove kernel-modules-drm-nouveau-std-def#1:2.6.39-alt1


Где "#1:2.6.39-alt1" - указание на версию модуля, если установлено более одного ядра. Если ядро одно, можно использовать просто

apt-get remove kernel-modules-drm-nouveau-std-def 

При этом, если ядер окажется, всё же, более одного, apt-get завершится с ошибкой, но выведет весь список с версиями. Так что, это можно использовать, если Вы не знаете, как записать версию.

2. Пересобрираем initrd:

make-initrd -k $(uname -r)

или просто:

installkernel $(uname -r)

в последнем случае сразу и переустанавливается текущий загрузчик

3. Переустановить загрузчик при необходимости.

см Установка_проприетарных_драйверов_NVIDIA_и_ATI

Замена драйверов nouveau/nvidia "на лету"

Замена драйверов nouveau/nvidia "на лету"

Гибридная графика

Для Nvidia основная статья Nvidia_optimus,_настройка_и_запуск_bumblebee

Для AMD:

Для управления переключениями видеокартами через amdcccle (Catalyst) необходимо дать из под рута команду

aticonfig --initial

после этого появится пункт в amdcccle для переключения между intel/amd или amd/amd в зависимости от железа. Есть одно НО необходимо как минимум перезапустить X-сервер о чем и будет написано в amdcccle после совершения манипуляции.

Для управления из консоли

aticonfig --px-igpu переключение на интегрированную

aticonfig --px-dgpu переключение на дискретную

и для лучшего понимания man aticonfig

Что делать, если после всех шагов не загрузилась графическая система?

При установке проприетарного драйвера ATI/Radeon установленного посредством выполнения скрипта, возможно, потребуется дать команду:

# amdconfig --initial -f

Успокойтесь и не паникуйте. Вы легко можете вернуться к использованию открытых драйверов. Для этого нужно проделать следующую последовательность шагов.

Смена проприетарных драйверов на открытые

Шаг 0. Обновляем систему и ядро до текущего состояния репозитория, как описано выше.

Шаг 1. Заходим в терминале под пользователем root.

Шаг 2. Устанавливаем открытый драйвер в конфигурационном файле /etc/X11/xorg.conf.d/10-monitor.conf . Для этого можно воспользоваться утилитой xsetup-monitor.

Пользователям nvidia необходимо выполнить следующую команду

# xsetup-monitor -d nouveau

Пользователям radeon

# xsetup-monitor -d radeon

В принципе, этих шагов достаточно, чтобы после перезагрузки загрузиться с открытыми драйверами, однако не будет работать сплэш. Для его починки необходимо проделать следующие дополнительные шаги.

Шаг 3. Удаляем файл /etc/modprobe.d/blacklist-alterator-x11

# rm -f /etc/modprobe.d/blacklist-alterator-x11

Шаг 4. Перезагружаем компьютер.

Шаг 5. Выполняем команду make-initrd

# make-initrd 

При следующей загрузке сплэш должен заработать.

Известные проблемы

Проблема:

Примечание: 1. У владельцев NVIDIA в некоторых ситуациях при запуске системы мелькает логотип NVIDIA, происходит запуск Х-ов, но вместо нормальной картинки монитор показывает по центру полосу примерно в половину ширины экрана с прерывистыми диагональными линиями на ней. Если после этого сделать Ctrl+Alt+F1, Ctrl+Alt+F7, то изображение нормализуется.
Примечание: 2. В консоли шрифт (по нажатию Сtrl+Аlt+(1-6)) Шрифт очень крупный.


Решение:

Проблемы разные, а решение одно и то же:

в этом случае помогает принудительное выставление графического режима в опциях ядра при загрузке (в настройках загрузчика), например, vga=0x314. Для этого:

Шаг 1. Открываем в редакторе (для новичков рекомендуется mcedit) файл /etc/sysconfig/grub2

$ su- 
# mcedit /etc/sysconfig/grub2 

Шаг 2. Находим строчку с переменной GRUB_CMDLINE_LINUX_DEFAULT. Например, у автора руководства она имеет вид

GRUB_CMDLINE_LINUX_DEFAULT='quiet=1 panic=30 splash'

Шаг 3. Добавляем в переменную параметр vga=0x314

GRUB_CMDLINE_LINUX_DEFAULT='quiet=1 panic=30 splash vga=0x314'

Т.е. 0x314 - это 800x600 в режиме VESA с 16-битным цветом.

Кол-во цветовЧисло бит640x480800x6001024x7681280x10241440x9001600x1200
25680x3010x3030x3050x3070x3600x31c
32k150x3100x3130x3160x3190x3610x31d
64k160x3110x3140x3170x31A0x3620x31e
16M240x3120x3150x3180x31B0x3630x31f

Можно еще взять вот из такой таблицы, vga=XXX (те-же значения. но в 10-ном виде):

8bit:
640x480 - 769
800x600 - 771
1024x768 - 773
1280x1024 - 775

16bit:
640x480 - 785
800x600 - 788
1024x768 - 791
1280x1024 - 794

24bit:
640x480 - 786
800x600 - 789
1024x768 - 792

Список всех разрешений можно получить, выполнив следующую команду:

# hwinfo --framebuffer

Если ничего не показало, значит, надо установить hwinfo:

# apt-get update; apt-get install hwinfo

Шаг 4. Сохраняем изменения и выходим.

Шаг 5. Перегенерируем конфиг загрузчика grub2:

$ su -
# grub-mkconfig -о /boot/grub/grub.cfg

Теперь при следующей загрузке все должно нормализоваться.

Проблема:

У владельцев старых видеокарт NVIDIA проприетарный драйвер не стартует с сообщением

 Failed to allocate/map the primary surface! 

или

 conflicting memory type 

или

 failed to allocate primary buffer: out of memory 

Решение:

в этом случае помогает передача в опциях ядра при загрузке параметра "nopat" (о том, как это можно сделать, смотри предыдущий пример с "vga=0x314")

GRUB_CMDLINE_LINUX_DEFAULT='quiet=1 panic=30 splash vga=0x314 nopat'

Потом перегенерируем конфиг загрузчика grub2:

$ su -
# grub-mkconfig -о /boot/grub/grub.cfg

Проблема и решение:
Если не получается сгенерировать конфигурацию загрузчика в файл с опцией -o, то стоит воспользоваться полной опцией --output

# grub-mkconfig --оutput=/boot/grub/grub.cfg


P.S. Предложения, правки приветствуются.

Ссылки по теме

TODO:
добавить пояснение причин и проблем