윈도우를 사용하다 보면 어떠한 이유에 의해 Bootmgr 부트 매니저를 처음부터 설치하거나, 또는 현재 사용 중인 Bootmgr 부트 매니저를 새로운 버전으로 교체해야 할 필요가 생깁니다. 이 때 흔히 사용되는 방법이 바로 기존에 설치된 Bootmgr 부트 매니저 파일들을 그대로 복사해와 교체 또는 설치하는 것입니다. [참고로 이 때 USB 플래시 메모리와 같은 이동식 저장 매체에 Bootmgr 부트 매니저를 구성하는 것은 예외로 하며, 그리하여 Bootmgr 부트 매니저를 설치하는 작업은 윈도우 XP 를 단독으로 사용하는 경우에만 국한 됨을 미리 알아두시길 바랍니다.]
복사를 통해 Bootmgr 부트 매니저를 교체하거나 설치하는 방법은 따로 설명하지 않도록 하겠습니다. 아무튼, 이렇게 Bootmgr 부트 매니저 구성 파일을 직접 복사하여 Bootmgr 부트 매니저를 교체하거나 새로 설치 작업을 간단하게 정리하면 아래와 같습니다.
1. Bootmgr 부트 매니저 파일 복사 [Copy]
2. Bootmgr 부트 매니저를 주 부트 매니저로 등록 [Bootsect 로 작업]
3. BCD(Bootmgr 부트 매니저 부팅 설정 파일) 에 NTLDR 부트 매니저에 대한 부팅 항목 구성 [BCDEdit 로 작업]
그런데 이렇게 Bootmgr 부트 매니저의 구성 파일들을 직접 복사하는 방식으로 설치 또는 교체하는 작업에는 한 가지 굉장히 난해한 문제가 있습니다. 그건 바로 시스템 파티션의 분할 로드 구성 즉, BIOS 부팅 환경에서의 시스템 예약 파티션과 UEFI 환경에서의 ESP(EFI 시스템 파티션) 환경에 대처하기가 굉장히 곤란하다는 점입니다. 만약 배치 파일을 통해 이를 자동으로 처리하려는 경우에는 이게 좀 문제가 복잡하죠.
특히나 UEFI 환경의 ESP 파티션은 다루기가 굉장히 까다롭습니다. 기본적으로 EFI 시스템 파티션은 익스플로러 셀(윈도우 탐색기)이나 디스크 관리를 통한 접근이나 수정이 원천적으로 봉쇄되어 있기 때문에, 모든 작업을 DiskPart 와 명령 프롬프트를 통해 제어해야 하는 문제가 있습니다.
그런데 이 문제는 Bootmgr 부트 매니저의 BCD 부팅 파일 작성 및 복구 도구인 BCDBoot 를 활용하면 간단하게 해결이 가능합니다.
A. BCDBoot 도구의 작업에 대한 이해
익히 알다시피 BCDBoot 는 작업에서 지정한 윈도우에 포함된 Bootmgr 부트 매니저 구성 파일을 사용하여 새로 Bootmgr 부트 매니저를 설치하거나, 복구하는 도구입니다. BCDBoot 가 Bootmgr 부트 매니저의 설치 및 복구에 사용하는 Bootmgr 부트 매니저 구성 파일들은 윈도우 폴더 하위의 Boot 폴더 즉, \Windows\Boot 폴더에 준비되어 있습니다.
그리고 해당 윈도우에 대한 부팅 항목의 구성은 BFSVC.exe 도구를 통해 \Windows\System32\Config\BCD-Template 파일을 참조하여 구성하게 되죠.
즉, 여러분들이 만약에 아래와 같은 BCDBoot 명령을 내린다면,
BCDBoot 는 C:\Windows\Boot 폴더 하위에 미리 준비된 Bootmgr 부트 매니저 파일들 중에 BIOS 부팅 환경용 파일들만 추출하여 S: 드라이브에 Bootmgr 부트 매니저를 설치(또는 복구)하고, 다시 해당 윈도우에 따로 준비된 BCD-Template 파일을 참조하여 부팅 항목을 BCD 에 생성(추가)하는 작업을 진행하는 겁니다. 간단하죠?
여기에서 굉장히 중요한 것이 하나 있는데요. 그건 바로 BCDBoot 는 먼저 \Windows\Boot 폴더에서 부트 매니저 파일들을 추출하여 설치(교체)하고, 그 다음으로 BCD-Template 파일을 참조하여 해당 윈도우에 대한 부팅 항목(BCD)을 구성한다는 점입니다.
바로 이러한 BCDBoot 의 작업 방식을 Bootmgr 부트 매니저의 교체 및 설치에 활용하는 겁니다.
B. BCDBoot 를 사용하여 Bootmgr 부트 매니저 교체하기
작업을 간단하게 설명을 드리자면 윈도우 폴더 대용으로 먼저 적절한 폴더를 하나 만들고, 그곳에 원하는 버전의 \Windows\Boot 폴더를 통채로 복사해놓습니다. 예를 들어 D:\Bootmgr-8 이라는 폴더를 하나 만들고 여기에 윈도우 8 에서 추출한 Boot 폴더를 통채로 넣어두면, 그건 윈도우 8 용 Bootmgr 부트 매니저를 설치할 수 있는 뼈대 폴더가 되는 것이죠.
다른 말로 구라 폴더.
이렇게 적당히 가짜 윈도우 폴더를 준비한 후, 해당 폴더를 마치 윈도우 폴더처럼 사용하여 BCDBoot 명령을 내리면 됩니다.
그러면 위와 같이 작업 중간 오류가 나게 됩니다. 이것은 작업에서 지정한 폴더가 진짜 윈도우가 아닌 가짜 윈도우이기 때문에 정상적인 결과입니다. 교체 작업은 이게 끝입니다. 이미 Bootmgr 부트 매니저는 해당 폴더에 준비한 최신의 Bootmgr 부트 매니저 버전으로 교체가 되었습니다. 간단하죠?
이 방법의 최대 장점은 시스템 파티션에 드라이브 문자가 할당되어 있는 단일 로드 구성은 물론, BIOS 부팅 환경의 시스템 예약 파티션과 UEFI 부팅 환경의 ESP 파티션과 같이 드라이브 문자가 할당되어 있지 않거나, 일반적인 방식으로 접근이 차단된 경우에도 정상적으로 작업이 가능하다는 것에 있습니다. 즉, BIOS 부팅 환경이든, UEFI 부팅 환경이든, 시스템 파티션(ESP 등)에 드라이브 문자가 할당되어 있든 말든, 상관 없이 작업을 진행할 수 있습니다.
C. BCDBoot 를 사용하여 Bootmgr 부트 매니저 설치하기 - 윈도우 XP
Bootmgr 부트 매니저를 최신 버전으로 단순 교체하는 작업은 말씀드린 것처럼 위의 작업만으로도 끝이고요. 아직 Bootmgr 부트 매니저가 설치되어 있지 않은 윈도우 XP 환경에서 Bootmgr 부트 매니저를 새로 설치하는 것을 목적으로 작업한 경우라면, 현재 다른 부트 매니저 구성 파일들의 설치는 모두 끝났지만 BCD 는 설치되어 있지 않은 상태입니다.
그래서 이 방법을 사용하여 윈도우 XP 에 Bootmgr 부트 매니저를 설치하는 경우라면 추가로 BCD 파일을 수동으로 구성해야 합니다. 이 때 BCD 는 마찬가지로 미리 준비한 뼈대 폴더에서 윈도우 설치 미디어를 위해 미리 준비되어 있는 BCD 를 토대로 구성하면 됩니다.
참고로 해당 BCD 는 윈도우 설치 미디어(DVD) 부팅을 기준으로 부팅 항목이 구성되어 있는 파일이기 때문에, 먼저 해당 BCD 를 시스템에 Import 하여 불러온 후, 아래와 같이 약간의 추가 작업을 통해 필요 없는 설정들을 지우고 NTLDR 부트 매니저를 추가로 구성해주면 됩니다.
bcdedit /import D:\Bootmgr-8\Boot\DVD\PCAT\BCD
bcdedit /delete {default}
bcdedit /set {bootmgr} locale ko-KR
bcdedit /set {memdiag} locale ko-KR
bcdedit /create {ntldr} /d "Windows XP"
bcdedit /set {ntldr} device boot
bcdedit /set {ntldr} path \ntldr
bcdedit /displayorder {ntldr} /addfirst
bcdedit /default {ntldr}
여기까지 해서 Bootmgr 부트 매니저에 대한 설치는 모두 마쳤습니다. 그럼 이제 마지막으로 현재 시스템 파티션의 부팅 섹터는 NTLDR 부트 매니저를 찾도록 되어 있기 때문에 이를 Bootmgr 부트 매니저를 찾도록 바꿔주면 됩니다. [이 때 Bootsect.exe 파일은 미리 사용할 수 있도록 준비하셔야 합니다.]
이렇게 BootSect 도구를 통해 부팅 섹터의 수정 작업을 마쳐야만 Bootmgr 부트 매니저가 비로소 시스템의 주 부트 매니저로써 사용됩니다. 윈도우 XP 에서 Bootmgr 부트 매니저를 새로 설치하는 것도 이게 끝입니다. 간단하죠? 이제 윈도우 XP 에서도 윈도우 PE 용 WIM 부팅 이미지를 사용하여 부팅을 진행할 수 있습니다.
아래의 글에서 최신 버전을 제공하고 있습니다.
기존 내용 보기
어떤가요? BCDBoot 를 이용하여 Bootmgr 부트 매니저를 설치하는 방법, 굉장히 간단하죠?
그런데 여기에서 참고로 한 가지 알아두셔야 할 점이 있는데, 이렇게 BCDBoot 를 통한 방법으로 Bootmgr 부트 매니저를 설치할 때는 윈도우 XP 에서 완전히 새로 설치하는 것 외에, 기존에 설치되어 있는 Bootmgr 부트 매니저를 교체하는 작업을 진행할 땐 최신 버전으로 교체(업그레이드)하는 것만 가능하다는 점입니다. 즉, 이전 버전으로 다운그레이드하는 것은 안 됩니다. 이는 BCDBoot 의 작업 특성상 어쩔 수가 없습니다. 그건 아래의 설명들을 참고해보시고요.
그래서 만약 이전 버전으로 다운그레이드를 하고 싶다면, 수동으로 Bootmgr 파일과 Boot 폴더의 내용을 모두 삭제한 후[현재 윈도우에서 작업 중이라면 BCD 는 삭제가 안 됨, 사실 그게 작업하기엔 더 좋긴 함.] 이번 글에서 설명한 방법으로 작업을 진행하면, 지정한 버전으로 Bootmgr 부트 매니저가 재설치되기 때문에 다운그레이드를 진행할 수 있습니다.
아무튼, 이번 글에서 설명드린 내용을 기반으로 아래와 같은 자동 설치 배치 파일을 준비해보았습니다.
참고로 구성 파일의 용량이 꽤 많이 나가기 때문에 압축 파일은 보통 제가 제공해드리는 Zip 이나 RAR 대신 7z 을 통해 극한으로 압축하였습니다. Zip 이나 RAR 로는 10MB 이내에 압축이 안 되더라고요. 뭐 사실 비스타나 7 버전의 Bootmgr 부트 매니저는 준비하지 않아도 되었을 듯도 싶지만, 그냥 구색을 맞추는 겸 해서 세 버전을 모두 포함시켜 봤습니다. ^^;
이 내용을 예전에 커뮤니티에서였나? 블로그에서였나? 아무튼, 어디에선가 정리한 기억은 나는데, 도대체 이걸 어디에다 정리를 해뒀는지 도무지 기억이 나질 않네요. 게다가 오늘은 마우스 스위치를 교체하려고 했는데 하루 종일 인두도 못 찾고 있고 말이죠. 그놈의 인두 찾는다고 온 집안을 헤집었는데 결국 못 찾았습니다. 몇 시간을 찾아 헤메인 건지... 그것 때문에 글이 너무 늦게 나왔네요. ㅡ.ㅡ;;; 오랜만이네요. 이 야밤에 포스팅을 발행하는 것도~ 예전엔 주로 야밤에 발행했었는데 말이죠. 캐플 블로그에는 올빼미님들이 많으시니 그냥 발행하겠습니다. ^^
아무튼, Bootmgr 부트 매니저를 단순 복사로 설치하는 방법 외에도 이렇게 BCDBoot 를 활용하여 설치하는 방법도 있다는 걸 알아두시고, 그럼 잘 활용하실 바라면서 이번 글은 이쯤에서 마치도록 하겠습니다. ^^
'컴퓨터관련' 카테고리의 다른 글
윈도우8 bootloader repair...펌 (0) | 2014.11.26 |
---|---|
복구파티션없이 uefi 부팅 윈도우 설치하기...펌 (0) | 2014.11.26 |
[스크랩] UEFI 기반 디스크 파티션 권장 구성 (0) | 2014.11.26 |
uefi 부팅용은 반드시 메인보드지원, 64비트운영체계.... 저장용일 경우는 그냥 윈7이상이 필요...펌 (0) | 2014.11.26 |
uefi 윈도우 설치하기... 100짜리 fat32 파티션에 uefi부팅파티션을 만듬...펌 (0) | 2014.11.26 |
그리고 PE 에서도 이 방법으로 작업할 수 있습니다.
다시말해 기존 bcdboot명령어에서
즉, Bcdboot C:\Windows 에서
C:\Windows 부분이 D:\Bootmgr-8로 바뀌었다고 보면 되겠군요.
그럼 pe에서는 /s로 대상을 지정해 사용하면 되겠군요...
감사합니다.
한가지 의문점이 있습니다.
* 윈도우 8 64BIT로 요즘 대부분의 PC나 노트북들이 UEFI 방식으로 세팅되어서 출하되고있는듯 합니다.
문제는 64비트용 PE를 사용하기에는 지원어플이 턱없이 부족함에 효용성이 많이 떨어집니다.
따라서 기존 32비트용 PE를 부트매니저 교체방식을 이용하여 로딩시킬수 있는지 여부가 궁금합니다.
정말 유니크한 포스팅들이 저에겐 많은 도움이 됩니다. 늘 감사하게 생각하고 있습니다.
늘 건강하세요 캐플님.
이후 자체를 부트가능하게 구성해준후에 UEFI부트 항목에서 메뉴를 통해 해당 디스크를 고르면 부트되게는 됩니다
아니면 미검증이지만 grub계열을 추가해준다음 여기에서 처리하면 될 가능성이 있습니다
약간 다른 내용이지만 궁금해서 질문을 드립니다
PE에서 사용시 Bcdboot D:\Windows 하면 D의 윈도우가 PE의 BCD에 등록이 될텐데...
이것을 C의 BCD에 등록시키는 방법은 뭔가요?
잘 보고갑니다..^^
댓글 달기전 필독
공감백배입니다.
역시
bcdedit /create /d "Windows 98 SE" /application bootsector
bcdedit /set {GUID} device boot
bcdedit /set {GUID} path \bootsect.dos
bcdedit /displayorder {GUID} /addlast
그래서 도저히 모르겠다 싶어서 {GUID} 부분만 빼고 작성하니 에러는 없지만 네 번째 줄까지 작성해고 bootsect.dos 생성해서 재부팅해보니 목록 선택 화면도 안 나오고 그냥 지나가버립니다. 윈도우 ME+윈도우7 멀티부팅 할 땐 다른 방법으로 해아 하는 것입니까?
p.s 그리고 윈도우 98 이나 ME 는 디스크 용량 인식에 문제가 있어, 요즘의 대용량 디스크에서 98 이나 ME 를 디스크의 뒷 부분에 위치시키면 98이나 ME 에서 파티션을 인식하지 못해서 부팅이 되지 않을 수 있습니다. 그 부분도 한 번 잘 살펴보시고요.
윈도 드라이버 인증서미비 문제로 메인은 어쩔수없이 꼭 32비트만 써야하는 입장입니다.
32비트 윈도는 당연히 GPT는 인식이 불가능하니 BIOS 부팅입니다.
그런데 VHD 윈도우는 64비트로 해서 UEFI로 해보고 싶은데요.
VHD를 GPT로 포맷하여 EFI를 구성하여 64비트 윈도를 올렸으나 마땅한 부팅방법이 막막하네요.
물론 듀얼디스크로는 BIOS와 EFI를 각각 만들어 Grub4Dos를 매개체로 상호 전환할수 있었습니다.
단일 디스크일때 BIOS 부팅에서 VHD의 EFI로 넘어가는 구성은 안될까요?