Так, з’ясували!
Для активації VIRTUAL виводу драйвера Intel вам потрібно створити 20-intel.conf
файл у каталозі конфігурації Xorg ( /usr/share/X11/xorg.conf.d
під розтяжкою Debian, дізнавшись, прочитавши /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, що робить її збоєм під час роботи в графічному режимі з вимкненим дискретним графічним процесором. Зауважте, що він характерний саме для цього ноутбука (портативна робоча станція HP ZBook), він може бути непотрібним або відрізнятися для інших ноутбуків.
Оновлення (6 грудня 2017 р.) За останнім дистрибутивом Debian (Buster) "915.modeset = 1 gfxpayload = 640x480" непотрібне. Щоб видалити nouveau, мені також потрібно було створити файл nouveau.conf в /etc/modprobe.d з "чорним списком nouveau" в ньому, а потім відтворити ramdisk з "update-initramfs -u". Перезавантажте та переконайтеся, що "nouveau" більше не завантажений "lsmod | grep nouveau".
Оновлення (17 грудня 2016 р.) З останнім xorg-сервером (1.19), здається, існує проблема у функції RandR, яка керує Gamma при використанні 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
оновлення (07.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.2019
Після оновлення я відчув сильне мерехтіння, зробивши систему непридатною. Виправлено додаванням параметра ядра i915.enable_psr=0
(в /etc/defaults/grub
, потім sudo update-grub
). Якщо ви хочете зараз, PSR означає "самооновлення панелі", функцію енергозбереження процесорів Intel (що може спричинити мерехтіння екрану).