TuxOnIce で resume 失敗 -> USB メモリから rescue boot.

suspend のイメージを swap へ変えようとしたのだけれど, grub の update を忘れていて嵌る.
幸い妹が USB メモリを持っていたので, dual boot の Windows 側で USB メモリで installer を作成し, レスキューブートしてファイルを修復し, 事無きを得る.

「resume 時に異なるカーネルから起動するとマジ死亡だから注意」を体験.

教訓の為にメモしておく.

事の発端.

TuxOnIce(旧 Software Suspend2) で, 今迄 FileWriter を使っていたんだけど, resume する image を変えたり, 別に保存する必要も無いので SwapWriter に戻そうとした.

やることは

  • /etc/hibernate/suspend2.conf の修正
  • /etc/default/grub の修正
  • /sbin/update-grub
  • 再起動
  • suspend, resume の確認

な訳ですが, 再起動せずに suspend しちゃった訳.

で,
「resume しないな」
「あ, grub のパラメタ違うじゃん」
「update-grub
再起動
「を, resume したよ...あれ? read-only?」
なんと /etc/fstab が無い(笑)

initrd があって, grub で root を指定しているので, 起動はできる. けれど /proc が無いので全て read-only になっちゃう. single user mode で /etc/fstab を作成しようにも駄目. うーん.

USB メモリに Debian installer をセットアップ.

USB メモリがあったので, Debian installer 作成し, resuce boot してみることに. 作成手順は以下の通り.

  # mkfs.msdos -I /dev/sda     [sda は USB メモリのデバイス]
  # mount -t ntfs /dev/hda1 /NTFS   [ /NTFS は依然から存在していた. 
                                      無かったらどうすんだろ. /home ?]
  # zcat /NTFS/boot.img.gz > /dev/sda

  # mount -t vfat /dev/sda /mnt
  # cp /NTFS/**.iso /mnt
  # umount /mnt
  # umount /NTFS
  • 再起動後, Windows 側へ.
  • syslinux で SYSLINX MBR を install.
    • USB メモリが D: と認識されたなら, cmd 上で
  # syslinux -a D:
  • 再起動して USB メモリから boot.

...を, ちゃんと起動したよ.

rescue 作業

Debian Installer で resuce boot して, shell へ行き, nano で /etc/fstab を書いた. その後, fsck.ext3 を実行して再起動.

続いて, lost+found 以下のファイルの復旧を試みる. 調べてみると, 主に /proc/数字, だったので一安心.

...他に壊れている所があると嫌なんで, もう一度 fsck.ext3 をかけてみたが, とりあえず問題無いみたい.

...ああ, 焦った.