둘둘리둘둘리둘둘리둘둘리둘둘리둘

Partition Table Entry와 FAT16 BR구조 본문

Windows

Partition Table Entry와 FAT16 BR구조

dool2ly 2014. 6. 22. 23:11
  • 볼륨 부트 레코드파티션되지 않은 기억 장치의 첫 섹터 또는 파티션된 기억 장치의 개별 파티션의 첫 섹터를 말한다. 파티션 또는 해당 장치에 설치된 운영 체제나 독립형 프로그램을 불러오는 코드를 포함할 수도 있다. 부트 섹터를 사용하려면, 2바이트 16진수 0xAA55 (부트 섹터 서명)가 섹터 맨 끝에 존재해야 한다. 그렇지 않은 경우에는 바이오스나 MBR 코드는 오류 메시지를 보고하고 운영 체제의 부트스트랩 과정을 중단한다.

출처 : 위키백과(http://ko.wikipedia.org/wiki/%EB%B6%80%ED%8A%B8_%EC%84%B9%ED%84%B0)


VBR(Volume Boot Record)또는 PBR(Partition Boot Record)라고 한다.

이 VBR의 시작주소(Partition의 시작주소)는 MBR(Master Boot Record)의 Partition Table Entry를 보면 알수 있다.


Partition Table Entry의 위치

Partition Table Entry 1(16Byte): 0x01BE~0x01CD

Partition Table Entry 2(16Byte): 0x01CE~0x01DD

Partition Table Entry 3(16Byte): 0x01DE~0x01ED

Partition Table Entry 4(16Byte): 0x01EE~0x01FD


Partition Table Entry의 구조

0x01B0 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Boot

Flag


0x01C0

Starting CHS Address

Part.

Type

Ending CHS Address

 Starting LBA Address

 Size In Sector

 

 


Boot Flag: 부팅가능 여부, 부팅가능(0x80), 부팅 불가(0x00)


Starting CHS Address: CHS주소 지정 방식으로 파티션 시작섹터의 위치 지정, LBA방식을 주로 사용하여 이필드를 설정하지 않아도 크게 상관없음

(CHS주소 지정 방식: Cylinder-Head-Sector, 물리적인 디스크위치를 나타내기위한 주소방식)


Partition Type: 파티션 종류를 표시

 0x00: Empty

 0x05:

 0x06: FAT16

 0x07: NTFS

 0x0C: FAT32

 0x0F: Extended Partition

 0x82: Linux Swap Partition

 0x83: Linux Partition


Ending CHS Address: CHS주소 지정방식으로 파티션의 마지막 섹터의 위치 지정


Starting LBA Address: LBA주조 지정방식으로 파티션의 시작섹터의 번호 지정, 섹터번호는 0번부터 시작함


Size in Sector: 파티션의 용량을 섹터의 개수로 표현(LBA방식)




HxD를 이용하여 가상머신의 하드디스크를 열어본모습

(HxD Download : http://mh-nexus.de/en/downloads.php?product=HxD)

실습환경: XP에서 Primary Partition 3개를 차례대로 FAT, FAT32, NTFS방식으로 포맷


첫번째 Partition Table Entry를 통해 첫번째 파티션은 FAT16방식이며 63(0x03F) Sector 부터 

0x201C84개의 Sector를 가지고있음을 알 수 있다.

Sector의 크기는 512Byte이므로 2104452(0x201C84) x 512 = 1,077,479,424 Byte(1GB)


FAT16방식의 VBR구조(62 Byte)


Jump Boot Code

FAT12/16 -> EB3C90

FAT32 -> EB5890

NTFS -> EB5290


OEM Name

MSWIN4.1 또는 MSDOS5.0


Byte Per Sector

Sector의 크기


Sector Per Cluster

클러스터를 구성하는 섹터의 갯수

클러스터의 크기: Byte Per Sector x Sector Per Cluster


Reserved Sector Count

Reversed Sector 갯수

예약공간, BR도 예약공간에 포함됨, BR은 예약공간의 첫번째 섹터

FAT16 -> 1

FAT32 -> 32


FAT Count

FAT의 갯수 보통 2임


Root Directory Entry Count

Root Directory Etry항목을 몇개로 할것인지 나타냄


Total Sector 16

볼륨의 총 섹터 수

0xFFFF 이상 -> Total Sector 32 사용, Total Sector 16은 0

0xFFFF 이하 -> Total Sector 16 사용, Total Sector 32는 0


Media Type

0xF8(플로피 디스크 제외)


FAT Size 16

FAT영역의 섹터 수


Sector Per Track

트랙당 섹터 수, 사용하지 않음


Head Count

헤드의 수, 사용하지 않음


Hidden Sector

볼륨 앞에 숨겨진 섹터의 수(MBR을 비롯한 볼륨으로 사용되지 않는 섹터의 수), 사용하지 않음


Total Sector 32

볼륨 총 섹터의 수, FAT32는 반드시 이항목을 사용


Drive Number

드라이브 번호이며 보통 1, 사용하지않음


Reserved1

항상 0이어야 한다, 사용하지 않음


Boot Signature

BR항목이 확장되어 뒤에 항목이 더 있음을 의미, 항상 0x029


Volume ID

볼륨 고유번호, 임의로 생성


Volume Label

초기값: [NO NAME ]


File System Type

파일 시스템의 종류


실습

위의 Partition Table Entry를 통해 알아낸 Partition1의 시작 섹터 63(0x03F)

파일 저장방식은 FAT32와 다를게 없고, FAT16은 거의 사용하지 않는다.

저장방식이나 파일 복구등은 여기(FAT32의 저장방식과 파일 복구)에서!

'Windows' 카테고리의 다른 글

PE header관련 구조체  (0) 2015.10.17
PE 파일 구조 - 2  (0) 2015.10.13
PE 파일 구조 - 1  (0) 2015.10.13
FAT32의 저장방식  (0) 2014.06.25
FAT32 구조  (0) 2014.06.24
Comments