DevicePathToText là gì?
Quicknote DevicePathToText là gì?
DevicePathToText là cơ chế/protocol/helper dùng để chuyển Device Path dạng binary sang dạng text dễ đọc. Khi debug Boot####, controller path hoặc driver binding, đây là một trong những công cụ giúp bạn biến dữ liệu khó đọc trong NVRAM thành chuỗi có thể kiểm tra bằng mắt.
Nó không làm device path “đúng hơn”. Nó chỉ giúp con người đọc được device path.
Vì sao cần nó?
Boot#### lưu FilePathList ở dạng binary. Nếu dump raw NVRAM, bạn sẽ thấy byte, GUID, length và chuỗi UTF-16 lẫn nhau. Với debug thực tế, dạng đó rất khó đọc.
Sau khi convert sang text, bạn có thể thấy:
PciRoot(0x0)/Pci(0x17,0x0)/Sata(0x0,0x0,0x0)/HD(1,GPT,3F2A...,0x800,0x100000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)
Cùng một device path, hai góc nhìn
Binary Device Path
├─ Type/SubType/Length bytes
├─ Node payload
├─ UTF-16 file path
└─ End node
DevicePathToText output
└─ PciRoot(...)/Pci(...)/HD(...)/File(...) Flow debug thường dùng
Dump Boot#### hoặc handle path
Lấy device path binary từ NVRAM, handle database hoặc debug log.
Convert sang text
Dùng DevicePathToText hoặc helper tương đương trong EDK II.
Đọc từng node
Kiểm tra PCI/USB/HD/FilePath có khớp hardware hiện tại không.
So sánh expected vs actual
Nếu path stale, tạo lại boot option hoặc sửa nguồn tạo path.
Khi nào output text có thể đánh lừa bạn?
DevicePathToText rất hữu ích, nhưng đừng biến text output thành source of truth duy nhất.
- Text có thể rút gọn hoặc format khác nhau tùy implementation.
- Một số node vendor-specific có thể không được in đủ ý nghĩa.
- Nếu binary path đã hỏng, text output có thể dừng giữa chừng.
- Đừng parse text bằng tay để ra quyết định firmware quan trọng nếu có thể dùng DevicePathLib trực tiếp.
Ví dụ thực tế
Bạn thấy hai boot option đều tên “Windows Boot Manager”. Trong BIOS setup chúng giống nhau. Nhưng khi dump device path:
Boot0000: .../HD(1,GPT,AAAA...,0x800,...)/File(\EFI\Microsoft\Boot\bootmgfw.efi)
Boot0003: .../HD(1,GPT,BBBB...,0x800,...)/File(\EFI\Microsoft\Boot\bootmgfw.efi)
Tên giống nhau, file path giống nhau, nhưng partition GUID khác nhau. Một option có thể trỏ tới ESP cũ sau khi clone disk, option còn lại mới là ESP hiện tại. Đây là lúc DevicePathToText giúp bạn nhìn ra vấn đề trong vài giây.
Checklist dùng DevicePathToText
Ghi nhớ nhanh
DevicePathToText là kính lúp cho kỹ sư firmware. Nó không sửa boot option, nhưng giúp bạn nhìn thấy boot option đang trỏ đi đâu.
Bài liên quan
Nguồn tham khảo public
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.
Biến note thành bài viết hoàn chỉnh
Notes là nơi ghi nhanh khái niệm.