Ja, herausgefunden!
Um die VIRTUELLE Ausgabe des Intel-Treibers zu aktivieren, müssen Sie eine 20-intel.conf
Datei im Xorg-Konfigurationsverzeichnis erstellen ( /usr/share/X11/xorg.conf.d
unter Debian Stretch, ermittelt durch Lesen /var/log/Xorg.0.log
).
Section "Device"
Identifier "intelgpu0"
Driver "intel"
Option "VirtualHeads" "2"
EndSection
Meine /etc/bumblebee/xorg.conf.nvidia lautet wie folgt:
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
Einige Erklärungen: Es benötigt einen "Screen" -Bereich, ansonsten wird versucht, das in 20-intel.conf deklarierte Intel-Gerät zu verwenden (das wir gerade hinzugefügt haben, oh my ...). Außerdem muss "AllowEmptyInitialConfiguration" in der Lage sein, mit optirun zu beginnen, wenn kein externer Monitor angeschlossen ist.
Mit dieser Konfiguration und dem Starten intel-virtual-output
konnte ich auf meinen HDMI-Anschluss zugreifen. Yeehaa !!!
Fehlerbehebung: Wenn es funktioniert optirun
oder intel-virtual-output
nicht, werfen Sie einen Blick auf /var/log/Xorg.8.log
(Bumblebee erstellt einen X-Server mit Anzeige: 8, der intern verwendet wird).
Hinweise I an mehreren Stellen gelesen , die KeepUnusedXServer
eingestellt werden soll true
und PMMethod
zu none
in /etc/bumblebee/bumblebee.conf
, ich tat das nicht und es funktioniert gut. Wenn ich das tue, funktioniert es, aber dann bleibt die diskrete GPU auch nach dem Beenden einer optiruned-Anwendung oder dem Beenden der Intel-Virtual-Ausgabe eingeschaltet, was ich nicht wollte.
Weitere Hinweise Etwas anderes, das mich dazu brachte, meinen Kopf gegen die Wand zu stoßen, war das Deaktivieren von Nouveau und das Starten des Intel X-Servers: Dies muss mithilfe von Flags geschehen, die an den Kernel übergeben wurden und in den GRUB-Parametern angegeben sind. In habe /etc/defaults/grub
ich folgende Zeile:
GRUB_CMDLINE_LINUX_DEFAULT="quiet blacklist.nouveau=1 i915.modeset=1 gfxpayload=640x480 acpi_backlight=vendor acpi_osi=! acpi_osi=\"Windows 2009\""
(Achten Sie auf die Anführungszeichen und Anführungszeichen mit Escapezeichen).
Einige Erklärungen: Es vermeidet das Laden von nouveau (das nicht mit dem Nvidia X-Server kompatibel ist) und weist den Intel-Treiber an, direkt beim Start in den Grafikmodus zu wechseln. Wenn Sie dies nicht tun, kann der Intel X-Server nicht gestartet werden und greift auf einen einfachen alten VESA-Server mit CPU-seitigem 3D-Rendering zurück. Die acpi_xxx
Flags werden auf diesem speziellen Computer benötigt, um einen BIOS-Fehler zu beheben, der im Grafikmodus mit ausgeschalteter diskreter GPU zum Absturz führt. Beachten Sie, dass es für dieses spezielle Notebook (tragbare HP ZBook-Workstation) spezifisch ist und für andere Laptops möglicherweise nicht erforderlich ist oder davon abweicht.
Update (6. Dezember 2017) Mit der neuesten Debian-Distribution (Buster) ist "915.modeset = 1 gfxpayload = 640x480" nicht erforderlich. Um nouveau zu entfernen, musste ich auch eine nouveau.conf-Datei in /etc/modprobe.d mit "blacklist nouveau" erstellen und dann die RAM-Disk mit "update-initramfs -u" neu erstellen. Starten Sie neu und stellen Sie sicher, dass "nouveau" nicht mehr mit "lsmod | grep nouveau" geladen ist.
Update (17. Dezember 2016) Mit dem neuesten xorg-Server (1.19) scheint es ein Problem in einer RandR-Funktion zu geben, die Gamma verwaltet, wenn sie mit verwendet wird intel-virtual-output
. So patchen Sie den Xserver und bringen ihn zum Laufen:
sudo apt-get build-dep xserver-xorg-core
apt-get source xorg-server
editiere hw / xfree86 / modes / xg86RandR12.c Zeile 1260, füge "return" ein (damit die Funktion xf86RandR12CrtcComputeGamma()
nichts macht)
dpkg-buildpackage -rfakeroot -us -uc
cd ..
sudo dpkg -i xserver-xorg-core_n.nn.n-n_amd64.deb
( Ersetze die n.nn.n-n
mit der richtigen Version), starte neu und Yehaa !! geht wieder ! (aber es ist eine schnelle und schmutzige Lösung)
Update hat einen Fehlerbericht eingereicht (war bereits bekannt und wurde gerade behoben):
https://bugs.freedesktop.org/show_bug.cgi?id=99129
Wie ich herausgefunden habe:
Installiert xserver-xorg-core-dbg
und gemacht gdb /usr/lib/xorg/Xorg <xorg pid>
von einem anderen Rechner über ssh.
Update (11. Januar 17) Scheint, dass der Fehler jetzt in den neuesten Debian-Paketen behoben ist.
Update (24.01.18) Wenn Sie einen Beamer für eine Präsentation anschließen möchten und vor dem Start alles konfigurieren müssen (Intel-Virtual-Output + XRANDR), kann dies stressig sein. Hier ist ein kleines Skript, das die Arbeit erledigt (Haftungsausschluss: viel Raum für Verbesserungen, in Bezug auf Stil usw.):
# 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
Aktualisierung (07.10.2013)
Ein "Fix" für den neuen Absturz: Schreiben Sie folgendes in ein Skript (nennen Sie es bumblebee-startx.sh
zum Beispiel):
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/
(Ersetzen Sie PCI: nn: nn: n durch die Adresse Ihrer NVidia-Karte, die Sie mit lspci erhalten haben.)
Führen Sie dieses Skript in einem Terminalfenster als root ( sudo bumblebee-startx.sh
) aus, lassen Sie das Terminal dann geöffnet optirun
und intel-virtual-output
arbeiten Sie wie erwartet (Hinweis: Manchmal muss ich xrandr
zusätzlich ausführen , damit der Bildschirm / Videoprojektor erkannt wird). Jetzt verstehe ich nicht, warum genau derselbe Befehl von Hummelabstürzen ausging, so viele Rätsel hier ... (aber zumindest gibt es eine vorübergehende Lösung).
Wie ich herausgefunden habe: habe ein 'Wrapper'-Skript geschrieben, um den Xserver zu starten, es in der Datei bumblebee.conf als XorgBinary deklariert, die Befehlszeile ($ *) in einer Datei gespeichert und versucht, mit LD_PRELOAD einen Patch auf den XServer zu schreiben Behebung des Absturzes in osLookupColor (funktionierte nicht), aber als ich versuchte, dieselbe Befehlszeile von Hand zu starten, funktionierte es und es funktionierte ohne meinen Patch weiter (aber ich verstehe immer noch nicht warum).
Update 15.11.2013
Nach dem Update habe ich viel Flackern festgestellt , wodurch das System unbrauchbar wurde. Behebung durch Hinzufügen eines Kernel-Parameters i915.enable_psr=0
(in /etc/defaults/grub
, then sudo update-grub
). Wenn Sie jetzt möchten, bedeutet PSR "Panel Self Refresh", eine stromsparende Funktion von Intel-GPUs (die zu Bildschirmflackern führen kann).