由于各种原因(ps:why linux is not for desktop),linux对市场上新出的独显支持不够全面,也不够稳定。最近花了很多时间来减少ubuntu下电池使用功率,因为dell N4110是双显卡,默认全功率运行,独显很少用到,另一方面,屏幕亮度重启后总是最亮,调节很是不便。下面的方法意在用最少的代码量达到节能效果。
Requirements:ubuntu linux;nvidia显卡,;高级电源管理acpi进程开启,有/proc/sys/acpi/call 文件 本人的dell N4110是ASUS A42JV,ubuntu 12.04 内核 3.2.0-10-generic ,下面的代码亲测通过:
一.关闭独显1. git下载acpi_call模块,关闭n卡
sudo aptitude install git
mkdir ~/.optimus
cd ~/.optimus/
git clone http://github.com/mkottman/acpi_call.git 3. 下面,进入acpi_call目录,进行编译
cd acpi_call/ && make
4. 现在,将模块放入内核的acpi文件夹
sudo insmod ./acpi_call.ko
6. 复制模块并运行depmod
sudo cp acpi_call.ko /lib/modules/$(uname -r)*/kernel/drivers/acpi/
sudo depmod
7. 编辑/etc/modules,使模块在内核启动时加载,插入 acpi_call(独立成行)
echo 'acpi_call' >> /etc/modules
***********************************************************************************************ASUS U36Jc的电脑请略去横线中的步骤************************在上文创建的 acpi_call/example 目录下,执行
ubuntu@dell N4110:~/.optimus/acpi_call$ sudo sh test_off.sh
+- +-- 10 lines:#{Trying _SB.PCI0.P0P3.PEGP._OFF: failedTrying _SB.PCI0.P0P2.PEGP._OFF: failedTrying _SB.PCI0.P0P1.PEGP._OFF: failedTrying _SB.PCI0.MXR0.MXM0._OFF: failedTrying _SB.PCI0.PEG1.GFX0._OFF: failedTrying _SB.PCI0.PEG0.GFX0.DOFF: failedTrying _SB.PCI0.PEG1.GFX0.DOFF: failedTrying _SB.PCI0.PEG0.PEGP._OFF: works!#} 机器若跑出以上结果,可以使用‘_SB.PCI0.PEG0.PEGP._OFF’关闭,这一点将在步骤8中使用。请特别注意。其他结果请自行参照。)****************************************************************************8. 新建一个服务,使我们可以开启/关闭n卡
cat /etc/init.d/optimusoff
+- +-- 43 lines:#{#! /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-functionsset-ecase"$1"in start)#echo'_SB.PCI0.PEG0.PEGP._OFF'> /proc/acpi/call# -- 上一行要更改为上文中 works的命令,如 非上文举例的命令请自行修改;; stop)echo'_SB.PCI0.PEG0.PEGP._ON'> /proc/acpi/call# --同上 ;; *)echo'_SB.PCI0.PEG0.PEGP._OFF'> /proc/acpi/call# --同上 N=/etc/init.d/optimusoffecho"Usage: $N {startstop}nBy default, 'start' is executed.n">&2exit1;;esacexit0#} 9. 激活服务
sudo update-rc.d optimusoff defaults 9802#default runlevel 2sudo chmod a+x /etc/init.d/optimusoff
sudo service optimusoff start
sudo update-initramfs -u 13. 将显卡驱动模块加入黑名单
echo'blacklist nouveau'>> /etc/modprobe.d/blacklist-nvidia.conf
echo'blacklist nvidia'>> /etc/modprobe.d/blacklist-nvidia.conf
二,保存屏幕亮度如果你的电脑在终端下可以通过:
echo VALUE > /sys/class/backlight/.../brightness
***其中 VALUE 是屏幕亮度值, ...是文件brightness的相对路径,如本人 的是:***echo 220 > /sys/class/backlight/intel_backlight/brightness***读者可以测试 VALUE值,知道调节到舒适而节能的效果。那么您可以把确认好的上述代码,如:echo 220 > /sys/class/backlight/intel_backlight/brightness 插入 /etc/rc.local中,并且去掉最后一行#exit 0 中的 #
cat /etc/rc.local
+- +-- 16 lines:#{#!/bin/sh -e## rc.local## This script is executed at the end of each multiuser runlevel.# Make sure that the script will "exit 0" on success or any other# value on error.## In order to enable or disable this script just change the execution# bits.## By default this script does nothing.echo 220 > /sys/class/backlight/intel_backlight/brightnessexit0#}
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com