윈도우 7 의 BCD 부팅 구조와 멀티 부팅의 이해
기존 자료 백업 2010. 1. 26. 15:54 |이곳은 백업 블로그 입니다. 현재 캐플이 활동 중인 블로그는 CAppleBlog.co.kr 입니다. 최신 정보들은 새로운 블로그에서 확인해 보세요. ^^
- 이곳은 기존 블로그들의 글을 한군데로 모아 놓은 백업 블로그입니다.
- 현재 링크는 대부분 올바르지 않으며 이러한 링크들은 모두 cappleblog.co.kr 로 이동합니다. (※ 링크 주의)
- 블로그와 커뮤니티는 서로 다른 공간입니다.(로그인을 따로 해야합니다.)
- 저는 윈티티(WinTT)이자 신비(ShinB)이며 캐플(CApple)입니다. 편한대로 불러주세요.
이 글은 이전 글인 윈도우 7 과 윈도우 XP 의 멀티 부팅 종합 글의 내용을 보충하는 글 입니다. 해당 글에서 윈도우 7 의 부팅 구조에 대해서 다루었어야 했는데 깜빡있고 빼먹었습니다. ㅡ.ㅡ; 그래서 수정하기로 했었는데 그냥 이렇게 따로 한 편의 글로 꾸며보았습니다.
윈도우 7 과 윈도우 7, 윈도우 비스타와 같은 윈도우 7 계열끼리의 멀티 부팅, 윈도우 XP 와 윈도우 98 과 같은 이전 버전의 윈도우들과의 멀티 부팅을 꾸밀 때 윈도우 7 의 BCD 의 부팅 구조는 어떻게 되는 걸까요? 이 글에서는 윈도우 7 과 이하 버전의 윈도우들을 멀티 부팅으로 꾸밀 때 각각의 부팅 항목은 어떻게 구성되고 어떻게 작동하는지 알아 봄으로써 윈도우 7 의 멀티 부팅 구조에 대해서 알아보고자 합니다.
우리가 일반적으로 꾸밀 수 있는 멀티 부팅의 모습을 간단하게 아래와 표현해 보았습니다. 부팅 항목에 대한 내용은 필수적인 항목만을 기술하였습니다. 많은 내용을 담다보니 그림 파일의 크기가 조금 큽니다.
윈도우 7 계열은 부팅 관련 작업을 총괄하는 부트 매니저(부트 관리자) BOOTMGR 과 각각의 부팅 항목에 대한 설정을 담고 있는 파일인 BCD 그리고 윈도우를 읽어들이는 OS 로더 Winload.exe 로 구성되어 있습니다. BCD 에는 각각의 윈도우의 부팅에 관한 모든 설정이 담겨 있고 해당 설정을 기초로 하여 Winload.exe 를 찾고 Winlosd.exe 는 윈도우를 로딩하는 것 입니다. 이러한 BCD 를 분석하고 부팅 항목을 표시해주는 등의 모든 과정을 총괄하는 것이 바로 BOOTMGR 입니다. 대략적인 개념이 잡히시나요?
VHD 에 설치된 윈도우의 경우 BCD 에 기록된 내용을 토대로 설정된 VHD 를 시스템에 연결하여 인식시킨 후 VHD 안 윈도우의 Winload.exe 가 자신의 윈도우를 로딩하는 것 입니다.
윈도우 PE 또한 마찬가지입니다. {ramdiskoptions} 항목에 설정된 Boot.sdi 를 통해 램 디스크를 준비하고 이 램 디스크에 BCD 에 설정된 WIM 이미지 파일을 탑재하여 최종적으로 이렇게 탑재된 WIM 이미지 파일 안의 윈도우의 Winload.exe 로더가 윈도우를 로딩하는 것 입니다.
이게 바로 윈도우 비스타, 윈도우 서버 2008, 윈도우 7, 윈도우 서버 2008 R2, 윈도우 PE 2.0, 윈도우 PE 3.0 과 같은 윈도우 7 계열의 부팅 과정입니다. 이러한 윈도우 7 계열은 BCD 부팅 항목에서 Windows 부팅 로더 항목으로 표시됩니다.
이러한 윈도우 7 계열의 윈도우들은 BCDEDIT 나 BCDBOOT 를 통해 부팅 항목을 구성하게 되며 이러한 부팅 항목 설정은 모두 BCD 에 저장됩니다. 윈도우 7 을 사용하는 경우 BCDBOOT 를 통해 아주 간단하게 윈도우 7 계열의 윈도우들을 부팅 항목에 추가하는 것이 가능합니다.
VHD 에 설치된 윈도우 7 을 부팅 목록에 추가하기 2 편
윈도우 7 끼리의 멀티 부팅을 꾸미는 것은 워낙에 간단한 내용이다 보니 마땅히 링크를 걸 글이 없네요. ^^; 간단하겠지만 다음에 글을 한 편 써 보도록 하겠습니다. ^^a
윈도우 7 의 멀티 부팅에서 여러분들이 반드시 한 가지 알아두셔야 할 점이 있습니다. 윈도우 7 의 BOOTMGR 과 BCD 는 윈도우 XP 계열과 이하 윈도우들을 위해 설계되지 않았다는 것 입니다. 윈도우 7 의 부트 관리자는 윈도우 XP 를 부팅시킬 수 없습니다. 대신에 윈도우 XP 계열에서 사용하던 부팅 관리자이자 로더인 NTLDR 에게 부팅의 제어권을 넘겨버립니다. 그 과정은 가장 처음의 그림에 잘 표현되어 있습니다.
윈도우 7 의 BCD 에는 이러한 NTLDR 을 위한 부팅 항목이 미리 정의되어 있습니다. 이렇게 윈도우 XP 계열의 부팅 관리자인 NTLDR 을 읽어들일 수 있도록 설정하는 항목이 바로 {ntldr} 항목입니다. 즉, {ntldr} 부팅 항목은 다른 Windows 부팅 로더 항목과 같이 윈도우를(윈도우 XP 나 2K 와 같은) 읽어들이는 게 아니라 윈도우 XP 를 부팅시킬 수 있는 NTLDR 부트 관리자를 호출하는 항목인 것 입니다. 그렇기 때문에 윈도우 7 과 윈도우 XP 의 멀티 부팅에서도 윈도우 XP 는 윈도우 7 의 부트 관리자의 제어를 받는게 아니라 여전히 NTLDR 과 NTLDR 의 부팅 설정 파일인 BOOT.INI 의 제어를 받아 부팅하는 것 입니다.
이제 대충 윈도우 7 과 윈도우 XP 의 멀티 부팅에서 윈도우 XP 가 부팅 되는 것에 대해서 이해하시겠나요? 그래서 다수의 윈도우 7 계열의 멀티 부팅과 달리 윈도우 7 계열과 다수의 윈도우 XP 계열을 멀티 부팅으로 꾸미게 되면 윈도우 7 의 부트 관리자에서 모든 윈도우 XP 계열의 윈도우들을 표시할 수 없는 것 입니다.
오직 이러한 윈도우 XP 계열의 부팅을 담당할 NTLDR 을 호출하고 NTLDR 에게 제어권을 넘길 {ntldr} 항목만이 표시되는 것이죠. 그래서 윈도우 7 과 함께 다수의 윈도우 XP 계열을 멀티 부팅으로 꾸며서 사용하는 경우 다시 NTLDR 의 멀티 부팅 목록을 통해 원하는 윈도우로 부팅하는 것 입니다.
{ntldr} 의 기본 표시 이름은 "이전 버전의 Windows" 입니다. 이를 좀 더 정확하게 표현해 보자면 "이전 버전의 Windows 들" 이라고 할 수 있습니다.
우리가 흔히 윈도우 7 과 윈도우 XP 의 멀티 부팅을 꾸밀 때 윈도우 XP 계열은 하나만 설치하여 사용하는 경우가 대다수이기 때문에 이러한 {ntldr} 항목의 이름을 윈도우의 이름으로 바꾸어서 사용하는 것 뿐입니다. 또한 이러한 경우 NTLDR 입장에서도 부팅 항목이 하나 밖에 없기 때문에 NTLDR 의 멀티 부팅 목록을 표시해 주지 앟고 바로 윈도우 XP 로 부팅하여 마치 윈도우 7 의 부트 관리자에서 바로 윈도우 XP 를 읽어들여 부팅하는 것과 같은 착각을 일으키는 것 뿐입니다.
이러한 윈도우 7 계열과 윈도우 XP 계열의 멀티 부팅의 구조로 인해 윈도우 XP 계열이 다수인 경우에는 윈도우 XP 시절 때 처럼 윈도우 XP 계열들의 윈도우들은 BOOT.INI 를 통해 따로 독립적으로 멀티 부팅을 꾸며주어야 합니다. 즉, 윈도우 XP 계열의 부트 설정은 BCD 에 저장되는 것이 아니라는 것 입니다.
이제 윈도우 7 과 윈도우 XP 계열의 멀티 부팅에 대한 개념을 어느 정도 이해하시겠나요? 여러 글에서 이러한 내용들을 이야기 했는데 아무래도 산재해 있어 개념을 잡기가 조금 힘드실 것 같아 정리해 보았습니다. ^^
윈도우 7 계열도 아니고 윈도우 XP 계열도 아닌 도스 계열의 DOS 와 윈도우 9x 버전의 윈도우들에 대한 멀티 부팅은 어떻게 꾸며야 할까요? 사실 DOS 계열은 애초에 운영체제 자체가 멀티 부팅을 전제로 설계된 운영체제가 아닙니다. 그렇기 때문에 윈도우 7 에서 뿐만 아니라 윈도우 XP 에서도 도스와 멀티 부팅을 꾸미는 것은 상당히 난감한 문제 중에 하나였습니다. 설치 자체도 여러가지 기반 지식을 토대로 꽤나 복잡하게 느껴질 수 있는 과정을 거치고 조건도 잘 맞아야 합니다. 뭐 이런 이야기는 하지 않기로 하구요. 이 글에서는 그냥 이런 것도 있구나라는 개념을 알아가는 수준으로 보시길 바랍니다.
말했다시피 도스나 윈도우 9x 자체가 멀티 부팅을 전제로 설계된 운영체제가 아니기 때문에 보통 다른 프로그램의 도움을 받는 형식으로 멀티 부팅을 꾸며서 사용하였습니다. 윈도우 XP 시절부터 도스나 윈도우 9x 를 부팅시키기 위해서 도스나 윈도우 9x 가 설치된 파티션의 부트 섹터를 파일로 저장하여 이를 읽어들이는 방식을 통해 멀티 부팅을 꾸미는 방식을 많이 사용하였습니다.
이 때 가장 많이 사용된 프로그램이 바로 bootpart.exe 라는 프로그램입니다. bootpart 를 통해 도스나 윈도우 98 이 설치된 파티션의 부트 섹터를 bootsect.dos 라는 파일로 저장하고 이 파일을 읽어들임으로써 도스나 윈도우 98 을 부팅시키는 것이죠.
다행히도 윈도우 XP 계열의 NTLDR 에서는 이러한 부트 섹터 저장 파일을 바로 읽을 수 있었습니다. 위의 BOOT.INI 파일 중 마지막에 설정된
C:\bootsect.dos="Windows 98 SE"
가 바로 그러한 파일로 저장된 부트 섹터를 읽어들이는 내용입니다.
재미있는 것은 윈도우 7 의 부트 관리자인 BOOTMGR 은 다른 부분은 몰라도 BOOT.INI 에 설정된 부트 섹터 파일 항목은 인식을 한다는 것 입니다. 그래서 처음 부분에서 보여드린 멀티 부팅 스크린 샷에서 BCD 에 항목이 설정되어 있지 않음에도 불구하고 "Windows 98 SE" 라는 항목이 표시가 되었던 것 입니다.
즉, 도스나 윈도우 98 이 설치된 파티션의 부트 섹터를 저장한 bootsect.dos 파일과 이 항목을 설정한 BOOT.INI 이 두 개의 파일만 있어도 윈도우 7 에서 도스나 윈도우 9x 의 멀티 부팅을 꾸밀 수 있다는 것 입니다.
아무튼 이러한 이유로 "Windows 98 SE" 항목은 실제론 BOOT.INI 파일에 설정되어 있음에도 BOOTMGR 의 멀티 부팅 목록과 NTLDR 의 멀티 부팅 목록에 모두 표시되었던 것 입니다.
물론 이러한 부트 섹터를 저장한 파일을 통한 부팅 항목 구성은 윈도우 XP 계열의 BOOT.INI 파일을 통해서만 가능한 것은 아닙니다. 윈도우 7 의 BCD 에도 이러한 방식을 지원하고 있습니다. 이렇게 부트 섹터 파일을 통한 방식을 윈도우 7 에서는 부팅 섹터 응용 프로그램이라고 부릅니다. BCDEDIT 에서는 리얼 모드 부팅 섹터로 표시해 줍니다. 아래는 이러한 부트 섹터 파일을 통한 부팅을 구성하는 명령입니다.(예제는 글에서 사용된 윈도우 98 을 사용하도록 하겠습니다.)
이렇게 바로 BCD 에 도스나 윈도우 9x 계열을 부팅 항목으로 설정할 수도 있습니다. 물론 bootsect.dos 파일은 bootpart 를 통해 직접 생성하셔야 합니다. ^^
여담으로 이러한 부팅 섹터 응용 프로그램 방식은 GRUB4DOS 부트 관리자가 사용하는 방식이기도 합니다. grldr.mbr 파일도 bootsect.dos 파일과 같은 개념의 파일이기 때문에 윈도우 7 의 BOOTMGR 에서 GRUB4DOS 로 부팅의 제어권을 넒길 때도 부팅 섹터 응용 프로그램 항목을 통해 설정하게 됩니다.
이상입니다. ^^ 마지막 내용은 일반적으로 사실 쓸 일이 거의 없기 때문에 그냥 상식 수준에서 알아두시면 좋을 듯 합니다. ^^a 그럼 최종적으로 글에서 모델이 된 멀티 부팅 구성 항목들의 내용을 실제로 보면서 글을 마치도록 하겠습니다.
글에서는 윈도우 98, 윈도우 2000, 윈도우 XP, 윈도우 비스타, 윈도우 7, 윈도우 PE 라는 여섯가지의 윈도우를 통해 멀티 부팅의 구조를 알아 보았습니다. 윈도우 7 계열의 경우(PE 포함) 실제 파티션, WIM 이미지, VHD 의 세 가지 모습을 모두 보여드리느라 어쩔 수 없이 윈도우 7 을 VHD 에 설치하게 되었습니다. 이 부분은 염두해 두시고 아래의 이미지와 BCD 항목들을 보시고 이해하시길 바랍니다.
부팅 개념도와의 정확한 일치를 위해 BCD 의 내용은 윈도우 7 설치 DVD 로 부팅하여 출력하였습니다. 이 부분도 염두해 두시고 보시길 바랍니다.
제가 이 글에서 드리고 싶었던 모든 이야기는 처음과 마지막에 보여드린 멀티 부팅 구조도에 모두 담겨 있습니다. 클릭하셔서 실제 사이즈로 보시면 윈도우 7 과 윈도우 XP 의 멀티 부팅을 이해하시는데에 도움이 되실 겁니다. 이 글은 여기까지 입니다. ^ㅡ^*
p.s 그동안 몸이 좋지 않아 오랜 시간 포스팅을 못한 점 죄송합니다. ㅜ_ㅜ
윈도우 7 계열의 부팅 구조와 멀티 부팅 항목의 구성
윈도우 7 과 윈도우 7, 윈도우 비스타와 같은 윈도우 7 계열끼리의 멀티 부팅, 윈도우 XP 와 윈도우 98 과 같은 이전 버전의 윈도우들과의 멀티 부팅을 꾸밀 때 윈도우 7 의 BCD 의 부팅 구조는 어떻게 되는 걸까요? 이 글에서는 윈도우 7 과 이하 버전의 윈도우들을 멀티 부팅으로 꾸밀 때 각각의 부팅 항목은 어떻게 구성되고 어떻게 작동하는지 알아 봄으로써 윈도우 7 의 멀티 부팅 구조에 대해서 알아보고자 합니다.
우리가 일반적으로 꾸밀 수 있는 멀티 부팅의 모습을 간단하게 아래와 표현해 보았습니다. 부팅 항목에 대한 내용은 필수적인 항목만을 기술하였습니다. 많은 내용을 담다보니 그림 파일의 크기가 조금 큽니다.
[윈도우 7 의 부팅 구조와 실제 부팅 목록의 모습]
윈도우 7 계열은 부팅 관련 작업을 총괄하는 부트 매니저(부트 관리자) BOOTMGR 과 각각의 부팅 항목에 대한 설정을 담고 있는 파일인 BCD 그리고 윈도우를 읽어들이는 OS 로더 Winload.exe 로 구성되어 있습니다. BCD 에는 각각의 윈도우의 부팅에 관한 모든 설정이 담겨 있고 해당 설정을 기초로 하여 Winload.exe 를 찾고 Winlosd.exe 는 윈도우를 로딩하는 것 입니다. 이러한 BCD 를 분석하고 부팅 항목을 표시해주는 등의 모든 과정을 총괄하는 것이 바로 BOOTMGR 입니다. 대략적인 개념이 잡히시나요?
VHD 에 설치된 윈도우의 경우 BCD 에 기록된 내용을 토대로 설정된 VHD 를 시스템에 연결하여 인식시킨 후 VHD 안 윈도우의 Winload.exe 가 자신의 윈도우를 로딩하는 것 입니다.
윈도우 PE 또한 마찬가지입니다. {ramdiskoptions} 항목에 설정된 Boot.sdi 를 통해 램 디스크를 준비하고 이 램 디스크에 BCD 에 설정된 WIM 이미지 파일을 탑재하여 최종적으로 이렇게 탑재된 WIM 이미지 파일 안의 윈도우의 Winload.exe 로더가 윈도우를 로딩하는 것 입니다.
이게 바로 윈도우 비스타, 윈도우 서버 2008, 윈도우 7, 윈도우 서버 2008 R2, 윈도우 PE 2.0, 윈도우 PE 3.0 과 같은 윈도우 7 계열의 부팅 과정입니다. 이러한 윈도우 7 계열은 BCD 부팅 항목에서 Windows 부팅 로더 항목으로 표시됩니다.
이러한 윈도우 7 계열의 윈도우들은 BCDEDIT 나 BCDBOOT 를 통해 부팅 항목을 구성하게 되며 이러한 부팅 항목 설정은 모두 BCD 에 저장됩니다. 윈도우 7 을 사용하는 경우 BCDBOOT 를 통해 아주 간단하게 윈도우 7 계열의 윈도우들을 부팅 항목에 추가하는 것이 가능합니다.
VHD 에 설치된 윈도우 7 을 부팅 목록에 추가하기 2 편
윈도우 7 끼리의 멀티 부팅을 꾸미는 것은 워낙에 간단한 내용이다 보니 마땅히 링크를 걸 글이 없네요. ^^; 간단하겠지만 다음에 글을 한 편 써 보도록 하겠습니다. ^^a
윈도우 XP 계열의 부팅 구조와 멀티 부팅 항목의 구성
윈도우 7 의 멀티 부팅에서 여러분들이 반드시 한 가지 알아두셔야 할 점이 있습니다. 윈도우 7 의 BOOTMGR 과 BCD 는 윈도우 XP 계열과 이하 윈도우들을 위해 설계되지 않았다는 것 입니다. 윈도우 7 의 부트 관리자는 윈도우 XP 를 부팅시킬 수 없습니다. 대신에 윈도우 XP 계열에서 사용하던 부팅 관리자이자 로더인 NTLDR 에게 부팅의 제어권을 넘겨버립니다. 그 과정은 가장 처음의 그림에 잘 표현되어 있습니다.
윈도우 7 의 BCD 에는 이러한 NTLDR 을 위한 부팅 항목이 미리 정의되어 있습니다. 이렇게 윈도우 XP 계열의 부팅 관리자인 NTLDR 을 읽어들일 수 있도록 설정하는 항목이 바로 {ntldr} 항목입니다. 즉, {ntldr} 부팅 항목은 다른 Windows 부팅 로더 항목과 같이 윈도우를(윈도우 XP 나 2K 와 같은) 읽어들이는 게 아니라 윈도우 XP 를 부팅시킬 수 있는 NTLDR 부트 관리자를 호출하는 항목인 것 입니다. 그렇기 때문에 윈도우 7 과 윈도우 XP 의 멀티 부팅에서도 윈도우 XP 는 윈도우 7 의 부트 관리자의 제어를 받는게 아니라 여전히 NTLDR 과 NTLDR 의 부팅 설정 파일인 BOOT.INI 의 제어를 받아 부팅하는 것 입니다.
이제 대충 윈도우 7 과 윈도우 XP 의 멀티 부팅에서 윈도우 XP 가 부팅 되는 것에 대해서 이해하시겠나요? 그래서 다수의 윈도우 7 계열의 멀티 부팅과 달리 윈도우 7 계열과 다수의 윈도우 XP 계열을 멀티 부팅으로 꾸미게 되면 윈도우 7 의 부트 관리자에서 모든 윈도우 XP 계열의 윈도우들을 표시할 수 없는 것 입니다.
오직 이러한 윈도우 XP 계열의 부팅을 담당할 NTLDR 을 호출하고 NTLDR 에게 제어권을 넘길 {ntldr} 항목만이 표시되는 것이죠. 그래서 윈도우 7 과 함께 다수의 윈도우 XP 계열을 멀티 부팅으로 꾸며서 사용하는 경우 다시 NTLDR 의 멀티 부팅 목록을 통해 원하는 윈도우로 부팅하는 것 입니다.
[윈도우 XP 계열의 윈도우들의 멀티 부팅]
{ntldr} 의 기본 표시 이름은 "이전 버전의 Windows" 입니다. 이를 좀 더 정확하게 표현해 보자면 "이전 버전의 Windows 들" 이라고 할 수 있습니다.
우리가 흔히 윈도우 7 과 윈도우 XP 의 멀티 부팅을 꾸밀 때 윈도우 XP 계열은 하나만 설치하여 사용하는 경우가 대다수이기 때문에 이러한 {ntldr} 항목의 이름을 윈도우의 이름으로 바꾸어서 사용하는 것 뿐입니다. 또한 이러한 경우 NTLDR 입장에서도 부팅 항목이 하나 밖에 없기 때문에 NTLDR 의 멀티 부팅 목록을 표시해 주지 앟고 바로 윈도우 XP 로 부팅하여 마치 윈도우 7 의 부트 관리자에서 바로 윈도우 XP 를 읽어들여 부팅하는 것과 같은 착각을 일으키는 것 뿐입니다.
이러한 윈도우 7 계열과 윈도우 XP 계열의 멀티 부팅의 구조로 인해 윈도우 XP 계열이 다수인 경우에는 윈도우 XP 시절 때 처럼 윈도우 XP 계열들의 윈도우들은 BOOT.INI 를 통해 따로 독립적으로 멀티 부팅을 꾸며주어야 합니다. 즉, 윈도우 XP 계열의 부트 설정은 BCD 에 저장되는 것이 아니라는 것 입니다.
윈도우 XP 계열의 윈도우들은 BOOT.INI 를 통해 독립적으로 부팅을 구성
이제 윈도우 7 과 윈도우 XP 계열의 멀티 부팅에 대한 개념을 어느 정도 이해하시겠나요? 여러 글에서 이러한 내용들을 이야기 했는데 아무래도 산재해 있어 개념을 잡기가 조금 힘드실 것 같아 정리해 보았습니다. ^^
DOS 와 윈도우 9x 계열의 부팅과 부팅 항목의 구성
윈도우 7 계열도 아니고 윈도우 XP 계열도 아닌 도스 계열의 DOS 와 윈도우 9x 버전의 윈도우들에 대한 멀티 부팅은 어떻게 꾸며야 할까요? 사실 DOS 계열은 애초에 운영체제 자체가 멀티 부팅을 전제로 설계된 운영체제가 아닙니다. 그렇기 때문에 윈도우 7 에서 뿐만 아니라 윈도우 XP 에서도 도스와 멀티 부팅을 꾸미는 것은 상당히 난감한 문제 중에 하나였습니다. 설치 자체도 여러가지 기반 지식을 토대로 꽤나 복잡하게 느껴질 수 있는 과정을 거치고 조건도 잘 맞아야 합니다. 뭐 이런 이야기는 하지 않기로 하구요. 이 글에서는 그냥 이런 것도 있구나라는 개념을 알아가는 수준으로 보시길 바랍니다.
말했다시피 도스나 윈도우 9x 자체가 멀티 부팅을 전제로 설계된 운영체제가 아니기 때문에 보통 다른 프로그램의 도움을 받는 형식으로 멀티 부팅을 꾸며서 사용하였습니다. 윈도우 XP 시절부터 도스나 윈도우 9x 를 부팅시키기 위해서 도스나 윈도우 9x 가 설치된 파티션의 부트 섹터를 파일로 저장하여 이를 읽어들이는 방식을 통해 멀티 부팅을 꾸미는 방식을 많이 사용하였습니다.
이 때 가장 많이 사용된 프로그램이 바로 bootpart.exe 라는 프로그램입니다. bootpart 를 통해 도스나 윈도우 98 이 설치된 파티션의 부트 섹터를 bootsect.dos 라는 파일로 저장하고 이 파일을 읽어들임으로써 도스나 윈도우 98 을 부팅시키는 것이죠.
다행히도 윈도우 XP 계열의 NTLDR 에서는 이러한 부트 섹터 저장 파일을 바로 읽을 수 있었습니다. 위의 BOOT.INI 파일 중 마지막에 설정된
C:\bootsect.dos="Windows 98 SE"
가 바로 그러한 파일로 저장된 부트 섹터를 읽어들이는 내용입니다.
재미있는 것은 윈도우 7 의 부트 관리자인 BOOTMGR 은 다른 부분은 몰라도 BOOT.INI 에 설정된 부트 섹터 파일 항목은 인식을 한다는 것 입니다. 그래서 처음 부분에서 보여드린 멀티 부팅 스크린 샷에서 BCD 에 항목이 설정되어 있지 않음에도 불구하고 "Windows 98 SE" 라는 항목이 표시가 되었던 것 입니다.
즉, 도스나 윈도우 98 이 설치된 파티션의 부트 섹터를 저장한 bootsect.dos 파일과 이 항목을 설정한 BOOT.INI 이 두 개의 파일만 있어도 윈도우 7 에서 도스나 윈도우 9x 의 멀티 부팅을 꾸밀 수 있다는 것 입니다.
아무튼 이러한 이유로 "Windows 98 SE" 항목은 실제론 BOOT.INI 파일에 설정되어 있음에도 BOOTMGR 의 멀티 부팅 목록과 NTLDR 의 멀티 부팅 목록에 모두 표시되었던 것 입니다.
물론 이러한 부트 섹터를 저장한 파일을 통한 부팅 항목 구성은 윈도우 XP 계열의 BOOT.INI 파일을 통해서만 가능한 것은 아닙니다. 윈도우 7 의 BCD 에도 이러한 방식을 지원하고 있습니다. 이렇게 부트 섹터 파일을 통한 방식을 윈도우 7 에서는 부팅 섹터 응용 프로그램이라고 부릅니다. BCDEDIT 에서는 리얼 모드 부팅 섹터로 표시해 줍니다. 아래는 이러한 부트 섹터 파일을 통한 부팅을 구성하는 명령입니다.(예제는 글에서 사용된 윈도우 98 을 사용하도록 하겠습니다.)
[명령 프롬프트 실행]
bcdedit /create /d "Windows 98 SE" /application bootsector
bcdedit /set {GUID} device boot
bcdedit /set {GUID} path \bootsect.dos
bcdedit /displayorder {GUID} /addlast
bcdedit /create /d "Windows 98 SE" /application bootsector
bcdedit /set {GUID} device boot
bcdedit /set {GUID} path \bootsect.dos
bcdedit /displayorder {GUID} /addlast
이렇게 바로 BCD 에 도스나 윈도우 9x 계열을 부팅 항목으로 설정할 수도 있습니다. 물론 bootsect.dos 파일은 bootpart 를 통해 직접 생성하셔야 합니다. ^^
여담으로 이러한 부팅 섹터 응용 프로그램 방식은 GRUB4DOS 부트 관리자가 사용하는 방식이기도 합니다. grldr.mbr 파일도 bootsect.dos 파일과 같은 개념의 파일이기 때문에 윈도우 7 의 BOOTMGR 에서 GRUB4DOS 로 부팅의 제어권을 넒길 때도 부팅 섹터 응용 프로그램 항목을 통해 설정하게 됩니다.
이상입니다. ^^ 마지막 내용은 일반적으로 사실 쓸 일이 거의 없기 때문에 그냥 상식 수준에서 알아두시면 좋을 듯 합니다. ^^a 그럼 최종적으로 글에서 모델이 된 멀티 부팅 구성 항목들의 내용을 실제로 보면서 글을 마치도록 하겠습니다.
윈도우 7 의 멀티 부팅 종합
글에서는 윈도우 98, 윈도우 2000, 윈도우 XP, 윈도우 비스타, 윈도우 7, 윈도우 PE 라는 여섯가지의 윈도우를 통해 멀티 부팅의 구조를 알아 보았습니다. 윈도우 7 계열의 경우(PE 포함) 실제 파티션, WIM 이미지, VHD 의 세 가지 모습을 모두 보여드리느라 어쩔 수 없이 윈도우 7 을 VHD 에 설치하게 되었습니다. 이 부분은 염두해 두시고 아래의 이미지와 BCD 항목들을 보시고 이해하시길 바랍니다.
부팅 개념도와의 정확한 일치를 위해 BCD 의 내용은 윈도우 7 설치 DVD 로 부팅하여 출력하였습니다. 이 부분도 염두해 두시고 보시길 바랍니다.
[윈도우의 설치 구조]
[멀티 부팅의 표시 모습]
[부팅 항목의 설정 내용]
[부팅 관련 파일들의 모습]
[윈도우 7 의 멀티 부팅 구조도]
제가 이 글에서 드리고 싶었던 모든 이야기는 처음과 마지막에 보여드린 멀티 부팅 구조도에 모두 담겨 있습니다. 클릭하셔서 실제 사이즈로 보시면 윈도우 7 과 윈도우 XP 의 멀티 부팅을 이해하시는데에 도움이 되실 겁니다. 이 글은 여기까지 입니다. ^ㅡ^*
p.s 그동안 몸이 좋지 않아 오랜 시간 포스팅을 못한 점 죄송합니다. ㅜ_ㅜ