感谢网友 鸢一雨音 的投稿
众所周知,自从高性能独立图形处理器出现之后,很多便携式计算机就会采取一种双显卡的设计:节能的核心图形处理器用于渲染常规的桌面环境,而高性能的独立图形处理器则负责渲染高需求的应用程序。这种技术被称作Optimus智能显卡切换。但是英伟达经常被Linux用户诟病的原因之一,便是一直不对Linux平台上心,不仅没有Linux下的Optimus支持,驱动程序更新也慢半拍。
这意味着,Linux用户必须在一次会话中一直使用核心显卡或者一直使用独立显卡;一直使用核心显卡会很节能,但是Hold不住某些应用程序(比如现在很多巨型的3D游戏已经通过Steam登陆了Linux平台),而一直使用独立显卡将会非常耗电,即使你在做很简单的工作。
所幸的是,Linux平台上有一个有名的第三方项目,名叫Bumblebee(大黄蜂)。这个项目目的就是给Linux提供类似Optimus技术的支持。这个项目以前并不出名,但是它某个版本的安装脚本install.sh多敲了一个空格,从而错误地删掉了所有用户的整个/usr,这个事件使它迅速出名并获得了大量的技术支持。这么想也是因祸得福吧。
一、配置bumblebee
笔者所有指令对应于Arch Linux 64位版。
闲话收住,现在开始正式配置我们的双显卡。首先,安装英伟达官方的显卡驱动程序:
sudo pacman -S nvidia
选择和你目前的操作系统相匹配的驱动程序,比如笔者的是Linux 4.9内核,我就应该选带有linux49字样的包。等待安装完成,期间你应该会看到类似的输出:
然后安装bumblebee软件包:
sudo pacman -S bumblebee
安装完成之后,记得检查当前用户是否在用户组“bumblebee”内。如果不是,请手动添加。重启计算机,以使英伟达驱动被正确加载,并使bumblebee守护进程启动。
二、测试bumblebee
Bumblebee提供了指令optirun,以使用户在会话仍然以集成显卡渲染的情况下,使用独立显卡渲染指定的应用。我们使用加了光影和视差贴图材质包的MC(Minecraft,我的世界)来检查独立显卡的运行状态。
首先我们采用常规的方式启动MC,我用的是HMCL启动器:
下面是比较吃配置的资源包和光影:
从第二张截图还能看出,MC识别出了我们的显卡型号:Intel HD Graphics 5500,也就是我的集成显卡。
我们新建一个世界,进去看看:
这根本就不能正确渲染。下面我们使用optirun指令来执行MC:
进入到光影选项,发现MC已经正确识别了我们的显卡:
我们进入一个世界:
嗯。光影正常工作了,帧率也很高,这意味着这个程序一定是高性能独立显卡在渲染了。
如果你能正常使用optirun指令,那么你的配置就完成了。
三、注意
如果你遇到了使用optirun指令会让整个会话崩溃的情况,那么有两个地方你需要检查:
第一,你是否安装了正确的nvidia包;
第二,尝试使用最新的bumblebee仓库里的代码自行编译,不要使用发行版仓库提供的版本。
Bumblebee项目不兼容Vulkan(新的图形接口),这意味着如果你想体验Vulkan就必须让整个会话使用独立显卡渲染。
在Steam下,可以通过修改游戏的高级启动选项为:optirun %command% 来指定该游戏运行在独立显卡上。
虽然Bumblebee有很多缺陷,包括不能支持Vulkan,但是对于Linux用户来说,它是在Linux上实现Optimus技术的唯一途径。希望本教程能对部分Linux用户有所帮助。