分类: LINUX
2013-03-07 22:43:51
首先,vga_switcheroo是内核提供的组件,但有这一组件(或者说有下文提到的文件)并不代表其在您的机器上能够正常使用。此外根据,vga_switcheroo仅当KMS开启状态下才可用,所以请首先装好显卡的开源驱动并保持KMS开启。
一、查看当前双显卡使用状态:
终端中输入:
cat /sys/kernel/debug/vgaswitcheroo/switch
这步是要读出/sys/kernel/debug/vgaswitcheroo/switch这一文件的信息。不出意外您可能会看到类似下面(但不完全相同)的内容:
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :Off:0000:01:00.0
其中“IGD”表示集成显卡,“DIS”表示独立显卡;加号(“+”)表示当前用作输出(或称“连接上”(connected))的显卡;“Pwr”代表正在供电,“Off”代表已关闭。如果看到两个显卡都显示“Pwr”,则说明都在消耗着电能。
二、暂时性的关闭某一显卡
注意:下面和内核的交互操作是通过操作/sys/kernel/debug/vgaswitcheroo/switch这个“虚拟文件”实现的,而这一文件每次开机会重新创建,所以您对其所做的修改都是暂时的,重启后会失效。
首先切换到root用户:
su
这步通常是必要的,不可用sudo取代(似乎是因为sudo如果不经设置,是没有“>”操作符权限的)。
打开所有的显卡:
echo ON > /sys/kernel/debug/vgaswitcheroo/switch
这步是给所有显卡加电,使其运行,但不改变当前输出的状态。
切换到集成显卡:
echo IGD > /sys/kernel/debug/vgaswitcheroo/switch
这步表示使用集成显卡作为输出(即“连接上”集成显卡)。同理,将其中的“IGD”换成“DIS”可使用独立显卡。
关闭未使用的显卡:
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
最后可以再运行一下cat /sys/kernel/debug/vgaswitcheroo/switch,看一看自己的显卡状态。
三、永久性的关闭某一显卡
解决重启后失效的办法就是每次开机时都执行一遍需要的命令,而且越早执行越好。对于这个问题,不同的发行版有不同的解决方案。例如在我所用的Arch Linux中有一个/etc/rc.local文件,把需要开机执行的命令写进去即可。对于ubuntu,可以参考ubuntu documentation上的一个启动脚本。我没有尝试过加环境变量是否有用,但似乎也应该是可以的。