본문 바로가기

부팅과 멀티 부팅

[Bootmgr] VHD 에 설치된 윈도우 7 을 부팅 메뉴에 추가하기 - BCDEdit.exe

* 명령 프롬프트는 관리자 권한으로 실행하세요. [관련 포스팅]


* GUID 등의 입력이 까다롭다면 명령 프롬프트의 텍스트 복사 기능을 활용하세요. [관련 포스팅]


* 윈도우 XP 에서 작업하기 위해선 BCDEdit.exe 를 미리 준비해야 합니다. [관련 포스팅]



윈도우 7 계열의 부팅 항목이 어떻게 구성되어 있는지는 윈도우 7 의 부팅 - 윈도우 7 계열 부팅 항목의 전체적인 구성 이해하기 글에서 알아보았고 이전 글인 윈도우 7 의 부팅 - 윈도우 7 계열의 부팅 항목을 수동으로 생성하기 [BCDEdit.exe] 에서는 BCDEdit.exe 를 통해 7 계열 윈도우의 부팅 항목을 수동으로 생성하는 것까지 알아보았습니다. (처음 이 글을 접하신 분들은 못해도 저 두 글은 먼저 읽어보라는 의미입니다.)

사실 앞서의 두 글에서 필요한 거의 모든 설명을 마쳤기에 VHD 에 설치된 윈도우의 부팅 항목은 어떻게 생성해야 하는 것인지 결론이 나오지만 다시 한 번 정리하는 의미로 VHD 에 설치된 윈도우의 부팅 항목을 수동으로 생성하는 방법을 알아보도록 보도록 하겠습니다.


VHD 에 설치된 윈도우의 부팅 항목을 수동으로 생성할 때에는 아래와 같은 두 가지 방법이 있습니다.

첫 째, VHD 를 우선 시스템에 연결하여 드라이브 문자를 할당 받은 후 이전 글과 동일하게 Device 와 OSDevice 를 파티션 장치 형식으로 설정하는 방법.

둘 째, VHD 를 시스템에 연결하지 않고 Device 와 OSDevice 를 VHD 장치 형식으로 설정하는 방법.


* VHD 에 설치된 윈도우의 Device 와 OSDevice 경로는 사용자가 파티션 장치로 설정하든 VHD 장치로 설정하든 결국 BCD 내부엔 VHD 장치로 저장됩니다. 이건 이미 이야기를 드렸죠?


첫 번째 방식은 윈도우 7 이나 윈도우 PE 3.x 버전에서만(ex. 윈도우 7 설치 DVD) 작업이 가능하며 두 번째 방법은 모든 윈도우에서 작업이 가능하죠. 즉, VHD 를 시스템에 연결할 수 없는 윈도우 비스타나 XP 에서는 두 번째 방식만을 통해서 VHD 에 설치된 윈도우의 부팅 항목을 생성하는 것이 가능하다는 것입니다. 마찬가지의 이유로 윈도우 비스타나 XP 에서는 이미 알아보았던 BCDBoot.exe 를 통해서 VHD 에 연결된 윈도우의 부팅 항목을 자동으로 생성 추가하는 것이 불가능합니다.

아무튼 BCDEdit.exe 를 통한 작업에서 첫 번째 방식과 두 번째 방식의 차이는 Device 와 OSDevice 의 장치 경로를 파티션 장치로 설정하느냐 VHD 장치로 설정하느냐의 차이만 있을 뿐이기 때문에 부팅 항목의 생성을 위해(BCDBoot.exe 를 꼭 활용하려는 경우가 아니라면) 굳이 VHD 를 시스템에 연결하고 드라이브 문자까지 할당받은 후 파티션 장치로 설정할 필요는 없어 보입니다.


지난 글에서와 마찬가지로 VHD 에 설치된 윈도우의 부팅 항목을 생성하는데에도 여러분들이 파악해야 할 것은 한 가지입니다. 바로 작업하려는 시점에서 윈도우가 포함된 VHD 파일의 경로가 정확하게 어떻게 되느냐 하는 것이죠. 그에 맞춰서 Device 와 OSDevice 의 장치 경로를 VHD 장치로 설정해주고 나머지 옵션들은 기본값대로 동일하게 설정하면 되니까요.

그럼 실제로 작업을 진행해 보도록 하겠습니다. 윈도우가 포함된 VHD 파일의 위치가 현재 작업 시점을 기준으로 정확한 경로가 어떻게 되는지 파악합니다.


스크린 샷으로 보시는 것과 같이 예제에서는 현재 작업 시점을 기준으로(현재 윈도우를 기준으로) E:\VHD\Win7.vhd 가 우리가 부팅 항목을 생성하려는 윈도우가 포함된 VHD 파일의 전체 경로입니다. 이를 기준으로 부팅 항목을 수동으로 생성하고 부팅 메뉴에서 선택할 수 있도록 등록하는 작업을 진행해 보도록 하겠습니다.


VHD 에 설치된 윈도우의 부팅 항목 생성하기(VHD 경로로 직접 지정) - BCDEdit.exe
작업 전 파악한 VHD 파일의 위치
추가하려는 윈도우(VHD)의 위치 - E:\VHD\Win7.vhd



자세한 이야기는 지난 글에서 - [관련 포스팅] - 모두 했기 때문에 실질적인 작업만 쭈욱 연결하여 보여드리도록 하겠습니다. 명령 프롬프트를 관리자 권한으로 실행하신 후 다음의 명령을 차례로 내려줍니다.

1. 부팅 항목의 생성

bcdedit /create /d "Windows 7 Professional K - VHD" /application osloader

작업 후 출력되는 {GUID} 식별자를 기준으로 아래의 작업들을 추가로 진행합니다.


2. 부팅 항목의 설정

bcdedit /set {GUID} device "vhd=[E:]\VHD\Win7.vhd"
bcdedit /set {GUID} osdevice "vhd=[E:]\VHD\Win7.vhd"
bcdedit /set {GUID} path \Windows\System32\Winload.exe
bcdedit /set {GUID} systemroot \Windows
bcdedit /set {GUID} locale ko-KR
bcdedit /set {GUID} Inherit {bootloadersettings}
bcdedit /set {GUID} nx OptIn
bcdedit /set {GUID} detecthal Yes


* VHD 전체 경로에 공백이 존재하면 장치 경로 전체를 ""(큰 따옴표) 로 묶어주어야 합니다. 아니라면 큰 따옴표는 생략해도 됩니다.


3. 부팅 항목의 목록 등록

아래의 목록 등록 방식 중 원하는 것을 선택하여 작업합니다.

부팅 목록의 처음으로 등록
bcdedit /displayorder {GUID} /addfirst

부팅 목록의 마지막으로 등록
bcdedit /displayorder {GUID} /addlast




기본적인 부팅 항목의 생성 및 추가 작업을 마쳤습니다. 부팅 목록이 정상적으로 등록되었는지 확인하기 위하여 활성 목록을 확인합니다.

bcdedit



부팅 항목의 설정에 문제가 없고(오타가 없고) 부팅 목록(Displayorder) 에도 정상적으로 등록된 것을 확인하였으면 이제 시스템을 재부팅하여 부팅 목록이 정상적으로 출력되고 부팅이 진행되는지 확인 합니다.



부팅 목록의 등록이 정상적으로 완료되었죠. 실제로 부팅이 정상적으로 진행되는지 확인하기 위해 방금 추가한 윈도우로 부팅을 진행합니다. 아마 실수하지 않았다면 특별한 문제없이 부팅이 정상적으로 완료될 겁니다.


부팅이 정상적으로 진행되어 윈도우로 진입하였으면 다시 관리자 권한으로 명령 프롬프트를 실행하고 BCDEdit.exe 를 통해 활성 목록을 확인해 봅니다.


현재 부팅을 진행하였으니 식별자가 {current} 가상 식별자로 인식되었고 Device 와 OSDevice 의 장치 경로 중 드라이브 부분이 현재 부팅한 윈도우의 드라이브 문자에 맞게 바뀌어 있습니다. 이 부분은 해당 파티션의 드라이브 문자가 바뀌면 그에 맞춰 BCD 장치 경로의 값도 바뀐다고 말씀을 드렸었죠? 기억하세요. 아무튼 우리가 추가한 그 부팅 항목이 맞습니다. 또한 윈도우 부팅시 윈도우가 자동으로 최대 절전 모드 항목을 추가하고 이를 resumeobject 옵션으로 연결한 것을 확인할 수 있습니다.(물론 VHD 부팅은 최대 절전 모드를 사용할 수 없기에 필요없는 부분이지만 그래도 생성은 해줍니다.)

모든 작업을 마쳤습니다. 마무리로 이 부팅 항목을 기본 부팅 항목으로 사용할 것인지 부팅 목록의 표시 시간은 얼마로 설정할 것인지 등을 결정하고 아래의 작업들을 마무리로 해 주시면 됩니다.



지난 글과 마찬가지로 아직 컴퓨터 복구와 관련된 부팅이 구성되어 있지 않기 때문에 해당 윈도우에서는 컴퓨터 복구를 사용할 수 없습니다. 이제 이와 관련된 작업을 추가적으로 해주어야 하죠.




* 참고로 글에 오류라고도 볼 수 없는 오류가 있는데요. VHD 로 부팅 가능한 윈도우 7 에디션은 Ultimate 와 Enterprise 뿐이죠. Professional 이라고 적은 건 그냥 예제에서의 다른 부팅 항목이 Ultimate 인지라 구별을 위해 그냥 그렇게 적은 것입니다. 이를 보고 Professional 에디션도 VHD 로 부팅할 수 있다는 오해는 하지 마세요. ^^;