BIOS 매개변수 블록

컴퓨팅에서 **BIOS 매개변수 블록**(BIOS parameter block, 줄여서 **BPB**)은 볼륨 부트 레코드(VBR) 내에 있는 자료 구조로, 데이터 스토리지 볼륨의 물리적 레이아웃을 설명한다. 하드 디스크와 같은 파티션이 나뉜 장치에서는 BPB가 볼륨 파티션을 설명하는 반면, 플로피 디스크와 같이 파티션이 나뉘지 않은 장치에서는 전체 미디어를 설명한다. 기본적인 BPB는 모든 파티션에서 나타나고 사용될 수 있으며, 플로피 디스크의 경우 종종 그 존재가 필수적이다. 그러나 특정 파일 시스템도 기본 파일 시스템 구조를 설명하는 데 BPB를 사용한다. BIOS 매개변수 블록을 사용하는 파일 시스템에는 FAT12(DOS 1.x 제외), FAT16, FAT32, HPFS, NTFS가 있다. 필드의 유형과 포함된 데이터 양이 다르기 때문에 FAT16, FAT32 및 NTFS 부트 섹션의 BPB 길이는 서로 다르다. (다양한 FAT BPB 버전과 그 항목에 대한 자세한 내용은 FAT 문서에서 찾을 수 있다) BPB 또는 EBPB 바로 앞에 있는 볼륨 부트 레코드의 맨 처음 11바이트 데이터 구조와 결합하여, 이것은 ECMA-107 또는 ISO/IEC 9293(유연/플로피 및 광 디스크 카트리지를 위한 FAT를 설명함)에서 **FDC 디스크립터**(FDC descriptor) 또는 **확장 FDC 디스크립터**(extended FDC descriptor)라고도 불린다.
# FAT12 / FAT16

## DOS 2.0 BPB
DOS 2.0 BPB FAT12용 표준 DOS 2.0 BPB 형식(13바이트): {| class="wikitable" |- ! 섹터 오프셋 ! BPB 오프셋 ! 필드 길이 ! 설명 |- | `0x00B` || `0x00` || WORD || 논리 섹터당 바이트 수 |- | `0x00D` || `0x02` || BYTE || 클러스터당 논리 섹터 수 |- | `0x00E` || `0x03` || WORD || 예약된 논리 섹터 수 |- | `0x010` || `0x05` || BYTE || FAT 개수 |- | `0x011` || `0x06` || WORD || 루트 디렉터리 엔트리 수 |- | `0x013` || `0x08` || WORD || 총 논리 섹터 수 |- | `0x015` || `0x0A` || BYTE || 미디어 디스크립터 |- | `0x016` || `0x0B` || WORD || FAT당 논리 섹터 수 |} DOS 2.00의 모든 버전이 이 구조를 따르는 것은 아니다. IBM PC-DOS 2.00에는 이 공간에 부팅 가능한 드라이브와 읽기를 시작할 섹터를 나타내는 것으로 보이는 추가적인, 문서화되지 않은 필드가 있다. 이는 어떤 공식 IBM 문서에도 나타나지 않지만, PC/XT 시스템은 이 바이트에 올바른 값이 없으면 부팅되지 않는다.
## DOS 2.11 BPBDOS 3.0 BPB
DOS 3.0 BPB FAT12 및 FAT16용 표준 DOS 3.0 BPB 형식(19바이트), 이미 일부 MS-DOS 2.11 버전에서 지원됨: {| class="wikitable" |- ! 섹터 오프셋 ! BPB 오프셋 ! 필드 길이 ! 설명 |- | `0x00B` || `0x00` || 13 BYTEs || DOS 2.0 BPB |- | `0x018` || `0x0D` || WORD || 트랙당 물리 섹터 수 |- | `0x01A` || `0x0F` || WORD || 헤드 수 |- | `0x01C` || `0x11` || WORD || 숨겨진 섹터 (DOS 3.31 BPB와 호환되지 않음) |}
## DOS 3.2 BPB
DOS 3.2 BPB FAT12 및 FAT16용 표준 DOS 3.2 BPB 형식(21바이트): {| class="wikitable" |- ! 섹터 오프셋 ! BPB 오프셋 ! 필드 길이 ! 설명 |- | `0x00B` || `0x00` || 19 BYTEs || DOS 3.0 BPB |- | `0x01E` || `0x13` || WORD || 총 섹터 수 (DOS 3.31 BPB와 호환되지 않음) |}
## DOS 3.31 BPB
DOS 3.31 BPB FAT12, FAT16 및 FAT16B용 표준 DOS 3.31 BPB 형식(25바이트): {| class="wikitable" |- ! 섹터 오프셋 ! BPB 오프셋 ! 필드 길이 ! 설명 |- | `0x00B` || `0x00` || 13 BYTEs || DOS 2.0 BPB |- | `0x018` || `0x0D` || WORD || 트랙당 물리 섹터 수 (DOS 3.0 BPB와 동일) |- | `0x01A` || `0x0F` || WORD || 헤드 수 (DOS 3.0 BPB와 동일) |- | `0x01C` || `0x11` || DWORD || 숨겨진 섹터 (DOS 3.0 BPB와 호환되지 않음) |- | `0x020` || `0x15` || DWORD || 대형 총 논리 섹터 수 |}
## DOS 3.4 EBPB
DOS 3.4 EBPB FAT12, FAT16 및 FAT16B용 PC DOS 3.4 및 OS/2 1.0-1.1 확장 BPB 형식(32바이트): {| class="wikitable" |- ! 섹터 오프셋 ! BPB 오프셋 ! 필드 길이 ! 설명 |- | `0x00B` || `0x00` || 25 BYTEs || DOS 3.31 BPB |- | `0x024` || `0x19` || BYTE || 물리 드라이브 번호 |- | `0x025` || `0x1A` || BYTE || 플래그 등 |- | `0x026` || `0x1B` || BYTE || 확장 부트 시그니처 (`0x28` 일명 "4.0") (DOS 4.0 EBPB 및 NTFS EBPB와 유사) |- | `0x027` || `0x1C` || DWORD || 볼륨 일련 번호 |}
# FAT12 / FAT16 / HPFS

## DOS 4.0 EBPB
DOS 4.0 EBPB FAT12, FAT16, FAT16B 및 HPFS용 DOS 4.0 및 OS/2 1.2 확장 BPB 형식(51바이트): {| class="wikitable" |- ! 섹터 오프셋 ! BPB 오프셋 ! 필드 길이 ! 설명 |- | `0x00B` || `0x00` || 25 BYTEs || DOS 3.31 BPB |- | `0x024` || `0x19` || BYTE || 물리 드라이브 번호 (DOS 3.4 EBPB와 동일) |- | `0x025` || `0x1A` || BYTE || 플래그 등 (DOS 3.4 EBPB와 동일) |- | `0x026` || `0x1B` || BYTE || 확장 부트 시그니처 (`0x29` 일명 "4.1") (DOS 3.4 EBPB 및 NTFS EBPB와 유사) |- | `0x027` || `0x1C` || DWORD || 볼륨 일련 번호 (DOS 3.4 EBPB와 동일) |- | `0x02B` || `0x20` || 11 BYTEs || 볼륨 레이블 |- | `0x036` || `0x2B` || 8 BYTEs || 파일 시스템 유형 |}
# FAT32

## DOS 7.1 EBPB
DOS 7.1 EBPB FAT32용 짧은 DOS 7.1 확장 BIOS 매개변수 블록 형식(60바이트): {| class="wikitable" |- ! 섹터 오프셋 ! BPB 오프셋 ! 필드 길이 ! 설명 |- | `0x00B` || `0x00` || 25 BYTEs || DOS 3.31 BPB |- | `0x024` || `0x19` || DWORD || FAT당 논리 섹터 수 |- | `0x028` || `0x1D` || WORD || 미러링 플래그 등 |- | `0x02A` || `0x1F` || WORD || 버전 |- | `0x02C` || `0x21` || DWORD || 루트 디렉터리 클러스터 |- | `0x030` || `0x25` || WORD || FS 정보 섹터 위치 |- | `0x032` || `0x27` || WORD || 백업 섹터 위치 |- | `0x034` || `0x29` || 12 BYTEs || 예약됨 (부팅 파일 이름) |- | `0x040` || `0x35` || BYTE || 물리 드라이브 번호 |- | `0x041` || `0x36` || BYTE || 플래그 등 |- | `0x042` || `0x37` || BYTE || 확장 부트 시그니처 (`0x28`) |- | `0x043` || `0x38` || DWORD || 볼륨 일련 번호 |} FAT32용 전체 DOS 7.1 확장 BIOS 매개변수 블록 형식(79바이트): {| class="wikitable" |- ! 섹터 오프셋 ! BPB 오프셋 ! 필드 길이 ! 설명 |- | `0x00B` || `0x00` || 25 BYTEs || DOS 3.31 BPB |- | `0x024` || `0x19` || DWORD || FAT당 논리 섹터 수 |- | `0x028` || `0x1D` || WORD || 미러링 플래그 등 |- | `0x02A` || `0x1F` || WORD || 버전 |- | `0x02C` || `0x21` || DWORD || 루트 디렉터리 클러스터 |- | `0x030` || `0x25` || WORD || FS 정보 섹터 위치 |- | `0x032` || `0x27` || WORD || 백업 섹터 위치 |- | `0x034` || `0x29` || 12 BYTEs || 예약됨 (부팅 파일 이름) |- | `0x040` || `0x35` || BYTE || 물리 드라이브 번호 |- | `0x041` || `0x36` || BYTE || 플래그 등 |- | `0x042` || `0x37` || BYTE || 확장 부트 시그니처 (`0x29`) |- | `0x043` || `0x38` || DWORD || 볼륨 일련 번호 |- | `0x047` || `0x3C` || 11 BYTEs || 볼륨 레이블 |- | `0x052` || `0x47` || 8 BYTEs || 파일 시스템 유형 |}
# NTFS EBPBNTFS
NTFS#Partition Boot Sector (PBS) NTFS용 확장 BPB 형식(73바이트): {| class="wikitable" |- ! 섹터 오프셋 ! BPB 오프셋 ! 필드 길이 ! 설명 |- | `0x00B` || `0x00` || 25 BYTEs || DOS 3.31 BPB |- | `0x024` || `0x19` || BYTE || 물리 드라이브 번호 (DOS 3.4 EBPB와 동일) |- | `0x025` || `0x1A` || BYTE || 플래그 등 (DOS 3.4 EBPB와 동일) |- | `0x026` || `0x1B` || BYTE || 확장 부트 시그니처 (`0x80` 일명 "8.0") (DOS 3.4 EBPB 및 DOS 4.0 EBPB와 유사) |- | `0x027` || `0x1C` || BYTE || 예약됨 |- | `0x028` || `0x1D` || QWORD || 볼륨 내 섹터 수 |- | `0x030` || `0x25` || QWORD || MFT 첫 클러스터 번호 |- | `0x038` || `0x2D` || QWORD || MFT 미러 첫 클러스터 번호 |- | `0x040` || `0x35` || DWORD || MFT 레코드 크기 |- | `0x044` || `0x39` || DWORD || 인덱스 블록 크기 |- | `0x048` || `0x3D` || QWORD || 볼륨 일련 번호 |- | `0x050` || `0x45` || DWORD || 체크섬 |}
# exFAT BPB
ExFAT은 고전적인 의미의 BPB를 사용하지 않는다. 그럼에도 불구하고, 섹터 0의 볼륨 부트 레코드는 BPB와 유사하게 구성되어 있다. {| class="wikitable" |- ! 섹터 오프셋 ! 필드 길이 (바이트) ! 설명 |- | `0x000` || 3 || JumpBoot. 0xEB, 0x76, 0x90이어야 한다. |- | `0x003` || 8 || 파일 시스템 이름. "EXFAT "이어야 한다. |- | `0x00B` || 53 || 비어있음 (전통적인 BPB 영역). 모두 0이어야 한다. |- |}
# 더 읽어보기
* archive-date=2017-09-09 -- 버전 2.0부터 7.0까지의 BPB에 대한 설명 * isbn=0-471-52231-7 -- "BIOS 매개변수 블록 처리" 섹션에서 저자들은 MS-DOS 버전 2.0 BPB부터 PC DOS 버전 4.0 BPB까지 BIOS 매개변수 블록의 진화를 설명하고, 각 필드를 도입한 DOS 버전으로 표시한다. * isbn=0-672-22667-7 -- 그림 4.3에는 버전 4.0 BPB의 다이어그램이 포함되어 있으며, BPB의 레이아웃이 "마이크로소프트에 의해 정의되지 않으며 다른 벤더에 따라 달라질 수 있다"고 명시한다. 이 책이 쓰여질 당시에는 이것이 사실이었다. 마이크로소프트는 OS/2 개발자 툴킷에서 BPB 구조를 처음으로 공개적으로 문서화했다. * archive-date=2016-07-30 -- 버스타크는 BIOS 매개변수 블록을 역설계했다. 이 문서에는 몇 가지 오류가 있다. 예를 들어, "FAT32에서 EBPB의 존재는 마이크로소프트에 의해 문서화되지 않았다"는 그의 주장은 다음과 같다. ** archive-date=2017-09-09 -- 마이크로소프트는 DOS-Windows 98용 버전 4.0 BPB와 새로운 "FAT32 BIOS 매개변수 블록(BPB)" (버전 7.0 BPB)를 문서화하는데, 이 BPB는 "표준 BPB보다 크고", "표준 BPB와 동일한 구조"를 가지지만, "몇 가지 추가 필드를 포함한다"고 명시한다. ** archive-date=2006-08-10 -- 마이크로소프트는 FAT16 및 FAT32 볼륨 모두에서 확장 BPB를 문서화한다. 또한 NTFS 볼륨에서도 BPB를 문서화한다. * archive-date=2016-07-30 -- "NTFS 볼륨의 BPB 및 확장 BPB 필드" 표는 NTFS 볼륨의 BPB를 설명한다. 여러 필드에 대한 설명이 Windows 2000 Resource Kit에 제공된 설명과 모순된다. * archive-date=2017-09-09 -- BPB에 영향을 미치는 문제 * archive-date=2016-03-04 * archive-date=2017-09-09 -- OEM 레이블 오용 및 마이크로소프트의 볼륨 트래커에 대해 * archive-date=2022-05-29 * archive-date=2017-09-09 * archive-date=2019-04-08 * archive-date=2019-07-29 * archive-date=20 February 2011 * archive-date=2022-05-29 위키데이터 속성 추적 분류:바이오스 분류:도스 기술