Добавить в корзинуПозвонить
Найти в Дзене
LITVINOV-UPGRADE-LINUX

Включение дискретной карты Nvidia на ноутбуках с гибридной графикой на Astra Linux

На ноутбуках часто есть встроенная и дискетная видео карты, для эффективной работы 3D приложений нужно чтобы выполнение программы шло через дискретную видео карту. Рассмотрим ситуацию когда в ноутбуке есть встроенная видео карта Intel и дискретная Nvidia. Операционная система будет Astra Linux 1.7.3 Важно: В процессе настройки может что-то может пойти не так и перестанет загружаться графическая оболочка. Краткие рекомендации на этот счет я дам в конце статьи. Важно: Если требуется использовать только один видеоадаптер, то в первую очередь следует проверить настройки в BIOS ноутбука: возможно там есть опция, отключающая один из чипов. 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) важным моментом является BusID: BusID "PCI:1:0:0" он получается из номера 01:00.0 VGA для nvidia BusID "PCI:0:2:0" получается из надписи 00:02.0 VGA для in
Оглавление

Введение

На ноутбуках часто есть встроенная и дискетная видео карты, для эффективной работы 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

-2

а для Nvidia значительно богаче по доступным настройкам

-3

Переключение осуществляется подменой файла настроек это можно делать многократно

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

-4

Вместо 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