_ [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 に置いてあるとする。

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

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

     SuspendDevice swap:/dev/hda2:0x******@4096
    
  10. 電源ボタンを押したらサスペンドするように /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 のパッチを当てて作成。