%EC%97%90%EC%84%9C%20HDMI%EB%A5%BC%20%ED%99%9C%EC%84%B1%ED%99%94%ED%95%98%EC%A7%80%20%EB%A7%88%EC%84%B8%EC%9A%94..png)
Debian(stretch)이 설치된 PC(HP ZBook)에서 HDMI 출력을 사용하려고 합니다. Bumblebee를 구성했는데 잘 작동합니다(glxinfo 및 optirun glxinfo가 예상 정보를 보고하고 예상대로 작동하는 복잡한 GLSL 셰이더를 테스트했습니다).
이제 HDMI에 비디오 프로젝터를 연결하고 싶습니다. 여기서는 HDMI가 NVidia 보드에 연결되어 있을 때(xrandr로 조작할 수 있는 VIRTUAL 출력 사용) Intel-virtual-output을 사용하여 구성할 수 있다는 내용을 읽었습니다. 그러나 intel-virtual-output은 다음과 같이 말합니다.
no VIRTUAL outputs on ":0"
내가 할 때 xrandr -q
VIRTUAL 출력이 나열되지 않고 다음만 있습니다.
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 345mm x 194mm
1920x1080 60.02*+ 59.93
1680x1050 59.95 59.88
1600x1024 60.17
... other video modes ...
400x300 60.32 56.34
320x240 60.05
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
내가 설치한 xserver-xorg-video-intel 버전은 다음과 같습니다: xserver-xorg-video-intel_2.99.917+git20160706-1_amd64.deb
업데이트 (2016년 12월 9일 토요일)Debian을 업데이트했는데 이제 일부 응용 프로그램(예: xemacs)을 시작할 때 두 번째 모니터가 활성화되면 X가 충돌합니다. 앉았다. 2016년 12월 17일: 네, 알아냈습니다! (답변을 업데이트했습니다).
업데이트 (2017년 9월 27일 수요일)이 방법은 99%의 경우에 작동하지만 지난주에 50Hz 모드만 허용하는 비머를 시도했는데 60Hz 이외의 다른 모드는 얻을 수 없었습니다(그래서 작동하지 않았습니다). 50Hz 모드를 강제로 설정하는 방법을 아는 사람이 있나요?
업데이트 (2019년 10월 1일 화요일)아아! 다시 중단됨: X 및 NVidia 드라이버를 업데이트한 후 optirun이 이제 충돌합니다( /var/log/Xorg.8.log
Xorg에서 충돌이 발생한다고 함, OsLookupColor+0x139).업데이트(2019년 10월 7일)임시 수정 사항(업데이트된 답변)을 찾았습니다.
[1]https://github.com/Bumblebee-Project/Bumblebee/wiki/Multi-monitor-setup
답변1
응, 알아냈어!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
몇 가지 설명: "화면" 섹션이 필요합니다. 그렇지 않으면 20-intel.conf에 선언된 Intel 장치(이전에 방금 추가한 장치)를 사용하려고 시도합니다. 또한 외부 모니터가 연결되지 않은 경우 optirun을 계속 시작할 수 있으려면 "AllowEmptyInitialConfiguration"이 필요합니다.
이 구성과 시작을 통해 intel-virtual-output
HDMI 포트에 액세스할 수 있었습니다.예하아!!!
문제 해결:optirun
작동 하지 않으면 intel-virtual-output
살펴보십시오 /var/log/Xorg.8.log
(Bumblebee는 내부적으로 사용되는 디스플레이 :8을 사용하여 X 서버를 생성합니다).
노트에서 와 으로 KeepUnusedXServer
설정해야 하는 여러 위치를 읽었지만 그렇게 하지 않았으며 제대로 작동합니다. 그렇게 하면 작동하지만, optirun-ed 응용 프로그램을 종료하거나 원하지 않는 intel-virtual-output을 종료한 후에도 개별 GPU는 계속 켜져 있습니다.true
PMMethod
none
/etc/bumblebee/bumblebee.conf
추가 메모나를 벽에 부딪치게 만든 또 다른 이유는 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 서버가 시작될 수 없으며 CPU 측 3D 렌더링을 사용하는 기존의 일반 VESA 서버로 대체됩니다. acpi_xxx
개별 GPU를 끈 상태에서 그래픽 모드로 전환할 때 충돌을 일으키는 BIOS 버그를 극복하려면 이 특정 시스템에 플래그가 필요합니다 . 이는 이 특정 노트북(HP ZBook 휴대용 워크스테이션)에만 해당되며 다른 노트북에서는 불필요하거나 다를 수 있습니다.
업데이트(2017년 12월 6일)최신 데비안 배포판(Buster)에서는 "915.modeset=1 gfxpayload=640x480"이 필요하지 않습니다. nouveau를 제거하려면 /etc/modprobe.d에 "blacklist nouveau"가 포함된 nouveau.conf 파일을 만든 다음 "update-initramfs -u"를 사용하여 램디스크를 다시 만들어야 했습니다. 재부팅하고 "lsmod |grep nouveau"를 사용하여 "nouveau"가 더 이상 로드되지 않는지 확인하세요.
업데이트(2016년 12월 17일)최신 xorg-server(1.19)에서는 intel-virtual-output
. Xserver를 패치하고 작동시키는 절차는 다음과 같습니다.
sudo apt-get build-dep xserver-xorg-core
apt-get source xorg-server
hw/xfree86/modes/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
( 올바른 버전으로 교체 ) 재부팅하고예하아!! 다시 작동합니다!(그러나 그것은 빠르고 더러운 수정입니다)
업데이트버그 보고서를 제출했습니다(이미 알려져 있었고 방금 수정되었습니다): https://bugs.freedesktop.org/show_bug.cgi?id=99129
내가 알아낸 방법:SSH를 통해 다른 컴퓨터에서 설치 xserver-xorg-core-dbg
하고 수행했습니다 .gdb /usr/lib/xorg/Xorg <xorg pid>
업데이트 (1월 11일~17일)이제 최신 데비안 패키지에서 버그가 수정된 것 같습니다.
업데이트 (1월 24일~18일)프레젠테이션을 위해 비머를 연결하고 시작하기 직전에 모든 것을 구성해야 하는 경우(인텔-가상-출력 + 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
업데이트 (2019년 10월 7일)
새로운 충돌에 대한 "수정": 스크립트에 다음 내용을 작성합니다( 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을 lspci로 얻은 NVidia 카드 주소로 바꾸십시오)
터미널 창에서 루트( sudo bumblebee-startx.sh
)로 이 스크립트를 실행하고 터미널을 열어 둔 다음 예상대로 작동 optirun
합니다 (참고: 화면/비디오 프로젝터를 감지하기 위해 추가로 intel-virtual-output
실행해야 하는 경우도 있습니다 ). xrandr
이제 나는 Bumblebee 충돌에서 왜 동일한 명령이 시작되었는지 이해하지 못합니다. 여기에는 많은 미스터리가 있습니다 ... (그러나 적어도 임시 수정을 제공합니다).
내가 알아낸 방법:xserver를 시작하기 위한 '래퍼' 스크립트를 작성하고, bumblebee.conf에서 XorgBinary로 선언하고, 명령줄($*)을 파일에 저장하고, osLookupColor의 충돌을 수정하기 위해 XServer에 패치를 LD_PRELOAD하는 것과 관련된 몇 가지 작업을 시도했습니다. (작동하지 않음) 그러나 동일한 명령줄을 수동으로 시작하려고 하면 작동했고 패치 없이도 계속 작동했습니다(그러나 여전히 이유를 이해하지 못합니다).
2019년 11월 15일 업데이트
업데이트 후 깜박임 현상이 많이 발생하여 시스템을 사용할 수 없게 되었습니다. 커널 매개변수 i915.enable_psr=0
( /etc/defaults/grub
, 그 다음 ) 를 추가하여 수정되었습니다 sudo update-grub
. 지금 원한다면 PSR은 인텔 GPU의 절전 기능(화면 깜박임을 유발할 수 있음)인 '패널 자체 새로 고침'을 의미합니다.