web-dev-qa-db-ja.com

Ubuntu 15.04、pm-utilsは/etc/pm/power.d/をもう調べません、代わりに何をしますか?

14.10から15.04にアップグレードしてから、ラップトップに適切なサーマルプロファイルモードを設定するために使用していたカスタムスクリプトが機能しなくなりました。

さて、それがシステムの新しい意図された動作である場合、その仕事をするために私のスクリプトをどこに置くべきですか?

6
dilettant

OK、Arch Wikiで答えを見つけました。次のソリューションを提供します。

Systemdができないことは1つだけです(systemd-204時点)。システムがACまたはバッテリーのどちらで実行されているかによる電源管理。このギャップを埋めるために、ACアダプターのプラグを抜いたときにスクリプトを実行する単一のudevルールを作成できます。

/etc/udev/rules.d/powersave.rules
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/path/to/your/script true"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/path/to/your/script false"

私のSony Vaioでは、これを個人的なセットアップとして持っています:

/etc/udev/rules.d/99-laptopac.rules

SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/local/bin/sony-thermal.sh true"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/local/bin/sony-thermal.sh false"

/usr/local/bin/sony-thermal.sh

#!/ bin/sh 
 
 help(){
 cat <&ltEOF 
 $ 0:SONYラップトップ温度プロファイル管理
 
このスクリプトは、ラップトップがAC電源で動作するかバッテリー電源で動作するかに応じて、[パフォーマンス]モードと[サイレント]モードを選択します。
 
 EOF 
} 
 
 set_sony_thermal_profile(){
 [! -d/sys/devices/platform/sony-laptop] && exit $ NA 
 [! -f/sys/devices/platform/sony-laptop/thermal_control] && exit $ NA 
 case $ 1 in 
 performance)
 printf「SONYサーマルコントロールをパフォーマンスモードに設定する」 
 thermal_control = performance ;; 
 silent)
 printf "SONYサーマルコントロールをサイレントモードに設定します。" 
 thermal_control = silent ;; 
 *) 
 printf "SONY温度制御を平衡モードに設定します。" 
 thermal_control = balanced ;; 
 esac 
 echo "$ thermal_control">/sys/devices/platform/sony-laptop/thermal_control && echo完了。 ||\
 echoが失敗しました。
} 
 
 $ 1 in 
 true)set_sony_thermal_profile silent ;; 
 false)set_sony_thermal_profile performance ;; 
 help)help ;; 
 *)$ NAを終了;; 
 esac 
 
 exit 0 

これにより、ノートブックのCPUが、負荷が軽い状況でもパフォーマンスが大幅に低下し、ユーザーエクスペリエンスが低下する場合でも、連続して "調整"されなくなります。

5
dilettant

デフォルトのUbuntu電源スクリプトは、この方法でトリガーできます。

このコンテンツを含むファイルpm-utilsを追加します

SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/sbin/pm-powersave true"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/sbin pm-powersave false"

/etc/udev/rules.d/

また、デフォルトのUbuntu省電力機能は、バッテリーからACに切り替えたときに適用されます。

起動時にトリガーされないという問題があります。修正するには、追加

udevadm trigger -s power_supply

/etc/rc.localの前のexit0へ。

Ubuntu 16.04の別の問題は、Network Managerがデフォルトで電源管理をオフにすることです。インターフェイスが起動されると、pm-utils設定が上書きされます。

これはファイル02-powersaveを追加することでも修正できます

#!/bin/sh

[ "$1" = "wlan0" ] && [ "$2" = "up" ] && udevadm trigger -s power_supply

/etc/NetworkManager/dispatcher.dに。

注:wlan0ifconfigにあるワイヤレスインターフェイスに置き換える必要があります。

4
Pilot6