관리 메뉴

Black&White

Windows 7 부트 매니저와 BCD 본문

Windows/Windows 7

Windows 7 부트 매니저와 BCD

V.E.N 2013.01.29 13:15

출처 : http://powerwindows.co.kr/BoardAtips/64103


윈도우 7 의 부팅과 멀티 부팅

윈도우 7 의 Bootmgr 부트 매니저의 구조와 작동 원리를 이해하고 부팅 구성 데이터 저장소인 BCD 를 편집하는 것에 대해서 종합적으로 알아봅니다.

 

windows-7-rc2-booting-image.jpg

 

 

윈도우 7 의 기본 부트 매니저 - Bootmgr 과 BCD 저장소

윈도우 비스타 이전의 윈도우 NT 계열의 윈도우들은[윈도우 NT, 2K, XP, 2K3]  부 트 매니저로 NTLDR 을 사용하였습니다. NTLDR 부트 매니저는 Boot.ini 부팅 설정 파일을 통하여 윈도우의 부팅을 구성하고 윈도우가 부팅할 수 있도록 합니다. 그런데 컴퓨팅 환경은 끊임없이 변화하고 바뀝니다. 윈도우의 부팅 환경도 새로운 환경에 대응하여 변화되어야 합니다. 하지만 NTLDR 부트 매니저는 너무 오래되어 낡았습니다. 이제 더이상 NTLDR 만으로는 변화된 환경에 대응하기가 힘들어졌습니다.

 

그리하여 마이크로소프트에서는 변화된 컴퓨팅 환경과 새롭게 구성된 윈도우의 부팅 환경을 지원하기 위하여 새로운 부트 매니저인 Bootmgr 을 내놓았습니다. Bootmgr 부트 매니저는 NTLDR 부트 매니저를 대체하여 윈도우 비스타 이후의 윈도우들의[윈도우 Vista, 7, 2008, 2008 R2] 기 본 부트 매니저로 사용되고 있으며 변화된 윈도우의 부팅 구조에 대응하고 있습니다. 변화된 부팅 구조로 인해 새로운 윈도우들은 기존의 NTLDR 부트 매니저를 통해서는 부팅할 수 없으며 오직 Bootmgr 부트 매니저를 통해서만 부팅할 수 있습니다. 이러한 Bootmgr 부트 매니저는 BCD[Boot Configuration Data, 부팅 구성 데이터] 라는 기존의 Boot.ini 에 대응하는 새로운 부팅 설정을 사용합니다.

 

윈도우 7 의 부팅과 멀티 부팅의 구성은 모두 이러한 새로운 부트 매니저인 Bootmgr 과 BCD 저장소를 통해 이루어집니다. 지난 10여년이 넘는 세월 동안 우리를 이끌었던 NTLDR 과 Boot.ini 의 시대는 저물고 새로운 환경과 툴이 주어진 것입니다. 새로워졌다는 것은 다시 배워야 한다는 것을 의미합니다. 공부는 가방끈 내려 놓으면 끝나는 줄 알았는데 알고보니 관 뚜껑에 못 박히는 소리 듣기 전까진 끊임없이 배워야만 하더라는 진리가 다시금 상기되는 상황입니다. 그럼 변화된 윈도우 7 의 부팅에 대해 이 문서에서 종합적으로 배워보는 시간을 가져보겠습니다.

 

NTLDR 부트 매니저에서 Bootmgr 부트 매니저로의 변화

 

NTLDR -> Bootmgr

Boot.ini -> BCD

 

Bootmgr 과 BCD 저장소의 파일 구성

Bootmgr 과 BCD 저장소는 윈도우 비스타 이후의 윈도우 운영체제를 설치할 때 설치 프로그램이 자동으로 첫 번째 디스크의 활성 파티션에 설치합니다.[설치 당시 첫 번째 디스크에 활성 파티션이 설정되어 있는 경우] 이렇게 윈도우의 부트 매니저가 설치되어 시스템의 전체적인 부팅을 총괄하는 파티션을 윈도우에선 시스템 파티션이라고 부릅니다. 그렇다면 Bootmgr 부트 매니저는 어떠한 파일들로 구성되어 있을까요?

 

다음은 MSDN Windows 7 Ultimate K Edition 32Bit 버전을 설치했을 때 윈도우 7 설치 프로그램이 자동으로 구성한 BOOTMGR 부트 매니저 파일들입니다.[다른 에디션이나 x64 버전도 사실 동일합니다] 예제는 시스템 예약 파티션에 부트 매니저가 설치된 경우이며 시스템 예약 파티션은 임의로 드라이브 문자를 할당하였습니다.

 

부트 매니저 파일들은 시스템 파일 및 숨김 속성이 설정되어 있습니다. 폴더 옵션에서 보호된 운영체제 파일 숨기기의 체크를 해제하고 숨김 파일, 폴더 및 드라이브 표시로 설정하여야 해당 파일들을 확인할 수 있습니다.

 


[Root]

 


[Boot 폴더]

 

 

보시는 것과 같이 윈도우 7 의 부트 매니저는 크게 두 가지 요소로 구성되어 있습니다.

 

먼저 루트 폴더에는 Bootmgr 파일과 [Boot] 폴더가 존재하고 있습니다. Bootmgr 은 윈도우의 부팅을 총괄하는 부트 매니저 파일로써 [Boot] 폴더에 위치한 BCD 저장소를 참고하도록 되어 있습니다. 윈도우 XP 계열의 NTLDR 과 동일한 역할을 수행합니다.

 

다음으로 [Boot] 폴더로 들어가 보면 BCD 저장소 파일과 몇 가지 다른 파일들이 존재하고 있습니다. BCD 저장소는 부팅과 관련된 모든 설정들이 기록되어 있는 설정 파일이며 일종의 데이터베이스 파일로써 윈도우 XP 계열의 Boot.ini 파일과 동일한 역할을 수행합니다. Bootmgr 은 이러한 BCD 저장소에 기록된 설정들을 토대로 윈도우의 부팅을 구성하는 것입니다. 다른 폴더들은 부팅 화면에서 설정된 언어에 따라 화면을 출력해주기 위한 언어 파일들과 폰트 파일들입니다. 그 외에 메모리 진단을 위한 memtest.exe 파일과 BCD 의 로그 파일들이 보입니다.

 

여러가지 파일들이 있는데 이 중에서 부팅에 반드시 필요한 필수 파일들은 Bootmgr 파일과 [Boot] 폴더의 BCD, 그리고 [Boot] 폴더의 [Font] 폴더입니다. 이 세 가지 구성요소만 존재하면 윈도우 7 의 부팅을 구성할 수 있습니다.

 

나머지 언어 파일들은 없다면 기본 값인 영문으로 출력해주니 부팅에 꼭 필요하다고 볼 수는 없습니다. memtest.exe 는 메모리 진단 도구를 사용하지 않는다면 쓰이지 않으며 로그 파일들은 BCD 를 수정하게 되면 자동으로 생성되는 파일들입니다. BOOTSTAT.DAT 파일은 확인 결과 시스템마다 모두 다른 값을 가지고 있었으며 %windir% 폴더의 bootstat.dat 파일과는 다른 파일임을 확인하였습니다. 하지만 정확하게 무슨 기능을 담당하는 파일인지는 아직 파악하지 못하였으며 어쨌든 없어도 부팅에 지장은 없습니다.

 

윈도우 7 의 부트 매니저는 이러한 파일들로 구성되어 있습니다. 미리 말했다시피 이러한 부트 매니저는 윈도우 7 설치시 시스템의 첫 번째 디스크의 활성 파티션에 자동으로 설치가 됩니다. 그리고 윈도우에선 해당 파티션을 시스템 파티션이라고 부릅니다. 그렇다면 왜 첫 번째 디스크의 활성 파티션에 부트 매니저가 설치되는 것일까요?

 

IBM 호환 PC 의 부팅 과정과 활성 파티션, 시스템 파티션의 구성

윈도우의 모든 부트 매니저들은[시스템에서 사용되는 주 부트 매니저가 될 경우] 반드시 시스템의 첫 번째 디스크활성 파티션에 설치됩니다.[전통적인 BIOS 환경 기준입니다.] 왜 두 번째도 아니고 세 번째도 아닌 무조건 첫 번째 디스크에 그것도 아무 파티션에나 설치하지 굳이 활성 파티션에 설치가 되는 걸까요? 만약 첫 번째 디스크에 활성 파티션이 없다면 먼저 일정한 규칙에 의해 자동으로 하나의 주 파티션을 활성으로 설정한 후 거기에 설치하기도 합니다. 도대체 왜? 윈도우의 부트 매니저는 활성 파티션에 목숨을 거는 것일까요?

 


문제의 원인은 이 놈들!

 

 

그것은 전통적인 IBM 호환 PC 의 BIOS 펌웨어 환경과 기본 디스크의 MBR 구조에 입각한 PC 의 부팅 구조 때문에 그렇습니다. 즉, 이 말은 처음에 PC 만든 놈들이 그렇게 만들어놨고 윈도우는 이것을 철저하게 따르는 것이라 어쩔 수 없다는 겁니다. 다음은 IBM 호환 PC 의 기본적인 부팅 과정입니다.[바이오스 포스팅부터 윈도우 진입까지]

 

[디스크 관리] 파티션 활성화하기 - 활성 파티션의 변경과 윈도우의 변화

1. IBM PC 에서 사용되는 바이오스는(BIOS) 하드웨어의 체크를 모두 마친 후 시스템에 장착된 하드 디스크 중 첫 번째 디스크의 첫 번째 섹터로(CHS 0:0:1 - MBR) 이동하라는 명령을 내리게 됩니다. 이 첫 번째 섹터가 바로 마스터 부트 레코드(MBR) 입니다.

 

2. MBR 에는 마스터 부트 코드 영역(Master Boot Code)이라는 곳이 존재하는데 특별한 부트 프로그램이 기록되어 있지 않다면 기본적으로 파티션 테이블에 기록된 파티션들 중 활성으로(Active) 마크된 파티션을 찾으라고 기록이 되어 있습니다.

 

3. 파티션 테이블에서 활성으로 마크된 파티션을(활성 파티션) 찾았다면 해당 파티션의 부트 섹터로(Boot Sector) 이동 합니다.

 

4. 부트 섹터에는 현재 파티션에서 찾아야 될 부트 매니저가 기록되어 있습니다.[이 정보는 운영체제가 설치될 때 기록] 해당 파티션에서 설치된 부트 매니저를 찾았다면 부트 매니저를 읽어들입니다.

 

5. 부트 매니저는 미리 설정된 운영체제의 정보를 확인한 후 운영체제를 찾고 읽어들여서 운영체제의 부팅을 시작합니다.

 

 

그러니까 IBM 호환 PC 의 부팅 과정 중 1~3 번 과정으로 인해 윈도우의 모든 부트 매니저들은 활성 파티션에 설치가 되는 겁니다. 아시겠죠? 윈도우 7 에서 새롭게 등장한 시스템 예약 파티션이란 이런 시스템 파티션이 될 활성 파티션을 윈도우가 자체적으로 미리 준비하여 윈도우가 포함된 파티션인 부팅 파티션이나 일반 데이터 파티션과 분리하는 것에 불과합니다. 왜? 그건 비트락커 기능 때문에 그러는데 그건 그 때 설명을 하죠. 아무튼 이렇게 부트 매니저를 설치하여 윈도우의 부팅을 총괄할 파티션을 윈도우에선 시스템 파티션이라고 부릅니다. 고로 활성 파티션은 무조건 시스템 파티션이 됩니다.

 


다양한 구성의 활성 파티션과 설치된 부트 매니저의 모습.
중요한 것은 드라이브 문자나 파티션의 위치가 아니라 어떤 파티션이 활성 파티션이냐이다. 부트 매니저가 설치된 파티션은 시스템 파티션으로 명명된다.
(* 시스템 예약 파티션은 원래 드라이브 문자가 구성되어 있지 않습니다. 파일을 보여드리기 위해 임의의 드라이브 문자를(S:) 할당하였습니다.)

 

 

추가적으로 4 번 과정을 위해 윈도우 7 계열은 부트 섹터에 Bootmgr 을 찾도록 기록하고 윈도우 XP 계열은 부트 섹터에 NTLDR 파일을 찾도록 기록합니다. 즉, 자기 자신의 부트 매니저를 찾도록 부트 섹터에 기록하는 것이죠. 여기까지가 바로 윈도우 설치 프로그램이 자신의 부트 매니저를 설치하는 과정입니다. 나중에 이것을 수동으로 사용자가 원하는 윈도우 부트 매니저를 찾도록 변경하는 것이 바로 윈도우 7 설치 DVD 에서 제공하는 Bootsect.exe 이구요.

 

여담으로 윈도우가 아닌 다른 운영체제의 일부 부트 매니저들은 이렇게 부트 섹터에서 자신의 로더를 찾도록 기록하지 않고 그냥 직빵으로 MBR 의 코드 영역을 사용하기도 합니다. 즉, 위의 2 번 과정에서 바로 자신의 로더를 찾게끔 구성하는 것이죠. 이럴 때 활성 파티션이 아닌 시스템의 모든 파티션에서 자신의 로더를 찾도록 구성되기도 하는데 부트 매니저가 이러한 구조를 갖는다면 윈도우의 부트 매니저들이 목숨을 걸었던 활성 파티션은 큰 의미가 없어집니다. 대표적으로 GRUB4DOS 부트 매니저를 MBR 에 설치할 때 이러한 구조를 보여줍니다. 어디까지나 여담입니다. 이 문서에서는 잊어버리세요.

 

 

아무튼 이러한 이유들로 윈도우 7 의 부트 매니저는 윈도우 설치시 설치 프로그램에 의해 다음의 과정대로 활성 파티션에 설치됩니다.

 

1. BIOS 기반 IBM 호환 PC 의 부팅 구조에 입각하여 Bootmgr 및 BCD 파일 등 부트 매니저 파일들을 활성 파티션에 설치.

2. 마찬가지의 이유로 활성 파티션의 부트 섹터를 Bootmgr 부트 로더를 찾도록 수정.

 

BCD - 부팅 구성 데이터 저장소란?

윈도우 7 의 부트 매니저가 어떻게 설치되고 작동하는지 짧게나마 알아보았습니다. 이제부터는 우리에게 실질적으로 보여지고 우리가 편집하여 적용해야 할 BCD 저장소에 대해서 알아보도록 하겠습니다. 위에서 짧게 언급하였지만 그렇다면 BCD 저장소란 무엇일까요? 간단하게 몇 가지 설명을 살펴보도록 하죠.

 

Microsoft - Bcdedit

Boot Configuration Data (BCD) files provide a store that is used to describe boot applications and boot application settings. The objects and elements in the store effectively replace Boot.ini.

 

BCDEdit is a command-line tool for managing BCD stores. It can be used for a variety of purposes, including creating new stores, modifying existing stores, adding boot menu parameters, and so on.

 

Wikipedia - Windows Vista startup process

Boot Configuration Data (BCD) is a firmware-independent database for boot-time configuration data. It replaces the boot.ini that was used by NTLDR, and is used by Microsoft's new Windows Boot Manager.

Boot Configuration Data is stored in a data file (formatted in the same way as a Windows registry hive) that is located either on the EFI System Partition (on machines that use Extensible Firmware Interface firmware) or in \Boot\Bcd on the system volume (on machines that use IBM PC compatible firmware).

 

윈도우 7 도움말 - boot.ini 파일 변경 내용

이전 버전의 Windows에서 boot.ini는 컴퓨터에 설치된 Windows 운영 체제 정보를 포함한 시스템 파일이었습니다. 이 정보는 컴퓨터를 켜면 시작 프로세스 중에 표시되었으며 멀티부팅 구성이나 Windows 시작 방법을 사용자 지정해야 하는 고급 사용자나 관리자에게 가장 유용했습니다.

 

이 Windows 버전에서는 boot.ini 파일이 BCD(부팅 구성 데이터)로 대체되었습니다. 이 파일은 boot.ini보다 다양한 용도로 사용되며 BIOS(기본 입출력 시스템)가 아닌 다른 방법을 사용하여 컴퓨터를 시작하는 컴퓨터 플랫폼에 적용할 수 있습니다.

 

 

대충 감은 잡히시죠? 그럼 BCD 저장소에 대해서 정리해보도록 하죠.

 

BCD 저장소란 마이크로소프트의 새로운 윈도우 부트 매니저의(Bootmgr) 부팅 설정 파일로써 부팅과 관련된 모든 설정들을 담고 있는 데이터 파일입 니다. BCD 저장소는 과거의 NTLDR 부트 매니저의 Boot.ini 파일과 동일한 역할을 수행하며 그 구조는 윈도우의 레지스트리 하이브 파일과 비슷합니다. BCD 저장소는 BIOS(Basic Input/Output System, 기본 입출력 시스템) 시스템의 MBR 디스크에서의 부팅뿐만 아니라 EFI(Extensible Firmware Interface, 확장 펌웨어 인터페이스) 시스템의 GPT 디스크에서의 부팅까지 지원합니다.

 

BCD 저장소는 EFI 시스템에선 EFI 시스템 파티션의(ESP) \EFI\Microsoft\Boot 폴더에, BIOS 시스템에선 활성 파티션의 \Boot 폴더에 위치하고 있으며 파일의 이름은 BCD 입니다. 해당 BCD 저장소를 시스템 저장소라고 부릅니다.

 

이러한 BCD 저장소는 명령줄 도구인 BCDEdit 를 통해 편집할 수 있습니다.

 

 

즉, BCD 저장소는 Bootmgr 부트 매니저의 환경 설정 파일로 윈도우 7 의 모든 부팅 설정은 BCD 를 통해 이루어지며 활성 파티션:\Boot\BCD 에 위치하고 있고 명령줄 도구인 BCDEdit 를 통해 그 내용을 수정할 수 있다. 라는 것입니다.[일반적인 BIOS 시스템 기준]

 

결론을 내려보자면 윈도우 7 의 부팅과 멀티 부팅을 알아보기 위해 앞으로 BCDEdit 를 필두로 하여 BCD 저장소를 미친듯이 수정해야 한다는 것을 의미합니다. 언제까지? 윈도우가 정상적으로 부팅될 때 까지!

 

1. 윈도우 7 의 부팅 설정 파일은 [시스템 파티션:\Boot\BCD] 에 위치한 시스템 저장소.

2. BCD 저장소를 편집하는 도구는 BCDEdit.

 

BCD - 부팅 구성 데이터 저장소의 구조

본격적으로 BCD 저장소를 편집하는 것에 대해서 알아보기 이전에 간략하게 BCD 저장소의 구조에 대해서 알아보도록 하겠습니다. BCD 저장소에 부팅 설정들이 어떠한 형식으로 저장되는지 안다면 BCD 저장소를 편집하는 것에 대해서 좀 더 쉽게 이해할 수 있을 것입니다.

 

일단 아래에 보시는 것과 같이 BCD 저장소는 BCD 객체들의 집합으로 이루어져 있고 각 BCD 객체는 실제 설정을 담고있는 BCD 요소들의 집합으로 이루어져 있습니다. 즉, 요소가 모여 객체를 이루고 객체가 모여 최종적으로 BCD 저장소를 이루는 것 입니다. [객체와 요소라는 개념은 BCD 저장소가 일종의 데이터베이스이기 때문에 데이터베이스라는 개념에서 접근한 설명이며 실제 한글 윈도우에서는 BCD 객체는 항목으로 BCD 요소는 항목 옵션으로 표현합니다. 이하 설명에서는 항목과 항목 옵션으로 설명을 통일합니다.]

 


BCD 저장소의 구조

 

 

이러한 BCD 저장소 중에서도 윈도우에서 실제 부팅에 사용하는 것은 시스템 저장소입니다.[활성 파티션:\Boot\BCD, BIOS 시스템] 이러한 시스템 저장소는 윈도우를 설치할 때 윈도우 설치 프로그램이 현재 설치되는 윈도우와 함께 자동으로 미리 중요한 항목들을 구성해 놓은 BCD 저장소입니다. 아래는 이러한 시스템 저장소의 일반적인 구성 모습입니다.

 


BCD 시스템 저장소의 일반적인 구성.

 

 

여러가지 항목과 요소들이 보이는데요. 이들에 대한 내용은 뒤에서 개별적으로 차분히 알아보겠습니다.

 

이러한 BCD 저장소의 구조가 처음 접하는 사용자에게는 조금은 생소할 수도 있는데요. 이전의 부트 매니저인 NTLDR 에서 사용하던 Boot.ini 파일과 비교해보면 조금 더 이해하기가 편할 것입니다.

 


BCD 시스템 저장소와 Boot.ini 파일과의 비교.

 

 

아무튼 대충 BCD 저장소의 구조는 이러합니다. 실제로 항목을 생성하고 항목 옵션을 통해 윈도우의 부팅을 설정하는 것은 뒤에서 알아보도록 하겠습니다. 다음으로 넘어가죠.

 

BCD - 편집 툴

윈도우에서 BCD 시스템 저장소를 편집할 수 있는 도구에는 다음의 세 가지가 있습니다.

 

  • 제어판 - 시스템 속성 - 시작 및 복구

     

     

     

  • MSConfig

     

     

     

  • BCDEdit

     

 

 

이 중에서 위의 두 가지 도구는 가장 기본적인 항목에 대한 편집 기능만을 제공하며 실질적으로 대부분의 BCD 저장소의 편집 작업은 BCDEdit 를 통해 이루어집니다. 고로 우리가 배워야 할 도구는 BCDEdit 이며 나머지 두 도구는 BCDEdit 에 익숙해진 후 간단하게 작업할 때 그 때 그 때 알아서 활용하는 것이 좋습니다.

 

BCDEdit - 항목과 GUID 의 관계, 잘 알려진 식별자

GUID 란?

 

BCD 저장소를 편집하기 전에 반드시 알고 넘어가야 할 것이 있습니다. 그것은 바로 GUID 라는 것인데요. GUID 는 다음과 같이 생겼습니다.

 

{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

 

이 때 "x" 는 각각 16진수를 나타냅니다. 이렇듯 GUID 는 16진수로 구성된 32개의 문자로 이루어져 있습니다. 예를 들면 {466f5a88-0af2-4f76-9038-095b170dc21c} 이런 식으로 말이죠.

 

됐고 그럼 도대체 GUID 가 무엇이냐? Globally Unique IDentifier 입니다 고객님~ 전반적이고 고유한 식별자라... 무슨 말인지 모르겠죠? 저도 모르겠습니다. ^^; 농담이고 중요한 것은 IDentifier 에 집중하시면 됩니다. 줄여서 보통 ID 한글로 아이디라고 부르죠.

 

"야 너 게임 아이디 뭐냐?"

 

할 때 그 아이디입니다. 이제 대충 감이 잡히시나요? BCD 저장소에는 수 많은 항목(BCD Object)들이 있습니다. 우리 뿐만 아니라 윈도우는 이러한 항목들을 어떻게 구분하고 식별해야 할까요?

 

"야 쪼~~~~~기 있는 항목~ 너 이름을 윈도우 세븐 얼티밋으로 바꿔라!"

 

쪼~~~~~기에 있는 녀석이 정확하게 누군데요? 윈도우가 이렇게 이야기할 수는 없잖아요? 그래서 BCD 저장소 내에서 이 항목이다! 라고 할 수 있는 중복되지 않는 확실하고 고유한 식별자가 필요합니다. 이를 위해 BCD 저장소에서는 각 항목들을 구별하기 위해 GUID 라는 ID 규격을 사용하여 각 항목들을 구별하고 있습니다. BCDEdit 에서는 이러한 항목의 GUID 를 통해 실질적으로 작업할 항목을 지정해주는 것이구요.

 

 

 

마치 행정적으로 나를 식별해주는 주민등록번호와 같죠? 그렇게 생각하시면 됩니다. 이제 GUID 가 무엇인지 알겠나요? 응? ^^?

 

 

 

BCDEdit ID 란?

 

그런데 GUID 를 사용하다 보니까 약간의 문제가 생겼습니다. GUID 란 녀석이 16진수로 구성된 무려 32 개의 문자로 이루어져있다보니 이게 인간이 한 눈에 알아보기가 굉장히 난감하더라는 것입니다. 알아보기만 난감하면 좋은데 작업할려면 외워야 하는데 외우기는 더 난감하더라 이겁니다.

 

 

"{7b1b6f4f-a319-11e0-9902-ccbc9f3102e7} 항목의 locale 을 en-US 로 바꿔라!"

 

"응? 뭘 어쩌라고?"

 

 

그래서 이러한 불편을 해결하기 위해 BCDEdit 에서는 많이 사용되는 또는 특별한 항목들을 인간이 알아보기 쉬운 인간의 언어로 ID 들을 준비해 놓았습니다. 그것이 바로 BCDEdit ID 입니다. 한글 윈도우에서는 "잘 알려진 식별자" 라고 표현하고 있습니다.[이하 잘 알려진 식별자로 통일] 다음의 표는 대표적인 잘 알려진 식별자들과 해당 식별자들의 원래 GUID 를 정리해 놓은 것입니다.

 

잘 알려진 식별자
BCDEdit ID GUID 설명
{bootmgr} {9dea862c-5cdd-4e70-acc1-f32b344d4795} Windows 부팅 관리자 항목을 지정합니다.
{fwbootmgr} {a5a30fa2-3d06-4e9f-b5f4-a01df9d1fcba} 특별히 EFI(Extensible Firmware Interface) 사양을 구현하는 시스템에서 펌웨어 부팅 관리자 항목을 지정합니다.
{memdiag} {b2721d73-1db4-4c62-bf78-c548a880142d} 메모리 진단 응용 프로그램 항목을 지정합니다.
{ntldr}
{legacy}
{466f5a88-0af2-4f76-9038-095b170dc21c} Windows Vista 이전의 운영 체제를 시작하는 데 사용할 수 있는 OS 로더(Ntldr)를 지정합니다.
{current} * {fa926493-6f1c-4193-a414-58f0b2456d1e} 현재 실행 중인 운영 체제에 대한 운영 체제 부팅 항목에 해당하는 가상 식별자를 지정합니다.
{default} * {1cae1eb7-a0df-4d4d-9851-4860e34ef535} 부팅 관리자 기본 응용 프로그램 항목에 해당하는 가상 식별자를 지정합니다.
{ramdiskoptions} {ae5534e0-a924-466c-b836-758539a3ee3a} RAM 디스크 장치를 위한 부팅 관리자에 필요한 추가 옵션이 들어 있습니다.
{dbgsettings} {4636856e-540f-4170-a130-a84776f4c654} 부팅 응용 프로그램 항목에서 상속할 수 있는 전역 디버거 설정이 들어 있습니다.
{emssettings} {0ce4991b-e6b3-4b16-b23c-5e0d9250e5d9} 부팅 응용 프로그램 항목에서 상속할 수 있는 전역 응급 관리 서비스 설정이 들어 있습니다.
{badmemory} {5189b25c-5558-4bf2-bca4-289b11bd29e2} 부팅 응용 프로그램 항목에서 상속할 수 있는 전역 RAM 결함 목록이 들어 있습니다.
{globalsettings} {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e} 모든 부팅 응용 프로그램 항목에서 상속해야 하는 전역 설정 모음이 들어 있습니다.
{bootloadersettings} {6efb52bf-1766-41db-a6b3-0ee5eff72bd7} 모든 Windows 부팅 로더 응용 프로그램 항목에서 상속해야 하는 전역 설정 모음이 들어 있습니다.
{resumeloadersettings} {1afa9c49-16ab-4a5c-901b-212802da9460} 최대 절전 모드 응용 프로그램 항목의 모든 Windows 다시 시작에서 상속해야 하는 전역 설정 모음이 들어 있습니다.
{hypervisorsettings} {7ff607e0-4395-11db-b0de-0800200c9a66} 모든 OS 로더 항목에서 상속할 수 있는 하이퍼바이저 설정이 들어 있습니다.

* {current} 와 {default} 는 가상 식별자로 해당 GUID 는 작동하지 않습니다.

 

 

이렇듯 현재 부팅한 윈도우는 {current}, 기본 부팅 메뉴는 {default} 와 같이 사용자가 바로 보고 판단할 수 있는 식별자를 BCDEdit 에서 제공하는 것입니다. 위의 표에서 살펴본 식별자들은 BCDEdit 에서 /v 스위치를 사용하지 않는 한 원래의 GUID 가 아닌 잘 알려진 식별자로 표시해 줍니다.

 


잘 알려진 식별자와 원래의 GUID 식별자

 

 

 

 

마치며...

대충 기본적으로 알고 계셔야 할 내용은 이와 같습니다. BCD 와 BCDEdit 의 자세한 내용에 대해서 궁금하신 분들은 다음의 두 문서를 참고하시면 많은 도움이 될겁니다.

 

Boot Configuration Data in Windows Vista

BCDEdit Commands for Boot Environment


2 Comments
  • 프로필사진 Favicon of https://mahnee.tistory.com BlogIcon mahnee 2013.11.25 10:56 신고 안녕하세요.
    질문 좀 드려도 될까요?

    제가 윈도우 7과 XP 사이의 멀티 부팅 구성에 문제를 겪고 있는데요.
    윈도우 7과 XP는 별도의 디스크에 설치되어있습니다.
    윈도우 7은 SSD, XP는 일반 SATA 하드디스크에 설치되어있고,
    바이오스 상에서 부트 순서를 바꿔가며 OS를 선택했었는데,
    너무 불편하여 멀티 부트를 이용해보려고 시도 중입니다.

    제가 한 방법은, 일단 XP의 부트 관련 파일들(ntldr, ntdetect, boot.ini)을 시스템 예약 파티션으로 복사해 두었구요.
    bcdedit 로 xp 를 추가 했습니다.
    장치 위치를 bcdedit 로 확인한 윈도우 부트 매니저의 장치 위치(시스템 예약 파티션)와 동일하게 설정했구요.
    XP로 부팅해서 파티션 정보를 확인해 본 것과 윈도우 7에서 파티션 정보를 확인했을때,
    XP가 설치된 파티션 정보(디스크번호, 파티션번호)가 동일 해서 boot.ini는 수정하지 않았습니다.

    그런데 XP로 부팅해보면 hal.dll 파일을 찾지 못해 부팅 오류가 발생하고 있거든요.

    왜 이런지 잘 모르겠습니다.

    디스크 구정 정보를 보면, XP에서는 시스템 예약 파티션의 볼륨 번호가 윈도우 7이랑은 다르던데 이부분이 문제를 일으키는 것일까요?

    hal.dll 오류가 출력되었다는 얘기는 ntldr로 이미 넘어갔다는 얘기인 것 같으니, 또 관련이 없을 것 같구요.
    결국 boot.ini 설정이 문제라는 얘긴데,
    XP의 디스크 번호와 파티션 번호는 윈도우 7에서 확인한 것과 XP에서 확인한 것이 같으니 문제 될 것이 없을 것 같구요.

    아.. .너무 어렵습니다 ㅠㅠ
    도움 좀 주실 수 없을까요?
  • 프로필사진 Favicon of https://bwhite.tistory.com BlogIcon V.E.N 2013.12.13 14:29 신고 제가 도움이 못될 것 같아, 좀 더 이 부분에 대한 지식이 있는 분의 블로그 주소를 알려 드릴께요 http://snoopybox.co.kr/
댓글쓰기 폼
Prev 1 2 3 4 5 6 7 8 9 10 Next