搜尋此網誌

2011年5月25日 星期三

如何創造一個EFI/UEFI的虛擬環境(DUET - Developer's UEFI Emulation)

1. 請準備一支空白的USB Disk(此範例適用於EDK1.6的版本)。
2. 首先請安裝好EFI/UEFI編譯環境,請參考 [What tools can help build EFI/UEFI?]
3. 下載EFI/UEFI source code,請參考[如何安裝EFI Developer Kit?]
4. 在前面兩個步驟完成之後,接下來

  • C:\set EFI_BOOT_DISK=H:             設定USB磁碟槽H,要加冒號。
  • C:\set EDK_SOURCE=c:\EDK         設定原始碼路徑
  • C:\set EFI_TOOLS_PATH=C:\EDK\Other\Maintained\Application\UefiShell    設定Shell的路徑
  • cd C:\Edk\Sample\Platform\DUET
  • nmake clean           清除所有Object files
  • nmake efi32clean   只清除EFI32的Object files
  • nmake efi32           編譯EFI32
  • cd C:\Edk\Sample\Platform\DUET\efi32 切換到EFI32目錄
  • nmake createusb    產生usb disk的efi虛擬平台的開機程式
  • nmake usb             複製一些檔案程式
  • 也可以使用  nmake usb32

 5. 重複以上的步驟也可以得到UEFI64的虛擬平台,例如:
  • nmake uefi64clean   只清除UEFI64的Object files
  • nmake uefi64           編譯UEFI64
  • cd C:\Edk\Sample\Platform\DUET\uefi64 切換到UEFI64目錄
  • nmake createusb    產生usb disk的efi虛擬平台的開機程式
  • nmake usb             複製一些檔案程式
6. EFI64與UEFI32依此類推。趕快試試看吧!!!!


6 則留言:

  1. 請問我按照[如何安裝EFI Developer Kit?] 以及這篇文章的步驟進行,但是nmake uefi64 時卻會出現

    系統找不到指定路徑的檔案
    C:\EDK\Other\Maintained\Application\UefiShell\Bin\X64\AMD64\cl'

    是不是還有什麼檔案需要放進C:\EDK\Other\Maintained\Application\UefiShell\Bin\X64 呢?? 謝謝!!

    回覆刪除
    回覆
    1. 如果你要編譯UEFI64,這個的路徑應該如下:
      set EDK_SOURCE=C:\Edk
      cd %EDK_SOURCE%\Sample\Platform\DUET
      nmake uefi64

      刪除
    2. 您好! 我有set EDK_SOURCE 也有進入%EDK_SOURCE%\Sample\Platform\DUET 去nmake uefi64

      但是compile 會因為

      系統找不到指定路徑的檔案
      C:\EDK\Other\Maintained\Application\UefiShell\Bin\X64\AMD64\cl'

      而失敗. 所以不曉得是不是EDK 1.06 的source file 還有哪些檔案要補上呢? 謝謝!!!

      刪除
    3. 應該要在"c:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"下,去編譯UEFI64。你可以試試看!
      我下載EDK1.06再編譯一次(沒有改任何設定),就可以編譯成功。應該不用改任何設定,default就可以了!

      刪除
    4. 您好! 我發現如果有C:\set EDK_TOOLS_PATH=C:\EDK\Other\Maintained\Application\UefiShell 設定Shell的路徑,才會出現以下的錯誤訊息:

      系統找不到指定路徑的檔案
      C:\EDK\Other\Maintained\Application\UefiShell\Bin\X64\AMD64\cl'

      即便依您的建議去執行vsvars32.bat 也是一樣的錯誤訊息;
      但是如果不設定該shell 路徑,就不會出現系統找不到指定路徑的檔案的錯誤,但編譯過程會因為Efi64.com 引起NTVDM.exe 錯誤而失敗

      請教這是什麼原因呢? 謝謝!!

      刪除
    5. 應該是:set EFI_TOOLS_PATH=%EDK_SOURCE%\Other\Maintained\Application\UefiShell
      我已經更新了,感謝你!

      刪除