4. UEFI 부팅 단계

UEFI를 통한 시스템의 부팅 과정은 Legacy BIOS보다 더 방법론적이며 조직적인 구성을 나타낸다.

총 7단계로 나타낼 수 있으며 각 단계별 수행 동작 정보는 아래와 같다.

SEC-PEI, DXE Phase까지는 BIOS의 POST(Power-On Self Test)에 해당하는 PI(Platform Initialization) 단계이다.

1. SEC

CPU의 초기화는 32비트 protected mode나 64비트 long mode로 수행할 수 없기 때문에 16비트 real mode의 instruction을 실행한다. 이 real mode에서 수행되는 작업은 프로세서를 보호 모드로 전환하는 것이다. 그리고 DRAM이 초기화되기 이전이기 때문에 CPU cache를 임시 RAM으로 사용할 수 있도록 한다(Cache-As-Ram).

2. PEI

SPI flash 내부의 FV(firware volume)에 존재하며 윈도우 PE형식과 유사한 TE형식의 모듈로 구성되어 있다. 주 메모리 검색 및 초기화를 담당하고, 메인 RAM 사용이 가능해지면 CAR 메모리를 마무리하고 마더보드의 다른 장치 초기화를 이행한다.

  • TE(Trese Executable): PE 형식보다 더 작은 이미지 크기를 지닌 파일 형식

3. DXE

DXE 단계에서는 PEI와 유사하게 FV가 존재한다. 하지만 TE file 형식이 아닌 실행 모듈을 이용하며, PE32와 PE32+(64비트) file이 사용된다. 모든 DXE 모듈을 열거하고 하나씩 실행하는 전용 디스패처가 존재한다. 각 모듈은 SMM 설정, 네트워킹, 스토리지 및 파일 시스템 스택 노출 등 기본적으로 UEFI 기반 부트로더가 OS(커널)을 불러오는데 필요한 모든 서비스를 제공한다. 보안 부팅이 구현되는 곳이며 가장 중요한 단계이다.

  • SMM(System Management Mode): SMI(System Management Interrupt)에 의해 호출되어지며 root 권한으로 펌웨어를 실행하는 모드이다.

4. BDS

DXE 단계 이후에 GPT 디스크와 EFI 시스템 파티션을 찾는다. 윈도우의 경우에는 bootmgfw.efi 가 로드되고 실행되며, 리눅스의 경우에는 grub.efi 등 각 운영체제별 부트로더 정보가 존재한다.

5. TLS

이 단계에서는 OS가 없는 UEFI 셸(shellx64.efi) 실행이 가능하며 일반적인 부트 로더가 실행된다. winload.efi와 같은 부트로더는 커널을 위한 실행 환경을 구축하고 커널 자체를 로드한다. 완료 후에는 ExitBootServices()라는 UEFI 서비스를 호출하고 부트 프로세스의 종료를 알린다.

6. RT

EFI는 부트 프로세스 종료 이후에 커널이 동작을 수행하고 있는 동안에 디바이스 드라이버를 로드하거나 서비스 및 백그라운드 프로세스 생성에 이용되어 진다. core 서비스들 중에서 부트 프로세스 종류 이후에도 메모리에 상주되는 런타임 서비스들이 이에 관여한다.

Last updated