web-dev-qa-db-ja.com

Windows Vista / 7/2008 bootmgrは舞台裏でどのように機能しますか?

以前は、次の方法でWindowsインストール(NT/2000/XP/2003)を新しいブートメディアに転送することが可能でした。

  • パーティションテーブルとMBRの再作成
  • Ntfscloneを使用してパーティションをコピーする
  • トリッキーな部分:ディスクジオメトリは同じままである必要があり、ntldrが存在するパーティションは以前と同じLBAセクターで開始する必要がありました

これはWindows(Vista/7/2008)でも可能ですか?そのような手順は機能しますか?

  • ディスク署名(!)とMBRを使用してパーティションテーブルをコピーします
  • おそらくハードドライブに合うようにパーティションのサイズを変更します
  • Ntfsclone「システム予約済みパーティション」および「ブートパーティション」。
  • 一方または両方は、古いハードディスクと新しいハードディスクの同じセクターから開始する必要がありますか?

たとえば、bootmgrとbcdが実際に内部でどのように機能するかを説明できますか? grubまたはntldr?第一段階と第二段階はありますか?ブロックリストをどこかに保持していますか?

更新:私の元の問題はハードウェアに関連していることが判明しました。より広い問題に対処するために言い換えられた質問。

4
edgar.holleis

bootmgrは、「ドライブ文字」を認識しません。これは、Windowsが起動プロセスの後半で行うことです(レジストリで構成され、物理ディスクの構成とはまったく関係ありません)。

Linuxを使用してシステムのクローンを作成することは、Microsoftではサポートされていません。要するに、公式の答えはそれをしないでくださいです。 WindowsPEを使用する必要があります。 DISMは、Microsoftが推奨する形式(Windowsセットアップで使用されるものと同じ)であるWIMイメージファイルを作成して適用できます。

マシンのクローン作成は、通常、次のようになります。

  1. リファレンスマシンをセットアップします。 sysprepを実行します。
  2. WinPEを起動します。 dismを使用してドライブをキャプチャします。このバッチファイルのようなもの:

    @ECHO OFF
    IF %1 == "" GOTO DIE:
    CHKDSK /X C:
    CHKDSK /X D:
    IF NOT ERRORLEVEL 0 GOTO DIE:
    DISM /Capture-Image /ImageFile:Z:\Path\To\Images\%1.wim /Name:Boot   /CaptureDir:C:\ /Compress:fast
    DISM /Append-Image  /ImageFile:Z:\Path\To\Images\%1.wim /Name:Windows /CaptureDir:D:\
    :DIE
    

    非標準のパーティションレイアウトがある場合は、これを変更する必要があります。

  3. 移行先コンピューターをWinPEで起動します。 diskpartdismを使用して、画像を適用します。

    パーティションを構成するための標準のdiskpartスクリプト:

    SEL DISK 0
    CLEAN
    CREATE PART PRI SIZE=350
    ACT
    FORMAT QUICK
    ASSIGN LETTER=M
    CREATE PART PRI
    FORMAT QUICK
    ASSIGN LETTER=O
    EXIT
    

    イメージを書き込むための標準のdismバッチファイル:

    @ECHO OFF
    IF %1 == "" GOTO DIE:
    DISKPART /s Diskpart-Standard.script
    IF NOT ERRORLEVEL 0 GOTO DIE:
    DISM /Apply-Image /ImageFile:%1 /Index:1 /ApplyDir:M:\
    DISM /Apply-Image /ImageFile:%1 /Index:2 /ApplyDir:O:\
    IF NOT ERRORLEVEL 0 GOTO DIE:
    BCDEDIT -STORE M:\BOOT\BCD -set {bootmgr} device partition=M:
    BCDEDIT -STORE M:\BOOT\BCD -set {memdiag} device partition=M:
    BCDEDIT -STORE M:\BOOT\BCD -set {default} device partition=O:
    BCDEDIT -STORE M:\BOOT\BCD -set {default} osdevice partition=O:
    :DIE
    ECHO Script ended...
    

プロセスは機能する可能性がありますが、スクリプトの最後の4つのbcdedit行が欠落している可能性があります。

これはWinREを構成しないことに注意してください。ただし、WinPEがあれば、必要ありません。

3
Chris S