Email: Takayama Fumihiko <tekezo@pqrs.org>

ThinkPad X40 でリカバリ CD を作らずに Linux 等をインストールした場合の Windows のリストア方法

ThinkPad X40 でリカバリ CD を作らずに Linux 等をインストールした場合の Windows のリストア方法

X40 で Windows を消去して Linux を入れた場合、 リカバリ領域から Windows をリストアしようとしても以下のエラーで止まってしまいます。

STOP: c000021a {Fatal System Error}
The Session Manager Initialization system process terminated unexpectedly with a status of 0xc000003a (0x00000000 0x00000000).
The system has been shut down.

img/20040912-full-dsc01340.jpg img/20040912-full-dsc01339.jpg img/20040912-full-dsc01326.jpg

もし、リカバリ CD を作っていれば簡単にリストアすることが出来るのですが、 リカバリ CD を作らなかった場合のリストア方法です。

開始時のステータス

以下の条件下で Windows XP をリストアします。

  1. リカバリ領域 (HDD の後ろ 5GB) を残しつつ Linux をインストールしている。
  2. 諸般の事情で Windows XP をリカバリしないといけない。
  3. リカバリが上記のエラーで起動しない。
  4. 無論リカバリ CD なんて作ってない。
  5. 手元に X40 は一台なので他のマシンでリカバリ CD 作るのは無理。
  6. 手元には Windows XP Professional のメディアも無い。
  7. 手元に「別のマシン」 or 「外付け HDD のような別メディア」がある。

リストアの途中で一度リカバリ領域を別メディアに退避させる必要があるので、 別のマシンか外付け HDD などが必要になります。

RRRR について (1)

RRRR の動作として注意すべきところとして以下の問題点があります。
  1. ウィンドウシステムやリカバリ等に使用するファイルは「ディスク上の最初の FAT32 (or NTFS) パーティション」にあるファイルを使う。
  2. リカバリしても MBR は復旧しない

例えば、パーティション構成が以下の場合、
  • /dev/hda1: FAT32 [30GB]
  • /dev/hda3: reiserfs [5GB]
  • /dev/hda2: RRRR 領域 (System ID = 0x12) [5GB]
RRRR は hda1 からファイルを読み込んでリストアを始めようとします。

RRRR について (2)

そのため IBM 謹製の MBR に入っていたブートローダは以下のような流れを取っていると思われます。
  1. ブートメニューを表示
  2. RRRR が選択された場合、/dev/hda1 の System ID を 0x12、 /dev/hda2 を 0xc (FAT32) に変更して RRRR を起動
こうすることで RRRR が認識できる FAT32 パーティションは /dev/hda2 となり、リストアが可能になっていると思われます。


そこで、以下の作戦を取ることでリストアを可能にします。
  1. RRRR 領域の System ID を 0xc に変更する
  2. RRRR 領域がディスク上の最初の FAT32 パーティションになるように調整する

RRRR について (3)

「リカバリしても MBR は復旧しない」ということは、ディスク全体をリカバリするだけでは
  1. MBR に grub をインストールしている
  2. ディスク全体をリカバリする
  3. Linux パーティション (grub の stage2 があるパーティション) が消える
  4. MBR は grub のまま
  5. grub が stage2 に行けずにブート不可
という流れになってしまいます。

そのため、Linux のパーティションを保存したまま、ディスクの一部分に Windows をリストアする必要があります。

復旧作業(1)

まずは /dev/hda2 のイメージを取ります。
# dd if=/dev/hda2 of=thinkpad-x40-hda2.image

これで thinkpad-x40-hda2.image なる 5GB のファイルが得られます。

このファイルが無くなるとリストアが不可能になってしまうので、慎重に扱いましょう。
(逆にコレさえあれば、どんな状態からも復旧可能)。

このファイルを他のマシンやメディアに退避させます。 (ファイル退避の例)

# lftp tekezo@backup.lan.tkym.org
> put thinkpad-x40-hda2.image

復旧作業(2)

パーティションの調整を行うために Linux を再インストールします。

以下のパーティションになるようにインストールしましょう。

このインストールで RRRR 領域が消去されます。 インストールする前に RRRR 領域のリストアをお忘れなく。
   Device Boot      Start         End      Blocks   Id  System
/dev/hda2   *       19377       38752     9765504    c  W95 FAT32 (LBA)
/dev/hda3           38753       58128     9765504   83  Linux
/dev/hda4           58129       77520     9773568    c  W95 FAT32 (LBA)
  • /dev/hda2 は RRRR 領域として使う
  • /dev/hda4 はリカバリの際に「ディスク全体のリカバリ」をさせない為のダミーパーティション

復旧作業(3)

RRRR のイメージを /dev/hda2 にコピーします。

thinkpad-x40-hda2.image を復旧してから以下のコマンドを実行します。

# dd if=thinkpad-x40-hda2.image of=/dev/hda2 bs=8192

復旧作業(4)

RRRR を grub からブート可能します。 /boot/grub/menu.lst に以下の内容を追加。

title         RRRR
root          (hd0,1)
makeactive
chainloader   +1

復旧作業(5)

RRRR を起動してリストアを行います。

ここでは「C:\ 区画のみをフォーマットします。」を選択します。

img/20040912-full-dsc01336.jpg img/20040912-full-dsc01346.jpg

リストアが完了すると /dev/hda1 に Windows XP がリストアされます。

復旧作業(6)

とりあえず Windows XP が起動するので、自動パッチ当てとかを見守ります。

自動パッチ当ての最中に RRRR 領域の System ID 0xc から 0x12 に戻す作業があるようで、 特定の再起動のタイミングで grub が stage2 に進めなくなります。

そうなったら Linux を /dev/hda3 に入れ直して grub を復旧させます。

復旧作業(7)

購入時の状態に戻っているので Windows XP を起動してからリカバリ CD の作成を行います。

リカバリーCDの作成手順 をもとにディスクを作成します。

復旧作業(8)

最後にリカバリ CD から復旧を行うと MBR を含めた全領域が出荷時に戻ります。


Comments for This Page.
Date: 2004-09-15 00:00 (JST)