한 파티션에서 다른 파티션으로 복사한 후 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/sda3(이 되는 C:) 에서 부팅되어 /dev/sda1이 됩니다 D:. 이제 Windows7 복사본을 부팅 가능하게 만듭니다(참조:BCDBoot를 사용하여 Windows 7 부팅 디스크를 D에서 C로 전환그리고한 HD에서 다른 HD로 모든 Windows 7 파일을 복사할 수 있습니까?):

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/sda1(복사됨 NTDETECT.COM, NTLDR에서) 을 설치했습니다.64ntfile.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를 부팅하는 모든 솔루션을 환영합니다.

내가 조사한 주제에 관한 다른 게시물:

추신: 테스트 중에는 다른 드라이브나 USB 스틱이 노트북에 연결되어 있지 않습니다.

답변1

sda3을 sda1에 복사한 후에도 sda1의 Windows 레지스트리에는 sda3을 가리키는 "포인터"가 여전히 있습니다. HKLM\SYSTEM\MountedDevices\DosDevices\C: 및 D:의 내용이 올바른 파티션을 가리키는지 확인하세요. (\DosDevices\C: 값은 파티션 서명입니다. sda1의 서명이어야 합니다.)

sda1에 대한 부팅 파일을 생성하려면: (c:에 매핑된 sda3으로 부팅할 때 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에도 도움이 될 수 있을 것입니다.


절차 저는 Windows 7을 더 작고 느린 하드 드라이브의 한 파티션에서 Dell OptiPlex 780 MT의 더 빠른 하드 드라이브 파티션으로 마이그레이션하는 데 사용했습니다.

  1. USB 플래시 드라이브 얻기
    • 32GB 이상 권장
    • 쇼핑하는 동안 자선 단체에 기부할 수 있도록 Amazon Smiles를 사용했습니다.
  2. 부팅 가능한 USB 플래시 드라이브 중 하나에 시스템 복구 CD를 만듭니다.
    • 마지막으로 사용한 이후 용량이 너무 커져서 16GB 이상이 필요합니다.
    • Rufus를 사용하여 Windows의 SysResc CD 지침을 따르세요.
  3. 볼륨을 최소 크기로 축소하여 OS 파티션에 최대 40GB의 여유 공간을 남겨둡니다.
    • 목표는 새 하드 드라이브에 원래 Windows 7 파티션의 크기와 일치하거나 이를 초과할 만큼 충분한 할당되지 않은 공간을 확보하는 것입니다.
    • 파티션에서 USB 플래시 드라이브 또는 기타 외부 드라이브로 데이터 백업/이동
    • 디스크 정리 및 조각 모음 실행
    • 이제 W7의 DiskMgmt.MSC를 사용하여 볼륨을 확장/축소할 수 있습니다.
  4. 시스템 복구 CD로 부팅
    • 주의 사항: 대문자를 사용하는 BIOS 시스템 및 관리자 비밀번호가 있는 경우 시스템 복구 CD는 사용자 정의 부팅을 시도하고 있다고 생각합니다. 부팅에 대한 지침, 도움말, 명령 등이 없는 LILO 스타일의 Boot: 프롬프트가 표시됩니다. 기본 부팅 메뉴에 접근할 수 있도록 BIOS 시스템 비밀번호를 지웠습니다.
    • 성공적으로 부팅되면 실행 startx하여 GUI로 들어갑니다.
      • GPartEd 실행
        • 현재 Windows 7이 설치된 이전의 느린 드라이브로 이동하여 Windows 파티션을 복사합니다.
        • 할당되지 않은 공간이 있는 더 빠른 새 드라이브로 이동하여 복사된 파티션을 붙여넣습니다.
        • 하드웨어에 따라 작업에 몇 분 정도 걸릴 수 있지만 진행률 표시줄이 제공됩니다.
        • 복사된 Windows 7 파티션을 활성으로 표시
      • 터미널/명령 창으로 이동
        • 새 Windows 7 파티션의 부팅 섹터를 실행 testdisk하고 생성/재설정합니다. (이 단계가 필요한지는 모르겠지만 제가 한 것뿐입니다.)
          • Google testdisk를 사용하여 파티션의 부팅 섹터 복원
        • 다음을 사용하여 /mnt/Dell 및 /mnt/Win7 폴더를 만듭니다.mkdir
          • 다음에 시스템 복구 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. 윈도우 7로 부팅
    • 이전 부팅 및 시스템 파티션을 가리키고 있으므로 여전히 이전 하드 드라이브에서 작동하고 있습니다.
    • C: 드라이브는 이전 시스템입니다.
    • 관리자 권한으로 Cmd 프롬프트 열기
      • 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 시스템 복구 파티션에서 부팅 플래그 표시를 해제합니다.
  8. 새 드라이브에서 Windows 7로 재부팅

어떤 단계에서든 실수가 없고 어려움이나 오류가 없었다면 저처럼 Windows 7 파티션과 Windows 7 부팅 관리자를 원래 하드 드라이브의 한 파티션에서 다른 파티션의 새 파티션으로 성공적으로 마이그레이션한 것입니다. Windows 7 복구 디스크(OEM 리셀러가 PC와 함께 발급하지 않음)를 사용하지 않고, 의심스러운 타사 앱을 사용하지 않고 하드 드라이브를 사용할 수 있습니다. 다행스러운 점은 마이그레이션 전에 EFS로 암호화된 파일이나 폴더가 있었다면 먼저 암호를 해독하지 않고도 새 파티션에서 계속 액세스할 수 있다는 것입니다. DiskMgmt.MSC는 이제 새 Windows 7 파티션을 C:로 표시하고 이전 Windows 7 파티션은 드라이브 문자 없이 표시합니다.

원래 하드 드라이브와 완전히 독립적인 새 Windows 7 파티션으로 부팅한 후에는 해당 파티션의 부트 로더를 정리하여 기존 Windows 7 파티션 대신 모든 항목을 가리키도록 하는 방법을 탐색할 수 있습니다. 나처럼 새 드라이브에 Windows XP 파티션이 있으면 bcdedit를 사용하여 부팅할 항목을 추가할 수도 있습니다. 모든 것이 안정적이라는 확신이 들면 이전 파티션을 지우고 다른 용도로 사용할 수 있습니다. 이것이 다른 사람이 유사한 노력을 수행하는 데 도움이 되기를 진심으로 바랍니다.


마이그레이션 후 W7 디스크 관리:

마이그레이션 후 W7 디스크 관리

관련 정보