Linux上的Nvidia Optimus

什么是Nvidia Optimus?为什么许多Linux 用户不喜欢它?

Nvidia Optimus是一种计算机显卡功耗/性能优化技术,由Nvidia开发,根据应用程序占用的资源负载,无缝地在计算机内的两个显卡(集成和独立)间切换,以提供最大的性能或最小的功耗。特别的,Optimus 是一种俗称为“可切换显卡”的特定实现,更通俗地说是GPU 切换。

这意味着什么呢?利用Nvidia Optimus 你可选择何时使用性能更强、耗电更多的Nvidia 显卡,或者选择集成的节能的Intel 或者ATI 显卡。这允许你在获得续航时间提升的同时,也能在需要的时候获得更强大的图形性能。那么,为什么许多Linux 不喜欢Nvidia Optimus 的理念呢?因为Nvidia 并没有在Linux 上发布提供Optimus 原生支持的驱动。因此,也就需要这个教程。

这篇文章的目的是什么?

本文的目的是向你展示如何容易地在Linux 系统上安装Nvidia Optimus。我想用这篇教程交给你不光是如何在开机时自动关闭Nvidia 显卡,还要告诉你如何好好利用它们。为了便于理解,我将会努力添加截图和实例文件。

什么是Bumblee?

Bumblee 是一项使得Nvidia Optimus 在运行GNU/Linux 系统的笔记本上生效的努力。它的实现原理是两个显卡通过两个不同的能源消耗配置文件来控制电源介入,并按照分层的方式共享一个单独的帧缓存(framebuffer)。

这个项目已经完全用C 语言重写了,提升了性能和稳定性,这大都要感谢项目里新的开发者,Jaron Viëtor (a.k.a. Thulinma)。主要开发者有4人,其他三个是Peter Wu (a.k.a. Lekensteyn),Joaquín Ignacio Aramendía (a.k.a. Samsagax) 和 Bruno Pagani (a.k.a. ArchangeGabriel)。新功能中最重要的一个是自动电源管理的支持。是的,自从Bumblebee 3.0 "Tumbleweed" 以来,你已经拥有自动的电源管理,而不需要再手动设置。但这不是唯一的改变,你可以查看完全的changelog,网址是http://bumblebee-project.org/release-notes-3.0 。

Bumblee 项目地址:Bumblebee - NVIDIA Optimus support for Linux!

如何安装Bumblee?(假设Nvidia 驱动已经安装)

我假设你已经根据你的发行版安装好了Nvidia 驱动。我推荐你使用最新的319驱动。我个人总是使用最新的,这使得我能够测试最新的驱动与Bumblee 的兼容情况。所以,在写这篇文章的时候,我在Diamond II-B发行版上使用nvidia-325 驱动。我使用一个比较新的内核3.11-rc4。

Ubuntu:

sudo add-apt-repository ppa:bumblebee/stable

这向你的系统中添加Bumblebee 项目的源。

sudo apt-get update && sudo apt-get install bumblebee virtualgl linux-headers-uname -r mesa-utils

这将更新并安装Bumblebee 所需要的所有的包。

sudo su -c "useradd -G bumblebee USERNAME"

这将添加你的用户到bumblebee 组中,这个组控制Bumblebee 和optimus 显卡。

Fedora 18:

su -c "yum install -y libbsd-devel libbsd glibc-devel libX11-devel help2man autoconf git tar glib2 glib2-devel kernel-devel kernel-headers automake gcc gtk2-devel VirtualGL VirtualGL.i686 "

这将安装所有依赖。

su -c "yum -y --nogpgcheck install http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee-nonfree/fedora18/noarch/bumblebee-nonfree-release-1.0-1.noarch.rpm"

这将真正安装bumblebee。

“bumblebee-nvidia” 既是一个rpm 包也是一个shell脚本。“bumblebee-nvidia” 包包含了shell “包装”脚本、开机初始化脚本和一个SELinux安全策略,最后还有一个从NVidia 的UNIX 驱动网页下载的NVidia Linux 二进制驱动“blob”。这就是为什么这个包比bumblebee包大那么多。

su -c "yum install glibc-devel bumblebee-nvidia"

这条指令安装上述的Bumblebee 工具,针对你的系统。

su -c "useradd -G bumblebee USERNAME"

向bumblebee 组中添加你的用户。

Madriva:

urpmi bumblebee

安装bumblebee。

sudo su -c "useradd -G bumblebee USERNAME"

向bumblebee 组中添加你的用户。

sudo su- c "systemctl enable bumblebeed.service"

确保开机启动时运行bumblebee。

Arch (intel/Nvidia):

Arch 有两种Bumblebee。一种针对Intel/Nvidia,一种针对ATI/Nvidia。我们关注前者。

sudo pacman -S intel-dri xf86-video-intel bumblebee bbswitch-dkms nvidia

安装Bumblebee、依赖、DKMS 形式的 bbswitch。

如果你想要在64位系统上运行32位程序(例如用wine玩游戏),你还需要lib32-nvidia-utils 包。

sudo su -c "gpasswd -a $USER bumblebee"

向bumblebee 组中添加你的用户。

sudo systemctl enable bumblebeed

确保开机启动时运行bumblebee。

Gentoo:

su -c "layman -a mva"

这向你的系统中添加合适的源。

su -c "emerge -j2 bumblebee"

安装bumblebee。

su -c "gpasswd -a $USER bumblebee"

向bumblebee 组中添加你的用户。

与系统无关的安装方式:

适用于其他系统,网址是:http://wiki.bumblebee-project.org/Install-and-usage 。

现在你可以重启计算机并测试是否所有东西正常工作。按照下面指令来进行基本的测试:

optirun -vvv glxspheres

如果所有东西工作正常,你可以下图:

Bumblebee

 

原文作者:ryanvade

原文链接:http://www.linux.org/threads/nvidia-optimus-on-linux.4415/

翻译:Maxiee