Ubuntu+11.04+双显卡关闭独显方法

本文信息参考了以下:
主要:http://forum.ubuntu.org.cn/viewtopic.php?f=42&t=328969
原文:http://ubuntuforums.org/showpost.php?p=10557451&postcount=5
Source:https://github.com/mkottman/acpi_call

 

       由于某次悲剧的断电之后,用wubi装的Ubuntu10.04能在修复后运行,但是Win7却悲剧的启动不能,所以从新装了Win7,而且索性割了一部分硬盘出来直接装Ubuntu。感谢Laohyx帮我装完了系统并完成了引导……虽然Win7还是挂了……

        发现Ubuntu在不插电时电量消耗还是很大,考虑到这个系统应该比Win不耗电,而且发热异常,所以上网查了一下,发现是因为Linux不是很好的支持双显卡,导致独显一直全功率运行。上网搜索了方法并且实践了,能耗是有所下降。现在将代码贴上来方便大家以后需要。本人电脑为:ASUS A42JV.以下开始转载……

1. 在家目录下创建一个隐藏文件夹

代码:

mkdir ~/.optimus
cd ~/.optimus/

2. 安装git,使我们可以使用acpi_call模块关闭n卡

代码:

sudo apt-get install git
git clone http://github.com/mkottman/acpi_call.git

3. 下面,进入acpi_call目录,进行编译

代码:

cd acpi_call/
make

4. 现在,将模块放入内核的acpi文件夹

代码:

sudo insmod ./acpi_call.ko


5. 运行这个命令并记录下内核版本

代码:

uname -r
-- 如:本人内核是2.6.38-11-generic 


6. 复制模块并运行depmod

代码:

sudo cp acpi_call.ko /lib/modules/<UNAME -R VALUE>/kernel/drivers/acpi/
sudo depmod
-- 此处的 <UNAME -R VALUE>,即为上文中uname -r 的输出结果, 
-- 如:本人的应为  sudo cp acpi_call.ko /lib/modules/2.6.38-11-generic/kernel/drivers/acpi/


7. 编辑/etc/modules,是模块在启动时加载

代码:

gksu gedit /etc/modules

插入:

acpi_call


--添加在文件末尾,独立一行即可 
按照原文的内容,应该进行步骤8,不过原文是针对ASUS U36Jc的,因此,我们先要运行以下的内容。 
补充: 
在上文创建的  acpi_call  目录下,执行 
./test_off.sh 
脚本将会测试各种关闭显卡的命令,一直到可以成功关闭为止。 
如下: 
richard@Richard-XPS:~/.optimus/acpi_call$ sudo sh test_off.sh

 

(本人直接参照默认配置,但是有些人机器不同,可能会产生一下结果,特此说明:
Trying \_SB.PCI0.P0P1.VGA._OFF: failed 
Trying \_SB.PCI0.P0P2.VGA._OFF: failed 
Trying \_SB_.PCI0.OVGA.ATPX: failed 
Trying \_SB_.PCI0.OVGA.XTPX: failed 
Trying \_SB.PCI0.P0P3.PEGP._OFF: failed 
Trying \_SB.PCI0.P0P2.PEGP._OFF: failed 
Trying \_SB.PCI0.P0P1.PEGP._OFF: failed 
Trying \_SB.PCI0.MXR0.MXM0._OFF: failed 
Trying \_SB.PCI0.PEG1.GFX0._OFF: failed 
Trying \_SB.PCI0.PEG0.GFX0.DOFF: failed 
Trying \_SB.PCI0.PEG1.GFX0.DOFF: failed 
Trying \_SB.PCI0.PEG0.PEGP._OFF: works! 
有些人的机器若跑出以上结果,可以使用‘\_SB.PCI0.PEG0.PEGP._OFF’关闭,这一点将在步骤8中使用。请特别注意。其他结果请自行参照。)

8. 新建一个服务,使我们可以开启/关闭n卡

代码:

gksu gedit /etc/init.d/optimusoff

插入:

代码:

#! /bin/sh
### BEGIN INIT INFO
# Provides:       optimusoff
# Required-Start:    $local_fs $syslog
# Required-Stop:    $local_fs $syslog
# Default-Start:    2 3 4 5
# Default-Stop:    0 1 6
# Short-Description:    Disables/Enables the NVidia graphics card
#         within the NVidia Optimus system
#         
#         Modified for the U36Jc and Ubuntu 11.04
#         using details from
#         
#         http://robbyx.net/blog/?p=190
### END INIT INFO

. /lib/lsb/init-functions

set -e

case "$1" in
start)
#
echo '\_SB.PCI0.PEG1.GFX0._OFF' > /proc/acpi/call
# -- 此处要更改为上文中 works的命令,如 上文举例的改为 
# -- echo '\_SB.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call 
;;
stop)
echo '\_SB.PCI0.PEG1.GFX0._ON' > /proc/acpi/call
# --同上 
;;
*)
echo '\_SB.PCI0.PEG1.GFX0._OFF' > /proc/acpi/call
# --同上 
N=/etc/init.d/optimusoff
echo "Usage: $N {start|stop}\nBy default, 'start' is executed.\n" >&2
exit 1
;;
esac

exit 0



9. 激活服务

代码:
--使用这段代码的同学,请注意。如果你和我一样是双系统,这会让你的windows环境下也被屏蔽独显 
--可以跳过这段代码,每次需要时手动运行。
 
sudo update-rc.d optimusoff defaults 98 02
sudo chmod a+x /etc/init.d/optimusoff


10. 在使用前,检查当前电力消耗(拔下电源)

代码:

grep rate /proc/acpi/battery/BAT0/state

***注释:有些人电脑里没有BAT0这个文件夹,但是有BAT1,请自行检查;BAT0应为默认
***注释:原文中的功率为15148mW,因人而异(本人的有2w多...)

11. 现在,关闭n卡

代码:

sudo service optimusoff start


12. 检查关闭nv显卡后的电力消耗

代码:

grep rate /proc/acpi/battery/BAT0/state

***注释:此时原文中的功率变为9828mW,大约为原来的65%,本人电脑是1W多


13. blacklist 显卡驱动模块,避免不必要的麻烦

代码:

gksu gedit /etc/modprobe.d/blacklist-nvidia.conf

插入:

代码:

blacklist nouveau
blacklist nvidia


14. 最后,运行以下代码

代码:

sudo update-initramfs -u

注:关于上文中说明的功率问题,本人测试后发现差异大约在20%~30%。还是有一定效果的。主要是风扇的转速和发热量都有很明显的变化。
另外,因为是编译到内核中的,很可能在更新内核后需要重新编译。请各位注意

 

PS:如果对BIOS有了解可以直接禁用另一块显卡...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值