EFI 시스템 파티션

EFI(Extensible Firmware Interface) 시스템 파티션 또는 ESP는 UEFI를 사용하는 컴퓨터에서 이용되는 데이터 저장 장치(일반적으로 하드 디스크 드라이브 또는 솔리드 스테이트 드라이브)의 파티션이다. 컴퓨터가 부팅될 때, UEFI 펌웨어는 ESP에 저장된 파일을 로드하여 운영체제와 다양한 유틸리티를 시작한다.

ESP에는 설치된 운영체제(부트로더, 부트 관리자, 커널 이미지)와 컴퓨터에 존재하는 하드웨어 장치에 대한 장치 드라이버 파일 및 부팅 시 펌웨어에서 사용되는 시스템 유틸리티 프로그램과 오류 로그와 같은 데이터 파일이 포함된다.

개요
EFI 시스템 파티션은 UEFI 사양의 일부로 유지 관리되는 FAT 파일 시스템을 기반으로 하는 파일 시스템으로 포맷된다. 따라서 파일 시스템 사양은 원래 FAT 사양과 독립적이다. 실제 차이의 정도는 알려져 있지 않다. 애플은 인텔/X86-64 맥에서 사용해야 하는 별도의 도구를 유지 관리하고 있지만, 다른 시스템에서는 FAT 유틸리티를 잘 사용한다. GUID 파티션 테이블 (GPT) 방식에서 EFI 시스템 파티션의 전역 고유 식별자 (GUID)는 이고, 마스터 부트 레코드 (MBR) 파티션 테이블 방식에서의 ID는 이다. UEFI 펌웨어는 두 파티션 방식 모두를 지원해야 하므로, GPT 및 MBR로 파티션된 디스크 모두 EFI 시스템 파티션을 포함할 수 있다. 또한 엘 토리토 CD-ROM 및 DVD용 부팅 가능 형식도 지원된다.

UEFI는 파티션의 첫 번째 블록(섹터)을 호환성 코드를 위해 예약하여 레거시 부트 섹터를 효과적으로 생성함으로써 레거시 시스템과의 하위 호환성을 제공한다. 레거시 바이오스 기반 시스템에서는 파티션의 첫 번째 섹터가 메모리에 로드되고 실행이 이 코드로 전송된다. UEFI 펌웨어는 호환성 지원 모듈 (CSM)을 통해 레거시 바이오스 모드로 부팅할 때를 제외하고 MBR의 코드를 실행하지 않는다.

UEFI 사양은 MBR 파티션 테이블을 완전히 지원하도록 요구한다. 그러나 일부 UEFI 구현은 부팅 디스크에서 특정 유형의 파티션 테이블을 감지하면 즉시 바이오스 기반 CSM 부팅으로 전환하여, MBR로 파티션된 디스크에 포함된 EFI 시스템 파티션에서 UEFI 부팅이 수행되는 것을 효과적으로 방지한다.

UEFI 펌웨어는 USB 플래시 드라이브와 같은 이동식 저장 장치에서 부팅을 지원한다. 이를 위해 이동식 장치는 FAT12, FAT16 또는 FAT32 파일 시스템으로 포맷되며, 부트로더는 표준 ESP 파일 계층 구조에 따라 저장되거나 부트로더의 전체 경로를 시스템의 부팅 관리자에게 제공해야 한다. 반면에 고정 드라이브에서는 항상 FAT32가 예상된다.

사용법
리눅스

GRUB 2, elilo 및 systemd-boot는 리눅스를 위한 일반적인, 완전한 독립형 UEFI 부트 관리자(일명 부트로더 관리자) 역할을 한다. UEFI 펌웨어에 의해 로드되면, 이들은 EFI 시스템 파티션에 국한되지 않고 지원하는 모든 장치, 파티션 및 파일 시스템에서 커널 이미지를 액세스하고 부팅할 수 있다.

EFI 시스템 파티션의 마운트 지점은 사용되는 부트로더에 따라 달라진다. GRUB 2 및 lilo/elilo와 같은 구형 부트로더는 기본적으로 /boot/efi를 사용한다. 반면, systemd-boot는 중첩된 autofs 마운트와의 잠재적 복잡성 때문에 /boot/efi 대신 /efi 또는 /boot를 선호한다. 마운트 지점 경로에 관계없이, 리눅스가 부팅된 후에는 그 내용에 액세스할 수 있다.

리눅스 커널 EFI 부트 스텁
EFI 부트 스텁은 일반적인 UEFI 부트로더를 사용하지 않고도 리눅스 커널 이미지를 부팅할 수 있게 한다. PE 포맷/COFF 실행 이미지로 가장하고 펌웨어에 UEFI 애플리케이션으로 나타남으로써, EFI 부트 스텁이 활성화된 리눅스 커널 이미지는 UEFI 펌웨어에 의해 직접 로드되고 실행될 수 있다. 이러한 커널 이미지는 바이오스 기반 부트로더에 의해서도 로드 및 실행될 수 있다. 따라서 EFI 부트 스텁은 단일 커널 이미지가 어떤 부팅 환경에서도 작동하도록 허용한다.

EFI 부트 스텁에 대한 리눅스 커널의 지원은 커널 구성 중 CONFIG_EFI_STUB (EFI 스텁 지원) 옵션을 켜서 활성화된다. 이 기능은 2012년 3월 18일에 출시된 리눅스 커널 메인라인 버전 3.3에 병합되었다.

Systemd-boot는 EFI 시스템 파티션만 액세스하여 구성된 EFI 이미지를 로드하고 실행하는 간단한 UEFI 부트 관리자이다. 구성 파일 조각, 커널 이미지 및 initrd 이미지는 EFI 시스템 파티션에 상주해야 한다. systemd-boot는 다른 파티션이나 파일 시스템의 파일에 액세스하는 것을 지원하지 않기 때문이다. 리눅스 커널은 UEFI 이미지로 직접 실행될 수 있도록 CONFIG_EFI_STUB=y로 빌드되어야 한다.

애플

 인텔 기반 맥OS (X86 및 X86-64) 
인텔 X86-64 프로세서 아키텍처를 사용하는 애플 맥 컴퓨터에서 EFI 시스템 파티션은 초기에는 비어 있으며 macOS 부팅에는 사용되지 않는다.

그러나 EFI 시스템 파티션은 펌웨어 업데이트를 위한 임시 영역과 부트 캠프 (소프트웨어)를 사용하여 윈도우 파티션으로 부팅하도록 구성된 맥 컴퓨터의 마이크로소프트 윈도우 부트로더에 사용된다.

iBoot라는 맞춤형 애플 UEFI 펌웨어는 부트로더를 찾고 로드하는 로직을 제어한다. iBoot는 원하는 부트로더를 선택하며 (잠재적으로 시작 키보드 조합이나 NVRAM을 통해 구성됨), 선택적으로 내부 macOS 설치 또는 recoveryOS라는 복구 시스템으로 폴백할 수 있다.

구형 비-UEFI 애플-인텔 아키텍처 기기에서는 EFI 시스템 파티션이 HFS+로 포맷되어야 했다. 타사 부트로더는 펌웨어에 의해 부팅 가능해지기 전에 특별한 ioctl 명령으로 "블레스"되어야 했으며, 이는 클래식 맥 OS의 시스템 폴더 블레싱의 유물이다. 그 외에는 인텔 기반 애플 컴퓨터가 실행할 수 있는 EFI 운영 체제나 부트로더 종류에는 제한이 없다.

 iOS, iPadOS, 애플 실리콘 기반 macOS (AArch64) 
아이폰, 아이패드, 2023년 이후의 모든 맥 컴퓨터와 같은 애플 실리콘 (AArch64)을 사용하는 장치는 EFI/UEFI 기능을 포함하지 않으므로 EFI 시스템 파티션을 사용하지 않는다.

윈도우

윈도우의 UEFI 지원은 2008년 윈도우 비스타 SP1부터 시작되었다.

윈도우 부팅 관리자는 EFI 시스템 파티션의  하위 폴더에 위치한다.

윈도우 XP 64비트 에디션 및 이후 버전에서는  명령을 실행하여 EFI 시스템 파티션에 접근할 수 있다. 이는 지정된 드라이브에 EFI 시스템 파티션을 마운트한다. 아이테니엄 기반 컴퓨터에서만 사용 가능하다.

 같이 보기 
 BIOS 부트 파티션
 EFI 변수
 시스템 파티션 및 부트 파티션
 윈도우 투 고

 각주 

 외부 링크 
 EFI 시스템 파티션 하위 디렉터리 레지스트리 – EFI 시스템 파티션의 /EFI 디렉터리 아래에 있는 하위 디렉터리 레지스트리

분류:파일 시스템
분류:부팅