
Ubuntu日本語フォーラム

ログインしていません。
お世話になっています。
ubuntu 9.10 日本語ReMixを使用しています。
サスペンドの速度や安定性などからuswsuspを愛用していたので、Karmicでもapt-getでuswsuspパッケージを導入しました。
ちょっと癖があるハードウェアのようで、普通にs2ram -fするとレジューム後にXが復帰できないようで、画面がブラックアウトしたままになってしまいます(症状A)。
なので、試行錯誤をしたところ、
以下のようなスクリプトでサスペンド/レジュームができることがわかりました。
/usr/sbin/s2ram --force --vbe_save --vbe_mode --pci_save --acpi_sleep2 chvt 1 chvt 7
このスクリプトをターミナルから実行すると、(ルートパスワードを入力後)きちんと期待通りの動作をしてくれます。
GNOMEのメニューからサスペンドを選ぶと、/usr/lib/hal/scripts/linux/hal-system-power-suspend-linuxが呼ばれて、そこからpm-suspendスクリプトを実行するようです。
そこで、まず、/etc/pm/config.d/00sleep_moduleを編集して
SLEEP_MODULE="uswsusp"
を追記しました。が、これだけでは復帰後(症状A)になってしまいます。/var/log/pm-suspend.logをみると、どうやら/usr/lib/pm-utils/sleep.d/00auto-quirkというのが適切でない引数を与えてるみたいです。
なので、とりあえずこのhal-system-power-suspend-linuxスクリプトを改変してみました。
# We only support pm-utils
if [ -x "/usr/sbin/pm-suspend" ] ; then
export NUM_SECONDS_TO_SLEEP=$seconds_to_sleep
QUIRKS="--quirk-vbestate-restore --quirk-vbemode-restore --quiark-save-pci --quirk-s3-mode"
/usr/sbin/pm-suspend $QUIRKS
RET=$?
else
# TODO: add support
unsupported
fiを
if [ -x "/usr/sbin/pm-suspend" ] ; then
export NUM_SECONDS_TO_SLEEP=$seconds_to_sleep
QUIRKS="--quirk-vbestate-restore --quirk-vbemode-restore --quiark-save-pci --quirk-s3-mode"
/usr/sbin/pm-suspend $QUIRKS
RET=$?
fiに変更してみました。が、やはりうまくいきません(症状A)。やっぱり00auto-qurikが違うquirkを渡してるっぽいです(pm-suspend.logによると)。
苦し紛れに/usr/lib/pm-utils/sleep.d/00auto-qurikの実行権限を外してみたりしたのですが、結果は同じ……。
考え方を変えて/usr/lib/hal/scripts/linux/hal-system-power-suspend-linuxを以下のようなシンプルなものに変えて試してみたのですが、それでも同じ。
#!/bin/sh /usr/sbin/s2ram --force --vbe_save --vbe_mode --pci_save --acpi_sleep2 chvt 1 chvt 7
00auto-quirkは停止してるし、直接的にs2ramの引数を指定するコマンドをなぜかターミナルからスクリプトとして実行するとうまくいくのに、GNOMEのメニューからだとできないという。
GNOMEメニューからサスペンドを選択したときに、1)s2ramを使って 2)特定のQUIRKを引数に指定する のはどうすればいいのでしょうか。
オフライン
あ、すみません。
改変前のhal-system-power-linux-suspend(上記の3つ目のコード)の「QUIRKS="--quirk-vbestate-restore …」は間違いです。
改変したコードが入ってしまいました。
オフライン
私も uswsusp を 9.10 で使っています.
hippocampusさん による投稿:
ubuntu 9.10 日本語ReMixを使用しています。
GNOMEのメニューからサスペンドを選ぶと、/usr/lib/hal/scripts/linux/hal-system-power-suspend-linuxが呼ばれて、そこからpm-suspendスクリプトを実行するようです。
此方で調べた限りは,その hal スクリプトは経由していないと思われます.
/* ps -ef の結果から抜粋.devkit-power-daemon(PID=1642) が pm-suspend(PPID=1642) を呼び出している.*/
root 1642 1 0 10:12 ? 00:00:01 /usr/lib/devicekit-power/devkit-power-daemon root 3322 1642 0 11:15 ? 00:00:00 /bin/sh /usr/sbin/pm-suspend
念のため
$ sudo pm-suspend --help ...略... s2ram video quirk handler options: ...略...
で s2ram が使われるのを確認の上,コマンドラインから
$ sudo pm-suspend --store-quirks-as-fdi --quirk-vbestate-restore --quirk-vbemode-restore --quiark-save-pci --quirk-s3-mode
で思い通りの suspend が出来るか確かめてください.
OK なら,当該オプションが hal の fdi ファイルとして保存されているはずです.解説は man pm-suspend の --store-quirks-as-fdi の項を参照して下さい.
次回の suspend からは 00auto-qurik の do_add_quirks 関数が lshal を介して当該オプションを再構築するようです.再び
$ sudo pm-suspend
で思い通りの suspend が出来るか確かめてください.
オフライン
訂正です.
einundzwanzighundertsechs による投稿:
当該オプションが hal の fdi ファイルとして保存されているはずです.
...略...
次回の suspend からは 00auto-qurik の do_add_quirks 関数が lshal を介して当該オプションを再構築するようです.
「次回」の前に hal に生成した fdi ファイルを読み込ませるため,hald の再起動が必要です.システムそのものの再起動か,または,
$ sudo restart hal
が,必要と思われます.
オフライン
einundzwanzighundertsechsさん
詳細かつ完全な解説ありがとうございます。助かりました!
なるほど、9.04とはまた作法が変わっていたのですね……。
後学の為にお聞きしたいのですが、リリースノートにないような、こういう挙動の違いはどこで調べればわかるのでしょうか。
スクリプトの動作を追っていけば、スキルのある方はわかると思いますが、その他どこかのWebページや資料として公開されているのでしょうか。
オフライン
今回の投稿はスクリプトと man ページを元に書きました.参照した Web ページは特にありません.ご期待に添えず申し訳ありません.
ところで #1 で --quiark-save-pci と quirk の綴りを間違えられていたのを,私も気付かずにコピーしたため,
#3 での一番重要なコマンド sudo pm-suspend --store-quirks-as-fdi ... に quirk のミススペルが含まれています.
気付かれたでしょうか? エラーになりませんでしたか?
/* それ以外に 00auto-qurik もミススペルですね... */
オフライン
einundzwanzighundertsechsさん
manページですか。情報ありがとうございます。
スペルミスもお恥ずかしい。別のPCで、記憶を便りに書いてしまっていました。
オフライン