이 글은 지난 글인 활성 파티션에 대한 좀 더 자세한 이야기 - 활성 파티션의 개념과 특성 정리 - 의 내용 중 활성 파티션을 주 파티션에만 설정할 수 있다는 내용을 디스크의 관점에서 다시 한 번 자세하게 설명하는 내용입니다. 부팅 카테고리 보다는 디스크 카테고리에 더 어울리는 글이지만 그냥 활성 파티션을 다룬 김에 계속 다뤄 봅니다.


MBR 의 구조

일단 MBR 의 구조는 아래와 같습니다.



지금까지 수 없이 이야기했던 코드 영역(프라이머리) 파티션 테이블이 보이죠. (이하 파티션 테이블)

자 파티션 테이블을 보시면 총 64 Byte 의 크기를 가지고 있으며 개당 16 Byte 씩 총 네 개의 엔트리로 이루어져 있는 것을 볼 수 있습니다. 이러한 구조적인 이유로 MBR 디스크에는 총 네 개의 주 파티션이 존재할 수 있습니다. 이런 제약을 극복하기 위한 것이 확장 파티션과 논리 드라이브구요.

아무튼 이렇게 MBR 의 파티션 테이블에 총 네 개의 파티션이 존재할 수 있다보니 이 중에서 어떤 파티션이 부팅에 사용되는 파티션인지 알려주어야 합니다. 그게 바로 활성 파티션이라고 이야기를 했죠. 이렇게 활성 파티션이 설정되면 코드 영역에 적재된 프로그램이 활성 파티션을 확인하고 해당 파티션의 부트 섹터로 이동을 하는 것이죠.


일단 주 파티션을 제외하고 이러한 파티션 테이블에 위치하는 파티션으론 확장 파티션이 있습니다. 그런데 확장 파티션은 MBR 파티션 테이블의 엔트리가 네 개밖에 안 되다보니 이를 확장하기 위한 용도의 파티션으로 데이터를 기록하기 위한 파티션이 아닙니다. 그래서 활성 파티션으로는 사용이 되지 않으며 디스크 관리 프로그램 자체내에서 설정할 수 없게 막아버립니다. (근데 정말 무식한 방법을 사용하면 강제로는 가능합니다. ^^; 다음 글에서 이걸 해 볼 겁니다.)

다음으로 주 파티션과 비슷하게 데이터를 담는 파티션인 논리 드라이브는 왜 활성 파티션이 될 수 없는 것인가? 그것은 잠시 언급을 했지만 확장 파티션내의 논리 드라이브가 자체적으로 EBR 이라는 것을 가지고 그곳에 자기 자신의 정보를 기록하는 형태의 파티션이기 때문에 그렇습니다. 즉, 논리 드라이브는 MBR 의 파티션 테이블에 속하지 않는 파티션이라는 것이지요. 그래서 MBR 에서 설정되는 활성 파티션의 특성상 논리 드라이브는 구조적으로 애초에 활성 파티션이 될 수 없습니다.


이러한 주 파티션, 확장 파티션, 논리 드라이브의 구조는 다음과 같습니다.

출처 - 마이크로소프트 테크넷



보시면 제가 말했던 것과 같이 MBR 에서 바로 연결되는 주 파티션과 달리 논리 드라이브는 MBR 에서 연결되는 확장 파티션 내에서 다시 자체의 EBR 로 연결되는 것을 알 수 있습니다. 즉, MBR 의 영역을 벗어났죠. 이러한 구조적인 이유를 종합하여 계속 같은 이야기를 반복하게 되는데 아무튼 그래서 주 파티션만 활성 파티션으로 활용됩니다.




파티션 엔트리의 구조

자 그렇다면 디스크 입장에서 활성 파티션은 어떻게 식별(설정) 하는 것일까요? 활성 파티션은 단순하게 파티션 테이블에서 Active 로 마크된 파티션일 뿐이라고 했죠. 그럼 이제 파티션 테이블에 위치한 각 파티션 엔트리의 구조를 보도록 하겠습니다.



MBR 의 파티션 테이블은 위의 파티션 엔트리를 총 네 개를 담고 있습니다. 이 중에서 눈여겨 보아야 할 것이 바로 첫 1 Byte 인 파티션 상태 값입니다. 이 값이 해당 파티션이 일반 파티션인지 활성 파티션인지를 결정하는 값인 것이죠. 이 값은 보통 0x00 상태이고 0x80 으로 설정되면 활성 파티션이 되는 것입니다. 간단하죠?




실제 활성 파티션이 설정되는 모습

그럼 MBR 에서 활성 파티션이 설정되는 것을 실제로 보도록 하겠습니다. 일단 시작 전 정리하죠.



MBR 은 디스크의 첫 번째 섹터에(Logical Sector 0) 위치해 있고 그곳에서 파티션 테이블의 위치는 01BE ~ 01FD 까지 64 Byte 의 영역입니다. 다시 파티션 테이블은 16 Byte 씩 총 네 개의 엔트리를 가지고 있죠. 각 엔트리의 첫 번째 1 바이트가 바로 해당 파티션이 일반 파티션인지 활성 파티션인지를 결정하는 값인 것입니다.

이 내용을 종합하여 실제로 디스크의 MBR 을 살펴보면 아래와 같음을 알 수 있습니다.

예제에 사용된 디스크


예제 디스크의 MBR 실제 모습


보라색으로 선택된 부분이 파티션 테이블을 의미하며 노란 박스가 하나의 파티션 엔트리를 의미합니다. 이렇게 나누면 총 네 개의 파티션이 나오죠. 순서대로 첫 번째 주 파티션, 두 번째 주 파티션, 세 번째 주 파티션, 그리고 확장 파티션입니다.(논리 드라이브는 마지막 확장 파티션에서 연결되는 EBR 에 그 정보가 기록되어 있습니다.)

보시면 모든 파티션 엔트리의 시작이 0x00 값을 가지는 것을 볼 수 있습니다. 이는 예제 디스크 관리 스샷에서 보는 것과 같이 아직 해당 디스크에는 활성 파티션이 없기 때문입니다.


그럼 이 중에서 첫 번째 주 파티션인 J: 드라이브 파티션을 활성으로 설정하고 변화를 살펴 보도록 하겠습니다.




어떻습니까? 해당 파티션에 속하는 엔트리의 시작 값이 0x80 으로 바뀐 것을 확실히 파악할 수 있죠? 다음은 활성 파티션을 다른 주 파티션으로 바꿔보고 그 내용을 살펴본 것입니다.




역시 활성 파티션으로 설정된 파티션의 첫 번째 파티션 상태 값이 0x80 으로 바뀌는 것을 확인할 수 있습니다.


그렇다면 네 번째 파티션 엔트리에 해당하는 확장 파티션과 그에 포함되는 논리 드라이브는? 디스크 관리 도구 자체에 활성 파티션을 설정하는 항목이 없습니다.



근데 이거 마무리를 어떻게 해야 하는 거지? 에잉 몰라...


참고 자료


MBR 확인 헥스 에디터(쉐어웨어 - 읽기만 가능)
WinHex - http://www.x-ways.net/winhex/index-m.html

디스크 열기 : Tools -> Open Disk -> Physycal Media 에서 디스크 선택
섹터 이동 : Position -> Go To Sector (MBR 은 Logical Sector 0, 고로 열면 바로)


MBR 확인 헥스 에디터(프리웨어 - 읽기 쓰기 가능)

 

 

신고
캐플 블로그에 공개된 글은 반드시 원본 글의 링크를 포함시키는 조건으로 자유롭게 이용하실 수 있습니다.
하지만 블로그의 발전을 위하여 되도록이면 링크로 글을 소개해주시길 부탁드립니다. ^^

- 상업적인 용도의 사이트는 대상에서 제외됩니다. -
- 글에는 오류가 있을 수 있고, 추후 수정 또는 재발행될 수 있습니다. -
  1. 채웅석 2012.02.02 07:04 신고  댓글주소  수정/삭제  댓글쓰기
    궁금한 것이 있어서 질문 드립니다.
    현재 XP 사용 중이고 드라이브를 3개의 파티션으로 사용하고 있습니다.
    C드라이브는 XP 윈도우즈 탑재. D드라이브는 논리드라이브로 설정해서 사용하고 E 드라이브는 도스용으로 설치 사용 중인데요.. (D 드라이브도 주파티션으로 잡으면 간혹 하드 복제시 문자가 꼬일때가 있어서..)
    복구 및 백업이 필요할 시 Gdisk32 로 활성파티션을 E:드라이브로 변경 시켜서 다음 부팅때 E 드라이브로 부팅되어, autoexec 로 복구 또는 백업을 수행하게끔 하고 있습니다.
    그런데 간혹 활성 파티션을 E:드라이브로 지정해서 복구를 수행하면 부팅시 먹통이 되는 현상이 드문 나타나는데요, 이때는 다른 USb 매체 등으로 원래 C:드라이브로 다시 활성을 잡아주고 윈도우즈 진입 후에 E:드라이브를 다시 삭제 포맷, 도스설치를 다시 해도 E:드라이브로 활성을 시켜 주어도 먹통이 되어 도스로 부팅이 되지 않습니다.
    천상 다시 복제를 해야만 정상으로 작동하는데요. 이렇게 깨지는 원인을 어떻게 해석하고 , 다시 정상적으로 멀티 부팅이 되게 하기 위해선 어떤 부분을 체크해야 될까요?

    • BlogIcon CApple 2012.02.02 22:12 신고  댓글주소  수정/삭제
      도스는 무엇으로 설치하시나요? XP 에서 포맷하고 단순 시스템 파일을 복사하는 것이라면 도스가 정상적으로 설치되는게 아닌데요. XP 의 포맷은 부트 섹터를 XP 의 NTLDR 로더를 찾도록 기록하기 때문이죠. 그래서 도스로 부팅하기 위해선 도스의 Format.exe 로 포맷을 해야 합니다.

      그리고 도스가 지금과 같은 대용량 디스크가 나왔던 시절에 나온 운영체제가 아닌지라 대용량 디스크에서 많이 불안정한 모습을 보입니다. 그 때문에 그런게 아닐까 싶네요.

      도스를 활성 파티션으로 부팅하지 마시고 GRUB4DOS 를 통해 부팅하거나 플로피 이미지화하여 GRUB4DOS + 플로피 이미지 부팅을 활용해 보는 것은 어떠신지요?
  2. BlogIcon 이재현 2012.05.10 16:12 신고  댓글주소  수정/삭제  댓글쓰기
    저도 궁금한 것이 있어 문의 드립니다.
    SD카드를 사용 중인데요.
    SDHC의 경우 FAT32 Format을 사용하여 Winhexa로 열어보면 Unpartitioned space가
    4MB로 나오고, SDXC의 경우 exFAT Format을 사용해 마찬가지로 열어보면
    Unpartitioned space 16MB가 나옵니다.

    위에서 할당되어지지 않은 영역이 MBR이 맞는지요? 맞다면 어떻게 확인이 해야할지...
    그리고 왜 FAT32와 exFAT의 MBR Size가 다른 것인지 알고 싶습니다...
    • BlogIcon CApple 2012.05.10 23:54 신고  댓글주소  수정/삭제
      해당 할당되지 않은 공간은 저도 정확하게는 모르겠습니다. 다만 확실한 건 해당 공간이 MBR 은 아닙니다. ^^; MBR 은 디스크의 첫 번째 섹터 512Byte 가 MBR 입니다.
  3. 롭띠 2013.01.08 13:04 신고  댓글주소  수정/삭제  댓글쓰기
    안녕하세요~
    이제 막 공부 시작한 초짜학생인데요~
    정말 이해가 파팍되네요 감사하고 감사합니다
    Offset 한 주소마다의 데이터크기는 1바이트인거죠??
  4. 스타터 2013.01.31 11:44 신고  댓글주소  수정/삭제  댓글쓰기
    질문이 있습니다.
    보라색으로 선택된 부분 앞부분의 코드들은 말씀하신 코드 영역(로더 프로그램) 이 맞는지요 ??
  5. BlogIcon M_FireFox 2013.10.26 22:56 신고  댓글주소  수정/삭제  댓글쓰기
    정말 좋은글 감사히 잘 읽었습니다!!
    실례지만 CApple 님의 글을 저작권 출처 표시해서 저희 카페에 퍼가고 싶은데 허락해 주실수 있으신지요?

    이렇게 좋은 글을 저희 카페 사람들한테도 소개시키고 보여주고 싶습니당!!

    http://cafe.naver.com/mmorpgs

댓글을 달아 주세요

- 댓글에선 예의를 지켜주시기 바라며, 블로그지기는 댓글에서 따로 활동하지 않습니다.

* 티스토리 사용자는 여기를 클릭하시면 로그인 됩니다.

BBCode 안내   굵게 밑줄 기울임 취소선   취소선 취소선 취소선 취소선   왼쪽 정렬 가운데 정렬 오른쪽 정렬   코드박스 인용구 이미지   이미지 업로드-Imgur.com