主な質問は次のとおりです。「これらの2つのバイナリファイルを解釈できるユーティリティはありますか。
両方ともVista/W7の起動プロセス中に更新されましたか?
私はすでに EasyBCD を知っていて、 このページ BOOTSTAT.DAT形式について見つけましたが、車輪の再発明はしたくありません。
背景情報。
私は不快な立場にあり、ネイティブのWindows 7パーティションが起動プロセスの完了を拒否します(プロンプトを使用したセーフモードでも)。
これは、rawデバイスアクセスを介してVirtualBoxから正常に起動した後に発生しました。実際のところ、VBブートは一貫して正常に機能します。ただし、ネイティブにブートしようとするたびに、ブートプロセスは構成を「修復」しようとします。実際には、外部からのブートです。 PQServiceパーティションを使用して工場出荷時の構成に戻す前に(とにかく新しいマシンです)、問題なくアクセスできるこれら2つのファイルを確認したいと思います。 Ubuntuディスクから。
余談ですが、問題の根本を診断するのに役立つ可能性のある他のファイルがある場合は、私に知らせてください。 winload.exeは、たとえばログを生成しますか(これは2番目の質問です)?
私は、Windows7が検出したHW構成について非常に扱いにくいことをはっきりと認識していることに注意してくださいafter初期インストール。ただし、あきらめるか、ネイティブ/仮想ブートの実験を続けるかを決める前に、どの障害に遭遇したかを詳しく理解したいと思います。
助けてくれてありがとう。
BOOTSTAT.DAT
についてはわかりませんが、BCD
はレジストリハイブであり、他のすべてと同じ形式です。 BCD.LOG*
ファイルは、リカバリを目的としたHiveのトランザクションジャーナルです。
Windowsマシンを使用している場合は、regeditからHiveをマウントできます。HKEY_LOCAL_MACHINE
をクリックし、[ファイル]-> [Hiveのロード]に移動して、BCDファイルを参照します。 Windowsの起動に使用されたBCDは、通常、すでにBCD00000000
としてマウントされています。 WindowsNTレジストリHiveファイルの形式に関するドキュメントがいくつかあります。
デュアルブートプロジェクトの場合、ハードウェアプロファイルは、ネイティブハードウェアと仮想ハードウェアのさまざまな構成に役立つ場合があります。それぞれに1つのプロファイルを使用してみてください。
Windows10でBOOTSTAT.DATファイルを解析するための小さなpythonユーティリティを作成しました。Windows7で生成されたBOOTSTAT.DATで使用するための手順もあります。=の最小バージョンpythonこのスクリプトがテストされたのはpython 3.6です。
https://gitlab.com/rhave/bootstat.dat-efi-parser
出力は、JSONまたはsemi-CSVのいずれかです。
プログラムのファイル形式情報の主な情報源は、ChrisSmithが以前に別の回答で言及したGeoffChappellサイトです。
プログラムは次の方法で実行できます。
python bootstat.dat-efi-parser.py json BOOTSTAT.DAT
ここで、python
はシステムにインストールされているpythonインタプリタ、bootstat.dat-efi-parser.py
はgitlabからのスクリプトのコピーであり、json
は出力タイプ(csv
の場合もあります)およびBOOTSTAT.DAT
は分析したいファイルです。
上記の使用例からの出力は、次のようになります。
{
"version": 4,
"header_size": 24,
"file_size": 65536,
"valid_data_size": 208,
"unknown_header_dword_0": 24,
"unknown_header_dword_1": 0,
"events": [
{
"event_name": "Log file initialised",
"timestamp": 6176,
"zero_field": 0,
"source_guid": "2C86EA9DDD5C704EACC1F32B344D4795",
"size_of_entry": 64,
"severity_code": 1,
"entry_version": 2,
"event_identifier": 1,
"event_time_struct": "2018-01-01 12:00:00",
"event_zero_field_0": 0,
"event_seven": 7,
"event_one": 1,
"event_zero_field_1": 0
},
{
"event_name": "Boot application launch",
"timestamp": 6177,
"zero_field": 0,
"source_guid": "2C86EA9DDD5C704EACC1F32B344D4795",
"size_of_entry": 120,
"severity_code": 1,
"entry_version": 2,
"event_identifier": 17,
"event_app_guid": "80A054721015854EAC0FE7FB3D444736",
"event_type_of_start": 0,
"event_app_pathname": "\\windows\\system32\\winload.efi"
}
]
}
Windows 7では、BOOTSTAT.DATファイルに追加の2048バイトのヘッダーがあります。これをファイルから切り離すと、スクリプトはファイルの残りの部分を解析できるようになります。 Linuxでは、ddコマンドを使用して、次の方法で最初の2048バイトを切り取ることができます。
dd if=bootstat.dat of=bootstat.dat.cut bs=1 skip=2048
ここに bootstat.dat
は元のWindows7ファイルであり、bootstat.dat.cut
fileは、pythonスクリプトの最後の引数として指定する必要があるファイルです。ddまたはhexeditorと同等のWindowsを使用して、Windowsで同じカットを実行できます。