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.
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_HANDLEEFI_PROTOCOLEFI_GUIDBoot ServicesRuntime ServicesDriver 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
| Phase | Tên đầy đủ | Vai trò chính |
|---|---|---|
| SEC | Security Phase | Khởi động cực sớm, chuẩn bị môi trường ban đầu |
| PEI | Pre-EFI Initialization | Khởi tạo memory và platform cơ bản |
| DXE | Driver Execution Environment | Load driver, tạo protocol và service |
| BDS | Boot Device Selection | Chọ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.
BIOS là gì? Khác gì với firmware thông thường?
Giải thích BIOS là gì, BIOS khác gì với firmware thông thường, vai trò của BIOS trong quá trình khởi động máy tính và vì sao embedded engineer nên hiểu BIOS/UEFI.
UEFI Boot Flow tổng quan cho người mới
Giải thích luồng khởi động UEFI từ SEC, PEI, DXE đến BDS theo cách dễ hiểu cho người mới học firmware.
BIOS và UEFI khác nhau như thế nào?
Giải thích sự khác nhau giữa Legacy BIOS và UEFI theo góc nhìn firmware, boot flow và khả năng mở rộng hệ thống.
Đọ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.