TSL là gì?
Giải thích Transient System Load phase trong UEFI boot flow và vai trò của OS loader trước ExitBootServices.
TSL, viết tắt của Transient System Load, là khoảng thời gian OS loader đã được firmware load và đang chạy, nhưng OS vẫn chưa hoàn toàn nắm quyền platform. Đây là vùng chuyển tiếp giữa BDS và OS.
Trong thực tế, TSL là nơi các lỗi ExitBootServices() thường xuất hiện. Bootloader phải lấy memory map, chuẩn bị page table/kernel/initrd, rồi gọi ExitBootServices() với đúng map key. Chỉ cần memory map thay đổi sau lần lấy map, lời gọi có thể fail.
LoadImage
Firmware load bootloader từ Device Path.
OS loader chạy
Bootloader chuẩn bị kernel và memory map.
ExitBootServices
Boot Services bị tắt.
Kernel tiếp quản
Chỉ Runtime Services còn tồn tại nếu được map đúng.
TSL làm những việc gì?
| Mục | Giá trị | Ghi chú |
|---|---|---|
| Load kernel | Đọc kernel/initrd/boot config | Thường dùng Simple File System trước ExitBootServices. |
| GetMemoryMap | Lấy memory map hiện tại | Map key phải khớp khi gọi ExitBootServices. |
| ExitBootServices | Chuyển quyền cho OS | Sau điểm này Boot Services không còn hợp lệ. |
| Runtime mapping | Chuẩn bị runtime service mapping | Quan trọng với variable/time/reset service. |
Debug diary: ExitBootServices fail
Triệu chứng thường gặp:
ExitBootServices() = EFI_INVALID_PARAMETER
Một nguyên nhân phổ biến là bootloader lấy memory map xong nhưng lại allocate/free memory trước khi gọi ExitBootServices(). Memory map thay đổi, map key cũ không còn hợp lệ.
Khi debug TSL
Bài liên quan
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.
ExitBootServices là gì?
ExitBootServices là ranh giới chuyển giao từ firmware sang OS. Sau lời gọi này Boot Services bị tắt, OS nhận quyền kiểm soát memory và platform.
BDS → TSL Handoff là gì?
Giải thích cách BDS chọn boot option, load EFI image và bàn giao cho OS loader trước ExitBootServices.
UEFI Runtime Driver là gì?
UEFI Runtime Driver dùng DXE_RUNTIME_DRIVER để code/data tồn tại sau ExitBootServices. Hiểu runtime memory, ConvertPointer, EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE và giới hạn sau EBS.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.