_ [comp] swsusp2 (swapfile+swapwriter) を試す

Software Suspend を試してみる。以下試してみた手順。

  1. kernel 2.6.12.4 に Stable Patches 2.1.9.5 を当てる。UNICON patch が当たっていてもそのまま当たった。

  2. Patching the kernel の通りに kernel config。

    CONFIG_SUSPEND2=y
    CONFIG_SUSPEND2_FILEWRITER=y
    CONFIG_SUSPEND2_SWAPWRITER=y
    CONFIG_SUSPEND2_USERSPACE_UI=y
    # CONFIG_SUSPEND2_TEXT_MODE is not set
    CONFIG_SUSPEND2_DEFAULT_RESUME2=""
    # CONFIG_SUSPEND2_KEEP_IMAGE is not set
    CONFIG_SUSPEND2_CHECK_RESUME_SAFE=y
    
    CONFIG_CRYPTO_LZF=y
    
  3. kernel compile & install。

  4. hibernate を install。

  5. スワップパーティションのないマシンなので、Using a swapfile の通りスワップファイルを使う。

  6. 512MB のスワップファイルを作成。

    # dd if=/dev/zero of=/var/lib/swsusp2/swap bs=1M count=512
    # mkswap /var/lib/swsusp2/swap
    # swapon /var/lib/swsusp2/swap
    
  7. ヘッダロケーションの確認。

    # cat /proc/software_suspend/headerlocations
    For swapfile `/var/lib/swsusp2/swap           `, use resume2=swap:/dev/<partition name>:0x******@4096.
    

<partition name> はスワップファイルを置いているパーティション。ここでは /dev/hda2 に置いてあるとする。

  1. /boot/grub/menu.lst のカーネルパラメータに追加。

    kernel          /boot/vmlinuz-2.6.12.4-XXXXXXXX root=/dev/hda2 ro resume2=swap:/dev/hda2:0x******@4096
    
  2. /etc/hibernate/hibernate.conf に追加。

    SuspendDevice swap:/dev/hda2:0x******@4096
    
  3. 電源ボタンを押したらサスペンドするように /etc/acpi/powerbtn.sh を編集。

    -    /sbin/shutdown -h now "Power button pressed"
    +    echo "/var/lib/swsusp2/swap" > /proc/software_suspend/swapfilename
    +    /usr/sbin/hibernate
    

以上を行った上で reboot。これで電源ボタンを押すことでサスペンドするようになった。console 上でも X 上でも問題なし。レジュームは普通に boot するだけで OK。レジュームさせないときはカーネルパラメータに noresume2 を追加して boot。

_ [debian] sysvinit 2.86.ds1-1vd1

起動時の

find: warning: you have specified the -depth option after a non-option argument !,
but options are not positional (-depth affects tests specified before it as well as those specified after it).
Please specify options before other arguments.

がいい加減うざったくなってきたので、#281651 のパッチを当てて作成。