부팅 순서
1. 하드웨어 체크
2. 파티션 테이블 체크
3. 각각의 파티션이 부팅을 할 수 있는지 체크
*파티션 (참조 - http://forensic-proof.com/archives/435)
한 대의 PC에 여러 운영체제를 설치할 수 있다 이럴 경우 운영체제를 구분하기 위해
파티션을 해야한다.
MBR 데이터구조
범위 (Byte Range) | 설명 (Decription) | 크기 (Size) | |
10 진수 | 16 진수 | ||
0 – 445 | 0x0000 – 0x01BD | Boot code | 446 bytes |
446 – 461 | 0x01BE – 0x01CD | Partition table entry #1 | 16 bytes |
462 – 477 | 0x01CE – 0x01DD | Partition table entry #2 | 16 bytes |
478 – 493 | 0x01DE – 0x01ED | Partition table entry #3 | 16 bytes |
494 – 509 | 0x01EE – 0x01FD | Partition table entry #4 | 16 bytes |
510 – 511 | 0x01FE – 0x01FF | Signature (0x55AA) | 2 bytes |
1. Boot Code
운영체제가 부팅될 때 POST(Power On Self-Test) 과정을 마친 후 저장매체의 첫 번째 섹터를 호출되는데 이때 0~445 Byte 영역의 부트 코드가 수행된다. 부트 코드의 주 역할은 파티션 테이블에서 부팅 가능한 파티션을 찾아 해당 파티션의 부트 섹터(boot sector)를 호출해주는 역할을 한다. 만약, 부팅 가능한 파티션이 없을 경우에는 미리 정의된 에러 메시지를 출력한다.
*MBR - 저장매체의 첫 번째 섹터(LBA 0)에 위치하는 512 바이트 크기의 영역
– 하드디스크에서 가장 먼저 읽히는 부분으로 하드디스크의 전체적인 관리를 담당
- 총 4개의 파티션을 관리할 수 있다.
=> 1. 주파티션 4개
2. 주파티션 3개 ,확장파티션 1개 ,확장파티션 1개 안에 여러개의 논리파티션
- 주파티션 마다 부트섹터가 할당 되는데 이럴 경우 컴퓨터가 어느 곳의 부트 섹터를
읽어서 부팅을 해야하는지 모른다 따라서 운영체제를 설치하게 되면 하드에서
가장 먼저 읽히는 MBR에 부투레코더를 기록하여 자신이 실행되게 한다.
2. Partition 구조
파티션 테이블은 4개의 파티션 레코드 (각 16Byte 총 64Byte)로 구성되어 있다.
446Byte부터 16Byte 씩 하나의 파티션 이다.
*파티션 엔트리 구조
빨간색 파티션에서 처음 1바이트(2개의 이진수)는 BootFlag 를 나타내는데 0x00 은 부팅이 불가능 함을 의미한다.
Staring CHS Addr , Ending CHS Addr은 사용하지 않으므로 신경 쓰지 않는다
중간에 Part Type은 파티션의 파일시스템 타입을 말한다
0C 이므로 FAT32를 뜻한다.
(0x07 : NTFS, 0x0C : FAT32, 0x00 : Empty, 0x05 : Extended)
다음의 4Byte는 LBA Address 를 의미한다
1. Boot Flag : 0x00 : 부팅불가
0x80 : 부팅 가능
2. Starting HS Addr , Ending CHS Addr : 요새는 Staring LBA Addr을 사용하므로 이곳에는 모두 0000 으로 채워져도 상관 무.
3.Part Type : 0x07 : NTFS
0x0C : FAT32
0x00 : Empty
0x05 : Extended
4. LBA(4byte) : 파티션의 시작 주소를 나타낸다 ( Sector 단위 이다!!! )
윈도우는 스택에 그대로 집어넣기 때문에 거꾸로 1바이트씩 읽어야 한다.
1. 주파티션(PRIMARY) - 부트섹터가 할당되어 운영체제를 설치할 수 있는 파티션
2. 확장파티션(EXTENDSED) - 논리 드라이브를 감싸는 벽
3. 논리파티션 – 데이터를 저장할 수 있는 드라이브
부트섹터가 없어 운영체제는 설치 할 수 없다
3. Signature
MBR의 끝을 나타낸다 (0x55AA)
'CS(Computer Science) > 컴퓨터구조' 카테고리의 다른 글
FAT32 구조 (0) | 2018.10.30 |
---|---|
컴파일러(Compiler) 와 인터프리터(Interpreter) (0) | 2018.10.28 |
Storage 종류 (0) | 2018.10.17 |