- Ноутбук + 2 видеокарты — как жить?
- Способ первый. Убить пересмешника.
- Способ второй. vga_switcheroo
- Включение гибридной графики в Ubuntu на ноутбуках Nvidia + Intel (OpenGL, Vulkan)
- Введение
- 1. Устанавливаем драйвер
- 2. Настраиваем видеокарту
- 3. Запуск приложения с использованием дискретной графики
- Заключение
- Включение/отключение дискретной видеокарты
- Как включить дискретную видеокарту на Linux
- Установлен проприетарный драйвер NVIDIA, но видеокарта не используется
- И всё-таки драйвер NVidia работает
- Какую видеокарту, встроенную в центральный процессор или выделенную выбирает Linux?
- Как узнать, какая видеокарта используется в Linux
- Как проверить, используется ли видеокарта NVIDIA
- Как установить видео драйвер NVidia в Linux
- Как установить и пользоваться Bumblebee (как включить NVIDIA Optimus в Linux)
- Система зависает после установки Bumblebee
- Как пользоваться Bumblebee / NVIDIA Optimus в Linux
- Как проверить Bumblebee / NVIDIA Optimus в Linux
- Заключение
- БОНУС. Как сделать видеокарту NVidia используемой по умолчанию в Linux
Ноутбук + 2 видеокарты — как жить?
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
01:00.0 VGA compatible controller: ATI Technologies Inc M93 [Mobility Radeon HD 4500 Series] (rev ff)
Наша задача — либо научиться переключаться между двумя видеокартами, либо хотя бы отключить питание второй видеокарты.
Способ первый. Убить пересмешника.
Первый способ простой. Мы возьмём готовый модуль, написанный для ноутбуков Lenovo (для нашего замечательного HP он тоже подходит) и заставим его прикручиваться к нашему ядру. Для этого мы воспользуемся deb-пакетами и системой динамического прикручивания модулей — DKMS.
Модуль я обозвал незатейливо — hp_acpi_kill.
Берём исходный код модуля и сохраняем его под именем hp_acpi_kill.c
Теперь кладём рядом Makefile.
Это наш необходимый модуль, написанный неизвестным энтузиастом для OpenSUSE.
Теперь нам надо написать конфиг для DKMS, чтобы не пересобирать модуль под каждую новую версию ядра. К счастью, DKMS устроен очень просто, и конфиг получается короткий. Скачиваем и сохраняем под именем dkms.conf. В этом файле мы указываем имя компилируемого модуля, его версию, а также как компилировать и ставить наш модуль. Казалось бы на этом можно и остановиться — добавить модуль в DKMS, собрать и установить — но мы всё-таки пользователи удобного дистрибутива, а не не пойми чего. Поэтому мы завернём наш модуль в пакет.
Углубляться в подробности сборки пакета я не буду, посколько на хабре писал об этом уже много, скажу лишь, что помимо обычного набора файлов нам потребуются файлы *.postinst,*.postrm, *.prerm — чтобы наш модуль регистрировался и компилировался в DKMS при установке пакета, а также вычищался при удалении. Скачать архив со всеми необходимыми файлами можно тут.
Собираем пакет командой debuild или dpkg-buildpackage на выбор, устанавливаем и добавляем в /etc/modules название модуля hp_acpi_kill — теперь при загрузке системы дискретная видеокарта будет отключаться и энергопотребление резко падать.
Посмотрев список устройств, мы обнаружим, что наша видеокарта системе видна, но не определяется:
$ lshw
.
*-generic:0
product: Illegal Vendor ID
vendor: Illegal Vendor ID
physical id: 0
bus info: pci@0000:01:00.0
version: ff
width: 32 bits
clock: 66MHz
capabilities: bus_master vga_palette cap_list rom
configuration: driver=radeon latency=255 maxlatency=255 mingnt=255
resources: irq:31 memory:c0000000-cfffffff ioport:3000(size=256) memory:e4400000-e440ffff memory:e4420000-e443ffff
Способ второй. vga_switcheroo
Способ второй потребует от нас немножко трафика и капельку времени. Дело в том, что не так давно вышла версия 2.6.34 ядра, в которую включен новый интересный модуль — vga_switcheroo, который как раз и призван переключать видеокарты. На Launchpad и kernel.ubuntu.com даже можно найти пакеты с этим ядром, но в дефолтном конфиге модуль выключен — вероятно потому, что удобных графических средств для переключения видеокарт пока не придумали.
Поэтому для начала скачаем исходный пакет с ланчпада (он предназначен для Maverick Meerkat, но и у нас отлично заработает):
$ wget launchpad.net/ubuntu/+archive/primary/+files/linux_2.6.34-2.9.dsc
$ wget launchpad.net/ubuntu/+archive/primary/+files/linux_2.6.34-2.9.tar.gz
$ sudo dpkg -i linux-headers-2.6.34-2_2.6.34-2.9_all.deb linux-headers-2.6.34-2-generic_2.6.34-2.9_i386.deb linux-image-2.6.34-2-generic_2.6.34-2.9_i386.deb
Если у вас 64-битная система, вместо i386 в имени файла будет, разумеется, amd64.
Как нам после перезагрузки в новое ядро переключить видеокарту? Посмотрим на сводку советского информбюро:
$ cat /sys/kernel/debug/vgaswitcheroo/switch
0:+:Pwr:0000:00:02.0
1: :Off:0000:01:00.0
DIS — немедленное переключение на дискретную видеокарту
IGD — немедленное переключение на интегрированную видеокарту
DDIS — отложенное переключение на дискретную видеокарту
DIGD — отложенное переключение на интегрированную видеокарту
ON — включить неиспользуемую видеокарту
OFF — выключить неиспользуемую видеокарту
# echo ON > /sys/kernel/debug/vgaswitcheroo/switch # включим дискретную видеокарту
# echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch # попросим при случае переключить на дискретную видеокарту
# echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
$ $ cat /sys/kernel/debug/vgaswitcheroo/switch
0: :Off:0000:00:02.0
1:+:Pwr:0000:01:00.0
Источник
Включение гибридной графики в Ubuntu на ноутбуках Nvidia + Intel (OpenGL, Vulkan)
Введение
Это простая инструкция как включить гибридную графику intel-nvidia на ноутбуке. Чтобы определенные приложения запускались на дискретном чипе, а другие на встроенном. На свое удивление в интернете не нашел простую инструкцию того, как запускать определенные приложения, используя дискретную графику. Так что напишу так просто, на сколько считаю нужным
У меня система KDE Neon 5.21 — по большому счету — Ubuntu LTS с окружением рабочего стола KDE Plasma 5.21, видеочип GeForce MX150
1. Устанавливаем драйвер
a) Если у вас система на Qt (Как правило окружение KDE или LXQt), то с помощью данной команды через терминал загрузим программу для установки драйверов:
Если у вас система на GTK то с помощью это команды:
Хотя разницы принципиальной нет
b) Затем запускаем ее с правами root
Можно так же добавить ярлык для запуска в меню приложений
Инструкция для KDE
/.local/share/applications/ создадим файл software properties qt.desktop с таким содержанием
И файл software properties qt.sh в той же папке:
После перезагрузки ярлык появится в меню
Но это далеко не обязательно, вполне достаточно запустить из консоли для наших целей настройки гибридной графики
c) Переходим на последнюю вкладку Additional drivers и устанавливаем нужный драйвер. Я выбрал самой последней версии, который не tested и не server
d) После установки перезагружаем устройство
2. Настраиваем видеокарту
a) Загружаем следующую программу:
b) Переходим в PRIME Profiles Здесь мы видим три пункта:
NVIDIA (Performance Mode) — работать только на дискретной графике. Сильно потребляет батарею в несложных задачах, а так же ноутбук начинает греться. Зато система работает намного быстрее, но это того не стоит. У меня после установки драйвера этот пункт включился автоматически
NVIDIA On-Demand — некоторые приложения будут использовать дискретную графику nvidia, но по-умолчанию встроенная intel. Как запустить конкретное приложение с дискретной графикой напишу дальше
NVIDIA (Power Saving Mode) — отключение дискретной графики
Выбираем второй вариант — NVIDIA On-Demand , и перезагружаем систему
3. Запуск приложения с использованием дискретной графики
Это то, что сложнее всего гуглилось.
Для запуска приложения с использованием графики nvidia нужно задать для OpenGL две переменные среды:
для Vulkan только:
Делать это надо перед командой для запуска приложения. Например, нам нужно запустить из терминала приложение program с использованием дискретной графики. Нужно вызвать его так:
Соответственно, если у приложения есть ярлык (.desktop) в меню приложений, то надо изменить команду запуска в ярлыке. В KDE Plasma нужно нажать на него ПКМ, открыть свойства (или «изменить приложение. «), перейти во вкладку «приложение» и перед командой приписать данную приставку. В других средах похожего стола примерно так же
Пример: ярлык игры Wolfenstein — Blade of Agony
Можно сделать это же действие через текстовый редактор. Открываем ярлык, находим Exec= , и приписываем перед коммандой данную приставку __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia
Заключение
Данный метод, как я понял, точно работают для программ, использующих библиотеки OpenGL и Vulkan. У меня, к сожалению, не получилось запустить так Windows приложение через Wine, которое использует DirectX, но это уже совсем другая история. (OpenGL приложения под Wine работают)
Источник
Включение/отключение дискретной видеокарты
Практически все современные ноутбуки обладают двойными видеокартами. Обычно это что то маломощное от интел, и крутая, энергозависимая карта для фильмов и игр от nvidia или ati. Автоматическое переключение довольно часто глючит(Например: может включится крутая видеокарта при работе с документами, а нам нужно сохранить батарею как можно дольше), поэтому рассмотрим способ ручного переключения.
1. Способ. Подходит для все версий linux с ядром 2.6.34 +
«uname -a» узнать свою версию ядра
Для начала узнаем какие видеокарты видит наша система
Появится примерно такие строчки:
Запомним, что 00:02.0 это слабая видеокарта, а 1:00.0 сильная
Теперь посмотрим, какая из видеокарт сейчас работает
Появятся примерно такие строки:
Плюс стоит на против активной видеокарты, а Pwr обозначает, что видеокарта работает и кушает питание. Несложно догадаться, что можно отключить питание от неиспользуемой карточки этим самым ничуть не повредить системе.
а) Если нам нужно обесточить неиспользуемую видеокарту, то выполняем команду:
Батарея ноутбука скажет вам спасибо 🙂
Если хотим, чтобы лишняя видеокарта отключалась после загрузки системы, то добавляем строчку
в файл /etc/rc.local
б) Если нам нужно, наоборот, включить мощную видеокарту и на неё изначально не подаётся питание то выполняем команды:
sudo echo ON > /sys/kernel/debug/vgaswitcheroo/switch
sudo echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
DIS — немедленное переключение на дискретную видеокарту
IGD — немедленное переключение на интегрированную видеокарту
DDIS — отложенное переключение на дискретную видеокарту
DIGD — отложенное переключение на интегрированную видеокарту
ON — включить неиспользуемую видеокарту
OFF — выключить неиспользуемую видеокарту
Завершаем сеанс, входим заново и отключаем слабую видеокарту
Должно получится так:
Если вдруг видеокарта вообще не работает, то тут поможет только ремонт ноутбуков. Если с видеокартой всё в порядке, но способ описанные выше кажется сложным, то можно воспользоваться графической программой.
2. Способ. Если на вашем ноутбуке установлена ubuntu и лезть в терминал не хочется, то можно воспользоваться Ubuntu Control Center
После установки и запуска переходим в Hardware>VGA Switching
Тут всё интуитивно понятно.
После выбора видеокарты произойдёт автоматическое завершение сеанса, так что не пугайтесь. Лично мне первый способ показался более красивым 🙂
Источник
Как включить дискретную видеокарту на Linux
В этой заметке мы рассмотрим следующие вопросы:
- Как узнать, какая видеокарта используется в Linux
- Как переключиться с интегрированной графики на видеокарту NVidia
- Как установить и пользоваться Bumblebee для автоматического переключения между интегрированной и дискретной видеокартами (как включить NVIDIA Optimus в Linux)
Установлен проприетарный драйвер NVIDIA, но видеокарта не используется
К сожалению, вопросы установки проприетарных драйверов для видеокарт на Linux до сих пор не так безболезненны, как на Windows. Но я столкнулся с ещё более запутанной ситуацией: после успешной установки драйверов, не получается задействовать, использовать видеокарту NVidia.
Симптомы проблемы следующие:
- драйвера для видеокарты NVidia успешно установились
- система загружается и прекрасно работает
- но используется видео ядро центрального процессора Intel, а видеокарта NVidia не используется
- попытки переключиться на NVidia либо не приносят успеха, либо приводят к чёрному экрану (когда иксы, графическая оболочка, не могут загрузиться)
- программы использующие CUDA (например, Hashcat) прекрасно работают
Чуть подробнее о последнем пункте. Для меня видеокарта представляет главный интерес для брут-форса (взлома) хешей паролей. И эта функция работает, видеокарта нагружена, Hashcat показывает устройство видеокарты как успешно используемое, высокая скорость брут-форса паролей. Именно по этой причине я уже полтора года (!) после установки проприетарного драйвера NVidia не догадывался, что у меня какие-либо проблемы.
И всё-таки драйвер NVidia работает
Я могу убедиться в этом, поскольку срабатывала команда
А также успешно работали приложения, использующие CUDA. Для всех других задач я не мог задействовать видеокарту NVidia.
Какую видеокарту, встроенную в центральный процессор или выделенную выбирает Linux?
Некоторые видеокарты от NVidia поддерживают технологию NVIDIA Optimus. Суть этой технологии в том, что программное обеспечение автоматически переключается на интегрированную (Intel) или выделенную (NVidia) видеокарту. На таких системах всё довольно просто — по крайней мере в теории. Нужная видеокарта может выбираться множество раз во время работы Linux.
Но на компьютерах без NVIDIA Optimus видеокарта выбирается настройками пользователя, либо по умолчанию используется графика Intel.
Как узнать, какая видеокарта используется в Linux
Есть несколько команд, которые покажут, какая видео карта используется:
Эта же самая команда, но запущенная через optirun из пакета Bumblebee:
Пример вывода, в котором показано, что задействована видеокарта NVIDIA:
Подробнее о optirun и Bumblebee будет позже.
Ещё одна команда, которая выводит информацию об используемой видеокарте (и прикольный треугольник в качестве бонуса):
С помощью команды lspci и определённых опций можно вывести информацию об устройствах, на конце строки с используемой видеокартой должно быть [VGA controller]. Команда для фильтрации данных:
Как проверить, используется ли видеокарта NVIDIA
Следующая команда покажет процессы, которые использует видеокарта NVIDIA (если процессов нет, значит видеоадаптер не используется):
Ещё одна команда, которая показывает процессы, потребляющие ресурсы видеокарты NVIDIA, а также уровень её загруженности, температуру и другие метрики:
Как установить видео драйвер NVidia в Linux
Для установки проприетарного драйвера NVidia в Kali Linux выполните команды:
Возможно, этот же способ будет работать и для Debain и других производных.
Для установки драйвера NVidia в Arch Linux, BlackArch и их производные выполните команду:
Кроме указанных, дополнительно будут установлены пакеты nvidia-utils и opencl-nvidia. Если вам не нужен CUDA, то не устанавливайте пакет cuda.
Как установить и пользоваться Bumblebee (как включить NVIDIA Optimus в Linux)
Пакет Bumblebee нужен для автоматического переключения между интегрированной и дискретной видеокартами. Ваша карта должна поддерживать технологию NVidia Optimus, список поддерживающих карт вы можете найти на этой странице: https://www.geforce.com/hardware/technology/optimus/supported-gpus
Если ваша карта там есть, то переходите к выполнению следующих команд. У вас уже должен быть установлен проприетарный драйвер NVIDIA, как это показано выше.
На Kali Linux, Debian и их производных выполните:
В ПРОЦЕССЕ ПОДГОТОВКИ
На Arch Linux, BlackArch и их производных выполните:
Система зависает после установки Bumblebee
Я столкнулся с проблемой, что Bumblebee в принципе работает, но при использовании некоторых команд, которые задействуют CUDA или обращаются к модулям ядра, система зависала. Чтобы проверить, есть ли у вас эта проблема, выполните команду lspci, например:
Если система полностью зависнет, то перезагрузитесь и удалите пакет bbswitch.
Вместо удаления bbswitch вы можете попробовать в опции загрузки ядра добавить строку:
Для этого создайте файл /etc/modprobe.d/options.conf:
и скопируйте в него:
Но у меня сработало только удаление bbswitch.
Как пользоваться Bumblebee / NVIDIA Optimus в Linux
Теперь любую программу, которая должна использовать видеокарту NVIDIA, можно запустить командой вида:
Когда optirun не используется, то карта NVIDIA должна находиться в отключённом состоянии, что должно сберегать электричество.
Как проверить Bumblebee / NVIDIA Optimus в Linux
Запустите тест видеокарты обычной командой:
А также с помощью optirun:
Обратите внимание, что FPS вырос примерно в 20 раз.
Ещё один вариант теста работы видеокарты:
А также с помощью optirun:
Вы должны увидеть прирост производительности при использовании optirun.
Во время работы этих тестов, выполните команду:
Вы должны увидеть процессы, которые используют дискретную видеокарту.
Если у вас установлен веб-браузер Chromium, то запустите его двумя способами:
В обоих случаях откройте вкладку:
Там вы увидите информацию об используемом графическом чипе:
Заключение
Даже после написания этой инструкции, после того, как я разобрался во многих вопросах, всё ещё осталось много непонятного.
Например, как использовать постоянно только карту NVidia? Ниже я покажу что именно пробовал — абсолютно всё не сработало.
Также открыт вопрос, как установить Bumblebee в Debian и производные дистрибутивы? Все команды, которые я пробовал, приводят к чёрному экрану, либо неработоспособности Bumblebee.
БОНУС. Как сделать видеокарту NVidia используемой по умолчанию в Linux
В этом разделе я перечислил то, что у меня не сработало — поэтому можете пропускать этот раздел.
Предупреждение: если после указанных в этом разделе действий вы не можете загрузиться — появляется чёрный экран, то во время неудачной загрузки нажмите Ctrl+Alt+F*, где вместо звёздочки пробуйте указать разные цифры, например, Ctrl+Alt+F1, Ctrl+Alt+F2 и т. д., пока не появится консоль. Введите ваш логин и пароль и откатите изменения, которые привели к неудачной загрузке. Для удаления пакетов используйте стандартные менеджеры пакетов вашего дистрибутива, а для редактирования файлов в командной строке используйте vim или nano. Если вы не знакомы с vim или nano, то пропустите этот раздел!
Если драйвер NVidia установлен, то, вроде бы, видеокарта NVidia должна использоваться по умолчанию. У меня это никогда не происходило, всегда используется интегрированная графика Intel.
Начните с проверки настроек БИОСа — там может быть возможность отключить одну из карт.
Для явного указания используемого драйвера можно создать файл /etc/X11/xorg.conf.d/20-nvidia.conf.
И скопировать в него примерно следующее:
Но у меня не происходит загрузка в графический интерфейс.
Если вы хотите отключить загрузку драйверов Intel, то создайте файл /etc/modprobe.d/blacklist-intel.conf:
И скопируйте в него примерно следующее (название модулей могут отличаться в зависимости от вашего центрального процессора):
Среди других советов встречаются добавить в опции загрузки ядра следующее:
Если у вас EFI (а не БИОС), то для изменения опций загрузки ядра нужно открыть файл вида /boot/loader/entries/*.conf. У меня этот файл называется /boot/loader/entries/arch.conf:
Также рекомендуют изменить файл /mkinitcpio.conf:
В котором вместо строки
нужно записать строку
Затем нужно пересобрать ядро, для этого в Debian и производных нужно выполнить команду:
а в Arch Linux и производных нужно выполнить такую команду:
Источник