Thinkpad W520 12.04 上的外接显示器显示

mod*_*tos 11 nvidia multiple-monitors thinkpad graphics nvidia-optimus

我知道有很多关于这些问题的资料,但其中大部分似乎已经过时,而且似乎没有任何适合我的情况:

  • ThinkPad W520(Intel 3000 和 Nvidia 1000M 芯片组)
  • 操作系统:Ubuntu 12.04.3。
  • BIOS显卡设置: Optimus
  • BIOS 操作系统 Optimus 自动检测: disabled

我使用下面的 Bumblebee wiki 来安装和设置 Bumblebee:https : //wiki.ubuntu.com/Bumblebee#Installation

设置我BusID为显卡“:01:00.0 PCI”后(见下面的配置文件),我能跑optirun firefox和virtualgl测试,如optirun glxspheres64glxspheres64。所以,我相信 Bumblebee 安装一切正常,除了我无法连接到我的外部显示器(通过 VGA)。关于如何做到这一点的任何想法?W520 将 VGA(和 DisplayPort)硬连线到 Nvidia 卡,如 Zachary Sunberg 所述:

http://zachstechnotes.blogspot.com/2012/04/post-title.html

所以,我相信在尝试将 VGA 连接到外部显示器时,这会让事情变得有点棘手。我相信我必须使用服务器/屏幕克隆,在我下面记录的尝试中进行了描述:

  1. 我尝试了以下帖子来配置外部显示器,

    http://hillspcworld.com/forum/index.php?topic=2.0

    但是在第 7 步之后重新启动,会导致操作系统完全崩溃(引导加载程序后出现黑屏,显示“无法写入字节:管道损坏”)。我相信这是由于 xorg 服务器以某种方式破坏了我的系统。

  2. 我在以下教程中尝试了类似的方法,但在安装 xorg-dev 后重新启动期间,我遇到了与 (1) 中相同的崩溃:

    http://sagark.org/optimal-ubuntu-graphics-setup-for-thinkpads/

到目前为止,我想知道从这里去哪里。我在下面有几个线索,关于问题是什么或我能做什么的任何想法?有更好的建议吗? http://zachstechnotes.blogspot.com/2012/04/post-title.html

https://github.com/Bumblebee-Project/Bumblebee/issues/77

https://github.com/Bumblebee-Project/Bumblebee/issues/522

另外,这里是我的一些文件(如果有更好的配置,请告诉我 - 我所做的唯一更改是取消注释文件中的“BusID PCI:01:00.0” xorg.conf.nvidia

lucas@lucas-ThinkPad-W520:~$ more /etc/bumblebee/xorg.conf.nvidia 
Section "ServerLayout"
    Identifier  "Layout0"
    Option      "AutoAddDevices" "false"
    Option      "AutoAddGPU" "false" EndSection

Section "Device"
    Identifier  "DiscreteNvidia"
    Driver      "nvidia"
    VendorName  "NVIDIA Corporation"

#   If the X server does not automatically detect your VGA device,
#   you can manually set it here.
#   To get the BusID prop, run `lspci | egrep 'VGA|3D'` and input the data
#   as you see in the commented example.
#   This Setting may be needed in some platforms with more than one
#   nvidia card, which may confuse the proprietary driver (e.g.,
#   trying to take ownership of the wrong device). Also needed on Ubuntu 13.04.
    BusID "PCI:01:00:0"

#   Setting ProbeAllGpus to false prevents the new proprietary driver
#   instance spawned to try to control the integrated graphics card,
#   which is already being managed outside bumblebee.
#   This option doesn't hurt and it is required on platforms running
#   more than one nvidia graphics card with the proprietary driver.
#   (E.g. Macbook Pro pre-2010 with nVidia 9400M + 9600M GT).
#   If this option is not set, the new Xorg may blacken the screen and
#   render it unusable (unless you have some way to run killall Xorg).
    Option "ProbeAllGpus" "false"

    Option "NoLogo" "true"
    Option "UseEDID" "false"
    Option "UseDisplayDevice" "none"
Run Code Online (Sandbox Code Playgroud)

新司机:

lucas@lucas-ThinkPad-W520:~$ more /etc/bumblebee/xorg.conf.nouveau  Section "ServerLayout"
    Identifier  "Layout0"
    Option      "AutoAddDevices" "false"
    Option      "AutoAddGPU" "false" EndSection

Section "Device"
    Identifier  "DiscreteNvidia"
    Driver      "nouveau"

#   If the X server does not automatically detect your VGA device,
#   you can manually set it here.
#   To get the BusID prop, run `lspci | egrep 'VGA|3D'` and input the data
#   as you see in the commented example.
#   This Setting is needed on Ubuntu 13.04.
#   BusID "PCI:01:00:0"
Run Code Online (Sandbox Code Playgroud)

大黄蜂配置:

lucas@lucas-ThinkPad-W520:~$ more /etc/bumblebee/bumblebee.conf 
# Configuration file for Bumblebee. Values should **not** be put between quotes

## Server options. Any change made in this section will need a server restart
# to take effect. [bumblebeed]
# The secondary Xorg server DISPLAY number VirtualDisplay=:8
# Should the unused Xorg server be kept running? Set this to true if waiting
# for X to be ready is too long and don't need power management at all. KeepUnusedXServer=false
# The name of the Bumbleblee server group name (GID name) ServerGroup=bumblebee
# Card power state at exit. Set to false if the card shoud be ON when Bumblebee
# server exits. TurnCardOffAtExit=false
# The default behavior of '-f' option on optirun. If set to "true", '-f' will
# be ignored. NoEcoModeOverride=false
# The Driver used by Bumblebee server. If this value is not set (or empty),
# auto-detection is performed. The available drivers are nvidia and nouveau
# (See also the driver-specific sections below) Driver=
# Directory with a dummy config file to pass as a -configdir to secondary X XorgConfDir=/etc/bumblebee/xorg.conf.d

## Client options. Will take effect on the next optirun executed. [optirun]
# Acceleration/ rendering bridge, possible values are auto, virtualgl and
# primus. Bridge=auto
# The method used for VirtualGL to transport frames between X servers.
# Possible values are proxy, jpeg, rgb, xv and yuv. VGLTransport=proxy
# List of paths which are searched for the primus libGL.so.1 when using
# the primus bridge PrimusLibraryPath=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primu s
# Should the program run under optirun even if Bumblebee server or nvidia card
# is not available? AllowFallbackToIGC=false


# Driver-specific settings are grouped under [driver-NAME]. The sections are
# parsed if the Driver setting in [bumblebeed] is set to NAME (or if auto-
# detection resolves to NAME).
# PMMethod: method to use for saving power by disabling the nvidia card, valid
# values are: auto - automatically detect which PM method to use
#         bbswitch - new in BB 3, recommended if available
#       switcheroo - vga_switcheroo method, use at your own risk
#             none - disable PM completely
# https://github.com/Bumblebee-Project/Bumblebee/wiki/Comparison-of-PM-methods

## Section with nvidia driver specific options, only parsed if Driver=nvidia [driver-nvidia]
# Module name to load, defaults to Driver if empty or unset KernelDriver=nvidia-current PMMethod=auto
# colon-separated path to the nvidia libraries LibraryPath=/usr/lib/nvidia-current:/usr/lib32/nvidia-current
# comma-separated path of the directory containing nvidia_drv.so and the
# default Xorg modules path XorgModulePath=/usr/lib/nvidia-current/xorg,/usr/lib/xorg/modules XorgConfFile=/etc/bumblebee/xorg.conf.nvidia

## Section with nouveau driver specific options, only parsed if Driver=nouveau [driver-nouveau] KernelDriver=nouveau PMMethod=auto XorgConfFile=/etc/bumblebee/xorg.conf.nouveau
Run Code Online (Sandbox Code Playgroud)

谢谢你。

mod*_*tos 2

首先,我停止尝试使用 12.04.3 或 12.04.4 LTS,而是使用 13.10。我相信 LTS 版本实际上无法跟上不断变化的图形情况 - 我经历了惨痛的教训。

以下是我采取的一般步骤:

1) Install latest intel drivers, hope that intel-virtual-output, which is the integrated version of screenclone. If it's not packaged, compile that stuff from source.
2) In your xorg.conf.nvidia ensure the option preventing external screens is disabled.
3) Xrandr as usual :)
Run Code Online (Sandbox Code Playgroud)

该资源很有帮助:

http://www.unixreich.com/blog/2013/linux-nvidia-optimus-on-thinkpad-w520w530-with-external-monitor-finally-solved/

我还为 Ubuntu 14.04 创建了一篇关于此问题的博客文章:

http://blog.lukeswart.net/wordpress/

后者还应该提供帮助初学者从源代码编译驱动程序的信息。

PS:作为一名 Linux 新手,这个过程非常耗时,我只能希望这篇文章对某人有所帮助。对于 Linux 新用户来说,在运行 Optimus 且显示端口硬连线到 Nvidia 芯片的笔记本电脑上设置外部显示器是一个非常令人沮丧的过程。

作为一名需要使用 Linux 进行工作的用户,保护专有 Optimus 驱动程序的整个情况给整个技术社区带来了尴尬。