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

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
48px-Mail-mark-junk red.svg.png
Эта статья конкретно протухла.
Статья уже не подходит под современные реалии, под современные версии Альта или сломана совсем. Возможно, её уже не доработать и не поместить в архив.


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

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



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


Установка проприетарных драйверов nvidia и fglrx :

Важное замечание для владельцев Radeon:


Внимание: Драйвер fglrx уже ни применяется начиная с p8. Последние проприетарные драйвера ATI/AMD (fglrx) поддерживают только видеокарты серии Radeon HD 2000 и выше. Так-что в отношении карт radeon статья устарела.


Примечание: в статье предполагается, что у вас стоит ядро типа std-def

Шаг 1. Обновите систему и ядро до текущего состояния репозитория. Для этого выполните в любом эмуляторе терминала

$ su -
# apt-get update 
# apt-get dist-upgrade
# update-kernel

Шаг 2. Перезагрузите компьютер и выберите пункт загрузки с новым ядром (обычно это первый пункт меню загрузчика).

Шаг 3. Установите соответствующий ядерный модуль видеодрайвера и сам видеодрайвер. Если вы не знаете, какой видеокартой вы пользуетесь, то выполните в терминале команду

$ lspci | grep VGA

После того как вы узнали модель вашей видеокарты выполните следующие команды.

Для владельцев Nvidia
$ su -

# apt-get install nvidia_glx_common
# nvidia-install-driver
Для владельцев Radeon
$ su -
# apt-get install kernel-modules-fglrx-std-def fglrx_glx fglrx-tools

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

 $ uname -r
 2.6.39-std-def-alt1

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

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

Убедитесь, что у вас загрузился драйвер nvidia. И работает видеодрайвер nvidia

$ su -
# lsmod | grep nvidia
# exit

Для того чтобы посмотреть, какой видеодрайвер используется, можно выполнить команду (предварительно установив при необходимости одноимённый пакет ):

 $ inxi -G

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

Примечание: В современных системах нет необходимости удалять свободные драйвера, так-что эта глава имеет чисто теоретический интерес.


0. Выходим из графики:

<Ctrl> + <Alt> + <F4> 
# telinit 3

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. Помещение модуля в

Создаём файл /etc/modprobe.d/blacklist-nvidia-x11.conf и записываем туда строчку:

blacklist nouveau

Выгружаем модуль

# rmmod nouveau

3. Чтобы модуль не попал в initrd, пересобираем его:

make-initrd -k $(uname -r)

или просто:

installkernel $(uname -r)

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

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

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

Шаг 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 

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

Замена драйверов 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

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

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

Проблема:

Примечание: 1. У владельцев NVIDIA в некоторых ситуациях при запуске системы мелькает логотип NVIDIA, происходит запуск Х-ов, но вместо нормальной картинки монитор показывает по центру полосу примерно в половину ширины экрана с прерывистыми диагональными линиями на ней. Если после этого сделать Ctrl+Alt+F3, Ctrl+Alt+F1, то изображение нормализуется.
Примечание: 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:
добавить пояснение причин и проблем