Windows Vista / 7 / 2008 bootmgr은 뒤에서 어떻게 작동합니까? 동일하게 유지되어야하고 ntldr이있는 파티션은 이전과 동일한

항상 다음을 통해 Windows 설치 (NT / 2000 / XP / 2003)를 새 부트 매체로 전송할 수있었습니다.

  • 파티션 테이블 및 MBR 재 작성
  • ntfsclone을 사용하여 파티션 복사
  • 까다로운 부분 : 디스크 구조는 동일하게 유지되어야하고 ntldr이있는 파티션은 이전과 동일한 LBA 섹터에서 시작해야했습니다.

여전히 Windows (Vista / 7 / 2008)에서도 가능합니까? 그러한 절차가 효과가 있습니까?

  • 디스크 서명 (!) 및 MBR이있는 파티션 테이블 복사
  • 하드 드라이브에 맞게 파티션 크기를 조정하십시오
  • Ntfsclone “시스템 예약 파티션”및 “부팅 파티션”.
  • 기존 하드 디스크와 새 하드 디스크의 동일한 섹터에서 여전히 하나 또는 둘 다 시작해야합니까?

grub 또는 ntldr과 달리 bootmgr과 bcd가 실제로 어떻게 작동하는지 설명 할 수 있습니까? 첫 번째와 두 번째 단계가 있습니까? 차단 목록을 어딘가에 보관합니까?

업데이트 : 내 원래 문제는 하드웨어와 관련이있는 것으로 나타났습니다. 더 광범위한 문제를 해결하기 위해 질문을 다시 표현했습니다.



답변

bootmgr은 “드라이브 문자”를 인식하지 못합니다. 이는 부팅 프로세스에서 늦게 Windows가 수행하는 작업이며 레지스트리에서 구성되며 실제 디스크 구성과는 전혀 관련이 없습니다.

Microsoft는 Linux를 사용하여 시스템을 복제 할 수 없습니다. 간단히 말해서 공식 답변은 Do n’t Do That 입니다. Windows PE를 사용해야합니다. 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로 부팅하십시오. 이미지를 사용 diskpart하고 dism적용하려면 :

    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...
    

프로세스가 작동 할 수 있지만 bcdedit스크립트에서 마지막 네 줄 이 누락되었을 수 있습니다 .

WinRE를 구성하지는 않지만 WinPE가있는 경우에는 필요하지 않습니다.


답변