> Ubuntu >

Ubuntu使用acpi_call关闭独立显卡

使用的Y470是双显卡切换的,但只支持Windows系统(鄙视一下联想),运行Linux时独立显卡是一直开着的,相当耗电。Nvidia在Linux下支持并不好,而且使用Linux一般都是出于编程目的,不会使用到独显。因此关闭独立显卡是一个Linux系统省电的一个方案。

经过搜索,Kaijia找到了Michal Kottman开发的一个内核模块acpi_call,这个模块通过修改/proc/acpi/call调用高级配置与电源接口(ACPI)关闭一些不需要的硬件,通过acpi_call可以关闭独立显卡。

9月23日更新:如果出现在升级Linux内核后acpi_call模块无法载入的现象请参考《Linux内核重编译后无法加载acpi_call问题解决》。

可以在Bumblebee项目提供的Ubuntu PPA中安装acpi_call,首先需要向软件仓库增加PPA并且更新apt:

 

1
2
sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update

 

输入以下命令安装acpi_call:

 
1
sudo apt-get install acpi-call-tools

 

安装完成后的文件放置在/usr/src/acpi-call-版本号/(Kaijia写本文时的版本是1.1.1),运行以下命令编译并加载模

1
2
3
cd /usr/src/acpi-call-1.1.1/
sudo make
sudo insmod acpi_call.ko

 

完成编译后可以就可以关闭独立显卡了,输入关闭的命令需要通过test_off.sh脚本确定。你可以在模块的GitHub托管主页下载test_off.sh文件,也可以直接通过此链接下载ZIP压缩包,下载完成后解压出test_off.sh文件,使用chmod增加执行权限并且运行:

 

1
2
3
cd /path/to/your/test/off/sh/
chmod +x test_off.sh
sudo ./test_off.sh

 

运行后会看到类似以下文字的输出内容,其中显示“works!”的内容便是需要输入的部分代码:

 

 
1
2
3
4
5
6
7
8
9
10
11
12
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!

 

以上是Kaijia运行后获得的结果,在此例中“\_SB.PCI0.PEG0.PEGP._OFF”(后面显示为works!,其他均显示为failed)是需要关闭的独立显卡代号,具体的代号根据电脑实际主板情况而不同,模块原作者Michal Kottman的电脑则是“\_SB.PCI0.PEG1.GFX0.DOFF”。确定了代号后可以运行一下命令关闭独立显卡:

 

 
1
sudo echo "独立显卡的代码" > /proc/acpi/call

 

在此例Kaijia的电脑中为:

 

1
sudo echo "\_SB.PCI0.PEG0.PEGP._OFF" > /proc/acpi/call

 

命令运行后独立显卡就已经关闭了,当然每次开机都需要手动运行命令会比较麻烦,可以在rc.local文件中在Linux开机时自动加载模块并关闭独立显卡。以Root编辑文件/etc/rc.local,在文件的最后加入

1
2
insmod /usr/src/acpi-call-1.1.1/acpi_call.ko
echo "\_SB.PCI0.PEG0.PEGP._OFF" > /proc/acpi/call

 

这样每次开机时独立显卡就会被关闭了,另外如果你需要实现双显卡切换的话,可以参考Bumblebee项目(只支持Nvidia显卡)。


 

(责任编辑:IT)