Device Path Node là gì?

Quicknote Device Path Node là gì?

4 phút đọc
Đọc bằng Tiếng Việt English 日本語
Boot / NVRAM / Device Path Terms cover

Khi firmware nói “boot từ ổ này”, nó không thể chỉ lưu một chuỗi kiểu C:\boot\loader.exe. Trong UEFI, firmware cần mô tả đường đi theo từng lớp phần cứng: root bridge, PCI controller, USB/SATA/NVMe controller, partition, rồi mới tới file .efi. Mỗi mảnh nhỏ trong đường đi đó được gọi là Device Path Node.

Nói ngắn gọn: Device Path là một chuỗi node, còn Device Path Node là một mắt xích trong chuỗi đó.

01 ROOT

PciRoot

Bắt đầu từ PCI root bridge do ACPI/firmware mô tả.

02 BUS

Pci / USB / SATA

Đi qua controller hoặc bus cụ thể.

03 MEDIA

HD

Chọn đúng partition chứa EFI System Partition.

04 FILE

FilePath

Trỏ tới file boot loader như bootmgfw.efi hoặc BOOTX64.EFI.

Một boot path thường không nhảy thẳng tới file EFI. Nó đi qua nhiều lớp phần cứng và media.

Mỗi node có những trường gì?

Một node UEFI luôn có phần header chung: Type, SubType, Length. Sau header là dữ liệu riêng của từng loại node. Ví dụ PCI node có DeviceFunction, còn HD node có partition number, start LBA, size và signature.

Mục Giá trị Ghi chú
Type Nhóm node lớn Ví dụ Hardware, ACPI, Messaging, Media, End.
SubType Loại node cụ thể trong nhóm Ví dụ PCI trong Hardware, USB trong Messaging, HD trong Media.
Length Độ dài node Quan trọng khi parser nhảy sang node tiếp theo. Length sai dễ làm cả chuỗi bị đọc lệch.
Data Payload riêng Tùy node: PCI dùng Device/Function, HD dùng LBA/signature, FilePath dùng chuỗi UTF-16.

Type/SubType thường gặp

Mục Giá trị Ghi chú
0x01 Hardware PCI, PCCARD, MemoryMapped Mô tả đường qua phần cứng hoặc controller.
0x02 ACPI ACPI HID/UID Thường dùng ở đầu path để mô tả root bridge hoặc device ACPI.
0x03 Messaging USB, SATA, NVMe, MAC, IPv4/IPv6 Mô tả giao thức/bus để đi tới thiết bị.
0x04 Media HD, CD-ROM, FilePath Mô tả partition, file boot hoặc media object.
0x7F End End Instance / End Entire Đánh dấu kết thúc một instance hoặc toàn bộ device path.

Ví dụ thực tế

Một boot option Windows có thể chứa device path dạng text như sau khi convert bằng DevicePathToText:

PciRoot(0x0)/Pci(0x17,0x0)/Sata(0x0,0x0,0x0)/HD(1,GPT,3F2A...,0x800,0x100000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)

Đọc theo mắt kỹ sư firmware:

PciRoot(0x0)                         root bridge
└─ Pci(0x17,0x0)                     SATA/NVMe/Storage controller trên PCI
   └─ Sata(0x0,0x0,0x0)              thiết bị storage phía sau controller
      └─ HD(1,GPT,3F2A...,...)       partition chứa ESP
         └─ File(\EFI\...efi)       file loader thật sự

Nếu lỗi nằm ở node đầu, firmware có thể không thấy controller. Nếu lỗi nằm ở HD, firmware thấy disk nhưng không match đúng partition. Nếu lỗi nằm ở FilePath, firmware thấy partition nhưng không mở được loader.

Khi debug BIOS nên nhìn gì?

Device Path Node là nơi rất dễ bị xem nhẹ vì nó chỉ là metadata. Nhưng trong BDS, metadata này quyết định firmware sẽ mở controller nào, partition nào và file nào.

Checklist debug Device Path Node

Ghi nhớ nhanh

Đừng nghĩ Device Path Node là một khái niệm nhỏ. Trong boot flow, nó giống từng đoạn địa chỉ mà firmware phải đi qua trước khi tìm được loader. Một node sai có thể làm cả Boot#### nhìn vẫn tồn tại trong NVRAM nhưng thực tế không còn boot được.

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.

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.

Biến note thành bài viết hoàn chỉnh

Notes là nơi ghi nhanh khái niệm.