2015-01-06 12 views
5

私は、VMWareがMBRをロードする前に、どのようにVMWareのBIOSが見つかるかを理解しようとしています。

物理的なハードディスクでは、MBRは最初のセクタに位置します。
しかし、VMの場合はどうなりますか?

私は2つのVMを作成しました。最初のvmdk(Linuxベースのシステムがインストールされています)では、オフセット0x2A0000のMBRが見つかりました。
Windows XPがインストールされている2番目のvmdkファイルで、MBRが2回以上見つかりましたが、見つかったすべてのオフセットを512(セクタサイズ)で割ることができませんでした。私が知っているように、セクタの先頭でMBRを開始する+セクタサイズは512バイトです。
だから、おそらくバックアップ用のコピーだったでしょう。 xp .vmdkの@ offset 0x2A0000は何も面白いものではありません。

だから、どのようにVMWareのBIOSがMBRを見つけるのですか?この設定可能なパラメータはどこにありますか?\それはどのように計算されていますか?

追加情報:
- 両方のVMDKは、1ファイルのハードディスクファイル(40GBまで拡張可能)です。
彼らが提供するシステムは&しか使用しません(XPはxp.vmdkを使用し、linuxはlinux.vmdkを使用し、追加のVMDKは使用しません)。

- @Windows VM \。\ PhysicalDrive0でWinHexを使用してMBR.itを確認しました(署名など)。
- @Linux VM私は「dd if =/dev/sda of = mbr.bin bs = 512 count = 1」というコマンドを使って、16進バイトを見てMBRを取得しました。 (GRUB、最後に署名など)。
VMからMBRを取得した後、対応する.vmdkファイル内でホストPCのMBR(16進エディタ付き)を検索しました。オフセットは上記のとおりです。

ご協力いただければ幸いです。ありがとう!VMDKファイル内のMBRセクタを見つけるにはどうすればよいですか?

答えて

7

この質問を閲覧してもまだコメントや回答はないので、私は自分自身で少し研究をしました。
は(最終的には私の質問に答える)以下の結論を得た:

1.Whenは、VMwareとのXXX GBの仮想ハードディスク(.vmdkファイル)を作成することは二つのタイプのいずれかになります。フラットまたはスパース(彼らができるも複数の.VMDKファイルに分割されていましたが、私の研究ではそれらを扱っていませんでした)。
- フラット =すべてのハードディスクスペース(XXX GB)は、作成時に1回割り当てられます。
ディスク上の.VMDKファイルサイズはXXX GBです。

- スパース =ハードディスクファイルは消耗品(最大XXX GB)です。
.VMDKファイルのサイズは最初は小さく、必要に応じて大きくなります。

追加情報に私の質問で述べたように、両方の.VMDKはスパースであったでした。

2。質問の中で述べたように、のMBRは、物理ハードディスクの最初のセクタの先頭にあります。 .VMDKファイルの場所とVMwareの計算方法が不思議です。
フラット.VMDKファイルのは、最初のセクタの先頭にもあります。
それは見ているとかなり正直な序文ですが、私のものはフラットではありませんでした。だから、まばらな.vmdkで何が起こるのですか? mbrはどこに座っていますか? .vmdkファイルは、異なる構造(詳細な構造のために、あなたはページ6を中心としたVMware's Virtual Disk Format Specを読むことができてい

3.sparse - 。構造体SparseExtentHeaderを
がMBR \最初のセクターがどのように計算されるかのロジックを見つけることができませんでした

@ .VMDKオフセット0x38 - 0x3F(8バイト長)は、gdOffset.itがオフセット(****)を格納していることを示しています(私が見たところでは、
メタデータの最初の4バイトは、ジャンプする次のオフセット(****)です。
次の4バイトのは、MBRのオフセット(****)です。
(****)はセクタ単位のオフセットを意味します。例えば1はオフセット512を意味し、2は1024などを意味します。
オフセット0x38-0x3F(8バイト長)で保存されたデータは、[(0x38):8 ]。

そして、
MBRが= 512 Xオフセット[(512 X [(512 X [(0x38)を:8]):4]):4]

4.Iは、2つの新しいVMの(のWindows XPを作成しLinux)とMBR計算のこの方法も両方のために証明されました(添付の7の画像で分かるように)。

5.私はこの公式にどのようになったのですか?
フィルタリングながらSysInternal's process Monitorを使用する:
-Processは、VMware
運用パフォーマンスが含まれていることのCreateFile \のReadFile
-Pathは、私はすべての単一の.vmdkリードを得た(そしてそれはオフセットです)>

<の.vmdkファイルのパスが含まれています。
私はMBRのオフセット(どこにオフセットが0x2A0000であったのか知っていたLinuxシステムで)と、それがすでに読んでいたものを読みました。

6.私が説明しなかったのは、元の質問のxpシステムのMBRが奇妙なオフセット(512で割ることはできません)。
正直言って、私は完全な理由はありませんが、MBRチェックの前に、このシステムから元のMBRを削除し、VMに電力を供給していることを忘れました。それは私がWindowsを正常に開始するかどうか私に尋ねました、そしてそれが奇妙なオフセットに現れたとき(バックアップや何かのためにそこにコピーされました)ここで奇妙なことは、私は通常のオフセットでこのMBRを見つけることができなかったということです。私はいくつかの進歩があったが、確固たる答えはなかった。誰かが知っている場合、コメントすること自由に感じ
(:

7.Attached画像:
Windows XP MBR finding explanation Linux MBR finding explanation

関連する問題