본문 바로가기

부팅과 멀티 부팅

[Bootmgr] Bootmgr 부트 매니저 구성을 수동으로 복사하는 작업과 문제점

여러 글에서 이야기 했듯이 Bootmgr 부트 매니저 구성은(그 중에서도 BCD) 윈도우 탐색기나 Copy 명령으로 직접 복사하는 것이 아닌 BCDBoot.exe 를 통해 설치 과정을 거치는 것이 좋다고 하였습니다. 특히나 단순 복사를 하더라도 BCD 만은 Import 를 통해 설치하는 것이 좋다고 했죠. 그 이유는 무엇일가요?

우선 BCDBoot.exe 를 통한 설치보다 단순 복사가 작업이 더 복잡하고 어렵습니다. 그리고 이런 단순 복사의 경우 다른 Bootmgr 부트 매니저 구성 파일들은 괜찮지만 BCD 파일에서 간혹 문제가 발생하기도 합니다.


예제로 작업을 진행해 보기로 하죠. 시스템(활성) 파티션 바꾸기 - Bootmgr 부트 매니저 구성시 글의 작업을 진행하면서 나머지 과정은 동일하게 하고 BCDBoot.exe 를 통해 Bootmgr 부트 매니저 구성을 새로 설치하는 과정만 그냥 복사 작업으로 대체하였습니다.

윈도우에서 Bootmgr 부트 매니저 구성을 복사하기 위해선 먼저 해당 파일들에 대한 소유권과 권한을 가져오는 작업을 진행해야 합니다. 그렇지 않으면 해당 파일에 접근(복사나 이동)할 수 없습니다.

takeown /F c:\bootmgr
takeown /F c:\boot /R /D Y

└ 현재 로그온한 사용자로 c:\bootmgr 파일과 c:\boot 폴더와 하위 폴더의 모든 파일에 대한 소유권을 가져옵니다.

icacls c:\bootmgr /grant %username%:F
icacls c:\boot /grant %username%:F /T

└ %username% [현재 로그온한 사용자] 에 모든 접근 권한을 허용합니다. 사용자를 직접 지정하려면 %username% 대신 사용자 계정을 입력하면 되고(ex. Administrator, 신희돈) 모든 사용자를 대상으로 하려면 Everyone 을 입력하면 됩니다.


이렇게 Bootmgr 부트 매니저 구성에 대한 소유권과 접근 권한을 가져온 후 해당 파일들을 그대로 새로운 활성 파티션인 E: 드라이브로 복사합니다.

xcopy c:\bootmgr e:\ /c /h /o /y
xcopy c:\boot e:\Boot /e /c /i /h /o /y



그런데 이렇게 해도 BCD 파일은 공유 위반이라며 복사가 안 됩니다. 즉, 현재 사용 중이기 때문에 연결을 끊기 전까지는 이런 식으로 복사할 수 없죠. 그래서 윈도우 PE 나 RE 에서의 작업이 아닌 윈도우에서 바로 작업하는 것이라면 어쩔 수 없이 bcdedit /export 명령을 사용해야 합니다. 바로 e:\boot 폴더로 BCD 파일을 추출하도록 하겠습니다.

bcdedit /export e:\Boot\BCD


Bootmgr 부트 매니저 옮기기 작업 끝~!

어째 뭔가 굉장히 삽질같죠? 이와 같이 BCDBoot.exe 를 통해 작업하는 것보다 작업이 훨씬 복잡해지기 때문에 그냥 BCDBoot.exe 로 설치하는 것을 권장하는 것입니다.


그건 그렇고 어쨌든 Bootmgr 부트 매니저 구성은 모두 갖춰줬죠? 단지 하나 차이가 있다면 BCD 를 Export 후 정상적으로 Import 하는 과정을 거치지 않고 그냥 파일 이름만 동일하게 맞춰서 BCD 가 있어야 할 그 자리에 뒀다는 차이만 있을 뿐입니다.

이제 이 상태에서 해당 파티션에 활성을 마크하고 재부팅을 진행하면 부팅은 정상적으로 이루어집니다.



사실 이렇게 작업해도 아무런 문제없이 사용할 수 있는 거죠.[단지 삽질의 성향이 강할 뿐...] 하지만 이런식으로 BCD 를 바로 복사하게 되면 작업 완료 후 간혹가다가 BCD 저장소를 열 수 없다는 오류 메시지가 출력되는 경우가 있습니다. (강제로 상황을 만들어 보려고 했는데 잘 안 되네요. ^^;)

강제로 상황을 만들 수 없어 영문 BCDEdit 예제를 올립니다.



즉, 부팅에는 문제가 없는데 BCDEdit.exe 작업을 하려고(부팅 항목을 확인하거나, 새로운 항목을 생성하려거나) 하면 저장소를 열 수 없다는 오류가 발생하는 것이지요. 항상 발생하는게 아니라 간헐적으로 발생하기 때문에 저도 정확하게 원인을 콕 찝어드리긴 어렵지만 제 경험상 이렇게 BCD 저장소 파일을 Import 가 아닌 직접 복사했을 때 이 문제가 발생하곤 하더군요. EasyBCD 와 같은 제 3 의 툴을 사용할 때도 간헐적으로 발생하기도 하구요.


아무튼 이 문제의 해결 방법에는 몇 가지가 있는데 단순 복사 문제로 발생한 것이라면 아래와 같이 처리를 할 수 있습니다. [현재 사용 중이라 접근이 안 되기 때문에 컴퓨터 복구, 윈도우 7 설치 DVD, PE 로 부팅하여 작업] 작업은 간단합니다. 이름을 바꿔준 후 정상적으로 Import 과정을 거치는 겁니다.

ren c:\boot\bcd bcd.old
bcdedit /import c:\boot\bcd.old




만약 위와 같은 상황이 아니고 진짜로 BCD 가 데미지를 입어서 깨진거라면 그리고 현재 단일 부팅 상태라면 아래와 같이 기존의 BCD 를 지워버리고 BCDBoot.exe 로 새로 생성하는 방법을 사용하면 됩니다. [물론 작업은 윈도우 7 설치 DVD 나 PE, RE, 컴퓨터 복구 등에서 작업]

del c:\boot\bcd /q
bcdboot c:\windows /l ko-KR




동일 상황에서 BCDBoot.exe 가 준비되지 않은 비스타 사용자라면 컴퓨터 복구에서 아래와 같이 처리를 하면 됩니다.

del c:\boot\bcd /q
bootrec /rebuildbcd




그 때 그 때 상황에 맞춰서 작업을 진행하면 문제를 해결할 수 있습니다.


아무튼 아무리 강제로 상황을 만들어보려고 해도 만들어지지가 않아 직접적인 예제를 보여드리지 못한 것이 굉장히 아쉬운데요. Bootmgr 부트 매니저 구성을 옮길 때 BCD 를 정상적인 설치 과정을(Import) 거치지 않고 단순 복사를 통해 구성을 하게 되면 이런 문제가 발생할 가능성이 있다는 것을 기억만 해 두시면 될 듯 합니다. 이 글은 여기까지 하죠. 이상입니다.