부팅과 멀티 부팅
[Ntldr] 윈도우 XP 의 부팅 : BOOT.INI - 부팅 환경 설정 파일의 이해
CApple
2012. 1. 11. 10:04
지난 글에서 BOOT.INI 파일을 수정할 수 있도록 여는 것까지 배웠죠?(윈도우 XP 의 부팅 - NTLDR 부트 매니저의 작동 구조와 접근 방법) 그럼 이제 실제로 BOOT.INI 파일을 수정하기 위해 BOOT.INI 파일의 내부가 어떤 구조를 가지고 있는지에 대해서 이야기를 해보도록 하겠습니다.
참고로 이제 NTLDR 이 모두 끝나면 알아보게 될 BOOTMGR 의 BCD 에 비한다면야 굉장히 쉬운편에 속합니다. 그러니 긴장 푸시고~ 가시죠! ^^
BOOT.INI 파일의 일반적인 설정
일단 매우 일반적인 윈도우 설치 방법인 첫 번째 디스크의 첫 번째 파티션에 윈도우 XP 를 설치했을 경우 BOOT.INI 파일의 내용은 다음과 같습니다.
이게 보통의 BOOT.INI 파일의 모습입니다. 윈도우를 다른 파티션에 설치하였거나 그러면 뭐 좀 다르긴 한데 이게 거의 기본 옵션이라고 보셔도 무방합니다. 일단 BOOT.INI 파일은 이렇게 생겼습니다. 이걸 이제 하나 하나 뜯어보도록 하죠.
BOOT.INI 파일의 설명을 위한 예제 멀티 부팅 환경
계속 어떻게 정리를 해야 하나 고민을 해봤는데요. 직접 윈도우 XP 끼리 멀티 부팅을 꾸미고 그에 맞게 생성된 BOOT.INI 파일을 통해 비교해가며 설명하는 방식이 좋을 것 같네요.
일단 설명의 기준이 될 멀티 부팅 환경을 꾸미기 위해 총 세 개의 윈도우 XP 를 따로 각각의 파티션에 설치하였습니다. 아래는 디스크 관리를 통해 현재 윈도우들이 어떻게 설치되어 있는지를 나타낸 것입니다.
현재 이와 같이 윈도우가 설치되어 있습니다. 이 때 위 박스에서 정리한 디스크 번호와 파티션 번호는 윈도우 기준입니다.(참고로 윈도우에서는 디스크 번호가 0 부터 시작되며 파티션 번호는 1 부터 시작됩니다.)
그럼 예제와 같은 멀티 부팅 환경이라면 BOOT.INI 파일의 내용은 어떠한지 살펴보도록 하죠. 아래는 그 내용입니다.(부팅 이름은 제가 구별하기 쉽게 미리 편집했습니다.)
이제 이와 같은 BOOT.INI 파일 구성을 통해 출력된 멀티 부팅 메뉴의 모습은 아래와 같습니다.
잘 보셨나요? 이제 이걸 하나 하나 뜯어서 알아보죠.
BOOT.INI 파일의 전체적인 구조
일단 BOOT.INI 는 크게 기본 부팅 환경에 대한 설정을 담당하는 매니저 역할의 [boot loader] 부분과 개별적인 부팅 항목에 대한 설정을 담당하는 [operating systems] 부분의 두 가지의 범주로 나누어 집니다.
[boot loader]
매니저의 범주에 속하는, 기본 부팅 환경에 대한 설정을 담고 있는 부분입니다. 이 범주에는 timeout 과 default 라는 두 가지 설정이 존재하고 있습니다.
멀티 부팅 환경이 꾸며졌을 때 부팅 메뉴 목록의 표시 시간을(사용자의 입력을 기다리는 시간) 설정합니다. 단위는 초이며 기본값은 30초로 설정이 되어 있습니다. 이 시간 동안 사용자가 아무런 행동도 취하지 않으면(부팅할 항목을 선택하는 행동) 바로 다음 설정인 default 에 설정된 부팅 항목으로 부팅이 진행됩니다.
멀티 부팅을 꾸밀 경우 보통 5초 내외로 짧게 설정하는 것이 일반적이며 만약 멀티 부팅 환경이 아닌 윈도우가 하나만 설치되어 있는(또는 하나의 부팅 항목만 존재하는) 단일 부팅 환경이라면 부팅 메뉴 목록을 출력하지 않고 곧바로 기본 부팅 항목으로 부팅이 진행됩니다.
부팅 메뉴 목록에서 기본적으로 선택되는 기본 부팅 항목을 설정합니다. 만약 timeout 에 지정된 시간 동안 사용자가 아무런 입력도 하지 않는다면 이 default 에 지정된 기본 부팅 항목으로 부팅이 진행됩니다. (단일 부팅 환경에선 표시되진 않지만 현재 존재하는 부팅 항목을 설정해야 합니다.)
윈도우가 하나만 설치되어 있는 단일 부팅 환경에선 현재 윈도우가 바로 지정이 되어 있으며 멀티 부팅 환경에선 사용자가 따로 편집하지 않았다면 가장 마지막에 설치된 윈도우가 지정되어 있습니다. 이러한 기본 부팅 항목은 사용자가 원하는 항목으로 언제든지 바꿔줄 수 있습니다.
기본 부팅 항목은 윈도우 부팅 항목의 경우 해당 윈도우의 ARC 경로를 입력하며 부팅 섹터 항목의 경우 해당 파일의 윈도우 경로를 입력하면 됩니다. 아무튼 아래에서 설명할 [operating system] 항목의 경로 부분과 동일하게 지정하면 되기 때문에 자세한 설명은 해당 과정에서 하는 것으로 하도록 하겠습니다.
[operating system]
실질적인 부팅 항목들을 담고 있는 부분으로 각각의 부팅 항목은 줄 바꿈으로 구별됩니다. 즉, 한 줄이 하나의 부팅 항목을 의미하며 순서대로 멀티 부팅 메뉴에 출력되는 구조입니다. 그러니까 아래와 같이 말이죠.
이런 식입니다. 그러니까 멀티 부팅 메뉴에서 각 부팅 항목들의 순서를 바꾸고 싶다면 별거 없이 그냥 여기에서 순서만 바꾸면 되는 겁니다. 쉽죠? 여기까지가 이제 BOOT.INI 파일의 전체적인 구조입니다.
BOOT.INI 파일내 각 설정과 멀티 부팅 화면의 연결 비교
그러니까 위에서 설명드린 BOOT.INI 파일내 설정 항목들을 부팅시 출력되는 멀티 부팅 메뉴 화면과 직접 연결시켜 비교해 보았습니다.
이렇게 보니까 BOOT.INI 파일 뭐 별거 없죠? BOOT.INI 부팅 환경 설정 파일의 구조적인 큰 틀은 이와 같습니다.
[boot loader] 에선 솔직히 더이상 설명할 게 없고 이제 [operating system] 에 포함되는 부팅 항목을 이루는 요소 요소들을 하나씩 뜯어보면 되겠네요. 포스팅이 너무 길어지면 지루해지기 때문에 이쯤에서 짜르고 다음 글에서 계속하도록 하겠습니다. ^^
참고로 이제 NTLDR 이 모두 끝나면 알아보게 될 BOOTMGR 의 BCD 에 비한다면야 굉장히 쉬운편에 속합니다. 그러니 긴장 푸시고~ 가시죠! ^^
BOOT.INI 파일의 일반적인 설정
일단 매우 일반적인 윈도우 설치 방법인 첫 번째 디스크의 첫 번째 파티션에 윈도우 XP 를 설치했을 경우 BOOT.INI 파일의 내용은 다음과 같습니다.
그러니까 저기에 윈도우 XP 를 설치한 경우. 저기가 C: 드라이브든 뭐든지 간에 일단! 저기!
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
이게 보통의 BOOT.INI 파일의 모습입니다. 윈도우를 다른 파티션에 설치하였거나 그러면 뭐 좀 다르긴 한데 이게 거의 기본 옵션이라고 보셔도 무방합니다. 일단 BOOT.INI 파일은 이렇게 생겼습니다. 이걸 이제 하나 하나 뜯어보도록 하죠.
BOOT.INI 파일의 설명을 위한 예제 멀티 부팅 환경
계속 어떻게 정리를 해야 하나 고민을 해봤는데요. 직접 윈도우 XP 끼리 멀티 부팅을 꾸미고 그에 맞게 생성된 BOOT.INI 파일을 통해 비교해가며 설명하는 방식이 좋을 것 같네요.
일단 설명의 기준이 될 멀티 부팅 환경을 꾸미기 위해 총 세 개의 윈도우 XP 를 따로 각각의 파티션에 설치하였습니다. 아래는 디스크 관리를 통해 현재 윈도우들이 어떻게 설치되어 있는지를 나타낸 것입니다.
Disk 0 Partition 1 (C:) : 첫 번째 윈도우 - 윈도우 XP (1)
Disk 0 Partition 2 (E:) : 두 번째 윈도우 - 윈도우 XP (2)
Disk 1 Partition 1 (D:) : 세 번째 윈도우 - 윈도우 XP (3)
Disk 0 Partition 2 (E:) : 두 번째 윈도우 - 윈도우 XP (2)
Disk 1 Partition 1 (D:) : 세 번째 윈도우 - 윈도우 XP (3)
현재 이와 같이 윈도우가 설치되어 있습니다. 이 때 위 박스에서 정리한 디스크 번호와 파티션 번호는 윈도우 기준입니다.(참고로 윈도우에서는 디스크 번호가 0 부터 시작되며 파티션 번호는 1 부터 시작됩니다.)
그럼 예제와 같은 멀티 부팅 환경이라면 BOOT.INI 파일의 내용은 어떠한지 살펴보도록 하죠. 아래는 그 내용입니다.(부팅 이름은 제가 구별하기 쉽게 미리 편집했습니다.)
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="윈도우 XP (1)" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="윈도우 XP (2)" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="윈도우 XP (3)" /noexecute=optin /fastdetect
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="윈도우 XP (1)" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="윈도우 XP (2)" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="윈도우 XP (3)" /noexecute=optin /fastdetect
이제 이와 같은 BOOT.INI 파일 구성을 통해 출력된 멀티 부팅 메뉴의 모습은 아래와 같습니다.
잘 보셨나요? 이제 이걸 하나 하나 뜯어서 알아보죠.
한 가지 반드시 아셔야 할 매우 중요한 개념이 있는데요. 부트 매니저(NTLDR)와 그에 속하는 환경 설정 파일(BOOT.INI)은 설치된 윈도우마다 개별적으로 가지고 있는게 아닙니다. 시스템 당 부트 매니저는 하나고 그 하나의 부트 매니저에서 관련된 모든 윈도우들을 통합하여 처리하는 구조입니다.
그러니까 시스템에 윈도우 XP 가 하나가 설치되어 있든 백 개가 설치되어 있든 시스템 파티션(C: 드라이브)에 설치된 하나의 NTLDR(BOOT.INI) 부트 매니저가 모두 총괄하여 처리하는 것이죠. 고로 글의 예제에서와 같이 설치된 윈도우 XP 는 총 세 개이지만 시스템 파티션에 존재하는 BOOT.INI 파일 하나에 이 세 윈도우의 부팅 환경이 모두 담겨 있는 것입니다.
이는 나중에 배울 윈도우 7 계열에서도 마찬가지입니다. 시스템에 윈도우 7 이 하나가 설치되어 있든 백 개가 설치되어 있든 시스템 파티션에 설치된 하나의 BOOTMGR 부트 매니저에서 모든 7 계열 윈도우들의 부팅을 총괄하여 관리하게 됩니다.
그러니까 시스템에 윈도우 XP 가 하나가 설치되어 있든 백 개가 설치되어 있든 시스템 파티션(C: 드라이브)에 설치된 하나의 NTLDR(BOOT.INI) 부트 매니저가 모두 총괄하여 처리하는 것이죠. 고로 글의 예제에서와 같이 설치된 윈도우 XP 는 총 세 개이지만 시스템 파티션에 존재하는 BOOT.INI 파일 하나에 이 세 윈도우의 부팅 환경이 모두 담겨 있는 것입니다.
이는 나중에 배울 윈도우 7 계열에서도 마찬가지입니다. 시스템에 윈도우 7 이 하나가 설치되어 있든 백 개가 설치되어 있든 시스템 파티션에 설치된 하나의 BOOTMGR 부트 매니저에서 모든 7 계열 윈도우들의 부팅을 총괄하여 관리하게 됩니다.
BOOT.INI 파일의 전체적인 구조
일단 BOOT.INI 는 크게 기본 부팅 환경에 대한 설정을 담당하는 매니저 역할의 [boot loader] 부분과 개별적인 부팅 항목에 대한 설정을 담당하는 [operating systems] 부분의 두 가지의 범주로 나누어 집니다.
[boot loader]
매니저의 범주에 속하는, 기본 부팅 환경에 대한 설정을 담고 있는 부분입니다. 이 범주에는 timeout 과 default 라는 두 가지 설정이 존재하고 있습니다.
timeout=30
멀티 부팅 환경이 꾸며졌을 때 부팅 메뉴 목록의 표시 시간을(사용자의 입력을 기다리는 시간) 설정합니다. 단위는 초이며 기본값은 30초로 설정이 되어 있습니다. 이 시간 동안 사용자가 아무런 행동도 취하지 않으면(부팅할 항목을 선택하는 행동) 바로 다음 설정인 default 에 설정된 부팅 항목으로 부팅이 진행됩니다.
멀티 부팅을 꾸밀 경우 보통 5초 내외로 짧게 설정하는 것이 일반적이며 만약 멀티 부팅 환경이 아닌 윈도우가 하나만 설치되어 있는(또는 하나의 부팅 항목만 존재하는) 단일 부팅 환경이라면 부팅 메뉴 목록을 출력하지 않고 곧바로 기본 부팅 항목으로 부팅이 진행됩니다.
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
부팅 메뉴 목록에서 기본적으로 선택되는 기본 부팅 항목을 설정합니다. 만약 timeout 에 지정된 시간 동안 사용자가 아무런 입력도 하지 않는다면 이 default 에 지정된 기본 부팅 항목으로 부팅이 진행됩니다. (단일 부팅 환경에선 표시되진 않지만 현재 존재하는 부팅 항목을 설정해야 합니다.)
윈도우가 하나만 설치되어 있는 단일 부팅 환경에선 현재 윈도우가 바로 지정이 되어 있으며 멀티 부팅 환경에선 사용자가 따로 편집하지 않았다면 가장 마지막에 설치된 윈도우가 지정되어 있습니다. 이러한 기본 부팅 항목은 사용자가 원하는 항목으로 언제든지 바꿔줄 수 있습니다.
기본 부팅 항목은 윈도우 부팅 항목의 경우 해당 윈도우의 ARC 경로를 입력하며 부팅 섹터 항목의 경우 해당 파일의 윈도우 경로를 입력하면 됩니다. 아무튼 아래에서 설명할 [operating system] 항목의 경로 부분과 동일하게 지정하면 되기 때문에 자세한 설명은 해당 과정에서 하는 것으로 하도록 하겠습니다.
[operating system]
실질적인 부팅 항목들을 담고 있는 부분으로 각각의 부팅 항목은 줄 바꿈으로 구별됩니다. 즉, 한 줄이 하나의 부팅 항목을 의미하며 순서대로 멀티 부팅 메뉴에 출력되는 구조입니다. 그러니까 아래와 같이 말이죠.
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="윈도우 XP (1)" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="윈도우 XP (2)" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="윈도우 XP (3)" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="윈도우 XP (2)" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="윈도우 XP (3)" /noexecute=optin /fastdetect
이런 식입니다. 그러니까 멀티 부팅 메뉴에서 각 부팅 항목들의 순서를 바꾸고 싶다면 별거 없이 그냥 여기에서 순서만 바꾸면 되는 겁니다. 쉽죠? 여기까지가 이제 BOOT.INI 파일의 전체적인 구조입니다.
BOOT.INI 파일내 각 설정과 멀티 부팅 화면의 연결 비교
그러니까 위에서 설명드린 BOOT.INI 파일내 설정 항목들을 부팅시 출력되는 멀티 부팅 메뉴 화면과 직접 연결시켜 비교해 보았습니다.
이렇게 보니까 BOOT.INI 파일 뭐 별거 없죠? BOOT.INI 부팅 환경 설정 파일의 구조적인 큰 틀은 이와 같습니다.
[boot loader] 에선 솔직히 더이상 설명할 게 없고 이제 [operating system] 에 포함되는 부팅 항목을 이루는 요소 요소들을 하나씩 뜯어보면 되겠네요. 포스팅이 너무 길어지면 지루해지기 때문에 이쯤에서 짜르고 다음 글에서 계속하도록 하겠습니다. ^^