UEFI이란 무엇일까요?
※ UEFI와 BIOS ※
UEFI는 통합 확장 펌웨어 인터페이스(Unified Extensible Firmware Interface)의 줄임말입니다. UEFI를 이해하기 전에, 먼저 BIOS에 대해서 이해해야 합니다. BIOS란 기본 입출력 시스템 (Basic Input Output System)의 약자로, 일반적인 컴퓨터의 메인보드에 탑재되어 있는 펌웨어 소프트웨어입니다.
① 하드웨어 → ② BIOS → ③ 부트 로더 → ④ 운영체제(OS) → ⑤ 어플리케이션(App)
일반적인 컴퓨터는 바로 위와 같이 계층적인 구조로 동작합니다.
가장 먼저 우리가 컴퓨터의 전원을 눌러 전원을 공급하면, BIOS가 실행되어 컴퓨터의 하드웨어가 정상적인지 진단합니다. 이러한 하드웨어 검사를 흔히 POST(Power On Self Test)라고도 부릅니다. 흔히 컴퓨터를 조립할 때 메인 메모리(RAM) 없이 부팅을 하려고 하면 경고음이 몇 번 울리는 것 등이 그 예시입니다.
이후에 부트 매니저(Boot Manager)가 실행됩니다. 흔히 컴퓨터 시작 직후에 [F2]를 연타하여 BIOS에 진입한 이후에 부트 디바이스를 설정할 수 있는데, 이러한 작업을 지원하는 것이 부트 매니저입니다. 이어서 선택한 부트 디바이스의 부트 로더가 실행됩니다. 여기에서 부트 로더(Boot Loader)란, 운영체제가 구동되기 이전에 미리 실행되어 운영체제가 올바르게 동작하기 위해 필요한 작업을 수행하는 소프트웨어를 말합니다. 예를 들어 윈도우(Windows) OS가 설치된 컴퓨터의 경우에는 윈도우가 1순위로 설정되어 실행되는 것을 떠올리시면 됩니다.
UEFI는 BIOS를 대체하기 위해 등장한 시스템입니다. UEFI를 이용하는 경우 보안 부팅(Secure Booting)이 가능하며, BIOS에 비해서 더욱 큰 디스크 용량을 지원하고, 더욱 고급스러운 GUI를 제공하는 경우가 많습니다. 그래서 최근에 출시되는 컴퓨터 메인보드에는 기본적으로 UEFI가 탑재되어 출시되고 있습니다. 사용자 입장에서도 손쉽게 하드웨어를 조작할 수 있도록 해줍니다.
사실 UEFI 자체는 명세서(Specification)입니다. 따라서 UEFI 규격에 맞게 개발된 펌웨어는 다양하게 존재할 수 있습니다. Tiano는 UEFI 규격을 따르는 최초의 오픈 소스 프로젝트인데, 이러한 Tiano에서 실질적으로 UEFI 구현체로 내보인 것이 바로 EDK입니다. 최근에는 EDK II 버전이 사용되고 있습니다. 즉 EDK II는 크로스 플랫폼을 지원하는 펌웨어 개발 환경(Firmware Development Environment)입니다. 기본적으로 UEFI 명세를 잘 따르고 있습니다.
UEFI는 영문 위키(Wiki)에서도 잘 소개되고 있습니다.
https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface
※ UEFI의 부팅 과정(Boot Flow) ※
UEFI의 Boot Flow에 대해서 소개하고 있는 Tianocore 튜토리얼 페이지의 문서는 다음과 같습니다.
https://github.com/tianocore/tianocore.github.io/wiki/PI-Boot-Flow
UEFI의 부팅 과정은 크게 7단계로 구성됩니다.