指示

指示

我的联想 T420S 配有采用 nvidia optimus 技术的独立显卡。我基本上想实现以下目标:

  • 使用第二个显示器 -通过 DVI/视口连接- 工作时(VGA 模糊)
  • 达到电池性能中等至良好旅途中(2小时)

据我所知,我有以下选择:

  1. 禁用 Optimus,仅使用内置显卡
  2. 禁用 Optimus,仅使用 nvidia
  3. 启用 Optimus,使用大黄蜂(主页)/ 铁皮

(1)不符合条件,因为我读到过(并且经历过)DVI / viewport技术上无法使用通过内部图形

(2)到目前为止还没有真正尝试过,只是进行了快速测试安装启动时黑屏在我添加了 nvidia 驱动程序之后 :-(

(3)关注这个博客,使用大黄蜂代替铁皮。大黄蜂有效(我可以在 glxgears 上看到令人印象深刻的 FPS),但是我没有让第二个显示器被识别。我也在 nvidia-driver-hell 中迷失了方向,没有机会运行 nvidia-xconfig,因为它没有安装。不知道第二个显示器是否应该在出厂时就被识别?我需要安装更多吗?我需要弄乱我的 xorg.conf 吗?问题很多,答案很少。

那么,我该怎么做才能实现我的目标?该走哪条路?下一步该怎么做?

欢迎任何提示:-)

更新:感谢所有回答的人。我将把我的工作环境迁移到“离散”安装,并将使用“optimus/bumblebee”作为并行播放项目,看看我能走多远……我将在新的帖子中发布未来的问题。

答案1

Ubuntu 14.10后来:那里要简单得多。请参阅这个答案以及我的评论如下。

笔记:这仅适用于 Ubuntu 13.04。13.10 中存在一些差异。

我已成功将两个外接显示器(除了内置面板)连接到我的 Ubuntu 13.04 上的 ThinkPad T430,并启用了 Optimus(“可切换显卡”)(列表中的选项 3)。显示器通过 DVI 接口连接,其中一个是旋转的。与其他解决方案相比,所有显示器都连接到同一个窗口管理器,因此窗口可以在显示器之间自由移动。这实现了在断开连接时延长电池寿命并在连接时使用外接显示器的目标。

这里的关键思想是:

  • 内部图形适配器负责管理实际显示的图像(位图)
  • 默认情况下,所有内容均在内部图形适配器上呈现
  • GPU 加速应用程序使用独立图形适配器,输出被复制到内部图形适配器
  • 对于每个外接显示器,内部图形适配器提供“虚拟”显示
  • 使用第二个 X 服务器输出到外部显示器,“虚拟”显示器的内容不断复制到第二个 X 服务器

专业益处与其他解决方案相比,所有显示器(似乎)都是同一个 X 会话的一部分,因此您可以在显示器之间自由移动窗口。

到目前为止我还没有注意到性能损失。

指示

您需要执行以下操作:

  • 从 PPA 安装 Bumblebee
  • 构建并安装自定义英特尔视频驱动程序
  • 下载、编译并最终安装一个小程序
  • 编辑两个配置文件
  • 重启几次

对于大多数操作,您需要一个终端、一个文本编辑器和 root 访问权限 ( sudo)。下面给出了详细说明。

安装 Bumblebee

按照“基本设置”部分进行操作指示以 root 身份执行,最后一条命令实际上启动了重启:

add-apt-repository ppa:bumblebee/stable
apt-get update
apt-get install bumblebee virtualgl linux-headers-generic
reboot

不要试图仅使用 nouveau 驱动程序运行 bumblebee 吗?. 根据我的经验,它不起作用,至少在这个设置下不起作用。

验证

你应该可以跑了optirun glxgears

安装修补版本xserver-xorg-video-intel

选项 1:从我的 PPA 安装(目前只有 Ubuntu 13.04)

以 root 身份执行以下操作:

add-apt-repository ppa:krlmlr/ppa
apt-get update
apt-get install xserver-xorg-video-intel

选项 2:构建并安装你自己的包

选择最近的修补对于xserver-xorg-video-intel。单击文件,单击“Raw”按钮,在浏览器中复制 URL。在撰写本文时,这是https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch

sudo apt-get build-dep xserver-xorg-video-intel
cd ~
apt-get source xserver-xorg-video-intel
cd xserver-xorg-video-intel
# replace the URL below with the one you have noted, if necessary
wget https://raw.github.com/liskin/patches/master/hacks/xserver-xorg-video-intel-2.20.14_virtual_crtc.patch
patch -p1 < *.patch
# The next command will ask for a change log message. Supply something meaningful,
# this will later allow you to distinguish your patched package from the distribution's.
dch -l+virtual
dpkg-buildpackage -b
cd ..
sudo dpkg --install xserver-xorg-video-intel_*.deb

验证(1),适用于两个选项

命令

apt-cache policy xserver-xorg-video-intel

应该显示修补后的版本(+virtual后缀)和原始 Ubuntu 版本。

对于 13.04 来说,这两个选项都是必需的

将以下内容添加到您的/etc/X11/xorg.conf,如有必要,请创建:

Section "Device"
    Identifier "intel"
    Driver "intel"
    Option "AccelMethod" "uxa"
    Option "Virtuals" "2"
EndSection

验证(2),适用于两种选择

重启后,xrandr在终端中运行。输出应列出两个额外的虚拟显示器。

下载并构建screenclone

得到puetzk 的 screenclone 分支及其依赖项,并进行编译。

sudo apt-get install libxcursor-dev libxdamage-dev libxinerama-dev libxtst-dev git build-essential
cd ~
git clone git://github.com/puetzk/hybrid-screenclone.git
cd hybrid-screenclone
make

验证

该文件screenclone存在且可执行。(但目前还不能运行。)

编辑xorg.conf.nvidia

  • /etc/bumblebee/xorg.conf.nvidia以 root 身份在文本编辑器中打开该文件
  • 注释掉或删除以下行UseEDIDUseDisplayDevice
  • 在 中Section "ServerLayout"添加一个条目Screen "Screen0"
  • 在文件底部添加以下内容:

    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        DefaultDepth    24
        SubSection     "Display"
        Depth       24
        EndSubSection
    EndSection
    
  • 重启

测试

我的设置假设横向显示器连接到扩展坞的第一个 DVI 端口,纵向显示器连接到第二个 DVI 端口。在终端中运行以下命令从 screenclone 所在的目录,根据需要进行调整。

xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
./screenclone -b -x 1:0 -x 2:1 &
sleep 1
xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
fg

请注意,显示旋转必须定义两次。xrandr如果不需要旋转,则可以省略第二次调用(当然,--rotate left第一次调用中也可以省略)。

通过按 Ctrl+C 终止screenclone(已使用 再次将其置于前台fg),独立图形适配器已关闭。您可以使用 来验证这一点cat /proc/acpi/bbswitch。不过,屏幕空间仍为现在断开连接的两个显示器保留。要切换回仅笔记本电脑显示,请使用

xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off

清理

  • 复制到(例如)screenclone中的目录PATH/usr/local/bin

  • 创建一个bash脚本来自动启动和关闭外部显示器。此脚本将在启动时设置外部显示器,并在退出时仅切换到笔记本电脑显示器(例如,按 Ctrl+C)。

    #!/bin/bash
    set -m
    xrandr --output LVDS1 --output VIRTUAL1 --mode 1920x1200 --right-of LVDS1 --output VIRTUAL2 --mode 1920x1200 --right-of VIRTUAL1 --rotate left
    trap "xrandr --output LVDS1 --output VIRTUAL1 --off --output VIRTUAL2 --off" EXIT
    screenclone -b -x 1:0 -x 2:1 &
    sleep 1
    xrandr -d :8 --output DP-2 --right-of DP-1 --rotate left
    fg
    
  • 备选方案:我的脚本集合包含两个脚本extmon-startextmon-stop,用于启用和禁用第二和第三监视器。编辑extmon-start脚本以适合您的配置。

参考

我的回答主要来源于以下资源:

答案2

我有一台 Thinkpad W520,并且已经对它进行了大量调整。我不确定 W520 和 T420S 有多少共同之处,但我写了一篇博客文章这里概述总体情况并提出一些建议。

您应该能够使用带有专有驱动程序的 nvidia 卡全天获得 2 小时的电池寿命。这也可能是在添加外部显示器时最省事的选项(程序“disper”对此非常有用)。如果 T420s 中卡的 nvidia 专有驱动程序的功能与 W520 相同,它们会在卡未完全使用时自动降频(他们称之为“Power Mizer”),因此您的电池寿命不会太糟糕。老实说,关闭 nvidia 卡只能使电池寿命增加 25% 或 30%。此外,我认为安装了 Bumblebee 后,您可能无法使用外部显示器,因为 nvidia 卡已经在“后台”运行 X 服务器。总之,我建议进一步研究选项 (2)。希望一旦您安装并运行了专有驱动程序,X 就会自动检测所有内容,您不必弄乱 xorg.conf。

当我安装和卸载 Bumblebee 时,我遇到了一些问题,无法让 nvidia 专有驱动程序再次工作。以下是一些需要注意的事项:(a) W520 具有与正在使用的图形方案相关的 BIOS 选项。我不确定 T420 的选项是什么,但如果您想在 Thinkpad 显示器上使用 nvidia 图形,您可能必须处于“独立”模式。(b) 您可能必须摆弄 ubuntu 中的“jockey”程序才能让它使用专有驱动程序。

祝你好运!希望这能对你有所帮助。

答案3

不知道 T420S 怎么样,但我的 T420 可以续航 9 个小时

  1. 监视暗
  2. nvidia 已通过 bumblebee/bbswith 禁用
  3. 并使用 pm-utils 进行额外调整

是的,这是默认电池。因此,您应该可以轻松获得 2 小时,因此:

(2)在 /etc/X11/xorg.conf 中尝试使用 nvidia 驱动程序的选项“ConnectedMonitor” “DFP-0”。

(3)要使用第二个显示器,你需要修改 bumblebee xorg.conf,请参阅https://github.com/Bumblebee-Project/Bumblebee/issues/77了解详情。

答案4

我有同样的问题。我做了一些研究并部分解决了它。我仍在努力寻找完整的解决方案。

硬件:Thinkpad T420s,配备 Nvidia 4200M + Intel HD 3000 显卡 Thinkpad 底座。

症状:T420s 无法识别连接到底座上任何 DVI 端口的外接显示器。它可以识别通过底座上的 VGA 端口的外接显示器。但是,质量很差。

根本原因:1. T420s 的 Nvidia 卡连接到 DVI 端口,而 Intel 卡连接到底座上的 VGA 端口。2. 与 Win 7 不同,Ubuntu 无法在 Nvidia 卡和 Intel 卡之间切换。默认情况下,仅使用 Intel 卡。

解决方案: 0. 将 T420s 放入底座,并将外接显示器连接到 DVI 端口。 1. 进入 BIOS,找到“Display”,将配置更改为“Discrete Card”和“Disable Nvidia Optimus”。现在 T420s 被迫使用 Nvidia 卡。 2. 下载并安装 Linux 版 Nvidia 驱动程序。谷歌搜索详细说明。 3. 安装后,执行“sudo nvidia-settings”。 4. 在弹出窗口“X Server Display Configuration”中,单击“Detect Displays”。现在您将能够看到外接显示器。 5. 在同一页面中,将配置更改为“TwinView”,分辨率更改为“Auto”或 T420s 的原始分辨率,例如 1600x900。 6. 单击“Apply”,您将能够看到外接显示器桌面。 7. 单击“Save to X Configuration File”。将创建一个新的 /etc/X11/xorg.conf。

[更新]

使用 disper,我可以手动切换 T420s 显示屏和外部显示屏。这仍然不是最好的解决方案,但我认为对我来说已经足够好了。

因此,请尝试 Nvidia 独立显卡 + 分散显卡组合。

相关内容