EFI_NOT_FOUND là gì?

Quicknote EFI_NOT_FOUND là gì?

2 phút đọc
Đọc bằng Tiếng Việt English 日本語
Debug / Shell / Driver Terms cover

EFI_NOT_FOUND nghĩa là firmware không tìm thấy thứ được yêu cầu: protocol, variable, file, handle, device path node, boot option hoặc table. Đây là một trong những status hay gặp nhất khi debug BIOS.

Nhưng EFI_NOT_FOUND không tự nói “cái gì hỏng”. Nó chỉ nói rằng tại thời điểm gọi API, object đó không tồn tại trong không gian mà API đang tìm.

Ví dụ 1: protocol chưa được install

Status = gBS->LocateProtocol (
                &gEfiSimpleFileSystemProtocolGuid,
                NULL,
                (VOID **)&SimpleFs
                );

Nếu driver storage chưa dispatch, hoặc filesystem protocol chưa được install lên handle, LocateProtocol() có thể trả EFI_NOT_FOUND.

Ví dụ 2: Boot#### tồn tại nhưng file mất

BootOrder: 0001,0000
Boot0001: HD(...)/File(\EFI\ubuntu\shimx64.efi)
LoadImage(Boot0001) = EFI_NOT_FOUND

Ở đây Boot0001 có thể vẫn tồn tại trong NVRAM, nhưng file EFI trên ESP đã bị xóa hoặc device path trỏ sai partition.

01 NVRAM

BootOrder/Boot####

Boot option có tồn tại không?

02 PATH

Device Path

Đường tới controller, partition và file có đúng không?

03 PROTOCOL

Protocol

SimpleFileSystem/BlockIo có được install chưa?

04 FILE

EFI file

File trong ESP có tồn tại và đọc được không?

EFI_NOT_FOUND cần được đọc theo tầng, không đọc như một lỗi chung chung.

Debug Diary: LocateProtocol() trả NOT_FOUND

Đừng kết luận ngay protocol “không có”. Hãy hỏi:

  • Driver tạo protocol đó đã được đưa vào FDF chưa?
  • DEPEX của driver có thỏa chưa?
  • Driver có dispatch nhưng InstallProtocolInterface() fail không?
  • Bạn đang gọi quá sớm ở PEI/DXE/BDS?

Checklist khi gặp EFI_NOT_FOUND

Firmware Engineer Notes

EFI_NOT_FOUND đôi khi là bình thường. Driver Binding Supported() trả EFI_UNSUPPORTED hoặc một API enumerate trả EFI_NOT_FOUND để báo “hết item” có thể không phải lỗi. Điều cần kiểm tra là caller có kỳ vọng object đó bắt buộc tồn tại ở thời điểm này không.

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.