부팅 가능한 Windows 7(또는 Vista) 파티션을 이동할 때 무엇을 업데이트해야 합니까?

부팅 가능한 Windows 7(또는 Vista) 파티션을 이동할 때 무엇을 업데이트해야 합니까?

Windows가 설치된 부팅 가능한 NTFS 파티션을 다른 블록 오프셋으로 이동할 때 다시 부팅 가능하게 만들려면 무엇을 업데이트해야 합니까?

배경: 나는 필요한 작업을 수행하는 프로그램을 작성할 계획입니다., 그렇기 때문에 Windows DVD에서 부팅하여 Microsoft 도구를 사용하는 방법에 대한 가이드를 찾고 있지 않습니다. 대신, 일반 PC 사용자가 Windows 시스템을 더 큰 하드 디스크로 옮기고 싶을 때 더 쉽게 솔루션을 작성할 수 있도록 이러한 사항을 직접 수정하는 방법이 필요합니다.

특히 제가 시도한 것은 다음과 같습니다.

여러 파티션이 있는 디스크가 있는데 그 중 하나는 Windows가 설치된 NTFS 파티션이고 디스크는 파티션 레이아웃에 대해 기존의 일반 MBR 블록 0을 사용합니다(파티션 4개 이하).

이제 더 큰 새 디스크를 포맷하고 파티션을 나눕니다. 거기서 NTFS 파티션을 위한 공간을 만들고 이전 디스크의 NTFS Windows 파티션 내용을 복사합니다. 그리고 파티션을 "활성"으로 만듭니다.

그러나 이 디스크에서 부팅하려고 하면 즉시 "읽기 오류" 메시지가 나타나고 부팅이 중지됩니다. 정확한 텍스트는 다음과 같습니다.

  A disk read error occurred
  Press Ctrl+Alt+Del to restart

두 디스크의 블록 0에 동일한 부팅 섹터 코드가 있는지 확인했습니다.

다른 항목을 업데이트해야 할 수도 있는 것 같습니다. 어딘가에 있을 것 같아순수한업데이트해야 하는 블록 참조로, 아마도 다음 레벨 로더나 NT 커널을 가리킬 것입니다.

업데이트:나는 찾았다이것내가 알고 싶은 내용을 깊이있게 다루는 기사. 그러나 boot.ini를 수정하라는 메시지가 표시되지만 여기에 Windows 7이 설치되어 있는데 이러한 사항이 변경된 것 같습니다. boot.ini는 없지만 다음과 같은 폴더가 있습니다.시스템 볼륨 정보내 문제와 관련된 것으로 들리는 GUID 및 기타 데이터가 포함되어 있습니다. 계속 파헤쳐 볼까...

업데이트 2:끔찍해 보이지만 매우 유익한 덕분에웹사이트스타맨, 첫 번째 단계를 알아낼 수 있었습니다. NTFS 부팅 섹터에는 "숨겨진" 섹터에 대한 필드가 있습니다. 이 필드에는 부트 섹터의 섹터 번호가 포함되어야 합니다. 이렇게 하면 "읽기 오류" 메시지가 해결됩니다. 그러나 이제 대신 "BOOTMGR 누락" 오류가 발생합니다. 블록 번호를 조정해야 하는 다른 곳이 있는 것 같은데 코드 목록에서는 이에 대한 내용을 찾을 수 없습니다.

이 "BOOTMGR 누락" 문제를 해결하기 위한 Windows 도구를 제안하는 많은 도움말 사이트를 찾았지만 그 뒤에서 무슨 일이 벌어지고 있는지 아는 사람은 아무도 없는 것 같습니다. Windows에 약간의 문제가 있을 때 Windows를 다시 설치하라고 제안하는 것과 같습니다. 적어도 이러한 수정 사항은 대부분 Bcdedit 및 Bootrec 도구와 관련하여 작동하는 것 같습니다. 이제 이동된 파티션과 관련하여 특히 후자의 경우 무엇을 하는지 누가 알겠습니까?

업데이트 3:수많은 시행착오 끝에 이제 해결책은BCD 템플릿일반적으로 \Windows\System32\config에 있는 레지스트리 파일입니다. "bcdboot" 명령을 사용하여 이 업데이트를 받으면 Windows가 이 명령으로 시작됩니다. 저는 지금 위의 질문과 관련하여 이 레지스트리에 어떤 정보가 포함되어 있는지 알아내는 중입니다. 이 레지스트리의 내용에 대한 조언을 환영합니다.

업데이트 4:BCD 템플릿 파일이 다시 작성되고 이전 파일과 다른 바이너리 내용을 가지더라도 내부 값은 변경되지 않는 것으로 나타났습니다. 따라서 bcdboot.exe가 작성하는 다른 내용이어야 합니다. 이전에 파티션의 처음 32개 부팅 블록이 변경되었는지 이미 확인했지만 변경되지 않은 것으로 보입니다. Parititon 지도도 변경되지 않습니다. 그렇다면 BCD 레지스트리 외에 bcdboot가 수정하는 것은 무엇입니까? 어떻게 추적할 수 있는지에 대한 조언이 있나요? 프로그램이 어떤 파일에 쓰는지 보여주는 낮은 수준의 도구가 있습니까?

업데이트 5:대답은 다음과 같습니다. c:\Boot\BCD도 변경되었으며 이는 부팅 관리자 프로세스의 핵심 파일인 것으로 보입니다. 이건 나중에 조사해볼게요...

업데이트 6:Windows 7을 설치할 때 원래 두 개의 파티션이 생성되었다는 것이 중요한 세부 사항인 것 같습니다. 부트스트랩 파티션으로 보이는 204800 섹터의 작은 파티션과 Windows 시스템을 포함하는 실제 큰 파티션(C 드라이브: ). 이 설치를 더 큰 새 디스크로 전송하려고 시도했을 때 오프셋이 달라졌음에도 불구하고 동일한 두 개의 파티션을 새 드라이브에 그대로 유지했습니다. 이것만으로도 "BOOTMGR이 없습니다"라는 메시지가 나타납니다. 그 이후로 저는 Windows 파티션에서만 bcdboot.exe를 사용했습니다.추가됨해당 파티션의 \Boot\BCD 파일. 해당 파일(및 폴더)은 원래 더 작은 파티션에만 존재했습니다. 따라서 내 경우에는 이 문제가 더 복잡할 수 있습니다. 하나의 파티션(부트 스트래퍼)이 다른 파티션(OS가 포함된 파티션)을 참조하는 반면, 다른 사람들은 두 파티션을 모두 포함하는 하나의 파티션만 처리하면 되고 해결책이 있을 수도 있습니다. 더 간단합니다.

업데이트 7:한 가지 더 자세한 내용을 찾았습니다. \Boot\BCD 파일은 MBR의 일련 번호를 기록합니다. 해당 번호가 일치하지 않으면 시스템이 부팅되지 않습니다. 다음으로 거기에 절대 블록 참조도 저장되어 있는지 테스트하겠습니다.

답변1

더 쉬운 방법?

Windows Vista 또는 Windows 7 설치 디스크를 디스크 드라이브에 넣은 다음 컴퓨터를 시작합니다.
메시지가 나타나면 키를 누르십시오.
언어, 시간, 통화, 키보드 또는 입력 방법을 선택하고 다음을 클릭합니다.
컴퓨터 복구를 클릭합니다.
복구할 운영 체제를 클릭한 후 다음을 클릭합니다.
시스템 복구 옵션 대화 상자에서 명령 프롬프트를 클릭합니다.
Bootrec.exe를 입력한 다음 Enter 키를 누릅니다.

Bootrec.exe 옵션
Bootrec.exe 도구는 다음 옵션을 지원합니다. 상황에 맞는 옵션을 사용하세요.

참고 BCD를 다시 작성해도 시작 문제가 해결되지 않으면 BCD를 내보내고 삭제한 후 이 옵션을 다시 실행할 수 있습니다. 이렇게 하면 BCD가 완전히 재구축됩니다.

이렇게 하려면 Windows RE 명령 프롬프트에 다음 명령을 입력하십시오.
bcdedit /export C:\BCD_Backup
c:
cd boot
attrib bcd -s -h -r
ren c:\boot\bcd bcd.old
bootrec /RebuildBcd

또는 상황에 따라 /FixMbr, /FixBoot, /ScanOs 또는 /RebuildBcd.

보다:지원.Microsoft.com상세 사항은.

관련 정보