VAIOのハイバネ領域
Hibernation (冬眠)
調べただけじゃもったいないので、VAIOノート(PCG-F36)のハイバネーション領域を作りました。その結果めでたくlinuxでも bios サスペンドできるようになりました。
本家sonyの記事では dos 上でPHDISK.EXE と云うツールを使うとあるので、こことかここを読むと、C:ドライブの中に SAVE2DSK.BIN というファイルを作り、そこにメモリデータを保存する方法と、独自パーティションを作成し、そこに退避する方法が書いてあります。
C:\WINDOWS> PHDISK.EXE /CREATE /FILE /RAM192 C:\WINDOWS> PHDISK.EXE /CREATE /PARTITION /RAM192linux で bios サスペンドを利用する場合には後者でコマンドを実行することになるけど、これが曲者で、デバイス名 /dev/hda4 でディスクの最後に領域をつくるらしい。しかも bios の制限から 8.4GB以内の領域となる。これでは8.4GB 以上容量があるディスクでは分断されてしまい、極めて不便です。
そこで、あらかじめ ID=A0 でパーティションを作って置き、その後 PHDISK.EXE を実行すると云う方法もあるらしいのですが、もともと windows 以外のことは考えてないソフトだろうから、何が起きるか解ったものではありません。
ml などで調べた結果lphdiskを使うのが良いらしいので試してみました。以下その手順を書きます。
lphdisk-0.9.1.tar.gzをダウンロードします。
$ tar -xvzf lphdisk-0.9.1.tar.gz $ cd lphdisk-0.9.1 $ makeでカレントに lphdisk ができます。(gcc-2.95.3 ではビルドできましたが、seed の gcc-3.3.2 では直しが必要です) lphdisk のreadmeを読むと次のことが解ります。
- ハイバネーションの領域はプライマリ・パーティションにすべき
- パーティション・タイプは a0 (the IBM "ThinkPad" Hibernation format)
- 必要なサイズは (物理メモリ+ビデオメモリ+予備) (必要なサイズは lphdisk --probeonly を実行しても得られます。実際はこの値を使いました)
Device Boot Start End Blocks Id System /dev/hda1 1 382 3068383+ 7 HPFS/NTFS /dev/hda2 * 383 892 273105 83 Linux /dev/hda3 893 926 273105 A0 IBM Thinkpad hibernation /dev/hda4 927 2432 12096945 5 Extended /dev/hda5 927 1564 5124703+ b Win95 FAT32 /dev/hda6 1565 1598 273073+ 82 Linux swap /dev/hda7 1599 1726 1028128+ 83 Linux /dev/hda8 1727 2432 5670913+ 83 Linuxリブート後 lphdisk を実行し、ハイバネ領域をフォーマットします。
# lphdisk /dev/hda Reccomended partition size is 261 MB (533378 sectors) Creating hibernate area on /dev/hda, partition 3... Formatting sector 546210 of 546210. (sectors of 512 bytes) Format complete.その後 Phoenix BIOS に認識させるためリブートし、[Fn]+[F12]を押すと一瞬 X11 の画面がくずれますが、その後サスペンド画面が現れサスペンド状態に移行します。サスペンドからの復帰は電源ボタンONです。
これを windows2000 でも試したのだけど、どうやら win の場合BIOS サスペンドではなく独自の処理をしているらしい。やはりVAIOのファイルシステム壊した嫌疑は晴れないようです。迷宮入りが濃厚ですが...