Published on

UEFI와 파티션(MBR, GPT) 그리고 파일 시스템

Authors
  • avatar
    Name
    JaeHyeok CHOI
    Twitter
    none

출처

UEFI와 파티션(MBR, GPT) 그리고 파일 시스템

부트스트랩


부트 스트랩이란 PC에 전원이 공급되면서 하드 디스크에 저장되어 있는 운영 체제가 실행되는 과정이다.

BIOS, EFI, MBR, GPT 등의 용어와 메인보드 펌웨어, 파티션, 파일 시스템에 대해서 살펴본다.

PC에 전원이 들어오면 메인보드에 내장된 펌웨어가 가장 먼저 실행된다.

1. 메인보드 펌웨어 - BIOS, EFI, UEFI


펌웨어는 BIOS, EFI, UEFI 와 같은 기술 규약에 호환 되도록 만들어져 있으며 이 기술 규약을 통해서 컴퓨터에 연결된 장치를 관리하고 부팅을 시작한다.

BIOS > EFI > UEFI 순으로 최신 기술이며 가능한 부팅 방식이 늘어났다. 펌웨어가 운영체제와 연결되기 위한 기술 규약으로, 2차 저장장치( SSD 등)에서 부트로더를 메모리로 읽어와 실행시키게 된다. 그리고 펌웨어의 부팅 역할은 끝난다. 부트로더는 파티션 기술 종류에 따라 다르게 관리된다. 즉 펌웨어가 저장장치의 파티션을 기술적으로 지원하지 못하면 부트로더를 실행시킬 수 없다.

310px-Efi-simple.svg.png

대표적인 디스크 파티션 기술은 MBR과 GPT이다. MBR의 기술적인 제한을 해결하기 위한 것이 GPT이며 이를 지원할 수 있는 펌웨어 기술 규약은 EFI, UEFI 이다. BIOS는 GPT 파티션으로 만들어진 저장장치에서 운영체제를 부팅할 수 없다.

참고로 UEFI의 장점은 아래와 같다.

  • GPT(GUID Partion Table)를 사용한 대용량 디스크(2TB 이상)에서 부팅이 가능하게 한다.

  • CPU에 독립적인 아키텍처이다.

  • CPU에 독립적인 드라이버이다.

  • 운영체제를 설치하기 전에 네트워크 사용을 포함하여 유연한 기능을 제공한다.

  • 모듈화 디자인이다.

  • Backward and forward compatibility

2. 파티션 - MBR, GPT


파티션이란 단순한 물리 디스크를 파티션이라는 논리 단위로 나누는 것이다. 하나의 저장장치가 실제로 사용되기 위해서는 최소 1개의 논리 파티션으로 나눠져 있어야 한다. 그리고 여러 개의 논리 파티션을 만들게 되면 여러 개의 디스크가 연결된 것처럼 사용할 수 있다. 윈도우를 기준으로 본다면 하나의 하드 디스크를 연결하고 C: D: E: 처럼 3개의 디스크가 ㄷ연결된 것 처럼 사용할 수 있다는 것이다.

파티션은 역할에 따라 시스템 파티션, 부트 파티션으로 호칭한다. 부트 파티션은 부트로더가 저장되어 잇는 영역으로 주 파티션이 된다. 시스템 파티션은 운영체제가 담긴 파티션을 의미한다. 이 두개의 파티션은 같을 수도, 다를 수도 있다. 리눅스를 예를 들면 부트 파티션과 시스템 파티션이 동일하다. 그리고 부트로더 데이터를 /boot에 저장한다.

이 의문점을 해결할 수 있는 것이 MBR(Master Boot Record)이라는 영역이다. 가장 보편화된 파티션 기술 이름이기도 하지만 MBR은 디스크의 첫번째 섹터(Sector 0)를 의미한다. 이 영역에는 파티션을 구성하고 있는 정보와 부트로더를 실행하기 위한 가장 기본적이고 첫 번째로 실행되어야 할 코드가 담겨져 있다. 그리고 GPT(GUID Partition Table)도 MBR 영역 개념을 활용하고 있다.

GNU_GRUB_components.svg.png

이미지 상에서 Core.img 라고 적힌 부분은 부트로더를 의미하고 /boot/grub 이라고 적힌 부분이 운영체제라고 보면 된다. 결국 펌웨어는 MBR이든 GPT이든 MBR 영역을 첫 번쨰로 실행하고 이 코드가 어딘가 저장되어 있는 부트로더를 이어서 실행하고 마지막으로 운영체제를 읽어와 실행하게 된다.

MBR과 GPT의 차이는 그림 상에서 보았을 때에 부트로더의 위치 차이다. MBR은 기술 규약에 따라 부트로더가 MBR영역에 이어서 저장되어야 한다. 하지만 GPT는 부트로더의 위치를 따로 지정하지 않는다. MBR에 담긴 정보를 통해 찾아가게 될 것이다.

가장 큰 장점은 지원하는 디스크 용량의 크기이다. 기존 MBR 파티션은 32Bit 주소 체계를 가지고 있기 때문에 단일 논리 파티션을 사용한다고 했을 때 2^32 X 512 Bytes = 2TB 밖에 용량 지원이 안되지만 GPT는 64Bit 주소체계 이기 때문에 2^64 X 512ByTES = 9ZB 의 대용량 지원하게 된다. 그리고 파티션을 구성하는 정보가 쉽게 망가지지 않게 백업 기능도 가지고 있다. 하지만 BIOS 펌웨어는 GPT를 지원하지 못하기 때문에 이를 사용하기 위해서는 반드시 UEFI 펌웨어를 사용해야 한다.

대용량의 SSD가 많이 출시하고 있기 때문에 이런 디스크를 사용하기 위해선 GPT 파티션을 사용하든지 2TB 이하의 여러 논리 파티션으로 나눠 MBR 파티션으로 사용하는 방법도 있다.

3. 파일 시스템


FAT32, NTFS, EXT3, EXT4 와 같은 기술로 운영체제가 책임지는 기능이다. 파일 시스템은 각 운영체제가 파티션에 데이터를 읽고 쓰는 규칙이다. 이 규칙에 따라서 쓰여진 의미를 가진 데이터는 다시 의미있는 데이터로 읽어올 수 있따. 부가적으로 빠른파일 I/O, 안정적인 파일 쓰기를 지원하기 위한 기술이 함께 포함되어 있다.

의미있는 데이터를 쓰고 의미있는 데이터를 읽는다는 이야기는 다음과 같이 풀어 쓸 수 있을 것 같다. 0110 1111 0000 1100 이라는 데이터가 있을 때에 NTFS는 앞 4Bit을 INDEX, 나머지를 필요한 데이터라고 약속하고 저장장치에 쓰기를 하였는데, EXT3에선 앞 8Bit을 필요한 데이터라고 읽어버리면 의도했던 바와 다른 정보가 된다. 때문에 파일 시스템 간의 호환성이 이뤄지기 어려운 것이다.