So-net無料ブログ作成

VAIO TZのXP化 完全版 その1 リカバリディスクからファイル取り出し

【2008/3/11追記】
VAIOリカバリディスクからの取り出しの説明が、下記では煩雑なので簡単版としてVAIOリカバリディスクからのファイル取り出し 簡単版にまとめました。

VAIO TZ91(TZの2代目シリーズ)のWindows XPへのダウングレード方法は、以下の通り。

  1. リカバリディスクからファイル取り出し
  2. ドライバ類の収集
  3. XPのクリーンインストール
  4. ドライバのインストール
  5. アプリケーションのインストール
といった順番になる。
上記2~5については、下記参照先サイト等でも記載されている。

1についてはVAIOのリカバリディスクの形式が変わったため、従来のkcap等のツールが利用できなくなり、いろいろ調べたがリカバリディスクからのアプリケーション等の取り出しに成功したという情報が見つからなかった。試行錯誤の結果、以下の方法で何とか成功した。
 まずは、上記1についてまとめ、2以降順次まとめる予定。

リカバリディスクの形式

 以前のVAIOのリカバリディスクは、アプリケーション毎に.pacという拡張子のファイルに圧縮されていて、kpac等で解凍できた。TZ*1シリーズからは、リカバリディスクをみると、.MODというファイル名でアプリケーション毎に圧縮されているようである。
 ここで、.MODファイルをバイナリエディタで見ると、ファイルのヘッダが以下の2種類あることがわかる。

  • 形式A
    「4D 53 57 49 4D 00 00 00 D0 00 00 00 00 0D 01 00」(16進数)
    「MSWIM...ミ.......」(文字表示)
  • 形式B
    「1E 3C 39 30 6D 43 6F 72 A0 6F 72 61 74 64 6E 6E」(16進数)
    「.<90mCor.oratdnn」(文字表示)

 また、これとは別に、「.wim」という拡張子のファイルも見つかる。このファイルは、Microsoft Windows Imaging Format (WIM) イメージ形式のファイルである。詳細は、ImageX と WIM イメージ形式
 これは、Windows AIKを使ってファイルの中身を取り出すことが可能である。まずは、Windows AIKを作業PCにインストールする。作業PCは、XPの方がよい。Vistaはユーザ権限とかが面倒。スタートメニューから「Windows PE Tools コマンド プロンプト」で、DOS窓を開き、「imagex /mount イメージファイル名 マウント先ディレクトリ」でマウントし、マウント先のディレクトリからファイルを取り出すことができる。
 拡張子が.MODのファイルの上記形式Aは、このWIM形式であり、imagexコマンドを使ってマウントすることができる。さらに、実は上記形式Bも基本的にはWIM形式らしい。しかし、そのままではimagexがファイル形式を認識できずマウントすることができない。そこで、おそらくファイル形式はファイルヘッダで判断するであろうということで、バイナリエディタを用いて形式Bのファイルの先頭16バイトを、形式Aの先頭16バイトで上書くと、imagexでマウントすることが可能になる。

イメージファイルからのファイル取り出し

 上記方法でMODファイルからファイルが取り出せるが、バイナリエディタですべてのファイルのヘッダを書き換えるのは非常に手間なので、以下のようなスクリプトを作った。

Dim sIn, sOut

inputfile = WScript.Arguments(0)
file = Mid(inputfile, InStr(inputfile, "MOD-"))
appname = Left(Mid(file, 5), Len(file)-8)
outputfile = appname + ".wim"

Set f = WScript.CreateObject("Scripting.FileSystemObject")
f.CreateFolder ".\" + appname

Set sIn = CreateObject("ADODB.Stream")
Set sIn2 = CreateObject("ADODB.Stream")
Set sOut = CreateObject("ADODB.Stream")

sIn.Type = 1 ' バイナリーモード
sIn2.Type = 1 ' バイナリーモード
sOut.Type = 1
sIn.Open
sIn2.Open
sOut.Open

sIn.LoadFromFile(inputfile)
sIn2.LoadFromFile("head.dat")

line = sIn.Read(16)
line = sIn2.Read(16)
sOut.Write line

Do Until sIn.EOS
  line = sIn.Read(256)
  sOut.Write line
Loop

sOut.SaveToFile outputfile, 2 '上書きモード

sIn.Close
sIn2.Close
sOut.Close

 これを、ch.vbsという名前で保存する。また、head.datという名前で、「4D 53 57 49 4D 00 00 00 D0 00 00 00 00 0D 01 00」の16バイトのファイルを作成する。コマンドプロンプトから、「wscript ch.vbs イメージファイル名」とすると、カレントディレクトリに、ファイルヘッダを書き換えて、.wimという拡張子でファイルが作成される。
 あとは、上記スクリプトを実行して、imagexでマウント、ファイル取り出しをするようなバッチファイル等を作成して、さらのそのバッチをイメージファイルの数だけ繰り返すようなバッチを作れば、一気にファイルが取り出せる。

イメージファイルからファイルを取り出すバッチ ch.bat
wscript ch.vbs %1
imagex /mount %2.wim 1 d:\mnt
xcopy /E /H d:\mnt %2
imagex /unmount D:\mnt
上記バッチを繰り返すバッチ all.bat
call ch.bat "D:\DATA\2007\03\JP_20070315000000000000000000009\MOD-MUSIC_SERVER_CONTROLLER 1.1.mod" "MUSIC_SERVER_CONTROLLER 1.1"
call ch.bat "D:\DATA\2007\05\CN_20070528000000000000000000004\MOD-NORTON_FACTORY_FILE_J_A_C 1.0.mod" "NORTON_FACTORY_FILE_J_A_C 1.0"
参照サイト
VAIO TZのXP化シリーズ


nice!(0)  コメント(4)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 4

つちー

はじめまして。

非常に参考にさせていただいております。
先日、TZ-72のXp化に思い切ってチャレンジしてみました。
リカバリーディスクからのアプリの取り出しは、諦めておチャレンジですので現在、下記のドライバーがインストールされていない状況です。
できればこのままずっと使いたいと思いますが、このまま使い続けて問題ないでしょうか?
お忙しいところ本当に申し訳ないんですが、ご教授いただければ幸いです。

【不明なドライバ】
・BCM2046 bluetooh device
・CXD 9192 controller
・基本システムデバイス×2ケ(指紋認証・ワンセグチューナー?)
・Infineon Trusted Platform Module

by つちー (2008-03-06 17:12) 

moro

CXD 9192は、ワンセグチューナーだったと思います。
bluetooth、ワンセグ、TPMを使わないのであれば、ドライバがインストールされていなくても、たぶん問題ないのではないかと思います。
by moro (2008-03-11 01:22) 

Elise111R

くだらない話で、かつ今更ですが、先頭16Byteは
Sony Corporation
のasciiコードとXORを取るとWIM形式に戻ります
by Elise111R (2008-04-30 21:35) 

leap

RM95CUSを利用しています。Windows7をクリーンインストールしようと思うのですが、CS3のみ、MODがWIM形式に戻りません。3GBとファイルサイズが巨大だからでしょうか?
by leap (2009-09-09 02:12) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。