Mở menu

SEC, PEI, DXE, BDS là gì trong UEFI?

Giải thích bốn phase quan trọng trong UEFI boot flow gồm SEC, PEI, DXE và BDS theo cách dễ hiểu cho người mới học firmware.

Cập nhật 6 phút đọc
BIOS / UEFI cover

1. Vấn đề

Khi mới học UEFI, ta thường gặp các thuật ngữ như SEC, PEI, DXE, BDS.

Ban đầu các khái niệm này khá khó hiểu vì chúng không giống cách lập trình application thông thường. Trong application, ta thường có một hàm main() rồi chương trình chạy theo luồng tương đối rõ ràng. Nhưng trong UEFI, quá trình boot được chia thành nhiều phase khác nhau.

Mỗi phase có nhiệm vụ riêng, chạy ở thời điểm khác nhau và chuẩn bị tài nguyên cho phase tiếp theo.

Cách nhìn đơn giản:

Power On

SEC

PEI

DXE

BDS

Boot Loader

Operating System

2. Tại sao UEFI phải chia thành nhiều phase?

Khi máy vừa bật nguồn, hệ thống chưa có đầy đủ tài nguyên.

Ví dụ:

  • DRAM có thể chưa sẵn sàng.
  • CPU mới chỉ ở trạng thái khởi động ban đầu.
  • Chipset chưa được cấu hình đầy đủ.
  • Các thiết bị PCI/USB/SATA/NVMe chưa được enumerate.
  • Chưa có môi trường driver hoàn chỉnh.

Vì vậy firmware không thể làm tất cả mọi việc ngay từ đầu.

UEFI chia quá trình boot thành nhiều phase để xử lý từng bước:

Khởi động cực sớm

Chuẩn bị memory

Load driver

Chọn thiết bị boot

3. SEC Phase là gì?

SEC là viết tắt của Security Phase.

Đây là phase đầu tiên sau khi CPU bắt đầu thực thi firmware.

Ở thời điểm này, hệ thống còn rất hạn chế. DRAM thường chưa được khởi tạo, nên firmware phải dùng temporary memory hoặc cache-as-RAM tùy nền tảng.

Nhiệm vụ chính của SEC:

  • Thiết lập môi trường chạy ban đầu.
  • Chuẩn bị temporary memory.
  • Xác minh hoặc chuẩn bị firmware volume nếu cần.
  • Chuyển quyền điều khiển sang PEI.

Có thể hiểu SEC là bước “mở cửa” cho toàn bộ quá trình UEFI boot.

4. PEI Phase là gì?

PEI là viết tắt của Pre-EFI Initialization.

PEI chịu trách nhiệm khởi tạo nền tảng tối thiểu để hệ thống có thể tiếp tục boot.

Nhiệm vụ quan trọng nhất của PEI thường là:

Khởi tạo DRAM

Ngoài ra PEI còn có thể:

  • Khởi tạo chipset cơ bản.
  • Phát hiện thông tin platform.
  • Load các PEIM.
  • Tạo HOB để truyền thông tin sang DXE.

PEIM là module chạy trong PEI phase.

HOB là viết tắt của Hand-Off Block. Có thể hiểu đơn giản HOB là “gói thông tin” mà PEI để lại cho DXE sử dụng.

Ví dụ HOB có thể chứa:

  • Thông tin memory.
  • Thông tin firmware volume.
  • Thông tin boot mode.
  • Thông tin platform-specific.

5. DXE Phase là gì?

DXE là viết tắt của Driver Execution Environment.

Đây là phase rất quan trọng trong UEFI.

Sau khi memory đã sẵn sàng, firmware có thể load nhiều driver hơn. DXE là nơi nhiều UEFI driver được dispatch và chạy.

Trong DXE, ta thường gặp các khái niệm:

  • EFI_HANDLE
  • EFI_PROTOCOL
  • EFI_GUID
  • Boot Services
  • Runtime Services
  • Driver Binding Protocol

Một DXE driver thường có entry point dạng:

EFI_STATUS
EFIAPI
MyDriverEntryPoint (
  IN EFI_HANDLE        ImageHandle,
  IN EFI_SYSTEM_TABLE  *SystemTable
  )
{
  return EFI_SUCCESS;
}

Nhiệm vụ của DXE:

  • Load DXE drivers.
  • Tạo handle database.
  • Install protocol.
  • Locate protocol.
  • Cung cấp Boot Services.
  • Cung cấp Runtime Services.
  • Chuẩn bị môi trường cho BDS.

Có thể hiểu DXE là phase xây dựng “hệ sinh thái driver và service” của UEFI.

6. BDS Phase là gì?

BDS là viết tắt của Boot Device Selection.

Sau khi DXE đã load driver và tạo các service cần thiết, BDS sẽ chọn thiết bị boot.

Ví dụ:

  • Boot từ SSD.
  • Boot từ USB.
  • Boot từ network.
  • Boot vào UEFI Shell.
  • Boot vào Windows Boot Manager.

BDS sẽ dựa trên boot option để quyết định chạy bootloader nào.

Ví dụ đường dẫn bootloader UEFI thường gặp:

\EFI\BOOT\BOOTX64.EFI

hoặc:

\EFI\Microsoft\Boot\bootmgfw.efi

Nhiệm vụ chính của BDS:

  • Đọc boot option.
  • Chọn boot device.
  • Load EFI application hoặc OS bootloader.
  • Chuyển quyền điều khiển sang hệ điều hành.

7. Bảng tóm tắt

PhaseTên đầy đủVai trò chính
SECSecurity PhaseKhởi động cực sớm, chuẩn bị môi trường ban đầu
PEIPre-EFI InitializationKhởi tạo memory và platform cơ bản
DXEDriver Execution EnvironmentLoad driver, tạo protocol và service
BDSBoot Device SelectionChọn thiết bị boot và chạy bootloader

8. Cách nhớ nhanh

Có thể nhớ theo câu sau:

SEC mở đầu
PEI dựng nền
DXE load driver
BDS chọn boot

Hoặc nhìn theo mức độ tài nguyên:

SEC: tài nguyên rất hạn chế
PEI: bắt đầu chuẩn bị memory
DXE: memory đã có, driver bắt đầu chạy nhiều
BDS: hệ thống đã đủ điều kiện để chọn bootloader

9. Lỗi hiểu nhầm thường gặp

Hiểu nhầm 1: DXE là toàn bộ UEFI

Không đúng.

DXE là phase rất lớn và quan trọng, nhưng UEFI boot flow còn có SEC, PEI, BDS và các giai đoạn sau đó.

Hiểu nhầm 2: PEI chỉ dùng để khởi tạo RAM

Chưa đủ.

Khởi tạo DRAM là nhiệm vụ rất quan trọng của PEI, nhưng PEI còn chuẩn bị nhiều thông tin platform và truyền dữ liệu sang DXE thông qua HOB.

Hiểu nhầm 3: BDS chỉ đơn giản là boot vào OS

BDS không chỉ “nhảy vào OS”. Nó cần đọc boot option, kiểm tra thiết bị boot, load bootloader và xử lý nhiều logic liên quan đến boot policy.

10. Checklist khi đọc source UEFI

Khi đọc một file source trong BIOS/UEFI, nên tự hỏi:

  • Code này thuộc phase nào?
  • Code này chạy trước hay sau memory initialization?
  • Code này có tạo HOB không?
  • Code này có install protocol không?
  • Code này có locate protocol không?
  • Code này có liên quan đến boot option không?
  • Code này là PEIM, DXE driver hay EFI application?

11. Bài liên quan nên đọc tiếp

Để hiểu rõ hơn toàn bộ bức tranh UEFI, bạn có thể đọc thêm:

12. Kết luận

SEC, PEI, DXE và BDS là bốn phase quan trọng để hiểu UEFI boot flow.

Nếu mới học UEFI, không nên cố đọc mọi source code ngay từ đầu. Trước tiên hãy xác định code đó nằm ở phase nào và phase đó có nhiệm vụ gì.

Cách học hiệu quả là:

Hiểu boot flow tổng quan

Hiểu từng phase

Hiểu module trong từng phase

Đọc source code cụ thể

Khi nắm được cách chia phase này, việc đọc source BIOS/UEFI sẽ dễ hệ thống hóa hơn nhiều.

Thấy nội dung này hữu ích?

Lưu lại hoặc chia sẻ cho người cũng đang học firmware, BIOS/UEFI và embedded systems.

Nội dung liên quan

Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.

Đọc thêm về BIOS/UEFI

Khám phá các bài viết về BIOS/UEFI, embedded firmware, debugging và system-level thinking.