BootOrder là gì?
Quicknote BootOrder là gì?
BootOrder là UEFI variable chứa danh sách thứ tự các Boot#### mà Boot Manager sẽ thử khi boot bình thường. Bản thân BootOrder không chứa đường dẫn tới file boot. Nó chỉ chứa các số option, ví dụ 0001, 0000, 0003, rồi mỗi số đó tham chiếu tới một biến Boot0001, Boot0000, Boot0003.
Cách BootOrder tham chiếu Boot####
Ví dụ hệ thống có 3 boot option:
Boot0000 = Windows Boot Manager
Boot0001 = UEFI USB SanDisk
Boot0003 = UEFI PXE IPv4
BootOrder = 0001,0000,0003
Khi boot, firmware đọc BootOrder rồi thử theo thứ tự:
Boot0001 → thử USB
Boot0000 → nếu USB fail thì thử Windows Boot Manager
Boot0003 → nếu tiếp tục fail thì thử PXE
Mỗi Boot#### thường chứa một EFI_LOAD_OPTION, bên trong có:
| Thành phần | Ý nghĩa |
|---|---|
| Attributes | Option có active không, có bị hidden không… |
| FilePathListLength | Độ dài device path/file path |
| Description | Tên hiển thị trong boot menu |
| FilePathList | Device Path đến partition/file .efi |
| OptionalData | Dữ liệu phụ cho loader nếu có |
Vì vậy debug boot không thể chỉ nhìn BootOrder. Phải mở tiếp Boot#### mà nó trỏ tới.
Checklist nhanh
Ví dụ lỗi thực tế
Bạn chọn USB boot trong BIOS setup nhưng máy vẫn vào Windows. Một khả năng là:
BootNext = không có
BootOrder = 0000,0001
Boot0000 = Windows Boot Manager
Boot0001 = UEFI USB SanDisk
Trong trường hợp này, firmware sẽ thử Windows trước. Nếu Windows boot thành công, nó không cần thử USB nữa. Cách sửa có thể là đổi BootOrder thành 0001,0000, hoặc dùng one-shot boot menu để set BootNext=0001.
Trường hợp khác:
BootOrder = 0001,0000
Boot0001 = UEFI USB SanDisk nhưng device path cũ
Lúc này thứ tự đúng nhưng option bên trong sai. Firmware thử Boot0001, không mở được device/file, rồi fallback sang Boot0000. Bên ngoài nhìn giống “BootOrder không có tác dụng”, nhưng nguyên nhân thật nằm trong Boot0001.
Ghi nhớ nhanh
BootOrder là danh sách số thứ tự. Boot#### mới là nơi chứa mô tả boot target thật sự. Khi debug, luôn đọc cả hai.
Bài liên quan
Nguồn tham khảo public
- UEFI Specification 2.11 - Boot Manager
- EDK II - UefiBootManagerLib/BmBoot.c
- EDK II - UefiBootManagerLib.h
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.
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.
Boot####, BootOrder và BootNext là gì?
Boot#### là EFI_LOAD_OPTION trong NVRAM chứa attributes, Device Path và optional data. BootOrder và BootNext điều khiển thứ tự BDS thử boot.
BDS là gì trong UEFI?
BDS là phase chọn boot option sau DXE. Firmware đọc BootOrder, connect device, load và start EFI image. Hiểu BDS giúp debug khi máy không boot đúng option.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.