확장 부트 레코드

**확장 부트 레코드**(extended boot record, **EBR**),access-date=2011-07-19 또는 **확장 파티션 부트 레코드**(extended partition boot record, **EPBR**),은 일반적인 DOS 디스크 드라이브 파티션 시스템에서 논리 파티션에 대한 설명자이다. 이 시스템에서 마스터 부트 레코드 (MBR)의 파티션 레코드 엔트리 중 하나(그리고 오직 하나)가 확장 파티션으로 지정되면, 해당 파티션은 여러 개의 논리 파티션으로 세분될 수 있다. 이 확장 파티션의 실제 구조는 확장 파티션 내에 위치한 하나 이상의 EBR에 의해 설명된다. 첫 번째(그리고 때로는 유일한) EBR은 항상 확장 파티션의 첫 번째 섹터에 위치한다. 단일 MBR 내의 파티션 테이블에 의해 모두 설명되어 그 수가 제한되는 주 파티션과 달리, 각 EBR은 자신이 설명하는 논리 파티션 앞에 위치한다. 다른 논리 파티션이 뒤따르면, 첫 번째 EBR에는 다음 EBR을 가리키는 엔트리가 포함된다. 따라서 여러 EBR이 연결 리스트를 형성한다. 이는 확장 파티션 내에 형성될 수 있는 논리 드라이브의 수가 주어진 확장 파티션의 사용 가능한 디스크 공간 양에 의해서만 제한됨을 의미한다. 윈도우 XP 버전까지는 확장 파티션 내의 논리 파티션이 "드라이브 지오메트리" 또는 "CHS"라는 규칙에 따라 정렬되었지만, 윈도우 비스타부터는 1-MiB 경계에 맞춰 정렬된다. 이러한 정렬 방식의 차이 때문에 XP의 논리 디스크 관리자 (디스크 관리)는 이러한 확장 파티션을 경고 없이 삭제할 수 있다.access-date=2015-08-29 -
# EBR 구조 및 값
EBR은 기본적으로 MBR과 동일한 구조를 가지지만, 섹터 끝에 필수적인 부트 레코드 시그니처(또는 매직 넘버) 0xAA55가 있는 것 외에 파티션 테이블의 첫 두 엔트리만 사용되어야 한다. 이 2바이트 시그니처는 디스크 편집기에서 0x55가 먼저, 0xAA가 나중에 나타나는데, 이는 IBM 호환 PC가 리틀 엔디언 순서로 십육진법 단어를 저장하기 때문이다(아래 표 참조).
## 구조
{| class="wikitable" width="85%" |+ 확장 부트 레코드의 일반적인 구조: |- ! colspan="2" | EBR 섹터 내 오프셋 ! rowspan="2" | 내용 ! 크기 |- ! Hex ! Dec ! 바이트 |- | | `000 – 1BD` | | 000 – 445 | 일반적으로 사용되지 않음; 보통 0으로 채워짐;
다른 부트로더, 즉 파티션 부트 레코드를 포함할 수 있음(예: Advanced Active Partitions와 함께 사용될 때) | | **446** |- | | `1BE – 1CD` | | 446 – 461 | 파티션 테이블의 **첫 번째 엔트리** | | **16** |- | | `1CE – 1DD` | | 462 – 477 | 파티션 테이블의 **두 번째 엔트리** | | **16** |- | | `1DE – 1ED` | | 478 – 493 | 사용되지 않음access-date=2011-09-15 **세 번째 엔트리**는 0으로 채워짐 | | **16** |- | | `1EE – 1FD` | | 494 – 509 | 사용되지 않음 **네 번째 엔트리**는 0으로 채워짐 | | **16** |- | | `1FE - 1FF` | | 510 - 511 | 빅 엔디언 네트워크 순서의 시그니처 55AAh,
리틀 엔디언 0xAA55와 동일. 디스크에서는: 오프셋 510에 0x55, 오프셋 511에 0xAA. | | **2** |- ! colspan="3" | EBR, 총 크기: 446 +(4×16) +2 = ! | 512 |- |} OS/2 운영 체제 및 일부 초기 파티션 매직 버전과 함께 제공되는 IBM 부트 관리자는 각 EBR 섹터에 최소 9바이트 엔트리(오프셋 0x18A부터 시작)를 추가한다. 이 엔트리는 플래그 값 바이트(파티션이 IBM 부트 관리자 메뉴에 있는지 여부를 나타냄)와 메뉴에 사용될 이름인 8바이트 ASCII 문자열로 구성된다. 파티션이 부트 메뉴에 포함되지 않은 경우(예: 데이터 전용 파티션), 플래그 바이트는 0이며, 이 경우 다음 8바이트 필드에는 해당 파티션의 시작 섹터 번호(십육진법)의 ASCII 표현이 포함될 수 있다. {| class="wikitable" width="85%" |+ MBR 또는 EBR 16바이트 파티션 테이블 엔트리의 구조: |- ! 오프셋 ! 엔트리 내 ! rowspan="2" | 바이트 ! rowspan="2" | 설명 |- ! Hex ! Dec |- | | `1?E`**1** | | 0 | | 1 | 부트 표시기 (활성 시 80h; 그렇지 않으면 00h) |- | | `1?F - 1?1` | | 1 – 3 | | 3 | CHS 실린더-헤드-섹터 주소: 파티션 시작 |- | | `1?2` | | 4 | | 1 | 파티션 타입 코드 |- | | `1?3 - 1?5` | | 5 – 7 | | 3 | CHS 실린더-헤드-섹터 주소: 파티션 끝 |- | | `1?6 - 1?9` | | 8 – 11 | | 4 | LBA 논리 블록 주소: 파티션 시작 |- | | `1?A - 1?D` | | 12 – 15 | | 4 | 파티션 크기 (섹터 단위) |- | colspan="4" | **1**: `1?E`는 각각 첫 번째 또는 두 번째 엔트리의 십육진법 오프셋을 얻기 위해 `1BE` 또는 `1CE`로 읽어야 한다. |} 확장 파티션의 파티션 타입은 0x05 (CHS 주소 지정) 또는 0x0F (LBA 주소 지정)이다.access-date=2011-07-19 DR-DOS 6.0 이상은 다른 운영 체제에서는 보이지 않는 0xC5를 사용하는 보안 확장 파티션을 지원한다. 7.03을 포함한 DR-DOS의 비 LBA 지원 버전은 0x0F 파티션 타입을 인식하지 못하고 다른 운영 체제는 0xC5 타입을 인식하지 못하기 때문에, 이를 활용하여 DR-DOS에서 디스크의 처음 8GB까지 공간을 점유하고(보안 또는 비보안 파티션의 논리 드라이브용으로), 여전히 0x0F를 사용하여 충돌 없이 LBA 지원 운영 체제용으로 디스크의 나머지 부분을 할당할 수 있다. 마찬가지로 리눅스는 타입 0x85를 사용하는 두 번째 확장 파티션 체인 개념을 지원한다. 이 타입은 단일 체인만 지원하는 다른 운영 체제에서는 숨겨져 있다(알려지지 않음).access-date=2011-07-19 EBR을 포함할 수 있는 다른 확장 파티션 타입에는 의도적으로 숨겨진 타입 0x15, 0x1F, 0x91 및 0x9B, 접근이 제한된 타입 0x5E 및 0x5F, 그리고 보안 타입 0xCF 및 0xD5가 있다. 그러나 이들은 해당 운영 체제 및 도구에만 사적인 것으로 간주되어야 하며, 다른 방식으로 마운트되어서는 안 된다. 파티션의 CHS 주소는 (가상) 디스크 지오메트리에 대한 지식 없이는 해석하기 어렵다. CHS에서 LBA로의 변환은 헤드 수와 트랙당 섹터 수에 기반하기 때문이다. 그러나 주어진 LBA 시작 주소와 섹터 단위의 파티션 크기는 가능한 경우 주어진 CHS 주소와 일치하는 디스크 지오메트리를 계산할 수 있게 한다. 24비트 CHS 주소 지정은 항상 트랙당 최대 63개 섹터(1...63)에 6비트를 사용하고, INT 13H 디스크 접근은 일반적으로 최대 256개 헤드(0...255)에 8비트를 사용하여 최대 1024개 실린더(0...1023)에 10비트를 남긴다. ATA CHS 주소는 항상 최대 16개 헤드(0...15)에 4비트를 사용하며, 이는 ATA-5 24비트 CHS 주소 변환에서 최대 16,383개 실린더(16383+1=2**14)에 14비트를 남긴다.archive-date = 2011-07-28 :
## 값
다음은 EBR의 파티션 테이블 엔트리의 4바이트 필드에서 발견되는 값(위 표 참조)에만 적용되는 일반적인 규칙이다. 이 값들은 생성 또는 변경에 사용된 파티션 도구에 따라 달라지며, 사실 확장 파티션 체계를 사용하는 대부분의 운영 체제(마이크로소프트 MS-DOS 및 윈도우, 리눅스 포함)는 다른 EBR 섹터를 가리키는 엔트리의 "파티션 크기" 값을 무시한다. 한 가지 예외는 리눅스 운영 체제의 경우 이 값이 1 이상이어야 한다는 것이다. EBR 파티션 테이블의 **첫 번째 엔트리**는 해당 EBR에 속하는 논리 파티션을 가리킨다. :***시작 섹터 = 이 EBR 섹터와 논리 파티션의 첫 번째 섹터 사이의 상대적 오프셋** ::참고: 이는 종종 동일한 하드 디스크의 각 EBR에 대해 동일한 값이며, 일반적으로 윈도우 XP 또는 이전 버전에서는 63이다. :***섹터 수 = 이 논리 파티션의 총 섹터 수** ::참고: EBR과 논리 드라이브 사이에 사용되지 않는 섹터는 논리 드라이브의 일부로 간주되지 않는다. EBR 파티션 테이블의 **두 번째 엔트리**는 확장 파티션의 마지막 EBR인 경우 0바이트를 포함한다. 그렇지 않으면 EBR 체인의 다음 EBR을 가리킨다. :***파티션 타입 코드 = 0x05 (CHS 주소 지정) 또는 0x0F (LBA 주소 지정).** ::즉, 파티션이 유효한 파티션 타입을 가져야 하는 것처럼 EBR도 유효한 파티션 타입을 가져야 한다. :***시작 섹터 = 확장 파티션 내 다음 EBR의 상대 주소** ::즉: **시작 섹터 = 다음 EBR의 LBA 주소 *빼기* 확장 파티션의 *첫 번째* EBR의 LBA 주소** :***섹터 수 = 다음 논리 파티션의 총 섹터 수이지만, 다음 EBR 섹터부터 카운트가 시작된다.** ::참고: EBR 파티션 테이블의 첫 번째 엔트리와 달리, 이 섹터 수는 다음 논리 파티션의 EBR 섹터와 그 외 사용되지 않는 트랙의 다른 섹터를 포함한다. (아래 다이어그램 1과 2를 비교해 보자.) caption2 = 다이어그램 2. EBR의 **두 번째 엔트리**의
시작 및 총 섹터 수 값이 가리키고 열거하는 것. **설명:**
위 다이어그램은 축척에 맞지 않는다. 각 "EBR"과 논리 "파티션" 사이의 얇은 흰색 선은 일반적으로 63개 섹터 길이의 사용되지 않는 영역의 나머지 부분을 나타낸다. 여기에는 단일 EBR 섹터(매우 과장된 크기로 표시됨)가 포함된다. 일부 시스템에서는 논리 파티션의 끝과 다음 EBR 사이에, 또는 마지막 논리 파티션과 전체 확장 파티션 자체의 끝 사이에 큰 사용되지 않는 공간이 존재할 수 있다(이전에 생성된 논리 파티션이 삭제되거나 크기가 조정된(축소된) 경우). 위에 표시된 EBR과 파티션의 인터리빙은 일반적이지만 필수는 아니다. 두 개 이상의 연속적인 EBR 뒤에 두 개 이상의 파티션 데이터 영역이 오는 것도 유효하다.
## 명명
리눅스 및 유사 운영 체제는 IDE 하드 디스크를 첫 번째 하드 디스크에 대해 `/dev/hda`, 두 번째 하드 디스크에 대해 `/dev/hdb` 등으로 지정한다. 마찬가지로 SCSI 및 이후 커널에서는 IDE 및 SATA 하드 디스크도 첫 번째 디스크에 대해 `/dev/sda` 등으로 식별한다. 마스터 부트 레코드에 정의된 최대 4개의 파티션은 `/dev/hda`에 대해 `/dev/hda1` ... `/dev/hda4`로 지정된다. 이 체계에서 다섯 번째 파티션, 예를 들어 `/dev/hda5`는 첫 번째 논리 드라이브에 해당한다. 여섯 번째 파티션 `/dev/hda6`은 두 번째 논리 드라이브에 해당하며, 다시 말해 확장 파티션 컨테이너는 계산되지 않는다. MBR에 정의된 가장 바깥쪽 확장 파티션(`/dev/hda1` ... `/dev/hda4` 중 하나)만이 이 체계에서 이름을 가진다. :장치 파일#명명 규칙
# 예시
이는 6,000개 섹터와 3개의 논리 파티션을 가진 확장 파티션을 보여준다.
참고: 3MB에 불과한 작은 확장 파티션이나 트랙당 20개 섹터를 가진 하드 드라이브는 현실적이지 않지만, 이 예시를 더 읽기 쉽게 만들기 위해 이러한 값들이 선택되었다.
## 스냅샷
다음 명령줄 도구의 출력은 두 개의 논리 드라이브가 있는 디스크의 레이아웃을 보여준다. FAT 및 NTFS 파티션에 대한 세부 정보는 생략되었으며, 리눅스로 주석 처리된 줄은 확장 파일 시스템이 있는 `/dev/hda6`이다. `/dev/hda5`의 시작 부분은 관련 운영 체제인 PC DOS 7, 윈도우 NT, 데비안이 간격을 두어 확장 파티션 정렬을 고집하지 않음을 보여준다.

\\.\PHYSICALDRIVE0 (assuming geometry CHS 99999 255 63) id. [3189-3188]
MBR CHS 0 0 1 at 0, end 0 0 1, size 1
unused CHS 0 0 2 at 1, end 0 0 63, size 62
1:*06: CHS 0 1 1 at 63, end 260 254 63, size 4192902 bigFAT
2: 05: CHS 261 0 1 at 4192965, end 757 254 63, size 7984305 => EXT
3: 17: CHS 758 0 1 at 12177270, end 1522 254 63, size 12289725 NTFS
4: 1C: CHS 1523 0 1 at 24466995, end 1825 254 63, size 4867695 FAT32
(extended offset 4192965) total 29334690
=> EXT CHS 261 0 1 at 0, end 261 0 1, size 1
5: 06: CHS 261 0 2 at 1, end 384 254 63, size 1992059 bigFAT
6: 05: CHS 385 0 1 at 1992060, end 757 254 63, size 5992245 => EXT
(extended offset 6185025) total 7984305
=> EXT CHS 385 0 1 at 0, end 385 0 1, size 1
unused CHS 385 0 2 at 1, end 385 0 63, size 62
6: 83: CHS 385 1 1 at 63, end 757 254 63, size 5992182 Linux
7: 00: CHS 0 0 0 at 0, end 0 0 0, size 0 unused
total 5992245

bigFAT CHS 0 1 1 at 63, end 260 254 63, size 4192902
PC DOS 7 (cluster size 64, number 65506) total 4192902

NTFS CHS 758 0 1 at 12177270, end 1522 254 63, size 12289725
[1C81-013D] (cluster size 8, number 1536215) total 12289725

FAT32 CHS 1523 0 1 at 24466995, end 1825 254 63, size 4867695
[C417-9E22] (cluster size 8, number 607271) total 4867695

bigFAT CHS 261 0 2 at 4192966, end 384 254 63, size 1992059
FAT SWAP (cluster size 32, number 62236) total 1992059

다른 예시는 "리눅스 파티션 HOWTO"를 참조한다.access-date=2011-07-19
# 내용주
\\\?\Volume{uuid}\\와 같은 UNC 스타일 경로도 허용한다.