Top / Software / Suspend

サスペンド・ハイバネーション の FAQ


サスペンドとは、 処理中のプロセスイメージをメモリに保持し低電力状態で維持、電源再投入後元のプロセス状態に書き戻す (これをレジュームという) 処理です。
(他 OS で スリープ・スタンバイ とも呼称されます。)
ハイバネーションとは、 イメージをブロックデバイス (通常はスワップパーティションまたはスワップファイル) に書き出し、シャットダウン、 電源復帰後レジュームする処理です。
(他 OS で休止状態とも呼称されます。)

ラップトップ、ノートパソコンの多くはサスペンド、ハイバネーション機能を備えていますが、 Debian で実現する方法について説明します。

最近のノートパソコン、ラップトップならば、ACPI が機能します。
古い機種だと APM (しかも BIOS でちゃんと有効になるもののみ) でしか機能しないものもあります。

APM BIOS 準拠のマシンの場合

1. カーネルコンフィグ

まずは、/boot/config-(カーネルバージョン) ファイルに

CONFIG_APM=m または y

があることを確認します。

2. ハイバネーション領域の作成

次に APM 用のハイバネーション領域を作る必要があります。

# fdisk /dev/hda

などを実行して 'IBM Thinkpad hibernation' (0xA0) というタイプのパーティションを 作成します。
確認するには、

# fdisk -l /dev/hda

Disk /dev/hda: 76.8 GB, 76832039424 bytes
240 heads, 63 sectors/track, 9924 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        2032    15361888+  83  Linux
/dev/hda2            2033        3386    10236240    c  W95 FAT32 (LBA)
/dev/hda3            3387        3420      273105   A0  IBM Thinkpad hibernation
(以下省略)

3. ハイバネーション領域の初期化

次にこのパーティションを初期化します。
各マシンのベンダが DOS/Windows 用のユーティリティを配布している場合があります。(PHDISK.EXE という名前のものなど。)
Linux 上では lphdisk というものがあります。 パーティションの変更を行うのでドキュメントを良く読んだ上で作成してください。

4. apm コマンドの実行

次に apmd をインストールしてから、

# apm -s

で Suspend to Disk 状態に移行することができます。復帰するには電源を再投入してください。

ACPI Software Suspend の場合

参考:

まずは、

を用いた方法を述べます。

続いて従来からある、

とその他の情報について述べます。

1. uswsusp

uswsusp はユーザ空間における swsusp の実装で、 バージョン 2.6.17-rc1 以上のカーネルで動作します。
2.6.17-rc1 以上のカーネルには既に必要なインターフェースが取り込まれており、 また Debian (etch 以降) では標準の linux-image-2.6 カーネルで適切なカーネルコンフィグ (後述) がなされているので、 パッケージインストール後すぐに使用可能です。

以下の手順は、

  • カーネルバージョン v2.6.36, v2.6.37-rc7
  • initramfs-tools 0.98.7
  • uswsusp 0.8-1.2+b1
  • splashy 0.3.13-5.1+b1

で動作確認済。

1.1 カーネルコンフィグ

まずは /boot/config-(カーネルバージョン) に

CONFIG_SOFTWARE_SUSPEND=y (2.6.17-rc1 〜 2.6.22)

または

CONFIG_SUSPEND=y (2.6.23 〜)
CONFIG_HIBERNATION=y

さらに

CONFIG_BLK_DEV_INITRD=y

があることを確認します。 なければカーネルコンフィグカーネル再構築 (initramfs 方式) が必要です。
他にも推奨するコンフィグがあるので、詳細は uswsusp を インストールした後で /usr/share/doc/uswsusp/HOWTO.gz を見てください。

1.2 initramfs-tools のインストール

initramfs-tools をインストールします。(etch 以降はデフォルトでインストールされています)
postinst スクリプトによって /etc/initramfs-tools/conf.d/resume ファイルに次のようにスワップパーティションが記述されていることを確認します。

RESUME=/dev/hda3

(/dev/hda3 がスワップパーティションの場合) もしくは UUID 形式で、

RESUME=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

記述がない、スワップパーティションではないものが記載されている場合は適宜修正して下さい。
スワップパーティションの UUID のチェック方法は Software/LinuxKernel#libata を参照して下さい。

1.3 uswsusp のインストール

uswsusp をインストールします。
debconf に従って、 MD5 チェックサム、LZF 圧縮、暗号化、スプラッシュイメージ (splashy) などの有効・無効を設定できます。

  • KMS 有効時には splashy は上手く動作しないので、どちらかを無効にすること。

/etc/uswsusp.conf に次のようにスワップパーティションが記述されていることを確認します。

resume device = /dev/hda3

もしくは、 UUID 形式で、

resume device = /dev/disk/by-uuid/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

他のオプションについては

$ man uswsusp.conf

などを参照してください。
メンテナスクリプトによって初期 RAM ディスク (initrd/initramfs) が再生成されていることを確認します。 再生成されていなければ、

# update-initramfs -u -k all

(もしくは)

# update-initramfs -u -k (対象カーネルのバージョン)

を実行してください。

1.4 コマンドの実行

まず、

# s2ram -n

を実行してください。 既知のサポートされているマシンならば、

Machine matched entry xxx:
...

と出力されます。

# s2ram

で Suspend to RAM (Sleep State は S3)

# s2disk

で Suspend to Disk (Hibernate: Sleep State は S4) 状態に移行できます。 電源を再投入することでレジュームします。

# s2both

というコマンドを実行すると、ディスクに状態を書き込みます (= s2disk) が電源は切らずに Suspend to RAM 状態に移行します。

サポートされていなければ、

Machine is unknown.
...

と出力されます。この場合は、

# s2ram -f

というオプションを付すと、 サポートされていなくともサスペンド/レジュームが可能な場合もあります。

s2disk, s2both を実行しシャットダウンした後、電源を再投入する際には必ず、 サスペンド時と同じカーネルで起動してください。(カーネルコマンドラインは無視されます。) 他のカーネルで起動した場合はレジュームせずに通常の起動処理を行ってしまうでしょう。 (結果的に作業中のデータは消失します。)
GRUB Legacy の場合、/boot/grub/menu.lst 上で

default         saved
...
title           Debian GNU/Linux, kernel 2.6.18-1-686
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18-1-686 root=/dev/hda1 ro
initrd          /boot/initrd.img-2.6.18-1-686
savedefault
...

というように default コマンドと savedefault コマンドを利用すれば、 前回起動したカーネルが選択されるようになるので間違って起動することが減るかと思います。
よく忘れがちなのが、カーネルパッケージを更新した後にサスペンドするとレジューム出来ないという事例です。 サスペンド時のカーネル (= 起動時に読み込まれた、メモリ上にある更新前のカーネルイメージ) と 電源を再投入した後読み込まれるカーネル (= 更新後のもの) は異なっているからです。 カーネルパッケージを更新した後はすぐさま再起動しましょう。
スワップパーティションを暗号化している場合は再起動時にパスフレーズの入力が要求されます。

2. TuxOnIce

TuxOnIce (以前は Suspend 2 for Linux と呼んでいました) は先進的なハイバネーション機構です。
これは、従来の swsusp よりもはるかに高機能なもので、最終的には swsusp を置換することを目標としています。 (参照)
TuxOnIce はカーネルに新たな機構を組み込むため、カーネルへのパッチの形として存在します。
したがって導入には若干敷居が高くなります。
上流のカーネルソースツリーに未だ取り込まれておらず、 また今後の開発見通しも不明で、 Debian においても現時点ではサポートは全くありません。
使用には十分注意して下さい。

以下の手順は、

  • カーネルバージョン v2.6.36, v2.6.37-rc7
  • initramfs-tools 0.98.7
  • TuxOnIce v3.2-rc2 (/sys/power/tuxonice/version)
  • Swap Partition モード
  • tuxonice-userui (git tree version)

で動作確認済。

2.1 カーネルパッチの取得・適用

TuxOnIce のページの Source セクションにある、 対応するカーネルのパッチを取得して下さい。
ただし、TuxOnIce は目下開発中フェーズのため、これらのパッチでは不具合が出る場合もあります。
そのような場合は、最新の git tree を利用してください。
(このツリーからパッチを生成する方法は適宜 git のマニュアル 等を見てご自分で考えてみてください。)

  • 各バージョンのツリーもあり。(例: 2.6.28)

パッチを取得したら、カーネルソースに適用します。

2.2 カーネルコンフィグ

パッチを適用したら、カーネルのコンフィグレーション構築を行います。
設定例:

CONFIG_HIBERNATION=y
CONFIG_TOI_CORE=m
CONFIG_TOI_FILE=m
CONFIG_TOI_SWAP=m
CONFIG_TOI_CRYPTO=m
CONFIG_TOI_USERUI=m
CONFIG_TOI_USERUI_DEFAULT_PATH=""
# CONFIG_TOI_KEEP_IMAGE is not set
CONFIG_TOI_REPLACE_SWSUSP=y
# CONFIG_TOI_IGNORE_LATE_INITCALL is not set
CONFIG_TOI_DEFAULT_WAIT=25
CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE=2000
CONFIG_TOI_CHECKSUM=y
CONFIG_TOI=y
CONFIG_TOI_EXPORTS=y
CONFIG_CRYPTO_LZF=m
  • CONFIG_HIBERNATION=y としないと TuxOnIce は有効になりません。
  • CONFIG_TOI_CORE はコアモジュールです。 これは必ず =y または =m としてください。=y としたときはカーネル組み込み、=m としたときはモジュールとなります。 モジュールにした場合、ハイバネーションが不要となったタイミングでモジュールを外すということも可能です。ただし、モジュールの場合 initramfs は必須となります。

以下の項目は CONFIG_TOI_CORE=m の時は =m, CONFIG_TOI_CORE=y の場合は =y に自動で設定されます。

  • CONFIG_TOI_FILE はスワップファイルにイメージを書き込むモジュールで必須です。
  • CONFIG_TOI_SWAP はスワップパーティションにイメージを書き込むモジュールで必須です。
  • CONFIG_TOI_CRYPTO は暗号化を使用する場合必須です。
    • CONFIG_CRYPTO_LZF は暗号化モジュールです。上記暗号化機能を有効化する場合は必須です。
  • CONFIG_TOI_USERUI はユーザインターフェース (tuxonice-userui) を使用する場合必要です。 tuxonice-userui はユーザー空間のコマンドで進捗メータを表示するツールです。これは別途用意する必要があります。 デフォルトでは何もインターフェースがないので、ハイバネーション状況の進捗度が分かりません。

以下はオプションです。

  • CONFIG_TOI_USERUI_DEFAULT_PATH にはユーザインターフェースのコマンドパスを指定して下さい。 空白にした場合、ハイバネーション前に /sys/power/tuxonice/user_interface/program にパスを書き込む必要があります。
  • CONFIG_TOI_KEEP_IMAGE はレジューム時に毎回同じ起動状態を維持するためのオプションです。 公衆端末 (Kiosk System?) を対象としているようで、通常は =n で問題ありません。
  • CONFIG_TOI_REPLACE_SWSUSP は従来の swsusp インターフェースを乗っ取ります。 よって、従来の swsusp にしか対応していなかったツールがこれで動作します。こちらは適宜 =y にしてください。
  • CONFIG_TOI_IGNORE_LATE_INITCALL : =y とすると "late initcall' を無視します。 通常は初期 RAM ディスク (初期ルートファイルシステム) の起動を待ってからレジュームを行いますが、=y にするとそれよりも前にレジュームを行います。 適宜設定して下さい。
  • CONFIG_TOI_DEFAULT_WAIT は間違ったカーネルで起動した場合の動作までの待機時間 (単位:秒) です。適宜設定して下さい。 通常間違ったカーネルで起動してしまった場合、スワップに保存されているディスクイメージを削除しブートを続行します。-1 とすると、永遠に待ちつづけます。 0 とすると待機せず処理に移ります。
  • CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE は "atomic copy" 時に使用するメモリ量 (単位: ページ)。 デフォルト値で問題ありません。
  • CONFIG_TOI_CHECKSUM はディスクイメージのチェックサムを取得し、レジューム時にこれをチェックします。適宜有効にしてください。
  • CONFIG_TOI と CONFIG_TOI_EXPORTS は自動で =y または =m となるので設定不要です。

コンフィグ終了後、カーネルパッケージを構築 (=m の場合は、--initrd で構築) して下さい。

2.3 TuxOnIce の有効化とスワップデバイスの指定

再構築したカーネルをインストールする前に、準備が必要です。

2.3.1 カーネル組み込みにした場合

GRUB 2 の場合は、/etc/default/grub の GRUB_CMDLINE_LINUX_DEFAULT に

GRUB_CMDLINE_LINUX_DEFAULT="...resume=/dev/xdx..."

というオプションを追加します。
resume=にはスワップパーティションを指定します。
GRUB Legacy では /boot/grub/menu.lst, LILO では /etc/lilo.conf に同様のオプションを追記してください。

2.3.2 モジュール化した場合

initramfs が必須となります。

2.3.2.1 スワップパーティションの指定

initramfs-tools の postinst スクリプトによって /etc/initramfs-tools/conf.d/resume ファイルに次のようにスワップパーティションが記述されていることを確認します。

RESUME=/dev/hda3

(/dev/hda3 がスワップパーティションの場合) もしくは UUID 形式で、

RESUME=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

記述がない、スワップパーティションではないものが記載されている場合は適宜修正して下さい。

2.3.2.2 フックスクリプトの追加

初期 RAM ディスクマウント時にモジュールをロードするためのフックスクリプト /etc/initramfs-tools/hooks/tuxonice を用意します。
例:

#! /bin/sh

PREREQ=""

prereqs()
{
  echo "$PREREQ"
}

case $1 in
  # get pre-requisites
  prereqs)
    prereqs
    exit 0
    ;;
esac

. /usr/share/initramfs-tools/hook-functions

# Check for tuxonice support
TOI_OK=$(grep CONFIG_TOI\=y /boot/config-${version})
if [ -z ${TOI_OK} ] ; then
  echo "OK, TOI support skipping."
elif [ "x${TOI_OK}" = "xCONFIG_TOI=y" ] ; then
# Loading lzf modules
  if [ ! -f ${MODULESDIR}/kernel/crypto/lzf.ko ] ; then
    LZF_OK=$(grep CONFIG_CRYPTO_LZF\=y /boot/config-${version})
    if [ "x${LZF_OK}" = "xCONFIG_CRYPTO_LZF=y" ] ; then
      echo "INFO: OK, lzf in kernel."
    else 
      echo "WARNING: lzf NOT in kernel."
      echo "WARNING: Is it compiled in kernel or unsupported?"
      echo "WARNING: If you compile lzf neither in kernel nor as module,"
      echo "WARNING: TuxOnIce doesn't work properly."
      echo "WARNING: Please check settings before reboot."
    fi
  else
    force_load lzf
  fi
# Loading tuxonice modules during boot.
# tuxonice_core and tuxonice_bio are automatically loaded.
  for i in tuxonice_compress tuxonice_swap tuxonice_file tuxonice_userui ; do
    if [ ! -f ${MODULESDIR}/kernel/kernel/power/$i.ko ] ; then
      echo "WARNING: $i module NOT found."
      echo "WARNING: Is it compiled in kernel or unsupported?"
      echo "WARNING: Please check settings before reboot."
    else
      force_load $i
    fi
  done
# Copy splash images
  if [ -d /etc/splash ] ; then
    cp -ar /etc/splash ${DESTDIR}/etc
  fi
else
  echo "Un-huh, What?"
fi

ファイルには実行権限をつけてください。

2.4 レジューム用スクリプトの追加

  • /etc/initramfs-tools/scripts/local-premount/tuxonice
  • /etc/initramfs-tools/scripts/nfs-premount/tuxonice

というスクリプトを追加します。

ファイルには実行権限をつけてください。

例:

#! /bin/sh

PREREQ=""

prereqs()
{
  echo "$PREREQ"
}

case $1 in
  # get pre-requisites
  prereqs)
    prereqs
    exit 0
    ;;
esac

# Set the user interface command path
# on /sys/power/tuxonice/user_interface/program
if [ -x /usr/lib/tuxonice-userui/tuxoniceui ] ; then
  if [ -f /sys/power/tuxonice/user_interface/program ] ; then
    if [ -d /etc/splash/tuxonice ] ; then
      echo "/usr/lib/tuxonice-userui/tuxoniceui -f" > /sys/power/tuxonice/user_interface/program
    else
      echo "/usr/lib/tuxonice-userui/tuxoniceui" > /sys/power/tuxonice/user_interface/program
    fi
  fi
fi

# Do resume
if [ -f /sys/power/tuxonice/do_resume ] ; then
  echo 1 > /sys/power/tuxonice/do_resume
fi

2.5 ユーザーインターフェースのインストール、スプラッシュイメージのコピー (オプション)

以下のツールをインストールします。

但し、tuxonice-userui はメンテナンスが止まっている様なので、復活までの間は自前でビルドしてください。
こちらの*.diff.gzソース からビルドできます。

スプラッシュイメージは UserUI/Themes よりダウンロードし、 /etc/splash ディレクトリ以下にコピーします。
コピー後、/etc/splash/tuxonice というシンボリックリンクを張ります。

# ln -fs /etc/splash/<スプラッシュイメージのディレクトリ> /etc/splash/tuxonice

2.6 確認作業、再起動、テスト

各種ツール類を準備したのち、TuxOnIce 対応のカーネルをインストールします。
インストール後、

$ lsinitramfs /boot/initrd.img-(バージョン) | pager

を実行し initrd 内に

  • /etc/splash/
  • /lib/modules/(バージョン)/kernel/crypto/lzf.ko
  • /lib/modules/(バージョン)/kernel/kernel/power/tuxonice_*.ko
  • /scripts/local-premount/tuxonice
  • /scripts/nfs-premount/tuxonice
  • /usr/lib/tuxonice-userui/tuxoniceui

が存在することを確認します。
なければ、スクリプトを見直すなどして、

# update-initramfs -k (対象カーネルのバージョン) -u

問題なければブートローダの設定を再確認し、再起動します。

再起動後、

# /usr/lib/tuxonice-userui/tuxoniceui --test

を実行すると、テストできます。

# /usr/lib/tuxonice-userui/tuxoniceui --test -f [--theme [tuxonice|<other themes>]]

を実行すると、スプラッシュイメージモードでテストできます。

tuxonice_userui_001.png tuxonice_userui_002.png
上記はテキストモードテスト画面です。

2.7 実行

テストで問題なければ、

# echo > /sys/power/tuxonice/do_hibernate

を実行すると、ハイバネーションされます。

CONFIG_TOI_REPLACE_SWSUSP=y

の場合は、

# echo disk > /sys/power/state

も同じ動作をします。
電源再投入後、必ず同じカーネルで起動します。すると通常の起動処理ではなく、レジューム処理が走ります。
(違うカーネルで起動するとエラーになり、データはロストします。 また一度ハイバネーションに失敗すると、次回から "BIG FAT WARNING!!" との警告が出るようになります。)

2.4 のスクリプトで tuxoniceui に -f オプションを渡しているため、 ハイバネーション時、スプラッシュイメージモードで処理されますが、
もしテキスト方式にしたい場合は、

# echo "/usr/lib/tuxonice-userui/tuxoniceui" > /sys/power/tuxonice/user_interface/program

としてください。

3. swsusp

swsusp (Software Suspend) とはカーネル 2.6 の初期からあるサスペンド・ハイバネーションの機構です。

3.1 /proc/acpi/sleep を使用する方法 (カーネルバージョン 2.6.13 まで)

/boot/config-(カーネルバージョン) に

CONFIG_ACPI_SLEEP_PROC_SLEEP=y

がある場合は、

# echo 4 > /proc/acpi/sleep

で Suspend to Disk (Sleep State は S4) 状態に移行できます。
しかし、カーネルバージョン 2.6.13 から非推奨、 2.6.27 からはコード自体削除されているようです。

3.2 /sys/power/{disk,state} を使用する方法

3.2.1 確認

まず、

CONFIG_SOFTWARE_SUSPEND=y (2.6.0 〜 2.6.22)

または

CONFIG_SUSPEND=y (2.6.23 〜)
CONFIG_HIBERNATION=y

を有効化してカーネルをビルドします。
(Debian のストックカーネルならば有効化されています。)

カーネルインストール後

$ cat /sys/power/disk

を実行します。

[platform] test testproc shutdown reboot

という結果が表示された場合、 ACPI S4 がサポートされています。

$ cat /sys/power/state

を実行して、

mem disk

となっている場合、サスペンド (mem)・ハイバネーション (disk) 双方に対応しています。
どちらに対応しているか事前に確認して下さい。

3.2.2 resume= オプションの追加

initramfs-tools の postinst スクリプトによって /etc/initramfs-tools/conf.d/resume ファイルに次のようにスワップパーティションが記述されていることを確認します。

RESUME=/dev/hda3

(/dev/hda3 がスワップパーティションの場合)
もしくは UUID 形式で、

RESUME=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

記述がない、スワップパーティションではないものが記載されている場合は適宜修正し、

# update-initramfs -k (対象カーネルのバージョン) -u

を実行して下さい。

initramfs を使用しない場合は、 カーネルコマンドラインに resume= オプションを追加するよう、ブートローダの設定ファイルを編集します。

...resume=/dev/hda3...

3.2.3 実行

再起動を行い、

# echo mem > /sys/power/state

でサスペンドします。

# echo disk > /sys/power/state

でハイバネーションします。

4. ヘルパーツール

以下のツールは単純な操作でサスペンド・ハイバネーションできます。

CLI ツールとしては

などがあります。
インストールすると、

# pm-hibernate
# pm-suspend

などを実行できます。
各種サービスの停止と再開後の復旧措置やモジュールのアンロードと再開後のロードを行うこともできます。

KDE (Kicker, Kickoff - PowerDevil) や GNOME デスクトップ (gnome-power-manager) にはサスペンド・ハイバネーション用 のボタンがあるかもしれませんが、こちらは swsusp のみに対応していることが多いと思われます。

TuxOnIce では

CONFIG_TOI_REPLACE_SWSUSP

を有効にすると、上記ツールでも動作するようになります。

5. 注意

uswsusp について:

  • 現時点ではレジューム時のスプラッシュ処理は splashy にのみ対応しています。 Plymouth, usplash (Bootsplash) については未対応のため関連するパッケージを削除してください。

TuxOnIce について:

  • 現時点ではレジューム時に処理が競合するため、Bootsplash に関する処理を無効にし、 関連するパッケージをすべて削除してください。

サスペンドしてから指定の時間に復帰させるには?

参照:

rtcwake コマンドを使いましょう。

このコマンドはハードウェアに搭載されているリアルタイムクロック (RTC) の アラーム割り込み機能と ACPI を組み合わせて動作します。
コマンドを叩くとサスペンド (ハイバネーションも可) し、指定時間後にレジュームします。

動作には、以下の設定を有効にした Linux カーネル 2.6.22 以降と lenny 以降の util-linux が必要です。

CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_SUSPEND=y
CONFIG_HIBERNATION=y
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y (sysfs の rtc クラスを有効化)
CONFIG_RTC_HCTOSYS=y (起動時にリアルタイムクロックを同期)
CONFIG_RTC_HCTOSYS_DEVICE="rtc0" (リアルタイムクロックのデバイスファイル名)
CONFIG_RTC_INTF_SYSFS=y (sysfs インターフェース)
CONFIG_RTC_INTF_PROC=y (/proc インターフェース)
CONFIG_RTC_INTF_DEV=y (デバイスファイルのインターフェースを有効化)

(Debian のストックカーネルならば適切に設定されています。)

udev が正常に機能しており、以下のファイルが見えれば問題ないでしょう。

(N は 0 以上の整数のいずれか。大抵 0 です。)

  • /dev/rtcN
  • /proc/acpi/alarm または /sys/class/rtc/rtcN/wakealarm

考えにくいですが、見えてなければカーネルモジュールとして、rtc-* ドライバがあるのでロードしてください。

以下オプションを説明します。

-m オプションで指定の ACPI State で処理を行います。
指定可能な例:

  • standby (ACPI S1)
  • mem (ACPI S3)
  • disk (ACPI S4)

次にシステムのタイムゾーンを確認します。

システムのタイムゾーンは Debian のインストール時に設定しています。
忘れた、変更したが忘れた人は、

$ cat /etc/timezone
Asia/Tokyo

などを実行して確認してください。

念のため hwclock が /etc/adjtime ファイルに適切に書き込んでいるか確認します。
以下のコマンドを叩いて、最下行の文字列を確認するとタイムゾーンが分かります。

$ cat /etc/adjtime

実行結果:

ローカルタイム (今いる地域のタイムゾーン)

-X.XXXXXX NNNNNNNNNN 0.000000

MMMMMMMMMM

LOCAL

UTC

-X.XXXXXX NNNNNNNNNN 0.000000

MMMMMMMMMM

UTC

上記のように

  • /etc/adjtime ファイルが適切に設定されているならば、-a

考えにくいですが、適切に書き込まれていない場合は以下の 2 つのどちらかを選択します。

  • リアルタイムクロックがローカルタイムに設定しているならば -l
  • UTC ならば -u

としてください。

以下のオプションはどちらか一方を使用します。

  • -s オプションの引数にレジュームまでの時間 (単位: 秒) を与えます。

  • -t オプションの引数にはレジュームさせたい時刻 (但し、UNIX time で指定) を与えます。

実行例:

サスペンド後 10 分後に起動させたい場合は、

# rtcwake -a -m mem -s 600

システムのタイムゾーンがローカルタイムでサスペンド後 3 分後に起動させたい場合は、

# rtcwake -l -m mem -s 180

サスペンド後 2011/01/01 09:00 に起動させたい場合は、
まず該当する時刻を UNIX time に変換

$ date +%s --date "2011-01-01 09:00"
1293840000

そして

# rtcwake -a -m mem -t 1293840000

一挙に実行する場合は、

# rtcwake -a -m mem -t `date +%s --date "2011-01-01 09:00"`


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-10-27 (水) 11:53:22 (2437d)