2012年1月13日金曜日

NECのリカバリ領域をDELLコンピュータに再現してみた。

職場にNEC LL370(傘下の会社で調達した家庭用PC)を捨てていかれたので、研究がてらリカバリ領域をDELLのD430に移してみることにした。

実際、NECのPCなので当然リカバリ領域を起動するとNECの機器チェックに遭い、満足な起動すらできないのだが何とかしてGHOSTの起動までこぎつけた記録を記しておく。なお、中にはNECのマル秘事項となると思われる部分があるので慎重な取り扱いをお願いしたい。
なお、もう古い機械なのでそうそう問題はないと思うがNECの御関係者がご覧になり、もし権利上の問題があるようならば御一報願いたい。

1.リカバリ領域のコピー 実機は不可視領域になっていると思われるので、この属性を変える必要がある。ドライブレターを付与してやるだけでいけると思うが、工人舎PCではファイルまで不可視属性がついていた覚えがある。私は、リカバリ領域を一旦GHOSTイメージに格納した上で、GHOSTエクスプローラーで実機のリカバリイメージを削除した後、コンパイル→別のファイル名で保存した。このイメージを実験機のハードディスク最後尾パーティションに展開した。
2.リカバリ領域の起動 D430はハードディスクリカバリに対応していない旨DELLからもアナウンスがあるが、普通にPE領域を起動するだけなのでSystem CommanderやNT Loaderなどいろいろ起動する手段はあるはずだ。PE自体はなんのチェックもしていないので、起動できれば(パーティション内のLoaderに引き渡せれば)素直に起動する。
3.機器チェック NECのリカバリの機器チェックは厳しい。以前、PC-98では、ハードディスクの容量チェックを行いリカバリできる対象機器を激しく制限していた。そこで、戻り値をすべて対象機器にしてしまうプログラムがフリーソフトで公開されていたりもした。私の場合、バッチファイルの中の機器チェック自体を外してしまったが。今回もその手法を採用した。
PEは起動時、%SYSTEMROOT%\System32\WINPESHL.EXEをまず起動し、WINPESHL.INIに書かれた内容をシェルとして起動する。そこに書かれた内容は『%SYSTEMROOT%\System32\CHKENV.exe』であるので、どうもそのへんに機器チェックがありそうだ。
機器(モデル)チェックもあちこちに格納されており結構混乱したのだが、数時間を費やし解析をしたところ『CHECKG.BAT』により実施されているようだ。
そこで、CHECKG.BATを書き換えてみる。
特定の機器モデルの次行に『IF ERRORLEVEL=1 GOTO exit』と書かれているので、おそらくそれ以外は『1』となり、『本機では再セットアップすることはできません。この画面を終わらせるには、電源を切ってください。』が出るのだろう。これを回避するためには、対象機器の戻り値を調べなければならないが、そんな技量は私には存在し得ないので、当てずっぽで『0』を無理やり返してやることにした。
こんな感じか…。
------------------------------------------------
@echo on
cd %windir%¥system32
rem %windir%¥system32¥check.exe ← REMっちゃう。これが機器チェック。
type 0 > nul ← なんと0をNULっちゃう。
IF ERRORLEVEL=1 GOTO exit ← これは余分だな。全部対象機器判定だから(笑)。
-------------------------------------------------
これで、リカバリメニューの最初の画面が起動するようになった。案外正解。
4.GHOSTオプション \RESTORE\TOOLS\内に『RESTORE.TXT』なるものがあり、ここで、GHOSTファイル名を指定しているような気配を感じたので書き換えたが、実際はなんのパラメータも拾っていない様子である。
5.最後の難関GHOSTパスワード 上記までの結果で実際にリカバリを走らせてみると、『あんたの命令は-PWDを与えているけれども、あんたの使ってるGHOSTイメージはパスワード使ってないじゃん』というメッセージが英語で現れリカバリできない。これはさすがに悩んだ。なんせ、バッチを解析してもファイルを探してもそれらしい記載は出てこない。また、GHOST実行ファイルにめがけてコマンドオプションの記録をやらせようと企んでみたが、どこから送られてくるのかもわからなかった。今回の解析もこれで終わりか、とあきらめの心境に陥ったが、あてずっぽで『NECREST.exe』のバイナリを解析してみたら一発でわかった。
ちなみに、パスワードは2箇所に記載され、GHOSTイメージは基本的に3つあるのだが、どれがなんのパスワードかは解析していない。富士通のGHOSTイメージのパスワード解析は簡単だが、NECは過去に破ったこともなくいったいどんなパスワードなのかかねてから不思議に思っていたが、やっと長年の疑問が解決した。これで、会社の実機でハードディスクに格納されたリカバリ用イメージからネットワークを通じた展開ができるようになる。今回の本当の目的はコレである。
もし、\RESTORE\TOOLS\NECREST.exeを使用したければ、"-PWD=XXXXXXXXXX"を"00"で埋めてやる必要がある。スペース("20")では駄目。

4 件のコメント:

  1. NECREST.exeの中のパスワードの記載場所を教えていただけないでしょうか。

    返信削除
    返信
    1. なかなかやりますね(笑)。こんな記事でも参考にされている方がいるかと思うと喜びもひとしおでございます。
      何分昔の記事なのであまり明確に覚えていないのですが、バイナリエディタで『PWD=』を検索した覚えがあります。多分、NECRESTのバージョンによってその位置が変わってくると思いますので、お手持ちのNECRESTをバイナリエディタで検索していただいたほうがよろしいかと思います…。
      すいません。昨日コメントをいただいたのですが、私、昨日会社でサーバの電源を落とすために徹夜だったものですから、お待たせして申し訳ございません。

      削除
  2. NEC-PC-VL370EDにて。

    周辺機器を変えていないのにScreenlock.exeが働いてリカバリーができませんでしたが
    こちらのCHECKG.BATの内容を全て 「rem」に書き換えましたら、リカバリーができました!!この記事に感謝いたします。本当に助かりました! 

    返信削除
  3. おめでとうございます!!!。こんな記事がお役に立てて光栄でございます。まあ、PC-98時代から続くNECの機器チェックは普通のユーザーでも迷惑になり得るんですね(笑)。
    NECの機械は久しく買っていないのですが、未だにこんなことやってるんでしょうか…。
    当方、昨日リカバリディスクのあるDELL Latitude N5050(娘がCGで使用)のクリーンインストールを行っておりました。リカバリではWindows7 HomePremiumなんですけど、今回はWindows7 Ultimateで。我が家で唯一XPモードを使える機種として調整していました。で、本日はサーバー(FMV-W600)の電解コンデンサの交換…。こんなことばかりやってます…(笑)。

    返信削除