특정 버전의 Linux Kernel을 설치하고 Xenomai Patch를 진행하던 도중에 EFI와 관련된 문제들을 맞닥뜨렸습니다.
그래서 EFI/UEFI가 도대체 어떤 것인지 궁금하게 되어서 자료를 찾아보고 정리하는 글을 작성하게 되었습니다😂
컴퓨터 하드웨어와 운영체제 사이의 인터페이스를 정의하는 펌웨어 표준
기존 BIOS(Basic Input/Output System)의 한계를 극복하기 위해 개발된 UEFI(Unified EFI)의 이전 규격으로 현재는 보통 UEFI라는 명칭으로 알려져 있습니다.
기존 BIOS는 다음과 같은 한계가 존재했습니다.
이러한 문제들을 해결하기 위해 Intel이 EFI를 개발했고, 이후 업계 표준으로 자리 잡아 UEFI로 발전하게 되었습니다.
| 기능 | BIOS | UEFI |
|---|---|---|
| bit | 16bit | 32bit/64bit |
| 디스크 지원 | MBR(최대 2.2TB) | GPT(2.2TB 이상) |
| 부팅 속도 | 느림 | 빠름 |
| 보안 기능 | 없음 | Secure Boot 지원 |
| 인터페이스 | 텍스트 기반 | 그래픽 및 마우스 지원 |
Linux 운영체제는 EFI/UEFI 환경에서 잘 작동하도록 설계되어 있으며, 다음과 같은 방법으로 부팅됩니다.
/boot/efi에 EFI 시스템 파티션을 만들어 EFI 부트로더(grub2, systemd-boot)를 설치하여 사용한다.CONFIG_EFI : 기본 EFI 지원CONFIG_EFI_STUB : EFI 시스템에서 직접 커널을 실행할 수 있게 지원CONFIG_EFI_HANDOVER_PROTOCOL : EFI 펌워에에서 커널로 제어를 넘기는 프로토콜CONFIG_EFI_VARS : EFI 변수에 접근 가능하게 지원현대적인 컴퓨터 환경에서 BIOS의 한계를 극복한 펌웨어 규격이며, 최신 시스템은 대부분 UEFI 기반으로 구성됩니다. 안정성과 확장성, 보안성이 뛰어나기 때문에 현재 많은 운영체제에서 널리 사용되고 있습니다.
이것으로 EFI에 대해서 알아보았습니다. 감사합니다😊!