진짜 개발자
본문 바로가기

CS(Computer Science)/컴퓨터구조

MBR 구조

728x90

부팅 순서


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