Vâng, phát hiện ra!
Để kích hoạt đầu ra VIRTUAL của trình điều khiển intel, bạn cần tạo một 20-intel.conf
tệp trong thư mục cấu hình Xorg ( /usr/share/X11/xorg.conf.d
trong phần mở rộng Debian, được tìm thấy bằng cách đọc /var/log/Xorg.0.log
)
Section "Device"
Identifier "intelgpu0"
Driver "intel"
Option "VirtualHeads" "2"
EndSection
/Etc/bumblebee/xorg.conf.nvidia của tôi như sau:
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
Một số giải thích: nó cần một phần "Màn hình", nếu không nó sẽ cố gắng sử dụng thiết bị Intel được khai báo trong 20-intel.conf (mà chúng ta vừa thêm trước đó, ồ ...). Nó cũng cần "AllowEmptyInitialConfiguration" để vẫn có thể bắt đầu với optirun khi không có màn hình ngoài được gắn vào.
Với cấu hình này và bắt đầu intel-virtual-output
, tôi đã có thể truy cập cổng HDMI của mình. Yeehaa !!!
Xử lý sự cố: nếu optirun
hoặc intel-virtual-output
không hoạt động, hãy xem /var/log/Xorg.8.log
(bumblebee tạo máy chủ X có hiển thị: 8 được sử dụng nội bộ).
Ghi chú tôi đọc ở một số nơi mà KeepUnusedXServer
nên được đặt thành true
và PMMethod
để none
ở /etc/bumblebee/bumblebee.conf
, tôi đã không làm điều đó và nó hoạt động tốt. Nếu tôi làm điều đó, nó vẫn hoạt động, nhưng GPU rời vẫn tồn tại ngay cả sau khi thoát khỏi ứng dụng optirun-ed hoặc giết đầu ra ảo-intel, điều mà tôi không muốn.
Thêm ghi chú Một cái gì đó khác khiến tôi đập đầu vào tường là tắt Nouveau và khởi động máy chủ Intel X: nó cần được thực hiện bằng các cờ được chuyển đến kernel, được chỉ định trong các tham số GRUB. Trong /etc/defaults/grub
, tôi có dòng sau:
GRUB_CMDLINE_LINUX_DEFAULT="quiet blacklist.nouveau=1 i915.modeset=1 gfxpayload=640x480 acpi_backlight=vendor acpi_osi=! acpi_osi=\"Windows 2009\""
(coi chừng các trích dẫn và thoát báo giá).
Một số giải thích: nó tránh tải nouveau (không tương thích với máy chủ Nvidia X) và bảo trình điều khiển Intel chuyển sang chế độ đồ họa ngay khi khởi động. Nếu bạn không làm điều đó, thì máy chủ Intel X không thể khởi động và nó sẽ quay trở lại máy chủ VESA cũ đơn giản với kết xuất 3D phía CPU. Các acpi_xxx
cờ được yêu cầu trên máy cụ thể này để khắc phục lỗi BIOS khiến nó bị sập khi ở chế độ đồ họa khi tắt GPU rời. Lưu ý rằng nó dành riêng cho máy tính xách tay cụ thể này (máy trạm di động HP ZBook), nó có thể không cần thiết hoặc khác với các máy tính xách tay khác.
Cập nhật (ngày 6 tháng 12 năm 2017) Với bản phân phối Debian mới nhất (Buster), "915.modeset = 1 gfxpayload = 640x480" là không cần thiết. Để xóa nouveau, tôi cũng cần tạo tệp nouveau.conf trong /etc/modprobe.d với "danh sách đen nouveau" trong đó, sau đó tạo lại ramdisk bằng "update-initramfs -u". Khởi động lại và đảm bảo "nouveau" không được tải nữa với "lsmod | grep nouveau".
Cập nhật (ngày 17 tháng 12 năm 2016) Với máy chủ xorg mới nhất (1.19), dường như có một vấn đề trong chức năng RandR quản lý Gamma khi được sử dụng intel-virtual-output
. Đây là thủ tục để vá Xserver và làm cho nó hoạt động:
sudo apt-get build-dep xserver-xorg-core
apt-get source xorg-server
chỉnh sửa hw / xfree86 / mode / xg86RandR12.c Dòng 1260, chèn "return" (để chức năng xf86RandR12CrtcComputeGamma()
không làm gì)
dpkg-buildpackage -rfakeroot -us -uc
cd ..
sudo dpkg -i xserver-xorg-core_n.nn.n-n_amd64.deb
(thay thế n.nn.n-n
bằng phiên bản chính xác), khởi động lại và Yehaa !! hoạt động trở lại! (nhưng đó là một sửa chữa nhanh chóng và bẩn thỉu)
Cập nhật đã gửi một báo cáo lỗi (đã được biết và đã được sửa):
https://bugs.freedesktop.org/show_orms.cgi?id=99129
Cách tôi tìm ra:
Đã cài đặt xserver-xorg-core-dbg
và thực hiện gdb /usr/lib/xorg/Xorg <xorg pid>
từ một máy khác thông qua ssh.
Cập nhật (ngày 11 tháng 1) Có vẻ như lỗi này đã được sửa trong các gói Debian mới nhất.
Cập nhật (ngày 18 tháng 1 18) Khi bạn muốn cắm một máy chiếu để thực hiện bản trình bày và cần định cấu hình mọi thứ ngay trước khi bắt đầu (intel-virtual-output + xrandr), có thể rất căng thẳng. Đây là một kịch bản nhỏ thực hiện công việc (từ chối trách nhiệm: rất nhiều chỗ để cải thiện, liên quan đến phong cách, v.v.):
# 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
cập nhật (10/07/2019)
Một "sửa chữa" cho sự cố mới: viết những gì tiếp theo trong một tập lệnh ( bumblebee-startx.sh
ví dụ gọi nó là ):
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/
(thay thế PCI: nn: nn: n bằng địa chỉ thẻ NVidia của bạn, thu được bằng lspci)
Chạy kịch bản này từ một cửa sổ terminal là root ( sudo bumblebee-startx.sh
), giữ nhà ga mở, sau đó optirun
và intel-virtual-output
làm việc như mong đợi (lưu ý: đôi khi tôi cần phải chạy xrandr
ngoài để làm cho màn hình / videoprojector phát hiện). Bây giờ tôi không hiểu tại sao lệnh tương tự bắt đầu từ các vụ va chạm của ong nghệ, rất nhiều bí ẩn ở đây ... (nhưng ít nhất nó cũng đưa ra cách khắc phục tạm thời).
Cách tôi tìm ra: đã viết một tập lệnh 'trình bao bọc' để khởi động xserver, đã khai báo nó là XorgBinary trong bumblebee.conf, để nó lưu dòng lệnh ($ *) vào một tệp, đã thử một số nội dung liên quan đến LD_PRELOAD một bản vá cho XServer để khắc phục sự cố trong osLookupColor (không hoạt động), nhưng khi tôi cố gắng khởi chạy cùng một dòng lệnh, nó vẫn hoạt động và nó tiếp tục hoạt động mà không có bản vá của tôi (nhưng tôi vẫn không hiểu tại sao).
Cập nhật 15/11/2019
Sau khi cập nhật, tôi trải qua rất nhiều lần nhấp nháy, khiến hệ thống không thể sử dụng được. Đã sửa bằng cách thêm tham số kernel i915.enable_psr=0
(trong /etc/defaults/grub
, sau đó sudo update-grub
). Nếu bạn muốn bây giờ, PSR có nghĩa là 'tự làm mới bảng điều khiển', một tính năng tiết kiệm năng lượng của GPU intel (có thể gây ra hiện tượng nhấp nháy màn hình).