ラベル スリープ の投稿を表示しています。 すべての投稿を表示
ラベル スリープ の投稿を表示しています。 すべての投稿を表示

2009年3月1日日曜日

Mac OS X のスリープモードの変更 (sudoers)

Mac OS X のスリープモードの変更には /usr/bin/pmset を使う。管理者権限が必要なので、GUI レイヤーから行おうとすると、若干の問題が生じる。そこで、スリープモードの変更に限って、管理者パスワードなしで行えるように設定する。

以下には、お使いの Macintosh を安全でない設定に変更する方法が書かれています。Mac OS X のスリープモードの違いを理解した上で、自己責任で設定を変更してください。

設定

sudo の設定ファイルである /etc/sudoers を編集する。sudoers に構文エラーがあると、sudo が実行できなくなるので、必ず以下に示すように visudo を使って編集する。visudo は編集終了後に構文検査を実行し、エラーがある場合は、更新するかどうか確認を求めてくる。

% sudo visudo

vi の操作については、ここでは解説しない。/etc/sudoers のファイルに、次の 1行を追加する。追加する場所は、サンプルの手前。

user ALL=NOPASSWD:/usr/bin/pmset -a hibernatemode ?

userには、スリープモードの変更を許可したいユーザ名を指定する。

この設定により、次のようにスリープモードの変更ができる。

% sudo pmset -a hibernatemode 0

スリープユーティリティ

スリープモードの変更が可能になったので、次のようなスクリプトがユーザモードで実行可能である。

スリープさせるスクリプト catnap は以下の通りである。

#!/bin/sh
/usr/bin/sudo /usr/bin/pmset -a hibernatemode 0
/usr/bin/pmset sleepnow

セーフスリープさせるスクリプト safesleep は以下の通りである。

#!/bin/sh
/usr/bin/sudo /usr/bin/pmset -a hibernatemode 3
/usr/bin/pmset sleepnow

ハイバネーションさせるスクリプト hibernate は以下の通りである。

#!/bin/sh
/usr/bin/sudo /usr/bin/pmset -a hibernatemode 1
/usr/bin/pmset sleepnow

後は、これらのスクリプトを GUI レイヤーから呼べるようにすればよい。その方法は様々であるが、清野はクラシカルなアップルメニューが好きなので、FruitMenu (US $12.00) を使用している。

FruitMenu の設定により、このようなアップルメニューが得られる。

2009年2月25日水曜日

Mac OS X のスリープ

Mac OS X のスリープモードは 3種類あります。これらの違いを以下の表に示します。

No名称スリープモードへ移行時、メモリをHDDにスリープモードから復帰時、HDDからメモリへスリープ中の電源
0スリープ待避しない読み込まない省電力モード
1ハイバネーション待避する読み込む切
3セーフスリープ待避する読み込まない省電力モード

No は pmset というコマンドでスリープモードを指定する時の数値です。

  • 0 は最もオーソドックスなスリープで、スリープ状態への移行およびスリープからの復帰が高速であるが、スリープ中にバッテリがなくなる等、電源が切れた時は、システムはクラッシュする。
  • 1はメインメモリの内容をHDDに書き出してからスリープし、復帰時にはHDDからメモリへ書き戻す。スリープ中は電源を必要としないが、スリープ状態への移行および復帰は最も遅い。
  • 3は0と1の中間で、万が一の電源断に備えてメインメモリの内容をHDDに書き出すが、スリープ中もメインメモリの内容を保持し続ける。スリープ状態への移行は 1 と同じ時間を要するが、スリープからの復帰は 0 と同様に高速である。

工場出荷時では、デスクトップマシンは 0 が、ノートブックでは 3 が指定されています。

運用からスリープを考える

ノートブックタイプのマシンで、バッテリを節約しなければならない局面は多いものです。しかし、デフォルトのセーフスリープでは、こまめなスリープが却って仇になります。

セーフスリープでは、スリープの度に、メモリの内容を HDD に書き出します。このために 30秒くらいかかります。この間、HDD は回りっぱなしです。これでは、本体を動かすのも恐いですね。

また、移動や睡眠などで長時間使わないのが分かりきっている時には、ハイバネーションさせて電池の消耗を抑えたいものです。

こうした要求から、スリープモードを使い分けられると便利です。

以下には、お使いの Macintosh を安全でない設定に変更する方法が書かれています。自己責任で設定を変更してください。

切り替えるには、Terminal.app から、次のようにタイプします。

% sudo pmset -a hibernatemode 0

root 権限が必要です。0 の部分を、上記の表の数字にしてください。

つぶやき

公開していない (リンク張っていない) はずなのに、なぜか旧サイトの中でもこのページは大人気でした…。なぜ公開していないかというと、間違いが含まれていたからです。それにしても、どうやって見つけたんでしょう?

スリープさせるためのスクリプトについては、別の記事で紹介します。