2014-03-25 160 views
6

我可以在UEFI環境中運行EFI應用程序build and manually execute。但是,我希望在啓動時自動執行我的應用程序。在啓動時自動運行EFI應用程序

有沒有辦法告訴引導加載程序來做到這一點,或者我需要將我的應用程序中的驅動程序自動執行?是否有可能在我失蹤的FDF,DEC,DSC或INF文件中輸入一些內容?

回答

6

您可以將startup.nsh腳本文件添加到調用您應用程序的UEFI Shell啓動驅動器。

以下鏈接應該作爲使用shell中腳本的便捷參考:UEFI Shells and Scripting。具體看第3部分(EFI Shell腳本)。但是,如果您實際構建自己的固件,則還可以查看創建可引導的EFI映像並將默認引導選項設置爲此二進制文件。如果您將二進制文件作爲ROM的一部分包含在內,這是非常有用的,但它可能會涉及到設置文件系統,因此它被視爲正常啓動選項。另外,如果您可以完全訪問固件源,也可以從BDS驅動程序加載並調用二進制文件。我不推薦這種路線,除非您專門打算創建一個永遠不會啓動任何其他圖像的獨立設備。

+0

這個答案是真棒可見。請Nicholas,你能告訴我更多關於第二個和第三個選項嗎? –

1

@NicholasEmbry答案包含幾乎所有需要的東西,但我想澄清一些事情並在該領域添加最新的改進。

添加UEFI應用程序映像到啓動選項實際上是最知名的方法,當你沒有你的固件的源代碼,典型的情況是什麼。您沒有創建任何特殊的引導映像應該是簡單的UEFI應用圖像,什麼意思,你INF應該包含:

MODULE_TYPE   = UEFI_APPLICATION 

這個選項不只是選項ROM這是所有UEFI可讀介質。例如,您可以在存儲上創建FAT32分區(無論它是USB,HDD,SSD等,只需要固件可讀),並將應用程序映像放置在此分區上。然後啓動到UEFI Shell並使用bcfg命令來影響您的啓動順序。

bcfg命令可以被BIOS供應商阻止。在這種情況下,請按照this post的程序操作。這是使用USB棒啓動rEFIndrEFInd包含bcfg工具,併爲您提供使用它的能力。

如何使用bcfg

全部在幫助help bcfg -b中描述。 -b是UEFI傳呼機。對於那些誰喜歡的快捷鍵,這個命令將顯示所有引導選項系統:

bcfg boot dump -v 

可以使用命令添加應用程序:

bcfg boot add <boot_pos> <path_to_uefi_image> <boot_order_name> 

<boot_pos> - 在引導順序中的位置。請注意,您通常希望在OS之前放置您的應用程序。如果在您的操作系統之前沒有可用的啓動選項編號,您當然可以將您的操作系統的一個選項向下移動bcfg boot mv <old_pos> <new_pos>,然後在兩者之間添加您的應用程序映像。

<path_to_uefi_image> - 指向您的UEFI映像的路徑。這是UEFI可讀的路徑,即。 fs0:\foobar.efi

<boot_order_name> - 這是你的應用程序將如何在開機BIOS菜單

相關問題