Введение
На ноутбуках часто есть встроенная и дискетная видео карты, для эффективной работы 3D приложений нужно чтобы выполнение программы шло через дискретную видео карту.
Рассмотрим ситуацию когда в ноутбуке есть встроенная видео карта Intel и дискретная Nvidia. Операционная система будет Astra Linux 1.7.3
Важно: В процессе настройки может что-то может пойти не так и перестанет загружаться графическая оболочка. Краткие рекомендации на этот счет я дам в конце статьи.
Важно: Если требуется использовать только один видеоадаптер, то в первую очередь следует проверить настройки в BIOS ноутбука: возможно там есть опция, отключающая один из чипов.
1) Проверим наличие 2-х видео карт
lspci | grep -E "VGA|3D"
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
01:00.0 VGA compatible controller: NVIDIA Corporation GN21-X4 (rev a1)
2) Подготовим конфигурационные файлы для переключения режимов
важным моментом является BusID:
BusID "PCI:1:0:0" он получается из номера 01:00.0 VGA для nvidia
BusID "PCI:0:2:0" получается из надписи 00:02.0 VGA для intel
xorg.conf.nvidia :
Section "Module"
Load "modesetting"
EndSection
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:1:0:0"
Option "AllowEmptyInitialConfiguration"
EndSection
xorg.conf.intel:
Section "Module"
Load "modesetting"
EndSection
Section "Device"
Identifier "Intel"
Driver "modesetting"
BusID "PCI:0:2:0"
Option "AllowEmptyInitialConfiguration"
EndSection
3) Копируем нужный conf файл по пути /etc/X11/xorg.conf и перезапускаем дисплей менеджер:
#!/bin/bash
sudo cp ./xorg.conf.nvidia /etc/X11/xorg.conf
sudo systemctl restart display-manager
3.1) Как проверить что переключение прошло успешно.
Способ 1:
glxinfo | grep "OpenGL render"
OpenGL renderer string: NVIDIA GeForce RTX 4060 Laptop GPU/PCIe/SSE2
или для intel
glxinfo | grep "OpenGL render"
OpenGL renderer string: Mesa Intel(R) Graphics (ADL GT2)
Заметка: Для использования команды нужно использовать зависимость
sudo apt install mesa-utils
Способ 2:
Можно из меню запустить nvidia-settings
а для Nvidia значительно богаче по доступным настройкам
Переключение осуществляется подменой файла настроек это можно делать многократно
4) nvidia_switch.sh
В документации указывается что нужно добавить файл nvidia_switch.sh
#!/bin/bash
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
xrandr --dpi 96
делаем его исполняемым
chmod +x /usr/local/bin/nvidia_switch.sh
копируем по пути :
sudo cp ./nvidia_switch.sh /usr/local/bin/nvidia_switch.sh
Добавить созданный файл в файл /etc/X11/fly-dm/Xsetup :
#! /bin/sh
# Xsetup - run as root before the login dialog appears
#xconsole -geometry 480x130-0-0 -notify -verbose -fn fixed -exitOnFail -file /dev/xconsole &
/usr/local/bin/nvidia_switch.sh
if [ -x /usr/sbin/pdp-flbl ]; then find /dev/dri -type c -exec /usr/sbin/pdp-flbl :::ehole {} \;; fi
/usr/bin/fly-dm-set-dpi.sh
Перезапускаем компьютер.
Заметка: На моей практике переключение работало и без 4-го пункта
Приложение 1
Настройки xorg.conf
Этот фрагмент файла /etc/X11/xorg.confиспользуется для настройки X-сервера (графического сервера) в системе Linux.
1. Section "Module"
Section "Module"
Load "modesetting"
EndSection
Load "modesetting"— загружает модуль modesetting, который поддерживает KMS (Kernel Mode Setting).
- Этот модуль отвечает за инициализацию видеокарты на уровне ядра и используется для обеспечения совместимости между X-сервером и видеодрайвером.
- Важно при работе с драйверами NVIDIA и гибридной графикой (например, NVIDIA + Intel).
2. Section "Device"
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID "PCI:X:Y:Z"
Option "AllowEmptyInitialConfiguration"
EndSection
Параметры:
- Identifier "nvidia" — имя для устройства (можно использовать любое, главное, чтобы совпадало с другими разделами, если они есть).
- Driver "nvidia" — указывает использовать проприетарный драйвер NVIDIA (не Nouveau).
- BusID "PCI:X:Y:Z" — адрес шины, на которой находится видеокарта.
Значения X:Y:Z нужно заменить на реальные координаты из команды:lspci | grep -i nvidia
Например, если вывод будет:01:00.0 VGA compatible controller: NVIDIA Corporation ...
Тогда BusID будет "PCI:1:0:0". - Option "AllowEmptyInitialConfiguration" — позволяет запускать X-сервер даже без предварительно заданной конфигурации.
Полезно для работы с несколькими видеокартами или для упрощения настройки.
Приложение 2
Что делать если после правок запуск графического сервера закончился ошибкой?
1. Заходим в GRUB
При выборе ядра для запуска, внизу есть пояснение (у меня это «e»)
2. Правим строчку в которой написано quiet
Вместо quiet – напишем nofb а также дополнительные опции дальше в сточку
- nomodeset — отключить автоматическую настройку видеорежима.
- vga=normal — вернуть текстовый режим VGA.
- video=vesafb:off — отключить vesa framebuffer.
Чтобы продолжить загрузку нажмите F10
дальше по необходимости надо будет проверить драйверы nvidia, а также отменить сделанные операции
Например проблема может оказаться в файле /etc/X11/fly-dm/Xsetup и строчке с nvidia_switch.sh
После отмены и поэтапного повторений действий все заработает и будет переключаться.
Список литературы:
1) Драйверы видеокарт Nvidia для Astra Linux на платформе x86-64