윈도우 7 계열의 부팅 항목은 어떻게 구성이 되어 있을까요? 이번 글에선 그 이야기를 해 보도록 하겠습니다.




윈도우 7 계열 부팅 항목이란?

지금까지 줄기차게 사용한 윈도우 7 계열이란 말은 사실 공식적인 말은 아닙니다 제가 나름대로 윈도우들의 종류를 분류하기 위해 사용한 말이지요. 사실 정확하게 따진다면 윈도우 비스타 계열이라고 해야 하지만 가장 대중적인 것이 윈도우 7 이라 그렇게 부르게 되었습니다.

윈도우 7 - 버전 6.1


윈도우 비스타 - 버전 6.0윈도우 8 - 버전 6.2

아무튼 윈도우 7 계열이란 스크린 샷에서와 같이 6.x 버전대의 윈도우들을 의미합니다. 이와 같은 버전대의 윈도우들에는 아래의 종류가 있습니다. (윈도우 PE 의 경우 윈도우 PE 계열로 따로 분리하여 설명하겠지만 일단 [윈도우 7 계열 ⊃ 윈도우 PE 계열 - 2.0 이후] 의 관계를 가지기 때문에 우선 포함시켰습니다.)

데스크탑용 제품군
윈도우 비스타
윈도우 7
윈도우 8 - 출시 예정


서버용 제품군
윈도우 서버 2008
윈도우 서버 2008 R2


윈도우 PE
윈도우 PE 2.x, 3.x


이 윈도우들은 모두 Bootmgr 부트 매니저를 기반으로 부팅이 이루어지며 BCD 내에서 Windows 부팅 로더(OSLOADER) 유형에 속하여 동일한 구성을 가지게 됩니다. 즉, 윈도우 비스타나 윈도우 7 이나 모두 (설치 당시) Bootmgr 부트 매니저를 설치하여 기본 매니저로 구성하고, Bootmgr 과 BCD 내에서 모든 부팅의 구성이 이루어지며, 항목의 구성이나 옵션의 설정 등이 모두 동일한 구조를 가지고 있습니다.

그러니까 부팅의 관점에서 보자면 하나의 동일한 개체로 볼 수 있다는 것이지요. 그래서 윈도우 비스타나 윈도우 7, 서버 제품군의 윈도우 서버 2008 (R2) 까지 부팅과 그 부팅을 구성하는 작업은 모두 동일합니다. 이 점을 우선 염두해 두세요.

문 : 윈도우 7 의 부팅을 구성하는 것은 알겠습니다. 그럼 윈도우 비스타의 부팅은 어떻게 구성하나요?

답 : 둘이 똑같습니다.





윈도우 7 부팅 항목의 전체적인 구성

아래는 정상적인 과정을 거쳐 설치된 윈도우 7 의 가장 기본적인 부팅 항목 구성 모습입니다.



간단하죠? 그런데 윈도우 7 계열의 부팅 항목은 사실 그렇게 간단하지만은 않습니다. 표면적으로는 보는 것과 같이 매우 간단하지만 사실 윈도우 7 계열 부팅 항목은 다른 여러 항목들과 연계되어 구성이 되어 있습니다. 그래서 제가 연계되는 다른 항목들까지 포함하여 그림으로 정리를 해 보았습니다. 그 내용은 아래와 같습니다.

[클릭하시면 크게 보실 수 있습니다.]

윈도우 7 계열 부팅 항목의 전체적인 구성



겉으로 보기에는 간단한 것 같더니 실제로 전체적인 구성을 보니 꽤나 많은 항목들이 서로 연계되어 움직이고 있죠? 윈도우 7 계열의 부팅은 크게 윈도우 자체의 부팅 구성, 컴퓨터 복구와 관련된 부팅 구성, 최대 절전 모드와 관련된 부팅 구성 세 가지가 상호 연계되어 구성되어 있고 최종적으로 Windows 부팅 관리자의 부팅 목록에 등록되는 구조입니다.

이러한 모든 구성은 윈도우 설치시 또는 BCDBoot.exe 를 통해 부팅 항목을 생성할 때 자동으로 구성이 됩니다. 물론 가장 중요한 것은 윈도우 자체의 부팅 구성이고 이것만 존재해도 윈도우로 부팅할 수 있습니다. 다만 그러면 다른 연계되는 항목이 필요한 기능이 정상적으로 동작하지 않을 뿐이죠.

이러한 연유로 핵심이 되는 윈도우 부팅 항목 뿐만 아니라 컴퓨터 복구와 최대 절전 모드까지 모두를 알아보도록 하겠습니다.




윈도우 부팅 항목 - 윈도우 7 계열 부팅의 핵심


윈도우 부팅 항목은 부팅하려는 윈도우 자체에 대한 설정으로 윈도우는 이 항목을 통해 부팅을 진행하게 됩니다. 즉, 실질적인 윈도우에 대한 부팅 설정을 담고 있는 항목인 것이죠. 기본적으로 윈도우는 이 항목만 존재하면 부팅을 진행할 수 있습니다. 그래서 수동으로 부팅 항목을 생성하는 경우 우선 이 항목만 생성하게 됩니다.(뭐 꼭 그래서만은 아니지만 자세한 이야기는 뒤에서 ^^) 그럼 이걸 하나 하나 뜯어 보도록 하죠.



윈도우 부팅 항목의 유형 - Application OSLOADER

가장 먼저 윈도우 7 계열의 부팅 항목이 가지는 유형에 대해 설명을 해 보도록 하겠습니다. BCD 의 부팅 항목들은 정의하는 대상에 따라 몇 가지 유형으로 나누어져 있습니다. 이러한 유형을 나누는 큰 기준 중에 하나가 바로 해당 항목에서 사용하는 응용 프로그램(부트 로더, 프로그램)이 무엇이냐에 따라 그 종류를 나눈 것입니다.

윈도우 7 계열의 부팅 항목은 BCD 의 이러한 항목 유형들 중 OSLOADER 유형에 속합니다. OSLOADER 유형이란 간단하게 말해 Winload.exe 로더를 사용하는 윈도우들을 의미하는 것입니다.

* Winload.exe 에 대한 내용은 윈도우의 부팅은 어떻게 진행되나 - 윈도우의 부팅 구조 - 글에서 잠깐 이야기를 했었죠. 아래의 폴딩은 그 중 Winload.exe 에 관련된 설명만을 따로 빼낸 것입니다.

윈도우의 부팅 구조 중... - 폴딩 열기



그래서 Winload.exe 를 사용하는 윈도우 비스타, 윈도우 7, 윈도우 서버 2008, 윈도우 서버 2008 R2 는 물론 윈도우 PE 2.x 과 윈도우 PE 3.x 의 WIM 이미지까지 모두 OSLOADER 유형에 속하게 됩니다. 간단하죠?

여기에서 알 수 있는게 하나 있는데요. 윈도우 7 계열과 WIM 이미지를 사용하는 윈도우 PE 계열은 보통 나누어서 생각을 하지만 사실은 같은 녀석들이라는 겁니다. 저도 이 둘을 나누어서 설명을 하려고 하는데요. 그렇더라도 큰 틀에서는 같은 녀석들이기 때문에 이 글에서도 설명 중에 어쩔 수 없이 PE 와 관련된 내용들이 불현듯 치고 나와서 내용들이 좀 짬뽕되는 경향이 있을 겁니다. 그냥 그러려니 하세요. ^^;

* 윈도우 PE 에도 버전이 있습니다. 그 중 이 글에서 이야기하는 WIM 이미지를 사용하는(Bootmgr 과 BCD 를 통해 부팅하는) 윈도우 PE 는 PE 2.0 이후의 버전들이죠. 윈도우 PE 의 버전에 대한 정보는 Windows Preinstallation Environment 문서를 참고해 보세요.


아무튼 이러한 OSLOADER 유형은 부팅 항목을 생성할 당시 지정을 하며 다음과 같이 생성을 하게 됩니다.

bcdedit /create /d "윈도우의 표시 이름 - 설명" /application OSLOADER

즉, 윈도우 7 계열이나 윈도우 PE 계열의 부팅 항목을 수동으로 생성하는 경우 모두 이와 같이 OSLOADER 유형으로 지정하여 부팅 항목을 생성하게 됩니다.



윈도우 부팅 항목의 기본적인 구성


처음에 이야기한 것과 같이 이것은 정상적인 과정을 거쳐 윈도우 7 을 설치하고 난 후 살펴 본 가장 기본적인 모습의 부팅 항목 구성입니다. 각각의 항목 옵션들이 정확하게 무엇을 의미하는지 연관되는 항목들끼리 짝을 지어 설명을 해 보도록 하죠. (표시 순서와는 좀 다를 수 있습니다.)



1. Identifier

해당 부팅 항목의 {GUID} 식별자를 의미합니다. 부팅 항목을 생성할 때 자동으로 지정되는 것으로 한 번 지정된 {GUID} 식별자는 사용자 임의로 제거나 수정이 불가능합니다. 항목들끼리의 구분을 위한 용도로 다른 항목에서(ex. Windows 부팅 관리자의 Displayorder 항목에 등록) 해당 부팅 항목을 지정할 때 사용됩니다. [관련 포스팅]



2. Device 와 Path

Device 와 Path 가 짝을 이뤄 응용 프로그램(부트 로더, 프로그램)의 전체 경로를 설정합니다. OSLOADER 뿐만 아니라 거의 모든 항목 유형에서 동일한 의미를 가지고 공통으로 사용되는 옵션입니다. 일반적으로 해당 부팅 항목에서 부팅을 진행할 부트 로더를 지정한다고 생각하시면 편리합니다.

Device : 응용 프로그램이 위치해 있는 장치를 설정. (장치는 파티션, VHD, WIM, Boot 를 의미)
Path : 응용 프로그램의 경로를 설정.(파일까지 포함)



윈도우 부팅 항목에서 응용 프로그램은 부트 로더를 의미합니다. 그럼 7 계열 윈도우들의 부트 로더는(Bootmgr 부트 매니저 말고) 무엇이라고 했죠? 윈도우에 내장된 Winload.exe 라고 했습니다. 그래서 윈도우 부팅 항목에서 응용 프로그램은 Winload.exe 로더가 되는 겁니다.


이러한 Winload.exe 의 Device 와 Path 경로의 설정은 아래와 같이 하게 됩니다.


▼ 파티션에 위치한 윈도우의 Winload.exe - Device, Path 경로

Winload.exe 는 윈도우에 내장되어 있고 그 경로는 \Windows\System32\Winload.exe 로 모든 7 계열 윈도우에서 동일합니다. 즉, 현재 부팅 항목의 윈도우가 C: 드라이브에 위치해 있다면 Winload.exe 로더의 전체 경로는 아래와 같이 되는 것이죠.

C:\Windows\System32\Winload.exe

이제 이 전체 경로를 Device 와 Path 둘로 쪼개야 합니다. 먼저 C: 와 같은 드라이브는 파티션 장치에 속합니다. 이러한 파티션 장치는 partition=<드라이브:> 의 형태를 가집니다. 그래서 Winload.exe(응용 프로그램)이 위치한 C: 드라이브는 아래와 같이 설정합니다.

device partition=C:

이제 처음의 전체 경로에서 이를 제외한 나머지, 즉, 파일까지 포함한 경로 \Windows\System32\Winload.exe 는 그대로 Path 로 들어가면 됩니다.

path \Windows\System32\Winload.exe

쉽죠? 이러한 Winload.exe 에 대한 Path (경로)는 모든 7 계열(PE 포함) 윈도우에서 동일하니 고정값이라고 보셔도 됩니다. 고로 7 계열(PE 포함) 윈도우 부팅 항목에서 Device 와 Path 를 설정할 땐 Device 만 잘 파악하시면 되는 겁니다.


만약 윈도우가 D: 드라이브에 위치해 있다. 그럼 아래와 같이 되는 것이죠.

device partition=D:
path \Windows\System32\Winload.exe


간단하죠?

항상 변하는 값인 가변적인 드라이브 문자와 이를 자동으로 인식하는 BCD

한 가지, 드라이브 문자는 부팅한 윈도우에 따라서 다를 수 있습니다. 또한 언제든지 사용자가 바꿀 수도 있습니다. 즉, 드라이브 문자는 항상 변할 수 있는 가변적인 값입니다. 그래서 Device 에서 지정하는 드라이브 문자는 항상 현재 작업을 진행 중인 윈도우를 기준으로 해야 합니다. 복잡하게 생각할 것 없이 현재 작업 중인 윈도우에서 해당 윈도우가 D: 드라이브에 위치해 있다면 그냥 partition=D: 로 값을 설정하면 된다는 것이죠.

이렇게 현재를 기준으로 파티션 장치의 드라이브가 한 번 설정되면 이후부터는 해당 파티션의 드라이브 문자의 변화에 맞춰 값이 자동으로 변경됩니다. 즉, D: 드라이브일 때 Device 를 partition=D: 로 설정했고 이후 해당 파티션이 E: 드라이브로 바뀌었다면(다른 윈도우로 부팅했거나 사용자가 바꿨거나) 자동으로 Device 의 값이 partition=E: 로 바뀐 드라이브 문자에 맞춰 변경된다는 의미입니다. 그러니 Device 로 파티션 장치의 드라이브를 설정할 때에는 드라이브 문자가 바뀔 상황이나 다른 윈도우에서의 드라이브 문자까지 신경을 쓸 필요는 없습니다. 알아서 적용됩니다. (이건 표면적으로 드러나는 부분만을 통해 설명한 것으로 좀 더 자세한 설명이 필요한 부분입니다. 이에 대한 내용은 다른 글에서 이야기하도록 하겠습니다.)

또한 파티션 장치 뿐만 아니라 VHD 장치나 Ramdisk 장치 등 BCD 에서 사용되는 모든 드라이브 문자 설정 값은 이처럼 작업을 진행 중인 현재를 기준으로 드라이브를 설정하면 이후부터는 해당 드라이브 문자의 변화에 맞춰 자동으로 값이 변경됩니다. [관련 포스팅 예정]

참고로 이 내용은 모든 Device 종류의 항목 옵션들에서 동일하게 적용됩니다.(Device, OSDevice, FileDevice, RadiskSDIDevice 등)



▼ VHD 에 위치한 윈도우의 Winload.exe - Device, Path 경로

Winload.exe 는 윈도우에 내장되어 있고 그 경로는 \Windows\System32\Winload.exe 로 모든 7 계열 윈도우에서 동일하다고 하였습니다. 이는 VHD 에 설치된 윈도우에서도 마찬가지입니다. 그래서 신경쓸 것이 없지요.

문제는 Device 인데 사실 별거 없습니다. VHD 는 따로 VHD 장치로 설정하면 됩니다. VHD 장치는 간단하게 표현하면 vhd=<VHD 전체 경로>의 형태를 가집니다. 그래서 윈도우가 포함된 VHD 파일의 경로가 C:\VHD\Win7.vhd 라면 아래와 같이 설정하면 되죠.

device vhd=[C:]\VHD\Win7.vhd
path \Windows\System32\Winload.exe


이와 같이 VHD 장치는 해당 VHD 파일의 전체 경로를 입력해 주면 됩니다. 근데 뭔가 조금 그냥 넘기기에는 거시기한게 있죠?


예제에서 VHD 파일의 전체 경로는 C:\VHD\Win7.vhd 입니다. 근데 드라이브 부분은 대괄호를 사용하여 [C:] 로 또 따로 분리를 했습니다. 이것을 설명해 드리도록 하겠습니다.

VHD 장치내에서 VHD 전체 경로에 포함된 드라이브는 또 파티션 장치입니다. 그래서 이를 또 분리해 주어야 합니다. 즉, 이와 같이 Device 가 어떤 파일의 전체 경로를 지정해주는 형태라면 Device 내에서도 해당 파일의 전체 경로를 장치와 경로로 또 나누어 주어야 한다는 것이죠. 이는 간단하게 아래와 같이 생각하시면 됩니다.

device (device) partition=C:
device (path) \VHD\Win7.vhd

→ device (device) partition=C: (path) \VHD\Win7.vhd
→ device [C:]\VHD\Win7.vhd


이렇게 되는 것이죠. 즉, partition=C: 를 간단하게 표현하기 위해 partition= 을 생략하고 대괄호로 묶어 [C:] 드라이브와 같이 표현한 것입니다. 간단하죠?


이 때 VHD 장치 내에 포함된 드라이브 문자 값도 앞서 파티션에서 설명한 것과 같이 가변적인 값이고 동일한 내용을 적용 받습니다. 즉, 현재 작업 중인 윈도우를 기준으로 해야 하고 한 번 설정 후 변경되는 내용은 알아서 적용이 됩니다.


▼ VHD 에 위치한 윈도우가 시스템에 연결되어 드라이브 문자를 할당 받았다면?

이런 의문이 들 수 있습니다. C:\VHD\Win7.vhd 라는 윈도우가 담긴 VHD 가 있고 이 VHD 가 현재 시스템에 연결되어 V: 라는 드라이브 문자를 할당받은 상태입니다. 그럼 이 윈도우는 현재 VHD 장치이기도 하면서 동시에 파티션 장치이기도 하죠? 그럼 이럴 때는 어떤 장치로 Device 를 설정해야 할까요?

답은 아무 것으로 해도 상관이 없습니다. 그냥 현재 상태에서 편하신 대로 하면 됩니다. VHD 장치이면서 동시에 파티션 장치일 때 Device 를 파티션 장치로 설정을 하면 BCD 외부적으로는 현재 설정한 파티션 장치로 표시해 주지만 내부적으로는 자동으로 해당 파티션이 위치한 VHD 장치 경로로 저장이 됩니다. 즉,

device partition=V:
path \Windows\System32\Winload.exe


이와 같이 설정하면 BCD 는 자동으로 V: 드라이브가 포함된 VHD 파일을 찾아내어 아래와 같이 VHD 장치 경로로 변환하여 저장을 한다는 것이죠. (일단 표시는 파티션 장치로 해줍니다.)

device vhd=[C:]\VHD\Win7.vhd
path \Windows\System32\Winload.exe


이러한 내용은 윈도우 7 의 부팅 - 부팅 항목의 정확한 GUID 식별자와 Device 경로 확인하기 [BCDEdit.exe] 글에 실제 예제가 설명 되어 있습니다. 참고해 보시길 바랍니다.


▼ WIM 에 위치한 윈도우의 Winload.exe - Device, Path 경로

path 는 \Windows\System32\Winload.exe 로 항상 동일 즉, 고정값이니 잊지 마세요.

윈도우가 WIM 이미지 파일 안에 위치해 있는 경우도 있습니다. 윈도우 PE 가 그렇죠. 드라이브는 파티션 장치로, VHD 는 VHD 장치로, 그럼 WIM 이미지는? Ramdisk 장치로 설정하면 됩니다. Ramdisk 장치는 간단하게 ramdisk=<WIM 전체 경로>,<램 디스크 항목> 의 형태를 가집니다.

만약 윈도우가 포함된 WIM 이미지 파일의 경로가 D:\Sources\Install.wim 이라면 아래와 같이 설정하면 되죠. (우선 램 디스크 항목 값은 무시하세요.)

device ramdisk=[D:]\Sources\Install.wim,{ramdiskoptions}
path \Windows\System32\Winload.exe


이 때 WIM 파일의 전체 경로 중 드라이브(파티션 장치)는 대괄호로 묶고 나머지 경로와 분리하는 것은 VHD 경우 때와 동일합니다. 간단하죠?

여담으로 예제를 보시면 아시겠지만 ramdisk 장치의 경우 앞에서는 없던 램 디스크 항목 값이란 것이 추가적으로 필요한데요. 이는 WIM 이미지 파일은 부팅할 때 메모리에 램 디스크를 생성하고 그곳에 WIM 이미지 파일을 마운트하는 구조로 부팅이 진행되기 때문에 그런 것으로 나중에 윈도우 PE 의 부팅에서 좀 더 자세하게 다루게 될 것입니다. 그러니 우선은 장치 경로 부분만 생각하시고 램 디스크 항목 부분은 무시하시길 바랍니다. 한 번에 너무 많은 내용이 나오면 피곤하잖아요. ^^


▼ 드라이브 문자가 할당되지 않은 파티션에 위치한 윈도우의 장치 경로는?

파티션 장치는 partition=C: 와 같이 설정해야 하는데 해당 파티션에 드라이브 문자가 없다면 어떻게 해야 할까요??

이와 같은 경우 해당 파티션에 드라이브 문자를 할당 할 수 있다면 우선 그냥 임시로 드라이브 문자를 할당한 후 BCD 작업을 진행하시면 됩니다. 그리고 작업을 모두 마친 후 원래대로 드라이브 문자를 제거하면 되는 것이죠. 간단하죠? 복잡하게 생각하지 마세요~


근데 이게 파티션이라기엔 뭔가 좀... 음... 애매한 경우와 복잡하게 생각해보고 싶으신 분들은 아래의 폴딩을 열어보시길 바랍니다.

폴딩 열기




이상으로 윈도우 부팅 항목의 응용 프로그램인 Winload.exe 의 Device 와 Path 경로를 설정하는 것에 대해서 알아보았습니다. 간단... 하지 않은가요?



3. OSDevice 와 SystemRoot

OSDevice 와 SystemRoot 가 짝을 이뤄 윈도우 시스템 폴더의 전체 경로를 설정합니다. 이것은 윈도우를 의미하는 OSLOADER 유형에서만 사용되는 값으로 윈도우 시스템 폴더 즉, 윈도우의 본체인 [Windows] 폴더의 전체 경로를 설정해 주면 됩니다.

OSDevice : 시스템 루트(윈도우 폴더)가 위치해 있는 장치를 설정. (파티션, VHD, WIM, Boot)
SystemRoot : 시스템 루트(윈도우 폴더)의 경로를 설정.




이러한 OSDevice 와 SystemRoot 는 앞서 설명한 Device 와 Path 때와 동일한 방식으로 설정하면 됩니다. 간단하게 생각하면 아래와 같습니다.

OSDevice = Device
SystemRoot = Path


즉, 윈도우가 C:\Windows 에 설치되어 있는 상황을 가정해 보도록 하겠습니다. 7 계열 윈도우들의 윈도우 폴더는 \Windows 로 모두 동일하죠.(그냥 이건 고정이라고 생각하세요.) 그래서 윈도우가 C: 드라이브에 설치되어 있다면 윈도우 시스템 폴더의 전체 경로는 아래와 같습니다.

C:\Windows

이걸 또 장치와 나머지 경로로 나누어서 장치는 OSDevice 로, 나머지 경로는 SystemRoot 로 넣어주시면 되는 겁니다.

osdevice partition=C:
SystemRoot \Windows


말했던 것과 같이 7 계열 윈도우들의 경우 윈도우 폴더의 경로는 \Windows 로 항상 동일합니다. 그러니 SystemRoot 값은 고정이라고 생각하시면 됩니다.

OSDevice 의 경우는 Device 때와 100% 동일합니다. 즉, 윈도우가 드라이브에 위치해 있으면 파티션 장치 경로로, VHD 에 위치해 있으면 VHD 장치 경로로, WIM 이미지에 위치해 있으면 Ramdisk 장치 경로로 설정해 주면 되는 것이죠. 앞에서 모두 설명했죠?


Device 와 Path, OSDevice 와 SystemRoot

거의 비슷한 대상을 지정하고 값도 비슷해 둘을 헷갈리기 쉬운데요. 윈도우에 내장된 Winload.exe 의 전체 경로를 지정하는 것이 Device 와 Path 이고, 윈도우 자체의 전체 경로를 지정하는 것이 OSDevice 와 SystemRoot 입니다. 헷갈리지 마세요. ^^

쌍둥이 형제 Device 와 OSDevice

윈도우의 시스템 폴더는 [Windows] 폴더입니다. - OSDevice
Winload.exe 는 윈도우의 시스템 폴더인 [Windows] 폴더의 하위에 내장되어 있습니다. - Device

\Windows ⊃ \Windows\System32\Winload.exe

이러한 연유로 Device 와 OSDevice 는 항상 같은 장치를 가르키게 됩니다. 즉, Device 와 OSDevice 의 값은 항상 동일해야 하는 것이죠. 그래서 윈도우가 설치된 위치를 확인하여 Device 와 OSDevice 를 동일하게 설정한 후 이제 고정값인 Path \Windows\System32\Winload.exe 와 SystemRoot \Windows 를 끼워 넣으면 된다고 간단하게 생각하시면 됩니다.

그럼 Device 와 OSDevice 는 항상 동일하니 그냥 둘 중에 하나로 통일하지 왜 따로 분리시켜 두 번 작업하게 만들었을까요? 결론부터 말하자면 그걸 제가 어찌 압니까? 마이크로소프트사 프로그래머들이 처음에 BCD 를 설계할 때 피곤해서 약 좀 빨고 설계했나 보죠. 피곤하면 그럴 수 있어요. 저도 계속 글을 쓰거나 자료를 제작할 때 이렇게 헛소리도 하고 한 짓 또 하기도 하고 그러는데 윈도우와 같은 거대 프로젝트에서는 오죽하겠어요. 아니면 제가 모르는 다른 무엇인가가 있거나... 아무튼 제가 만든 거 아닙니다.



4. Description

항목에 대한 설명을 설정합니다. 부팅에 사용되는 윈도우 항목의 경우 이러한 설명이 그대로 멀티 부팅 목록에서 해당 항목을 표시하는 이름으로 사용됩니다.



처음 부팅 항목을 생성할 당시 /d 매개 변수를 통해 설정하게 됩니다.

bcdedit /create /d "윈도우의 표시 이름 - 설명" /application OSLOADER



5. Locale

응용 프로그램의(윈도우 부팅 항목에서는 Winload.exe) 로케일을 설정합니다. 한글 윈도우의 경우 한국어인 ko-KR 로 설정하면 됩니다. 영문 윈도우의 경우 en-US 로 설정하면 됩니다.

그런데 여기에 약간 재미있는 부분이 있는데요. 윈도우 7 의 경우 로케일을 ko-KR 로 설정하고 이 로케일의 대상인 Winload.exe 의 MUI 파일을 제거하면(\Windows\System32\ko-KR\Winload.exe.mui) 윈도우 시작 화면이 기본값인 영문 버전으로 출력됩니다. 하지만 로케일을 기본값인 en-US 로 지정하면 이와는 또 다르게 비스타의 지렁이가 출력되죠.

Winload.exe.mui 제거locale en-US 설정


그냥 재미로 알아두시라구요.



6. Inherit

해당 부팅 항목이 상속해야 할 상속 항목을 설정합니다. 어렵게 생각하지 마시구요. 상속 항목은 다른 항목들을 위한 설정을 모아놓은 항목이라고 생각하시면 됩니다. 즉, 모든 항목에서 동일하게 사용하는 설정들을 모아 놓고 공통으로 사용할 수 있도록 만든 것이죠.

윈도우 부팅 항목인 OSLOADER 유형의 경우 모두 공통으로 {bootloadersettings} 항목을 상속합니다. 고정된 값이니 그냥 외우시면 됩니다.



7. NX, DetectHAL, PAE, WinPE, EMS...

해당 윈도우의 기능에 대한 설정들입니다. 각각의 옵션마다 연관된 윈도우의 기능이나 부팅시 관련된 기능들을 켜고 끄게 됩니다. 많이 사용되는 주요 옵션들은 아래와 같습니다.

NX - NX bit(실행 방지 비트) 설정으로 윈도우의 DEP(데이터 실행 방지) 기능을 설정 합니다.

DetectHAL -
HAL(하드웨어 추상화 계층) 의 재설정 여부를 설정합니다. Sysprep 봉인된 윈도우의 부팅 항목인 경우 반드시 Yes 로 설정해 주어야 합니다.

PAE -
PAE(물리 주소 확장) 기능을 설정합니다. (32비트 운영체제에서 4GB 이상의 메모리 사용시)

WinPE - 부팅하는 윈도우가 PE(WIM) 임을 알려줍니다. WIM 이미지 파일에 대한 부팅 항목일 경우 반드시 Yes 로 설정해 주어야 합니다.

EMS -
커널 응급 관리 서비스의 사용 여부를 설정합니다. 일반적으로 사용할 일 없습니다.


이외에도 다양한 옵션들이 잇는데요. 이러한 옵션들 중 부팅 항목에 기본으로 포함되는 것들은 아래와 같습니다.

윈도우 7 계열 기본 포함
nx OptIn
detecthal Yes


윈도우 PE 계열 기본 포함
detecthal Yes
winpe Yes
ems Yes


이것은 어디까지나 기본으로, 설치가 완료된 윈도우의 경우 DetectHAL 옵션이 생략되기도 하며 같은 PE 계열인 윈도우 RE (컴퓨터 복구) 의 경우 EMS 는 제외되고 NX 옵션이 OptIn 값으로 추가되기도 합니다.

그리고 이 중에서 EMS 의 경우 윈도우 7 설치 DVD 의 부팅 항목에서 기본적으로 설정이 되어 있어 기본 포함으로 분류를 했는데요. 가정에서는 사실상 사용할 일이 없는 서비스로 판별이 됩니다. 윈도우가 부팅 불능 등의 상황에 빠졌을 때 원격에서 시리얼 연결 등을 통해 터미널 텍스트 모드로 접속, 최소한의 자원으로 문제에 대처하기 위한 관리 서비스 기능이라고 하는데 솔직히 서버를 위한 것으로 가정에서는 사용은 물론 구경하기도 힘들 듯 합니다. 그래서 생략하여도 아무런 문제가 없고 저는 대체적으로 생략하는 편입니다.



실질적인 부팅을 위한 윈도우 부팅 항목의 구성

지금까지 설명한 내용이 7 계열 윈도우의 실질적인 부팅을 위한 주요 구성이었습니다. 즉, 윈도우는 OSLOADER 항목 아래 다음의 옵션들만 설정해주면 부팅을 진행할 수 있다는 것이죠.

Device
Path
OSDevice
SystemRoot
Description
Locale
Inherit
NX
DetectHAL

(WinPE)

이 중에서도 빨간색으로 표시한 Device, Path, OSDevice, SystemRoot, Description필수 옵션으로 이 중에서 단 하나만 없어도 부팅이 불가능합니다.(PE 계열은 WinPE 포함) 그러니 꼭 잊어먹지 마시구요.

또한 설치 완료된 윈도우의 경우(Sysprep 봉인된 윈도우 말고) 이렇게 필수 옵션 다섯 가지만을(PE 는 여섯 가지) 통해 부팅 항목을 구성하여도 윈도우는 부팅을 할 수 있습니다. 다만 나머지 설정들이 윈도우의 기능이나 부팅시 환경에 해당하는 것이라 그런 식으로 단순 무식하게 부팅 항목을 구성하지는 않습니다. ^^;

아무튼 이러한 연유로 수동으로 윈도우의 부팅을 구성하는 경우 BCDEdit.exe 를 통해 이와 같은 주요 항목 옵션들만 우선 설정해주게 됩니다.


이제 RecoverySequence, RecoveryEnabled, ResumeObject 세 가지 항목 옵션이 남았는데요. 제가 처음에 정리한 것과 같이 7 계열 윈도우의 부팅은 단순히 윈도우 부팅 항목 뿐만 아니라 컴퓨터 복구와 관련된 부팅 구성최대 절전 모드와 관련된 부팅 구성들이 함께 연계되어 움직인다고 하였죠. 이 세 가지 항목은 그것에 관련된 옵션들 입니다.

ResumeObject - 최대 절전 모드
RecoverySequence, RecoveryEnabled - 컴퓨터 복구


그런데 이 세 가지 항목들은 사실 사용자가 간섭할 항목이 아닙니다. 왜 그런지는 지금부터 설명을 하도록 하죠.

참고로 이 세 가지 항목들은 최대 절전 모드와 컴퓨터 복구가 필요없는 PE 계열 윈도우들에서는 사용되지 않는 옵션들입니다. 즉, 로컬 드라이브(또는 VHD 가상 디스크)에 설치된 7 계열 윈도우들만을 위한 옵션이라고 생각하시면 됩니다.





최대 절전 모드 부팅 구성 - 최대 절전 모드를 위한 부팅 항목과의 연결

최대 절전 모드 부팅 항목은 해당 윈도우가 최대 절전 모드로 들어간 후 다음번 부팅시 기본 부팅이 아닌 바로 저장해 두었던 최대 절전 모드 이전 상태로 윈도우가 원활히 복귀할 수 있도록 도와주는 부팅 항목입니다.



이러한 최대 절전 모드 부팅 항목은 해당 윈도우의 부팅 항목과 ResumeObject 옵션으로 서로 연결되어 있습니다.



최대 절전 모드 부팅 항목의 구성을 살펴보면 연결된 윈도우에 내장된 WinResume.exe 프로그램과 최대 절전 모드에서 현재 메모리의 내용을 저장하는 용도로 사용하는 Hiberfil.sys 파일에 대한 설정을 담고 있는 것을 알 수 있습니다.




즉, 최대 절전 모드 상태로 들어가 시스템이 종료된 경우 다음번 부팅에서 Bootmgr 부트 매니저가 자동으로 이전에 최대 절전 모드 상태로 들어갔음을 파악하고 윈도우 부팅 항목이 아닌 윈도우 부팅 항목에 ResumeObject 로 연결된 최대 절전 모드 부팅 항목을 통해 부팅을 진행하게 되는 것입니다.

아무튼 최대 절전 모드 부팅 항목은 Winload.exe 를 사용하는 윈도우 부팅 항목과는 다르게 응용 프로그램으로 WinResume.exe 을 사용하는 RESUME 유형에 속하게 됩니다.

이러한 ResumeObject 에 연결된 최대 절전 모드 부팅 항목은 자동으로 현재 부팅한 윈도우와 연결됩니다. 즉, 최대 절전 모드 부팅 항목의 Device, Path 와 FileDevice, FilePath 옵션은 윈도우에 내장된 WinResume.exe 과 Hiberfil.sys 이 지정되어 있는데 부팅 될 때마다 현재 부팅한 윈도우의 WinResume.exe 와 Hiberfil.sys 로 연결되는 것이죠. 그래서 하나의 최대 절전 모드 항목을 여러 개의 윈도우가 동시에 공유하는 것이 가능합니다. 또는 윈도우마다 각자의 최대 절전 모드 항목을 따로 가지고 있을 수도 있습니다. 어쨌든 윈도우로 부팅하면 해당 윈도우 부팅 항목의 ResumeObject 항목에 연결된 최대 절전 모드 항목의 옵션이 그에 맞게 자동으로 변경되는 것이니까요.


자 대충의 개념은 알아보았으니 이제 최대 절전 모드의 부팅 항목을 구성하고 ResumeObject 에 연결하는 것을 배워보아야 할까요? 결론부터 말하자면 알아볼 필요없습니다. 왜?

최대 절전 모드 부팅 항목과 이를 연결하는 ResumeObject 항목은 만약에 아직 구성되어 있지 않다면 윈도우가 부팅할 때 알아서 자동으로 최대 절전 모드 부팅 항목을 새로 생성하고 그에 맞춰 연결해 줍니다. 즉, 이 항목은 윈도우가 자동으로 관리하는 항목이라는 것이죠. 그러니 신경쓰실 필요 없습니다.

이러한 이유로 BCDEdit.exe 를 통해 윈도우의 부팅 항목을 수동으로 생성할 때에는 ResumeObject 에 대한 설정을 해 줄 필요가 없는 것입니다. 그래서 최대 절전 모드 부팅 항목 구성에 관한 것은 여기까지!




컴퓨터 복구 부팅 구성 - WinRE.wim 부팅 항목과의 연결

컴퓨터 복구 부팅 항목은 윈도우의 고급 옵션 부팅 목록에서(F8 로 접근) 부팅 가능한 컴퓨터 복구의 부팅 설정을 담고 있는 부팅 항목입니다.



이러한 컴퓨터 복구 부팅 항목은 윈도우 부팅 항목과 RecoverySequence 옵션으로 서로 연결이 되어 있습니다.



그런데 컴퓨터 복구 부팅 항목은 보시는 것과 같이 윈도우 RE(WinRE.wim) - 윈도우 PE 를 복구용으로 제작한 버전. [관련 문서] - 에 대한 부팅 항목입니다.



즉, 컴퓨터 복구로 부팅을 진행하면 윈도우에 내장된 다른 기능이 실행되는게 아니라 WinRE.wim 이라는 별개의 윈도우 RE(윈도우 PE) 로 부팅하는 것이죠.(근데 윈도우 RE 도 윈도우가 각각 구성하고 설치하는 것이니 윈도우에 포함시켜야 할까요? 흠...)

아무튼 컴퓨터 복구 부팅 항목은 WinRE.wim 의 부팅 항목으로 윈도우 PE 계열의 부팅 항목입니다. 그래서 당연히 OSLOADER 유형에 속하게 됩니다. 왠지 구조가 낯이 익죠? 지금까지 뭐가 빠지게 설명했으니 구조가 낯이 익으셔야 하는데...


참고로 WinRE.wim 은 PE 계열이기 때문에 Device 와 OSdevice 에서 Ramdisk 장치를 사용하게 되고 Ramdisk 장치는 필수로 램 디스크 항목을 필요로 합니다. 그래서 램 디스크 항목으로 WinRE.wim 전용의 boot.sdi 장치 옵션 항목을 추가적으로 가지고 있고 이와 연결되어 있습니다.

* WinRE.wim 과 boot.sdi 는 같은 위치에 설치됩니다. 그리고 이렇게 설치된 boot.sdi 는 WinRE.wim 가 전용으로 사용하게 됩니다. 뭐 필요하면 우리가 사용해도 되지만 굉장히 귀찮죠. 그래서 나중에 이야기하겠지만 공용으로 사용할 {ramdiskoptions} 을 설정하고 사용하는 겁니다.



뜬금없이 윈도우 PE 계열의 부팅 항목에 대해서도 대충 설명을 하게 되었는데요. 윈도우 PE 계열의 부팅에 대해서는 그 때 더 자세하게 알아보도록 하고 아무튼 컴퓨터 복구 부팅 항목의 실체는 이와 같으며 대충 이렇게 구성이 되어 있습니다. 로 대충 마무리 짓죠. 대충...


자 그럼 이러한 컴퓨터 복구 부팅 항목은 어떻게 구성해야 할까요? 사실 윈도우 부팅 항목과 동일한 종류의 항목이니 위에서 윈도우 부팅 항목 구성할 때처럼 똑같이 구성하면 될까요? 직접 해보진 않았지만 그래도 되긴 할 듯 싶은데 잘 될련지도 모르겠고... 이게 단순히 부팅 항목한 생성하고 연결한다고 끝나는 문제도 아니고...

그래서 윈도우는 컴퓨터 복구 부팅 항목의 구성을 전문적으로 관리하는 ReAgentC.exe 라는 도구를 통해 관리하게 됩니다.



이러한 ReAgentC.exe 를 통하면 WinRE.wim 과 boot.sdi 파일의 설치와 제거는 물론 컴퓨터 복구 부팅 항목의 구성과 윈도우 부팅 항목으로의 RecoverySequence, RecoveryEnabled 를 통한 연결까지 통합하여 자동으로 처리해주죠. 그러니 굳이 실험 정신을 발휘하고 싶진 않군요.

아무튼 ReAgentC.exe 에 대한 내용은 BCDEdit.exe 를 통한 윈도우 부팅 항목의 수동 구성 직후 컴퓨터 복구에 대해 포스팅하도록 하겠습니다.




윈도우 7 계열 부팅 항목의 기본 구성 정리

자~ 어떠셨나요? 역시 이런 건 한번에 몰아서 정리해야 제맛이죠? 그럼 지금까지 설명한 내용 중 윈도우 PE 계열과 관련된 설명은 제외하고 윈도우 7 계열에만 한정하여 가장 중요한 윈도우 부팅 항목의 기본 구성에 대한 내용을 아래와 같이 그림으로 정리하고 이만 마치겠습니다. 다음 글에서 뵙죠.

[클릭하시면 크게 보실 수 있습니다.]



2012년 02월 18일 09시 20분 경 최대 절전 모드 부팅 항목과 ResumeObject 관련 오류를 수정하였습니다.

 

 

캐플 블로그에 공개된 글은 반드시 원본 글의 링크를 포함시키는 조건으로 자유롭게 이용하실 수 있습니다.
하지만 블로그의 발전을 위하여 되도록이면 링크로 글을 소개해주시길 부탁드립니다. ^^

- 상업적인 용도의 사이트는 대상에서 제외됩니다. -
- 글에는 오류가 있을 수 있고, 추후 수정 또는 재발행될 수 있습니다. -
  1. 돈워리 2012.02.14 21:03 신고  댓글주소  수정/삭제  댓글쓰기
    지금까지 잘 따라 했는데...
    오늘은 스트레스가 쌓인다ㅠㅠ
  2. BlogIcon 윤지환 2012.07.23 15:28 신고  댓글주소  수정/삭제  댓글쓰기
    좋은 글 감사합니다. 트위터에 링크 퍼 나르겠습니다~
  3. 돌산 2012.09.14 11:04 신고  댓글주소  수정/삭제  댓글쓰기
    7계열 부팅 항목 구성의 설명에 대힌 완결판이군요.전 캐플님의 글 중에서 이런 종류의 글을 제일 좋아합니다.일단 이론적으로 파악해 놓고 들어가야 제대로 알게 되는 것 같더군요.긴 글 정리하시느라 무척 수고하셨습니다.

댓글을 달아 주세요

- 댓글에선 예의를 지켜주시기 바라며, 블로그지기는 댓글에서 따로 활동하지 않습니다.

* 티스토리 사용자는 여기를 클릭하시면 로그인 됩니다.

BBCode 안내   굵게 밑줄 기울임 취소선   취소선 취소선 취소선 취소선   왼쪽 정렬 가운데 정렬 오른쪽 정렬   코드박스 인용구 이미지   이미지 업로드-Imgur.com