BIOS 매개변수 블록

컴퓨팅에서 BIOS 매개변수 블록(, 줄여서 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 디스크립터()라고도 불린다.

 FAT12 / FAT16 
 DOS 2.0 BPB 

FAT12용 표준 DOS 2.0 BPB 형식(13바이트):

 섹터 오프셋 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 3.0 BPB 

FAT12 및 FAT16용 표준 DOS 3.0 BPB 형식(19바이트), 이미 일부 MS-DOS 2.11 버전에서 지원됨:

 섹터 오프셋 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 

FAT12 및 FAT16용 표준 DOS 3.2 BPB 형식(21바이트):

 섹터 오프셋 BPB 오프셋 필드 길이 설명 0x00B  0x00  19 BYTEs  DOS 3.0 BPB 0x01E  0x13  WORD  총 섹터 수 (DOS 3.31 BPB와 호환되지 않음)

 DOS 3.31 BPB 

FAT12, FAT16 및 FAT16B용 표준 DOS 3.31 BPB 형식(25바이트):

 섹터 오프셋 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 

FAT12, FAT16 및 FAT16B용 PC DOS 3.4 및 OS/2 1.0-1.1 확장 BPB 형식(32바이트):

 섹터 오프셋 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 

FAT12, FAT16, FAT16B 및 HPFS용 DOS 4.0 및 OS/2 1.2 확장 BPB 형식(51바이트):

 섹터 오프셋 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 

FAT32용 짧은 DOS 7.1 확장 BIOS 매개변수 블록 형식(60바이트):

 섹터 오프셋 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바이트):

 섹터 오프셋 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 

NTFS용 확장 BPB 형식(73바이트):

 섹터 오프셋 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와 유사하게 구성되어 있다.
 섹터 오프셋 필드 길이 (바이트) 설명 0x000  3  JumpBoot. 0xEB, 0x76, 0x90이어야 한다. 0x003  8  파일 시스템 이름. 이어야 한다. 0x00B  53  비어있음 (전통적인 BPB 영역). 모두 0이어야 한다.

 같이 보기 
 FAT 파일 시스템의 BPB 형식
 MDBPB (Microsoft DoubleSpace BPB)

 각주 

 더 읽어보기 
  — 버전 2.0부터 7.0까지의 BPB에 대한 설명
  — "BIOS 매개변수 블록 처리" 섹션에서 저자들은 MS-DOS 버전 2.0 BPB부터 PC DOS 버전 4.0 BPB까지 BIOS 매개변수 블록의 진화를 설명하고, 각 필드를 도입한 DOS 버전으로 표시한다.
  — 그림 4.3에는 버전 4.0 BPB의 다이어그램이 포함되어 있으며, BPB의 레이아웃이 "마이크로소프트에 의해 정의되지 않으며 다른 벤더에 따라 달라질 수 있다"고 명시한다. 이 책이 쓰여질 당시에는 이것이 사실이었다. 마이크로소프트는 OS/2 개발자 툴킷에서 BPB 구조를 처음으로 공개적으로 문서화했다.
  — 버스타크는 BIOS 매개변수 블록을 역설계했다. 이 문서에는 몇 가지 오류가 있다. 예를 들어, "FAT32에서 EBPB의 존재는 마이크로소프트에 의해 문서화되지 않았다"는 그의 주장은 다음과 같다.
  — 마이크로소프트는 DOS-Windows 98용 버전 4.0 BPB와 새로운 "FAT32 BIOS 매개변수 블록(BPB)" (버전 7.0 BPB)를 문서화하는데, 이 BPB는 "표준 BPB보다 크고", "표준 BPB와 동일한 구조"를 가지지만, "몇 가지 추가 필드를 포함한다"고 명시한다.
  — 마이크로소프트는 FAT16 및 FAT32 볼륨 모두에서 확장 BPB를 문서화한다. 또한 NTFS 볼륨에서도 BPB를 문서화한다.
  — "NTFS 볼륨의 BPB 및 확장 BPB 필드" 표는 NTFS 볼륨의 BPB를 설명한다. 여러 필드에 대한 설명이 Windows 2000 Resource Kit에 제공된 설명과 모순된다.
  — BPB에 영향을 미치는 문제

  — OEM 레이블 오용 및 마이크로소프트의 볼륨 트래커에 대해







분류:바이오스
분류:도스 기술