あるパーティションから別のパーティションにコピーした後、Windows を起動可能にする

あるパーティションから別のパーティションにコピーした後、Windows を起動可能にする

ノートパソコンに付属していたレスキュー DVD から Windows7 をリカバリしました。リカバリにより SSD ドライブが工場出荷時の状態に再パーティション化されますが、これを変更したいと思います。より正確には、リカバリ完了後のパーティションは次のようになります。

root@ubuntu:~# fdisk -l /dev/sda

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   419432447   209715200   27  Hidden NTFS WinRE
/dev/sda2   *   419432448   419637247      102400    7  HPFS/NTFS/exFAT
/dev/sda3       419637248   839067647   209715200    7  HPFS/NTFS/exFAT

コメント:

  • /dev/sda2bootmgrは、およびを持つ小さなパーティションですBoot
  • Windows7 は にインストールされていますが、そのパーティションには/dev/sda3がありません。bootmgr

/dev/sda3ここで、Windows7を からにコピーして起動可能にしたいと思います/dev/sda1。パーティションのサイズは同じなので、Linux では非常に簡単です。

root@ubuntu:~# dd if=/dev/sda3 of=/dev/sda1 bs=4096

その後、パーティションタイプを変更しました。

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   419432447   209715200    7  HPFS/NTFS/exFAT
/dev/sda2   *   419432448   419637247      102400    7  HPFS/NTFS/exFAT
/dev/sda3       419637248   839067647   209715200    7  HPFS/NTFS/exFAT

その後、再起動しました。Windows7は/dev/sda3C:)から起動し、/dev/sda1になりますD:。ここで、Windows7のコピーを起動可能にします(BCDBoot を使用して Windows 7 ブート ディスクを D から C に切り替えるそしてWindows 7 のすべてのファイルを 1 つの HD から別の HD にコピーすることは可能ですか?):

C:\> bcdboot d:\windows /s d:
Boot files successfully created.

C:\> bootsect /nt60 d: /mbr
Target volumes will be updated with BOOTMGR compatible bootcode.
F: (\\?\Volume{b6e65e71-6179-11e5-82c7-806e6f6e6963})
Successfully updated NTFS filesystem bootcode.
\??\PhysicalDrive0
Successfully updated disk bootcode.
Bootcode was successfully updated on all targeted volumes.

再確認:

C:\> bcdedit

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume2
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
resumeobject            {0b9ac05e-6182-11e5-b742-8dbb81fd6d74}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows 7
locale                  en-US
inherit                 {bootloadersettings}
recoverysequence        {0b9ac060-6182-11e5-b742-8dbb81fd6d74}
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \Windows
resumeobject            {0b9ac05e-6182-11e5-b742-8dbb81fd6d74}
nx                      OptIn

C:\> bcdedit /store D:\Boot\BCD

Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=D:
description             Windows Boot Manager
locale                  en-us
inherit                 {globalsettings}
default                 {default}
resumeobject            {f38db522-680d-11e5-829a-18f46ae2d7b0}
displayorder            {default}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
-------------------
identifier              {default}
device                  partition=D:
path                    \windows\system32\winload.exe
description             Windows 7
locale                  en-us
inherit                 {bootloadersettings}
osdevice                partition=D:
systemroot              \windows
resumeobject            {f38db522-680d-11e5-829a-18f46ae2d7b0}
nx                      OptIn
detecthal               Yes

Linux を起動し、パーティションを起動可能にマークした後 (Windows でも同じことができますが、私は使い慣れたツールを使用します)、次の操作を行います。

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   419432447   209715200    7  HPFS/NTFS/exFAT
/dev/sda2       419432448   419637247      102400    7  HPFS/NTFS/exFAT
/dev/sda3       419637248   839067647   209715200   27  Hidden NTFS WinRE

の内容は/dev/sda1次のとおりです(再確認)。

root@ubuntu:~# ls -l /mnt/sda1
total 10749077
drwxrwxrwx 1 root root       4096 Sep 25 06:11 Boot
-rwxrwxrwx 1 root root     383786 Nov 20  2010 bootmgr
drwxrwxrwx 1 root root          0 Sep 23 21:50 Config.Msi
lrwxrwxrwx 2 root root         60 Jul 14  2009 Documents and Settings -> /mnt/sda1/Users
-rwxrwxrwx 1 root root 4717092864 Sep 23 21:50 hiberfil.sys
-rwxrwxrwx 1 root root 6289461248 Sep 23 21:50 pagefile.sys
drwxrwxrwx 1 root root          0 Jul 14  2009 PerfLogs
drwxrwxrwx 1 root root       4096 Sep 23 20:35 ProgramData
drwxrwxrwx 1 root root       8192 Sep 23 21:26 Program Files
drwxrwxrwx 1 root root      12288 Sep 23 21:12 Program Files (x86)
drwxrwxrwx 1 root root       4096 Sep 22 22:00 $Recycle.Bin
drwxrwxrwx 1 root root      20480 Sep 23 21:50 System Volume Information
drwxrwxrwx 1 root root       4096 Sep 23 21:05 Temp
drwxrwxrwx 1 root root          0 Sep 23 21:50 Update
drwxrwxrwx 1 root root       4096 Sep 22 21:58 Users
-rwxrwxrwx 1 root root       4112 Jul 19  2011 version
drwxrwxrwx 1 root root      24576 Sep 23 21:02 Windows

良さそうです。残念ながら起動するとBootmgr is missing. Press Ctrl+Alt+Del to restart

Grub をインストールしました/dev/sda1(デフォルトのブートローダーを上書きします):

grub-install --force --no-floppy --boot-directory=/mnt/sda1/Boot /dev/sda1

以下と合わせて/mnt/sda1/Boot/grub/grub.cfg:

menuentry "Windows 7" {
    insmod ntfs
    insmod ntldr
    ntldr (hd0,msdos1)/bootmgr
}

Grubは制御をbootmgr正しく に渡しましたが、 から起動し続けます/dev/sda3。パーティションを削除すると/dev/sda3初期起動画面が表示されますが、その後何も起こりません (起動がハングするだけです)。

次に、 (コピーして、から)ntldrにインストールしました/dev/sda1NTDETECT.COMNTLDR64ntファイル.zip)を「ネイティブ」ブートセクターで実行します。

C:\> bootsect /nt52 d:

このboot.ini

[Boot Loader]
timeout=30
Default=multi(0)disk(0)rdisk(0)partition(1)\Windows

[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)\Windows="Windows 7 (boot.ini)" /fastdetect

起動後、「ディスク読み取りエラーが発生しました」と表示されます。確かに SSD ドライブがこのように故障する可能性は低いので、問題はドライブのアドレス指定やレイアウトを正しく処理できないブート バイトコードやロジックにあると思います。私は Grub (上記のように) を次の構成でインストールしました:

menuentry "Windows 7" {
    insmod ntfs
    insmod ntldr
    ntldr (hd0,msdos1)/ntldr
}

そして、boot.ini上記のようなメニューが表示されました。続行すると、コンピューターはエラー メッセージなしで再起動します (つまり、ループに入りました)。

問題を解決するにはどうすればよいですか? 最初のパーティションから Windows を起動するあらゆる解決策を歓迎します。

私が調べたこの件に関する他の投稿:

PS: テスト時にノートブックに他のドライブや USB スティックは接続されていません。

答え1

sda3 を sda1 にコピーした後も、sda1 の Windows レジストリには sda3 を指す「ポインタ」がいくつか残っています。HKLM\SYSTEM\MountedDevices\DosDevices\C: と D: の内容が正しいパーティションを指しているかどうかを確認してください。(\DosDevices\C: の値はパーティション署名です。sda1 の署名である必要があります)

sda1 のブート ファイルを作成するには: (sda3 を起動すると c: にマップされ、sda1 は d: にマップされます)

  1. bootsect /nt60 d: /mbr - sda1 パーティションのブート コードを設定します (Windows ブート コードを MBR に書き込んでも問題ありません)

  2. bcdboot d:\windows /sd: - sda1にBCDを作成する

sda2 上の既存のシステム BCD と sda1 上の BCD を編集する必要はありません。

最後にアクティブパーティションを sda1 に変更します。

リブート。

見るWindows 7 のブート ファイルを別のドライブ/パーティションに移動する方法助けを求めて。

答え2

私はこの問題を解決するために実行したいくつかの手順を書き出しましたが、それは私にとってはうまくいきました。そのため、今後の読者にも役立つことを願っています。かなり時間が経っていますが、OP にも役立つかもしれません。


Dell OptiPlex 780 MTのより高速なハードドライブパーティションにWindows 7を移行するために使用した手順

  1. USBフラッシュドライブを入手する
    • 32 GB以上を推奨
    • 私はAmazon Smilesを使って買い物をしながら慈善団体に寄付をしました
  2. 起動可能なUSBフラッシュドライブの1つにSystem Rescue CDを作成します
    • 前回使用したときから巨大になり、16GB以上が必要になりました
    • Rufusを使用してWindowsからSysResc CDの指示に従います
  3. ボリュームを最小サイズに縮小し、OS パーティションに約 40 GB の空き領域を残す
    • 目標は、新しいハードドライブに、元のWindows 7パーティションのサイズと同等かそれ以上の未割り当て領域を確保することです。
    • パーティションからUSBフラッシュドライブまたはその他の外付けドライブにデータをバックアップ/移動する
    • ディスククリーンアップとデフラグを実行する
    • W7のDiskMgmt.MSCを使用してボリュームを拡張/縮小できるようになりました
  4. システムレスキューCDを起動する
    • 注意: BIOS システム パスワードと管理者パスワードに大文字が使用されている場合、System Rescue CD はカスタム ブートを試みていると認識します。起動するための指示、ヘルプ、コマンドなどが表示されず、LILO スタイルの Boot: プロンプトが表示されます。BIOS システム パスワードをクリアして、デフォルトのブート メニューが表示されるようにしました。
    • 正常に起動したら、startxGUIに入るために 実行します。
      • GPartEdを実行する
        • 現在のWindows 7がインストールされている古い低速ドライブに移動し、Windowsパーティションをコピーします。
        • 未割り当て領域のある新しい高速ドライブに移動し、コピーしたパーティションを貼り付けます
        • ハードウェアによっては操作に数分かかる場合がありますが、進行状況バーが表示されます。
        • コピーしたWindows 7パーティションをアクティブとしてマークする
      • ターミナル/コマンドウィンドウに移動する
        • 新しい Windows 7 パーティションのブート セクターを実行しtestdiskて作成/リセットします (この手順が必要かどうかはわかりませんが、私が実行しただけです)
          • Google testdisk を使用してパーティションのブート セクターを復元する
        • /mnt/Dellと/mnt/Win7フォルダを作成します。mkdir
          • これらは、System Rescue CD/USBスティックを次に起動すると消えます。
        • mount次のコマンド を使用して、古いDellリカバリパーティションを/mnt/Dellにマウントします。
          • mount /dev/hdb1 /mnt/Dell
        • 新しいWindows 7パーティションを/mnt/Win7にマウントします。
          • mount /dev/hda4 /mnt/Win7
        • Windowsブートローダーファイルを新しいWindows 7パーティションにコピーします
          • /mnt/Win7/Bootフォルダを作成するmkdir
          • cpコマンドを使用して/mnt/Dell/bootmgrを/mnt/Win7/にコピーします
          • cp /mnt/Dell/boot.sdi /mnt/Win7/
          • cp /mnt/Dell/Boot/BCD /mnt/Win7/Boot/
          • /Boot/BCD.LOGファイルもコピーできますが、それが必要かどうかはわかりません。
          • このブート構成は、まだ古い Windows 7 ブートおよびシステム パーティションを指していることに注意してください。新しい Windows 7 ブートおよびシステム パーティション (私の場合は同じもの) を指すように編集する必要があります。
  5. BIOSを起動する
    • ブートデバイスを古いドライブから新しいドライブに変更する
    • あるいは、ブートメニューを使用して新しいWindows 7パーティションから正常に起動することもできます。
  6. Windows 7を起動する
    • 古いブートおよびシステムパーティションを指しているため、古いハードドライブからまだ動作しています。
    • C:ドライブは古いシステムです
    • 管理者としてコマンドプロンプトを開く
      • DiskMgmt.MSC を実行する
        • 新しい Windows 7 パーティションにまだドライブ文字が割り当てられていない場合は、ドライブ文字を割り当てます (私の場合は G:)
      • G:\Bootディレクトリに移動します
        • G:
        • cd Boot
      • 新しいパーティションのブート構成を表示するには、bcedit /store BCD
        • 現在の古いブート GUID をメモします (私の場合は {d57db94d-450e-11e5-a383-b8ac6f1ac098})
      • 新しくコピーしたブート構成を編集して、新しいWindows 7パーティションを追加します。
        • 参照ブートエントリの追加
        • bcdedit /store /copy {d57db94d-450e-11e5-a383-b8ac6f1ac098} /d "Win7 Debug"
          • 新しい W7 パーティション GUID は現在 {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} です
        • bcdedit /store BCD /enum /v(GUID を参照用に表示するには)
        • 参照Windows 7のブートファイルbootmgrを別のドライブに移動するにはどうすればいいですか(このサイトに質問と回答を投稿してくださった red.october さんに感謝します!)
        • bcdedit /store BCD /set {bootmgr} device partition=G:
        • 私の場合の追加手順
          • bcdedit /store BCD /set {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} device partition=G:
          • bcdedit /store BCD /set {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} osdevice partition=G:
          • bcdedit /store BCD /displayorder {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098} {d57db94d-450e-11e5-a383-b8ac6f1ac098}
          • オプションで、新しいブートパーティションをデフォルトにする
            • bcdedit /default {c15e345e-9c47-11ea-a7d8-b8ac6f1ac098}
  7. システムレスキューCD/USBで再起動する
    • GPartEdを使用して古いWindows 7パーティションを非表示としてマークする
    • 古いDell System Recoveryパーティションのブートフラグのマークを解除します
  8. 新しいドライブでWindows 7を再起動する

間違いがなく、どの手順でも問題やエラーがなかった場合は、私と同じように、Windows 7 パーティションと Windows 7 ブート マネージャーの両方を、元のハード ドライブの 1 つのパーティションから別のハード ドライブの新しいパーティションに正常に移行できたことになります。Windows 7 回復ディスク (OEM 再販業者は PC にこのディスクを発行しません) や疑わしいサード パーティ製アプリは使用していません。嬉しい驚きなのは、移行前に EFS で暗号化されたファイルやフォルダーがあった場合、最初に暗号化を解除しなくても、新しいパーティションでそれらにアクセスできることです。DiskMgmt.MSC では、新しい Windows 7 パーティションが C: として表示され、古い Windows 7 パーティションはドライブ文字なしで表示されます。

元のハード ドライブから完全に独立した新しい Windows 7 パーティションを起動したら、そのパーティションのブート ローダーをクリーンアップして、古い Windows 7 パーティションではなく、すべてをそのパーティションにポイントする方法を検討できます。私のように新しいドライブに Windows XP パーティションがある場合は、bcdedit を使用してエントリを追加して、それを起動することもできます。安定していることが確実になったら、古いパーティションを消去して、他の目的に使用できます。これが、同様の取り組みを達成する他の誰かの役に立つことを心から願っています。


移行後の W7 ディスク管理:

移行後の W7 ディスク管理

関連情報