ใช่พบแล้ว!
ในการเปิดใช้งาน VIRTUAL output ของไดรเวอร์ 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
(bumblebee สร้างเซิร์ฟเวอร์ X ที่มีจอแสดงผล: 8 ใช้ภายใน)
หมายเหตุผมอ่านหลายสถานที่ที่KeepUnusedXServer
ควรจะกำหนดให้true
และPMMethod
ไปnone
ใน/etc/bumblebee/bumblebee.conf
ผมไม่ได้ทำอย่างนั้นและมันทำงานได้ดี ถ้าฉันทำอย่างนั้นมันก็ใช้งานได้ แต่จากนั้น GPU แยกยังคงอยู่แม้หลังจากออกจากแอปพลิเคชัน optirun-ed หรือฆ่า intel-virtual-output ซึ่งฉันไม่ต้องการ
หมายเหตุเพิ่มเติมมีอะไรอีกที่ทำให้ฉันหัวของฉันบนกำแพงถูกปิดการใช้งานนูโวและเริ่มต้นเซิร์ฟเวอร์ Intel X: มันจะต้องทำโดยธงผ่านไปยังเคอร์เนลที่ระบุไว้ในพารามิเตอร์ด้วง ใน/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\""
(ระวังคำพูดและคำพูดที่หลบหนี)
คำอธิบายบางอย่าง: มันหลีกเลี่ยงการโหลดนูโว (ที่เข้ากันไม่ได้กับเซิร์ฟเวอร์ Nvidia X) และบอกให้ไดรเวอร์ Intel ไปที่โหมดกราฟิกทันทีที่บูต หากคุณไม่ทำเช่นนั้นเซิร์ฟเวอร์ Intel X จะไม่สามารถเริ่มทำงานได้และจะกลับไปใช้เซิร์ฟเวอร์ VESA แบบเดิมที่มีการเรนเดอร์ 3D ฝั่ง CPU acpi_xxx
ธงจะต้องอยู่บนเครื่องนี้โดยเฉพาะที่จะเอาชนะข้อผิดพลาด BIOS ที่ทำให้มันล้มเหลวเมื่อไปอยู่ในโหมดกราฟิกที่มีออก GPU ที่ไม่ต่อเนื่อง โปรดทราบว่ามันเป็นสิ่งเฉพาะสำหรับโน้ตบุ๊กนี้โดยเฉพาะ (HP ZBook Portable Workstation) มันอาจไม่จำเป็นหรือแตกต่างกันสำหรับแล็ปท็อปอื่น ๆ
อัปเดต (6 ธันวาคม 2560)ด้วย Debian distro (Buster) ล่าสุด "915.modeset = 1 gfxpayload = 640x480" ไม่จำเป็น ในการลบนูโวฉันต้องสร้างไฟล์ nouveau.conf ใน /etc/modprobe.d ด้วย "blacklist nouveau" ในนั้นจากนั้นสร้าง ramdisk ด้วย "update-initramfs -u" รีบูตและตรวจสอบให้แน่ใจว่า "นูโว" ไม่ได้โหลดอีกต่อไปด้วย "lsmod | grep นูโว"
Update (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 / โหมด / 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)เมื่อคุณต้องการเสียบ beamer สำหรับทำการนำเสนอและจำเป็นต้องกำหนดค่าทุกอย่างให้ถูกต้องก่อนเริ่มต้น (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
เพิ่มเติมเพื่อให้ตรวจพบหน้าจอ / วิดีโอ ตอนนี้ฉันไม่เข้าใจว่าทำไมคำสั่งเดียวกันเริ่มต้นจากการล่ม bumblebee ความลึกลับมากมายที่นี่ ... (แต่อย่างน้อยมันก็ให้การแก้ไขชั่วคราว)
ฉันคิดออกได้อย่างไร:เขียนสคริปต์ 'wrapper' เพื่อเริ่ม xserver ประกาศว่าเป็น XorgBinary ใน bumblebee.conf ทำให้มันบันทึกบรรทัดคำสั่ง ($ *) ลงในไฟล์ลองใช้สิ่งที่เกี่ยวข้องกับ LD_PRELOADing patch ไปยัง XServer เพื่อ แก้ไขข้อผิดพลาดใน osLookupColor (ไม่ทำงาน) แต่เมื่อฉันพยายามเปิดใช้บรรทัดคำสั่งเดียวกันด้วยมือมันทำงานได้และมันทำงานต่อไปได้โดยไม่ต้องแก้ไข (แต่ฉันยังไม่เข้าใจว่าทำไม)
อัปเดต 11/15/2019
หลังจากอัปเดตฉันมีอาการกระพริบจำนวนมากทำให้ระบบใช้ไม่ได้ แก้ไขโดยการเพิ่มพารามิเตอร์เคอร์เนลi915.enable_psr=0
(ใน/etc/defaults/grub
จากนั้นsudo update-grub
) หากคุณต้องการตอนนี้ PSR หมายถึง 'แผงรีเฟรชตัวเอง' ซึ่งเป็นคุณสมบัติการประหยัดพลังงานของ Intel GPUs (ซึ่งอาจทำให้หน้าจอกะพริบ)