메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

FAT 파일시스템(3) - 부트 레코더(2)

한빛미디어

|

2006-08-11

|

by HANBIT

12,720

제공: 한빛미디어 네트워크 기사
저자: 정준석
출처: IT EXPERT, 임베디드 개발자를 위한 파일시스템의 원리와 실습 Chapter 3

FAT32 부트 레코드 항목 설명

이제부터 FAT32에 해당하는 항목들을 살펴보자. 주의할 점은 위치(Offset) 값의 시작이 36부터라는 점이다. 그 이전에 해당하는 값들은FAT 16/32의 공통 항목이다.



[그림 3-9] FAT32 부트 레코드 항목





[그림 3-10] Ext Flags 항목



[표 3-7] Ext Flags 항목 설명







--------------------------------------------------------
▒ 여기선 잠깐 ▒

부트 레코드 항목 중에는 문자열을 저장하는 항목이 몇 군데 있다. OEM Name, Volume Label, File System Type 항목은 문자열을 저장한다. 이들 항목에 문자열을 저장하는 데 있어서 주의해야 할 점은 빈 공간은 반드시 Space(0x20)로 처리해야 한다는 것이다. 예를 들어 C 언어로 File System Type에‘FAT16’이라는 문자열을 넣을 때 다음과 같이 코드를 작성했다고 하자.

strcpy( FileSystemType, "FAT16" );

그러면 저장되는 값은 다음과 같다.



하지만 FAT 파일시스템에서 문자열의 모든 빈 공간에는 Space가 들어가야 한다. 그러므로 다음과 같은 저장 형태를 가져야 한다.



위와 같은 형태로 들어가게 하려면 일반적으로 C 언어에서 제공하는 문자열 제어 함수를 사용하면 안 된다. 직접 특별한 문자열 제어 함수를 구현하든지 소스 작성하기가 귀찮다면 일일이 배열에 값을 넣어주면 된다
---------------------------------------------------------

부트 레코드의 끝부분

부트 레코드를 구현하는 데 있어 한 가지 주의 사항이 있다면 FAT16/32 모두 부트 레코드 영역의 Offset 511~512에는 반드시0xAA55라는 서명이 들어가야 한다는 것이다.



많은 FAT 관련 문서에서는“Signature의 위치는 부트 레코드 영역의 가장 끝부분이다.”라고 설명하고 있지만, 이것은 섹터의 크기가 512Byte일 경우에만 유효한 내용이다. Microsoft에서 제공하는 공식 문서에 따르면 섹터의 크기가 512Byte보다 큰 경우라도 Signature는 Offset 510~511에 와야 한다.



[그림 3-11] Signature의 위치
TAG :
댓글 입력
자료실

최근 본 상품0