EFI(Extensible Firmware Interface)

Godssi·2025년 4월 21일

Programming

목록 보기
2/4

특정 버전의 Linux Kernel을 설치하고 Xenomai Patch를 진행하던 도중에 EFI와 관련된 문제들을 맞닥뜨렸습니다.
그래서 EFI/UEFI가 도대체 어떤 것인지 궁금하게 되어서 자료를 찾아보고 정리하는 글을 작성하게 되었습니다😂


EFI란?

컴퓨터 하드웨어와 운영체제 사이의 인터페이스를 정의하는 펌웨어 표준
기존 BIOS(Basic Input/Output System)의 한계를 극복하기 위해 개발된 UEFI(Unified EFI)의 이전 규격으로 현재는 보통 UEFI라는 명칭으로 알려져 있습니다.

EFI/UEFI의 등장 배경

기존 BIOS는 다음과 같은 한계가 존재했습니다.

  • 16bit 제한 : 현대적인 64 bit CPU와 호환이 어려움.
  • 저장 장치 용량 제한 : 2.2TB 이상의 하드디스크를 제대로 지원하지 못함.
  • 보안 기능 부재 : 보안 기능이 미비하여 악성 코드 공격에 취약
  • 부팅 속도 문제 : 하드웨어 초기화 과정이 느림.

이러한 문제들을 해결하기 위해 Intel이 EFI를 개발했고, 이후 업계 표준으로 자리 잡아 UEFI로 발전하게 되었습니다.

EFI/UEFI의 주요 특징

  • 32bit 또는 64bit 환경 지원
  • GPT(GUID Partition Table) 지원으로 2.2TB 이상의 디스크 사용 가능
  • 그래픽 인터페이스 제공(BIOS는 주로 텍스트 기반)
  • Secure Boot 지원하여 운영체제 로딩 전 서명된 펌웨어와 OS 부팅 로더만 실행되도록 보안 강화
  • 부팅 속도 향상
  • 모듈식 구조

UEFI vs BIOS의 차이점

기능BIOSUEFI
bit16bit32bit/64bit
디스크 지원MBR(최대 2.2TB)GPT(2.2TB 이상)
부팅 속도느림빠름
보안 기능없음Secure Boot 지원
인터페이스텍스트 기반그래픽 및 마우스 지원

Linux와 EFI

Linux 운영체제는 EFI/UEFI 환경에서 잘 작동하도록 설계되어 있으며, 다음과 같은 방법으로 부팅됩니다.

  • /boot/efi에 EFI 시스템 파티션을 만들어 EFI 부트로더(grub2, systemd-boot)를 설치하여 사용한다.
  • GRUB 부트로더를 통해 Linux Kernel을 로드하고 실행한다.

관련된 Linux 설정

  • CONFIG_EFI : 기본 EFI 지원
  • CONFIG_EFI_STUB : EFI 시스템에서 직접 커널을 실행할 수 있게 지원
  • CONFIG_EFI_HANDOVER_PROTOCOL : EFI 펌워에에서 커널로 제어를 넘기는 프로토콜
  • CONFIG_EFI_VARS : EFI 변수에 접근 가능하게 지원

현대적인 컴퓨터 환경에서 BIOS의 한계를 극복한 펌웨어 규격이며, 최신 시스템은 대부분 UEFI 기반으로 구성됩니다. 안정성과 확장성, 보안성이 뛰어나기 때문에 현재 많은 운영체제에서 널리 사용되고 있습니다.
이것으로 EFI에 대해서 알아보았습니다. 감사합니다😊!

profile
세상을 도울 로봇 개발자

0개의 댓글