Да, узнал!
Чтобы активировать вывод VIRTUAL драйвера intel, вам нужно создать 20-intel.conf
файл в каталоге конфигурации Xorg (в /usr/share/X11/xorg.conf.d
разделе Debian stretch, который можно узнать, прочитав /var/log/Xorg.0.log
)
Section "Device"
Identifier "intelgpu0"
Driver "intel"
Option "VirtualHeads" "2"
EndSection
Мой /etc/bumblebee/xorg.conf.nvidia выглядит следующим образом:
Section "ServerLayout"
Identifier "Layout0"
Option "AutoAddDevices" "true"
Option "AutoAddGPU" "false"
EndSection
Section "Device"
Identifier "DiscreteNvidia"
Driver "nvidia"
VendorName "NVIDIA Corporation"
Option "ProbeAllGpus" "false"
Option "NoLogo" "true"
Option "AllowEmptyInitialConfiguration"
EndSection
Section "Screen"
Identifier "Screen0"
Device "DiscreteNVidia"
EndSection
Некоторые объяснения: ему нужен раздел «Экран», иначе он пытается использовать устройство Intel, объявленное в 20-intel.conf (которое мы только что добавили ранее, о боже ...). Также необходимо, чтобы «AllowEmptyInitialConfiguration» мог запускаться с optirun, когда внешний монитор не подключен.
С этой конфигурацией и запуском intel-virtual-output
я смог получить доступ к своему порту HDMI. Даааа !!!
Устранение неисправностей: если optirun
или intel-virtual-output
не работает, взгляните на /var/log/Xorg.8.log
(шмель создает X-сервер с дисплеем: 8 используется внутри).
Примечания я прочитал в нескольких местах , которые KeepUnusedXServer
должны быть установлены в true
и PMMethod
к none
в /etc/bumblebee/bumblebee.conf
, я не делал этого , и это работает отлично. Если я это сделаю, это будет работать, но тогда дискретный графический процессор останется включенным даже после выхода из запущенного приложения или убийства intel-virtual-output, чего я не хотел.
Еще примечания Еще одна причина, заставившая меня удариться головой о стену, была деактивация Nouveau и запуск сервера Intel X: это нужно сделать с помощью флагов, передаваемых ядру, указанных в параметрах GRUB. У /etc/defaults/grub
меня есть следующая строка:
GRUB_CMDLINE_LINUX_DEFAULT="quiet blacklist.nouveau=1 i915.modeset=1 gfxpayload=640x480 acpi_backlight=vendor acpi_osi=! acpi_osi=\"Windows 2009\""
(остерегайтесь кавычек и избежавших кавычек).
Некоторые объяснения: он избегает загрузки nouveau (что несовместимо с сервером Nvidia X) и указывает драйверу Intel переходить в графический режим прямо во время загрузки. Если вы этого не сделаете, то сервер Intel X не сможет запуститься, и он вернется к обычному старому серверу VESA с 3D-рендерингом на стороне процессора. Эти acpi_xxx
флаги необходимы на этой конкретной машине , чтобы преодолеть ошибку BIOS , что делает его сбой при переходе в графическом режиме с дискретным GPU выключены. Обратите внимание, что он специфичен для данного ноутбука (портативная рабочая станция HP ZBook), он может быть ненужным или отличаться для других ноутбуков.
Обновление (6 декабря 2017 г.) В последнем дистрибутиве Debian (Buster) «915.modeset = 1 gfxpayload = 640x480» не требуется. Чтобы удалить nouveau, мне нужно было также создать файл nouveau.conf в /etc/modprobe.d с «черным списком nouveau» в нем, а затем заново создать виртуальный диск с помощью «update-initramfs -u». Перезагрузитесь и убедитесь, что «nouveau» больше не загружается с «lsmod | grep nouveau».
Обновление (17 декабря 2016 г.) В последнем xorg-сервере (1.19), похоже, существует проблема в функции RandR, которая управляет гаммой при использовании с intel-virtual-output
. Вот процедура для исправления Xserver и заставить его работать:
sudo apt-get build-dep xserver-xorg-core
apt-get source xorg-server
отредактируйте hw / xfree86 / mode / xg86RandR12.c Строка 1260, вставьте «return» (чтобы функция xf86RandR12CrtcComputeGamma()
ничего не делала)
dpkg-buildpackage -rfakeroot -us -uc
cd ..
sudo dpkg -i xserver-xorg-core_n.nn.n-n_amd64.deb
(замените на n.nn.n-n
правильную версию), перезагрузитесь и Yehaa !! снова работает! (но это быстрое и грязное исправление)
Обновление подало отчет об ошибке (было уже известно, и только что было исправлено):
https://bugs.freedesktop.org/show_bug.cgi?id=99129
Как я разобрался:
установил xserver-xorg-core-dbg
и сделал gdb /usr/lib/xorg/Xorg <xorg pid>
с другой машины через ssh.
Обновление (11 января 17) Похоже, что ошибка теперь исправлена в последних пакетах Debian.
Обновление (24 января 18) Если вы хотите подключить проектор для проведения презентации и вам нужно все настроить перед запуском (intel-virtual-output + xrandr), это может вызвать стресс. Вот небольшой скрипт, который делает эту работу (отказ от ответственности: много возможностей для улучшения, в отношении стиля и т. Д.):
# beamer.sh: sets Linux display for doing a presentation,
# for bumblebee configured on a laptop that has the HDMI
# plugged on the NVidia board.
#
# Bruno Levy, Wed Jan 24 08:45:45 CET 2018
#
# Usage:
# beamer.sh widthxheight
# (default is 1024x768)
# Note: output1 and output2 are hardcoded below,
# change according to your configuration.
output1=eDP1
output2=VIRTUAL1
# Note: I think that the following command should have done
# the job, but it does not work.
# xrandr --output eDP1 --size 1024x768 --output VIRTUAL1 --size 1024x768 --same-as eDP1
# My guess: --size is not implemented with VIRTUAL devices.
# Thus I try to find a --mode that fits my needs in the list of supported modes.
wxh=$1
if [ -z "$wxh" ]; then
wxh=1024x768
fi
# Test whether intel-virtual-output is running and start it.
ivo_process=`ps axu |grep 'intel-virtual-output' |egrep -v 'grep'`
if [ -z "$ivo_process" ]; then
intel-virtual-output
sleep 3
fi
# Mode names on the primary output are simply wxh (at least on
# my configuration...)
output1_mode=$wxh
echo Using mode for $output1: $output1_mode
# Mode names on the virtual output are like: VIRTUAL1.ID-wxh
# Try to find one in the list that matches what we want.
output2_mode=`xrandr |grep $output2\\\. |grep $wxh |awk '{print $1}'`
# There can be several modes, take the first one.
output2_mode=`echo $output2_mode |awk '{print $1}'`
echo Using mode for $output2: $output2_mode
# Showtime !
xrandr --output $output1 --mode $output1_mode --output $output2 --mode $output2_mode --same-as $output1
обновление (10/07/2019)
«Исправление» для нового сбоя: напишите, что следует в скрипте (назовите его, bumblebee-startx.sh
например):
optirun ls # to load kernel driver
/usr/lib/xorg/Xorg :8 -config /etc/bumblebee/xorg.conf.nvidia \
-configdir /etc/bumblebee/xorg.conf.d -sharevts \
-nolisten -verbose 3 -isolateDevice PCI:01:00:0 \
-modulepath /usr/lib/nvidia/nvidia,/usr/lib/xorg/modules/
(замените PCI: nn: nn: n на адрес вашей карты NVidia, полученный с помощью lspci)
Запустите этот сценарий из окна терминала в качестве корня ( sudo bumblebee-startx.sh
), держать терминал открытым, то optirun
и intel-virtual-output
работать , как и ожидалось (примечание: иногда мне нужно запустить xrandr
в дополнение , чтобы сделать экран / видеопроектор обнаружен). Теперь я не понимаю, почему та же самая команда началась с аварий со сбоями, так много загадок здесь ... (но, по крайней мере, это дает временное исправление)
Как я понял: написал скрипт-обертку для запуска xserver, объявил его как XorgBinary в bumblebee.conf, заставил сохранить командную строку ($ *) в файл, попробовал некоторые вещи, включая LD_PRELOAD, добавив патч к XServer для исправить ошибку в osLookupColor (не работало), но когда я попытался запустить ту же командную строку вручную, она работала и продолжала работать без моего патча (но я до сих пор не понимаю, почему).
Обновление 15.11.2009
После обновления у меня появилось много мерцаний, из-за которых система стала непригодной для использования. Исправлено добавлением параметра ядра i915.enable_psr=0
(in /etc/defaults/grub
, затем sudo update-grub
). Если вы хотите сейчас, PSR означает «самообновление панели», энергосберегающую функцию графических процессоров Intel (которая может вызвать мерцание экрана).