過去のPC Unixでは、ノートPCへインストールすることができても、サスペンドできない、スリープすると二度と起きてこない、といったトラブルが付き物でしたが、現在のLinuxではノートPCであってもほとんど問題が起きずに動作します。Ubuntuもその例に漏れず、ノートPCでも遜色なく利用することができます。今回はノートPCでUbuntuを利用していく上で役に立つレシピを紹介します。
GNOMEアプレットの利用
Windowsがプリインストールされた一部のノートPCでは、タスクバー等にバッテリの残量を表示するユーティリティがプリインストールされていることがあります。Ubuntuが利用するGNOMEにも、類似したノートPC用のユーティリティが用意されています。
まず実際の画面を見て頂くのが早いと思いますので、筆者の利用している環境のスクリーンショットを次に示します。画面の右上部分、「通知スペース」の左にある、バッテリアイコンやクロック周波数の表示に注目してください。
これらはUbuntuをインストールした時点ですでに導入されており[1]、パネルのカスタマイズを行えば画面に表示させることができます。
追加は簡単で、メニュー上で右クリックを行い、メニューから[パネルへ追加](図3)を選択し、「CPU周波数の計測モニタ」と「バッテリ充電モニタ」を追加するだけです。
いずれもデフォルトでは最小限の表示しかしないため、前述のスクリーンショットと同様の画面にするには、各アイコンを右クリックして[設定]を開いて設定を行います。
筆者の経験上ですが、CPU周波数モニタは外観を「アイコンとラベル」に設定し、かつ、「CPU周波数を標準で表示する」「周波数の単位を表示する」にしておくのが便利でしょう。
CPU周波数を表示させる状態にしておくと、CPUの周波数が動的に変化していることが見て取れるようになります。
ただし、周波数を管理する方針はこれらのアプレットからは変更できませんので、ノートPCでバッテリを最大まで保たせようとする場合や、省電力サーバなどを構築するような場合(要するに、CPU周波数を常に最低にする、といった設定を行いたい場合)には、Ubuntu Teawkの[システム]→[電源管理]、もしくはgconf-editorなどで直接パラメータを指定し、周波数制御ポリシーを変更する必要があります。
バッテリ充電モニタでは、「拡張表示」にし、「充電時間/充電率を表示する」「残量を時間で表示する」が便利だと思います。これらの設定は前述のスクリーンショットを取った際の設定でもあります。
なお、デフォルトで表示されている「電源の管理」によるバッテリ表示と、「バッテリ充電モニタ」はバッテリ残時間の算出アプローチが異なり、結果も違ってきます。以下は筆者が利用しているノートPCでの例ですが、残時間が前者は1時間10分、後者は1時間41分と、5割近い差があります(これはバッテリの残容量に関わらず常に一定で、筆者の環境では常時5割ほどの差があります)。
筆者が試した範囲では「バッテリ充電モニタ」の方が実状に近いようですが、実際の利用時間はもう少し長く、2時間強の動作が可能でした(それほど頻繁に操作しなかったから、という可能性も多分にあります)。
環境によっては適正な時間が算出される可能性もありますが、算出される時間は参考程度と理解しておくのが良いと思われます。ちなみに筆者の環境のバッテリの保ちがわずか2時間と非常に悪く見えますが、これは酷使の結果、バッテリ性能がかなり低くなっているためです。
ubuntu-laptop-modeの利用
ubuntu-laptop-modeのインストール
Ubuntu 7.10から追加された新要素として、「ubuntu-laptop-mode」というパッケージがあります。このパッケージの本体は、ノートPCなどで利用するのに適したKernelパラメータにすることで、バッテリ動作時間を延長させるスクリプトです。基本的な発想は、「HDDへのアクセスを最小限にする」もので、ダーティバッファを増やす、HDDへのフラッシュ頻度を落とす、ファイルシステムのAccess TIMEの記録を行わなくする、HDDのパラメータを変更する、一定時間経過後にHDDをスピンダウンさせる、といった処理を行います(HDD関連の処理しか行いません)。
アプローチを思い切って要約すると、「syncを遅らせる」です。インストール後に/usr/sbin/ubuntu-laptop-modeを見れば分かりますが、中身は簡単なbashスクリプトですので、眺めてみても良いと思います。
7.10以降をお使いであれば、ubuntu-laptop-modeパッケージはSynapticやaptでインストールすることができます。
インストール後、 /etc/default/ubuntu-laptop-modeから/etc/default/ubuntu-laptop-mode.defaultへのシンボリックリンクを張って(あるいはコピーもしくは移動)してください(/etc/default/ubuntu-laptop-mode.defaultがインストールされてしまうのは、パッケージングバグではないかと筆者は考えています)。
また、このまま設定ファイルを変更した場合、ubuntu-laptop-modeのアップデートによって設定がデフォルトのものに戻されてしまいますので、diversionを行いましょう(コピーもしくは移動した場合は不要です)。
2008年3月14日追記
上記のdiversion作業は不要でした。当該ファイルはconffileに含まれているため、パッケージアップデート時に上書き処理が必要な場合、対話式の確認ダイアログが表示されます。
conffileにdiversion指定を行うと、多くの場合、アップデート時に本来の設定ファイルが削除されてしまいますので、すでに行っている場合はdiversionを除去してください。
ご迷惑をおかけし、大変申し訳ございませんでした。
"diversion"(dpkg-divert)とは、パッケージ管理システムに「このファイルはパッケージ由来のものではないので、代替パスとして指示された場所へインストールせよ」という処理を強制するためのコマンドです。上記の例の場合、「ubuntu-laptop-modeパッケージに含まれる/etc/default/ubuntu-laptop-mode.defaultは、/etc/default/ubuntu-laptop-mode.default.ubuntuにインストールせよ」という指示になります。これを行うことにより、パッケージの更新などで不本意なアップデートが行われてしまうことを抑制できます。
なお、diversionを解除したい場合は以下のように行います。
設定ファイルの準備ができたらubuntu-laptop-modeを起動します。
値が変更されていることを確認するために、 ubuntu-laptop-modeをstart/stopしながら、/proc/sys/vm/dirty_ratio の値を確認してみましょう(なお、ubuntu-laptop-modeにはバグがあり、二回続けてstartしてしまうと/var/run/ubuntu-laptop-modeに正しくない値が記録されてしまい、本来の値に戻らなくなってしまいます。通常は後述のように自動的に実行されるように設定するものですので実用上はあまり問題はありませんが、実験する場合は注意してください)。
ACPIイベントによるハンドリング
ubuntu-laptop-modeはバッテリ動作向けの調整ですので、AC電源で稼働させる場合にはデメリットもあります。HDDアクセスが減少するため、静音化を目的にするなら通常時から有効にしていても構いませんが、筆者はACPIイベントに連動させ、AC稼働時は無効、バッテリ稼働時のみ有効にしています。
設定は次のように行います。
まず、/etc/acpi/ 以下を見てください。これらのディレクトリには各種ACPIイベント(ACPI Start・バッテリ動作開始・AC電源動作開始・サスペンド開始・レジューム完了)に連動して実行されるスクリプトが配置されています。これらのディレクトリにスクリプトを配置しておくだけで、各ステートになったタイミングでスクリプトを自動実行することができます。
以下のような簡易ラッパーを作成して実行権限を付け、ac.d/とstart.d/以下に10-ubuntu-laptop-mode_stop.shを、battery.d/に10-ubuntu-laptop-mode_start.shをコピーします[3]。こうすることで、電源状態に応じて自動的に各モードを行き来することができます。
powertopによる不要な電源消費の削減
ノートPCで利用する場合、不要な電源消費をもたらす「行儀の悪い」アプリケーションや、必要ないデバイスへの電源供給をOffにすることで、ある程度バッテリ利用時間を延長することができます。こうしたチューニング的な設定変更を行うための補助ツールとして、IntelのPowerTopユーティリティを紹介します。
powertopもリポジトリに含まれていますので、Synapticやaptでインストールしてください。端末から行う場合は以下です。
powertopは端末から実行するツールです。実行は以下のように、root権限を持った状態で行います。
実行すると以下のように、その時点までのCPUステートの割合が上段に、wakeupを引き起こしたプロセス名が中段に表示され、最下部に電源消費を抑えるための提案が表示されます。
通常は最初に表示される2~3個を実行するだけで十分です(数分~数十分、といったレベルですが、それなりの効果があります)。提案には比較的偏執狂的なものも含まれているため、すべての提案を受け入れても、期待するほどにはバッテリ寿命は伸びません。
- 参考になるドキュメント
- dpkg-divertの利用について: "Replacing binaries with dpkg-divert"
http://www.debian-administration.org/articles/118
- PowerTop関連の情報
http://www.lesswatts.org/projects/powertop/