お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-02-02 18:30:24

hippocampus
メンバ
登録日: 2007-07-08

GNOMEのメニューからのサスペンドに、特定のquirkを引数にs2ramを使いたい

お世話になっています。

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を引数に指定する のはどうすればいいのでしょうか。

オフライン

 

#2 2010-02-02 18:45:05

hippocampus
メンバ
登録日: 2007-07-08

Re: GNOMEのメニューからのサスペンドに、特定のquirkを引数にs2ramを使いたい

あ、すみません。
改変前のhal-system-power-linux-suspend(上記の3つ目のコード)の「QUIRKS="--quirk-vbestate-restore …」は間違いです。
改変したコードが入ってしまいました。

オフライン

 

#3 2010-02-04 12:47:56

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: GNOMEのメニューからのサスペンドに、特定のquirkを引数にs2ramを使いたい

私も 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 が出来るか確かめてください.

オフライン

 

#4 2010-02-04 13:14:40

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: GNOMEのメニューからのサスペンドに、特定のquirkを引数にs2ramを使いたい

訂正です.

einundzwanzighundertsechs による投稿:

当該オプションが hal の fdi ファイルとして保存されているはずです.
...略...
次回の suspend からは 00auto-qurik の do_add_quirks 関数が lshal を介して当該オプションを再構築するようです.

「次回」の前に hal に生成した fdi ファイルを読み込ませるため,hald の再起動が必要です.システムそのものの再起動か,または,

コード:

$ sudo restart hal

が,必要と思われます.

オフライン

 

#5 2010-02-04 20:48:43

hippocampus
メンバ
登録日: 2007-07-08

Re: GNOMEのメニューからのサスペンドに、特定のquirkを引数にs2ramを使いたい

einundzwanzighundertsechsさん

詳細かつ完全な解説ありがとうございます。助かりました!
なるほど、9.04とはまた作法が変わっていたのですね……。
後学の為にお聞きしたいのですが、リリースノートにないような、こういう挙動の違いはどこで調べればわかるのでしょうか。
スクリプトの動作を追っていけば、スキルのある方はわかると思いますが、その他どこかのWebページや資料として公開されているのでしょうか。

オフライン

 

#6 2010-02-05 12:59:17

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: GNOMEのメニューからのサスペンドに、特定のquirkを引数にs2ramを使いたい

今回の投稿はスクリプトと man ページを元に書きました.参照した Web ページは特にありません.ご期待に添えず申し訳ありません.

ところで #1 で --quiark-save-pci と quirk の綴りを間違えられていたのを,私も気付かずにコピーしたため,
#3 での一番重要なコマンド sudo pm-suspend --store-quirks-as-fdi ... に quirk のミススペルが含まれています.
気付かれたでしょうか? エラーになりませんでしたか?

/* それ以外に 00auto-qurik もミススペルですね... */

オフライン

 

#7 2010-02-05 20:20:57

hippocampus
メンバ
登録日: 2007-07-08

Re: GNOMEのメニューからのサスペンドに、特定のquirkを引数にs2ramを使いたい

einundzwanzighundertsechsさん

manページですか。情報ありがとうございます。
スペルミスもお恥ずかしい。別のPCで、記憶を便りに書いてしまっていました。

オフライン

 

Board footer

Powered by FluxBB