FAT32 파티션 복구
섹터 물리적 디스크 최소 단위, 512byte
클러스터 섹터 그룹 단위 4096byte(512byte * 8)
MBR 512 byte
- 부트코드 446byte 부팅에 필요한 코드 정보
- 파티션 테이블 64byte 주 파티션 4개에 대한 정보, 각각 파티션은 16byte로 구성
- 시그니처 2byte 55 AA
80 01 01 00 0B FE 3F F4 3F 00 00 00 C0 3F 3C (446byte 이후 파티션 테이블)
1byte 부트플래그 80 (0x80: 부팅 가능, 0x00 : 부팅 불가능)
3byte CHS 시작 주소 01 01 00 현재 사용 x
1byte 파일 시스템 타입 0B (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)
3byte CHS 끝 주소 FE 3F F4 사용 x
4byte LBA(VBR) 시작주소 3F 00 00 00 리틀 엔디안 -> 00 00 00 3F = 63 섹터
4byte 총 섹터 개수 C0 3F 3C 00 리틀 엔디안 -> 00 3C 3F C0 = 3948480개
512 * 3,948,480 = 2,021,621,760byte 개
69 섹터에 있는 복구값으로 변경해 저장하면 복구된다.
다중파티션 복구
1. 첫번째 파티션 분석
00 04 01 00 07 03 20 32 80 00 00 00 00 90 01 00
1byte 부트플래그 00 (0x80: 부팅 가능, 0x00 : 부팅 불가능)
3byte CHS 시작 주소 04 01 00 현재 사용 x
1byte 파일 시스템 타입 07 (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)
3byte CHS 끝 주소 03 20 32 사용 x
4byte LBA(VBR) 시작주소 80 00 00 00 리틀 엔디안 -> 00 00 00 80 = 128 섹터
4byte 총 섹터 개수 00 90 01 00 리틀 엔디안 -> 00 01 90 00 = 102400개
512 * 102,400 = 52,428,800byte 개
2. 두번째 파티션 분석
00 04 01 32 07 03 20 64 80 90 01 00 00 90 01 00
1byte 부트플래그 00 (0x80: 부팅 가능, 0x00 : 부팅 불가능)
3byte CHS 시작 주소 04 01 32 현재 사용 x
1byte 파일 시스템 타입 07 (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)
3byte CHS 끝 주소 03 20 64 사용 x
4byte LBA(VBR) 시작주소 80 90 01 00 리틀 엔디안 -> 00 01 90 80 = 102,528 섹터
4byte 총 섹터 개수 00 90 01 00 리틀 엔디안 -> 00 01 90 00 = 102,400개
512 * 102,400 = 52,428,800byte 개
3. 세번째 파티션 분석
00 04 01 64 07 03 20 96 80 20 03 00 00 90 01 00
1byte 부트플래그 00 (0x80: 부팅 가능, 0x00 : 부팅 불가능)
3byte CHS 시작 주소 04 01 64 현재 사용 x
1byte 파일 시스템 타입 07 (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)
3byte CHS 끝 주소 03 20 96 사용 x
4byte LBA(VBR) 시작주소 80 20 03 00 리틀 엔디안 -> 00 03 20 80 = 204,928 섹터
4byte 총 섹터 개수 00 90 01 00 리틀 엔디안 -> 00 01 90 00 = 102,400개
512 * 102,400 = 52,428,800byte 개
4. 네번째 파티션 분석
00 04 01 96 05 03 60 FE 80 B0 04 00 00 40 0B 00
1byte 부트플래그 00 (0x80: 부팅 가능, 0x00 : 부팅 불가능)
3byte CHS 시작 주소 04 01 96 현재 사용 x
1byte 파일 시스템 타입 05 (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)
3byte CHS 끝 주소 03 60 FE 사용 x
4byte LBA(VBR) 시작주소 80 B0 04 00 리틀 엔디안 ->00 04 B0 80 = 307,328 섹터
4byte 총 섹터 개수 00 40 0B 00 리틀 엔디안 -> 00 0B 40 00= 737,280 개
512 * 737,280 = 377,487,360byte 개
확장파티션 위치 -> 307328 섹터 위치
5. 확장 파티션 분석 1번째
00 08 01 96 07 07 20 C8 80 00 00 00 00 90 01 00
1byte 부트플래그 00 (0x80: 부팅 가능, 0x00 : 부팅 불가능)
3byte CHS 시작 주소 08 01 96 현재 사용 x
1byte 파일 시스템 타입 07 (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)
3byte CHS 끝 주소 07 20 C8 사용 x
4byte LBA(VBR) 시작주소 80 00 00 00 리틀 엔디안 ->00 00 00 80 = 128 섹터
4byte 총 섹터 개수 00 90 01 00 리틀 엔디안 -> 00 01 90 00= 102,400 개
512 * 102,400 = 52,428,800byte 개
네번째 파티션의 위치 = 현재 VBR 위치 + 128 = 307328 + 128 = 307456
6. 확장 파티션 분석 2번째
00 08 01 C8 05 0B 60 FC 80 90 01 00 80 A0 09 00
1byte 부트플래그 00 (0x80: 부팅 가능, 0x00 : 부팅 불가능)
3byte CHS 시작 주소 08 01 C8 현재 사용 x
1byte 파일 시스템 타입 05 (0x0B: FAT32, 0x07: NTFS , 0x05: 확장파티션 ,0xEE : GPT 파티션)
3byte CHS 끝 주소 0B 60 FC 사용 x
4byte LBA(VBR) 시작주소 80 90 01 00 리틀 엔디안 ->00 01 90 80= 102,528 섹터
4byte 총 섹터 개수 80 A0 09 00 리틀 엔디안 -> 00 09 A0 80= 630,912개
다섯번째 파티션 정보의 위치 = 현재 VBR 위치 + 102528 = 307328 + 102528 = 409856
7. 다섯번째 파티션
00 0C 01 C8 07 0B 60 FC 80 00 00 00 00 A0 09 00
파티션 부트 플래그(1byte) 00
CHS 시작 주소(3byte) 0C 01 C8
파일시스템 타입(1byte) 07 NTFS
CHS 끝 주소(3byte) 0B 60 FC
LBA/VBR 시작 주소(4byte) 80 00 00 00 00 00 00 80 -> 128
총섹터 개수(4byte) 80 A0 09 00 00 09 A0 80 -> 630912
용량 512 x 630912 = 323026944
- 다섯번째 파티션 위치 = 현재 VBR 위치 + 128 = 409856 + 128 = 409984
GPT 파티션
- 2TB 이상의 파티션을 구성할 경우 사용하는 방식
- GPT 디스크로 부팅할 경우에는 BIOS 방식이 아닌 EFI 방식을 사용해야 한다.
- 이론적으로는 8ZB 까지 가능하지만 , 실제는 18EB로 제한되어 있음
- 파티션 엔트리를 128byte를 사용하며, 최대 128개 파티션 구성할 수 있음
- GPT는 1번 섹터(Primary GPT)에 GPT 헤더(92 byte)
2번 섹터(Secondary GPT)에 파티션 정보(각각 128byte)
00 FE FF FF EE FE FF FF 01 00 00 00 AF C2 E7 0E
00 부트 플래그
EE 파일 시스템 유형 0xEE GPT(EFI 디스크)
01 00 00 00 LBA 시작 주소 리틀 엔디안 -> 00 00 00 01 = 1 섹터
GPT 헤더 (92byte)
Signature(8Byte)
영역 |
내용 |
45 46 49 20 50 41 52 54 |
'EFI PART' 기록 |
Revision(4Byte)
영역 |
내용 |
00 00 01 00 |
버전 1.0 |
Header 크기(4Byte)
영역 |
내용 |
5C 00 00 00 |
GPT 헤더 크기(92byte) |
CRC32 of Header(4Byte)
영역 |
내용 |
16 88 44 50 |
Header 시작부터 끝에 대한 무결성 체크 |
Reserved(4Byte)
영역 |
내용 |
00 00 00 00 |
예약된 영역이며 사용하지 않는다. |
Current LBA(8Byte)
영역 |
내용 |
01 00 00 00 00 00 00 00 |
현재 LBA 주소 |
Backup LBA(8Byte)
영역 |
내용 |
AF C2 E7 0E 00 00 00 00 |
GPT Header 정보를 백업한 Sector 위치 |
First usable LBA for Partition(8Byte)
영역 |
내용 |
22 00 00 00 00 00 00 00 |
파티션 구성을 할 수 있는 영역의 시작 위치 Primary Partition Table Last LBA + 1 |
Last usable LBA for Partition(8Byte)
영역 |
내용 |
8E C2 E7 0E 00 00 00 00 |
파티션 구성을 할 수 있는 영역의 마지막 위치 Secondary Partition Table Last LBA - 1 |
Disk GUID(16Byte)
영역 |
내용 |
E2 83 B4 33 56 08 73 4E A8 C9 96 BC 37 64 81 69 |
장치 UUID 번호 |
Partition Entries Starting LBA(8Byte)
영역 |
내용 |
02 00 00 00 00 00 00 00 |
Partition Entry 시작 위치 각 파티션 정보가 저장되어 있음 |
Number of Partition Entries(4Byte)
영역 |
내용 |
80 00 00 00 |
지원하는 GPT Partition Entry 개수 |
Size of Partition Entry(4Byte)
영역 |
내용 |
80 00 00 00 |
GPT Partition Entry 크기(128Byte) 대부분 128Byte 사용 |
CRC32 of Partition Array(4Byte)
영역 |
내용 |
FC B9 1A E4 |
파티션 CRC32 값 |
Reserved(420Byte)
영역 |
내용 |
전부 0 |
0x25C ~ 0x3FF 사용하지 않는 영역 |
Secondary GPT Sector(128byte)
Partition Type GUID(16Byte)
영역 |
내용 |
28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B |
파티션 타입 고유 번호 파티션 파일 시스템과 OS/서비스 확인 가능 |
Unique Partition GUID(16Byte)
영역 |
내용 |
2B 80 26 60 4D AD 05 47 B9 B1 BF 81 BD D2 CA C7 |
파티션마다 할당하는 고유한 값을 저장 |
First LBA(8Byte)
영역 |
내용 |
28 00 00 00 00 00 00 00 |
파티션 시작 주소 (0x28 = 40) |
Last LBA(8Byte)
영역 |
내용 |
27 40 06 00 00 00 00 00 |
파티션 마지막 주소 (0x64027 = 409639) |
Attribute Flags(8Byte)
영역 |
내용 |
00 00 00 00 00 00 00 00 |
파티션 속성을 나타내는 값 |
Partition Name(72Byte)
영역 |
내용 |
45 00 46 00 49 00 20 00 53 00 79 00 73 00 74 00 65 00 6D 00 20 00 50 00 61 00 72 00 74 00 69 00 74 00 69 00 6F 00 6E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0x438 ~ 0x47F 파일 시스템 이름 UTF-16 사용 |