リカバリ領域の「.swm」イメージから「回復ドライブ」を自作してリカバリに成功した一事例

 お客様より「Windowsが起動しなくなった」とのことでお預かりした、 VAIO Fit 15E VJF1511。実際に動作を確認してみますと、「Windowsの起動に失敗しました」と表示されます。
 画面の表示だと「BIOSの設定値が正しくない場合は、設定を初期化することで復帰できることがあります」とあるので、 試しにBIOSの設定値を初期化してみました。が、改善せず。自動的に「VAIO レスキューモード」が起動しました。
 リカバリの必要があるかもしれない、ということで、お客様へその旨をお伝えしたところ、「中にまだデータが残っている」 とのことであったため、とりあえずHDD内を参照したところ、データ自体はそのまま残っていたため、 必要なものを先に救出し、リカバリの承諾を頂きました。
 ところが、いざ「トラブルシューティング(リカバリ)を開始」を選択しても「起動に失敗しました」。 「内蔵ハードディスクまたはSSDのリカバリー領域から起動できませんでした」となります。

 エラー画面の右下に「Code:02」と出ていたため、検索をかけてみたもののこんな情報があるくらいでした。

SONY – [VAIO Care(レスキューモード) Ver.3.2] Windowsの起動時に表示されるエラーコード一覧

 要するに、「BIOS設定値を初期化する」か、「リカバリーメディアからリカバリを行う」かを試してください、と。 前者については既に試しているものの改善がなかったため、リカバリメディアからの復元を行おうかと考えたものの、 お客様に確認したところ、「持っていない」とのこと。

 困った。

 VAIO には、「リカバリーメディア送付サービス」なるものがあり、最悪メディアを取り寄せてしまえばリカバリは可能っぽいのですが、データ救出時についでに確認したところ、 リカバリ領域もそのままの形で残っているっぽいので、それは何となくシャクなのでした。
 できればこのまま何とかリカバリできないものか、と色々調べて色々試してみたのですが、少なくともHDDリカバリは結局かないませんでした。
 ならば、「もしリカバリ領域内のデータが無事であるならば、そのデータを用いてリカバリメディアを自分で作って、リカバリを試してみよう」 との考えに至りました。

 
スポンサーリンク

 結論を先に書きますと、このリカバリメディアを自作する試みは成功しました。以下に手順を記載します。

 これから記載する記事は あくまで一事例であり、全ての同様の状況において効果的である保証はありません。 同様の症状を抱えており、以下手順をお試しになる方は「うまくいったらラッキー」程度にお考えください。 また、意図しない結果となった場合にも当方は一切の責任を負いかねますので、自己責任でお願いいたします。

1.別のPCで、「回復ドライブ」を作成する
 このPCは Windows 8.1 Pro 64bit であったので、手持ちの Windows 8.1 Pro 64bit PC で回復ドライブを作成しました。 回復ドライブを作成するUSBメモリは容量に余裕があったほうがいいです。また、回復ドライブを作成する際に中のデータはすべて削除されるため、 必要なデータがある場合にはバックアップをお忘れなく。
 手元に同一bitの Windows 8 PC がない場合には、このあたりが参考になるかもしれません。 実際には試してはいないので確約はできませんが、この方法で回復ドライブを作成してもOKな気がします。

Microsoft – PC のリカバリー機能を実行するためのメディアを作る

2.回復ドライブからPCを起動
 回復ドライブをPCへ挿し、USBメモリから起動すると、「トラブルシューティング」、「PCの電源を切る」、の項目が出ます。 前者を選択し、続いて「詳細オプション」を選択。
(蛇足となりますが、「PCのリフレッシュ」「PCを初期状態に戻す」を行ってもPCの修復はこの時点ではできませんでした)
 「コマンド プロンプト」を選択し、起動。

3.リカバリ領域の可視化
 コマンドプロンプトで、「diskpart」と入力し、Enter。DiskPartを起動。その後の流れは以下の通り。

「list volume」と入力、Enter。
→ このPCに接続されているストレージのボリューム一覧が表示されます。 ここでリカバリ領域のボリューム番号を確認します。

「select Volume #」と入力、Enter。
→ 「 # 」には先に確認したリカバリ領域のボリューム番号を入力してください。 うまくいくと「ボリューム # が選択されました。」と表示されます。

「assign letter=r」と入力、Enter。
→ 「 r 」部分は、先に確認した各ボリュームの「Ltr」列に未だ割り振られていないアルファベットであれば何でもいいです。 ここでは便宜的にリカバリ領域だからということで「 r 」としました。 うまくいくと「DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。」と表示されます。

「list volume」と入力、Enter。
→ 確認のため、念のため今一度ストレージのボリューム一覧を表示してみます。 リカバリ領域パーティション部分の「Ltr」列に先に指定したドライブレターが割り当てられていればOK。

「exit」と入力、Enter。
→ DiskPart を終了します。

4.リカバリ領域から必要なファイルの取り出し
 コマンドプロンプトで、「r:」と入力し、Enter(「r」は先に指定したリカバリ領域のドライブレターに適宜置き換えてください)。 これによりフォーカスがリカバリ領域に移ります。
 続いて、「cd recovery」と入力し、Enter。リカバリ領域内の「Recovery」フォルダにフォーカスが移ります。  この辺のフォルダ名などは恐らくPCの機種やメーカーによって異なる部分かと思われます。ちなみに今回の事例で必要となったファイルは以下の5つでした。

・ RESETCONFIG.xml
・ CREATE_ALL_PARTS.DPS(*)
・ Install.Swm
・ install2.swm
・ install3.swm

★ ここから脇道 ★

 これらのうち、リカバリイメージの実体はswmファイルですが、 この3ファイルだけを回復ドライブの所定のフォルダへコピーしてもリカバリできませんでした。
 また(*)のファイルは、リカバリ時のパーティション構成を規定しているものなのですが、 このPCでは「CREATE_ALL_PARTS.DPS」という名前になっているだけのことであり、PCによって異なるもののようです。 厳密に述べると、「RESETCONFIG.xml」を「メモ帳」や Webブラウザ で開くと記載されている、
<DiskpartScriptPath>(***)</DiskpartScriptPath>
の「(***)」に当たるファイルが必要になる、ということです。
 またさらに、このPCではリカバリイメージは3つの .swm ファイルに分割されていましたが、 機種によっては .wim ファイル一つにまとめられている場合もあります。 その場合、FAT32フォーマットの制約により .wim ファイルのサイズによっては回復ドライブにコピーできないこともあるため、 「.wim ファイルの分割」の作業が追加で必要となります。 .wim ファイルの分割については、以下のWebサイトが参考になるものと思われます。

Microsoft – Windows イメージ (.swm) ファイルを複数の DVD にまたがるように分割する

★ ここまで脇道 ★

 「copy resetconfig.xml d:\sources」と入力、Enter。「d」には回復ドライブのドライブレターを入力して下さい。 これにより回復ドライブ内「sources」フォルダ内に「RESETCONFIG.xml」がコピーされます。
正常に終了すると、「1個のファイルをコピーしました。」と表示されます。  同様に、

「copy create_all_parts.dps d:\sources」と入力、Enter。
「copy install.swm d:\sources」と入力、Enter。
「copy install2.swm d:\sources」と入力、Enter。
「copy install3.swm d:\sources」と入力、Enter。

 ちなみにswmファイルのコピーについては、「copy *.swm d:\sources」と入力してEnterを押下すると、3つのファイルのコピーが一度になされます。 ファイルサイズが大きいので、時間が結構かかります。
 なお、「\(半角 バックスラッシュ)」が表示されている場合、それは「¥(半角 円マーク)」にあたります。

 別のPCがある場合には、それに渦中のPCのHDDと回復ドライブとを接続し、コピーを行う手もあります。

5.リカバリの実行
 コマンドプロンプトを終了し、PCの電源を切ります。
 VJF1511の場合、「F3」か「F4」を押しながら電源を入れることによって「VAIO レスキューモード」が起動します。 「USB メモリーやディスクから起動」を選択して、回復ドライブからPCを起動させます。

【キーボード レイアウトの選択】で「Microsoft IME」を選択。
【オプションの選択】で「トラブルシューティング」を選択。
「PCを初期状態に戻す」を選択。
【目的のオペレーティング システムを選んでください。】で「Windows 8.1」を選択。
(当方の場合は予めDiskPartの「delete partition」コマンドで全てのパーティションを削除していたため、表示されませんでした。 ちなみにいわゆる「Cドライブ」以外は保護パーティションであるので、「override」パラメータを追加して削除を行いました)
【この操作を行うと:】で「次へ」を選択。
「はい、ドライブのパーティション分割をやり直します」を選択。
「ドライブを完全にクリーンアップする」を選択。
「初期状態に戻す」を選択。

 以上の手順でリカバリがなされました。
 事前に救出しておいたユーザデータを各所に戻し、お客様へ無事納品できました。

★ オマケ話 ★

 「RESETCONFIG.xrm」ではリカバリを行うストレージの最小サイズが規定されています。 メモ帳などでこのファイルを開くと、「64200」などという記述がありますが、これは、 「利用可能なストレージの最小サイズは64200MB」という意味となります。 それよりも小さいストレージが搭載された状態でリカバリをしようとすると途中までは進むものの、 「PCを初期状態に戻すことができません。パーティション分割をやり直すにはドライブが小さすぎます。」 となり、リカバリ自体ができません。
 これを回避するには、ここの数値を、搭載するストレージ未満のものに書換えて上書き保存すればOK。

★ とてもためになったWebサイト様 ★

フツミタマ – リカバリー奮闘
SE の雑記 – カスタムインストールメディアの作成方法について調べてみました

【2016/03/12:新規投稿】
【2016/05/06:ページ移動,追記】

  • スポンサーリンク
  • スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です