小華的部落格: 2012

搜尋此網誌

網頁

星期三, 9月 19, 2012

EDKII - Build.py

最近在研究EDKII的 Build process的動作,順便做做筆記!

這個Python Build tool是EDKII/EDK2 的一個Build tool,而底下是Build.py 目前支援的Command line options,因為我還沒追完全部的動作,所以先整理一下比較會使用到的部分:

===============================================================
"-a", "--arch", , choices=['IA32','X64','IPF','EBC','ARM'], dest="TargetArch",
"-p", "--platform"dest="PlatformFile"
"-m", "--module",, dest="ModuleFile"
"-b", "--buildtarget",  dest="BuildTarget"
"-t", "--tagname", , dest="ToolChain",
"-x", "--sku-id", , dest="SkuId", 
"-n",  dest="ThreadNumber"
"-f", "--fdf", dest="FdfFile"
"-r", "--rom-image", dest="RomImage"
"-i", "--fv-image", dest="FvImage"
"-C", "--capsule-image", dest="CapName"
"-u", "--skip-autogen", dest="SkipAutoGen"
"-e", "--re-parse", , dest="Reparse"
"-c", "--case-insensitive", dest="CaseInsensitive"
"-w", "--warning-as-error", dest="WarningAsError
"-j", "--log",  dest="LogFile"
"-s", "--silent",, dest="SilentMode",
"-q", "--quiet"
"-v", "--verbose"
"-d", "--debug"
"-D", "--define",dest="Macros"
"-y", "--report-file"dest="ReportFile"
"-Y", "--report-type" choices=['PCD','LIBRARY','FLASH','DEPEX','BUILD_FLAGS','FIXED_ADDRESS', 'EXECUTION_ORDER'], dest="ReportType"

"-F", "--flag", dest="Flag",
"-N", "--no-cache", dest="DisableCache"

從上面資料中可以看到-a 或是--arch對他來說應該都是同一個選項.
而底下是一些實際範例的說明,希望對大家有幫助~

======================
build.exe  -p ACTIVE_PLATFORM 
======================
ex: build -p DUETPkg\DuetPkg64.dsc
說明: 等同於修改Target.txt內的 ACTIVE_PLATFORM       = Nt32Pkg/Nt32Pkg.dsc

=====================
build -b TARGET
=====================
ex: build -b DEBUG
說明: 等同於修改Target.txt內的TARGET= DEBUG,以及DSC file: [Defines] BUILD_TARGETS tag

[Defines]
  PLATFORM_NAME                  = NT32
  PLATFORM_GUID                  = EB216561-961F-47EE-9EF9-CA426EF547C2
  PLATFORM_VERSION               = 0.4
  DSC_SPECIFICATION              = 0x00010005
  OUTPUT_DIRECTORY               = Build/NT32
  SUPPORTED_ARCHITECTURES        = IA32
  BUILD_TARGETS                  = DEBUG|RELEASE
  SKUID_IDENTIFIER               = DEFAULT
  FLASH_DEFINITION               = Nt32Pkg/Nt32Pkg.fdf

=====================
build -a TARGET
=====================
ex: build -d x64
說明: 等同於修改Target.txt內的TARGET_ARCH           = IA32,以及DSC file: [Defines] SUPPORTED_ARCHITECTURES tag (同上範例)

=====================
build -t TOOL_CHAIN
=====================
ex: build -t VS2010x86
說明: 等同於修改Target.txt內的TOOL_CHAIN_TAG        = VS2008x86 

=====================
build --log=Build.log
=====================
--log 可以產生建置過程的紀錄檔

星期日, 9月 09, 2012

快快樂樂學EFI(4)-使用VS2010建立EDKII專案

這一篇文章說的方式可以適用於VS2008與VS2010,使用Visual Studio建立專案的好處其實就只是有Tag功能,也就是方便你去追CODE改CODE的功能,雖然我都是使用SlickEdit 不過還是跟各位說一下怎麼使用吧~

在建立Visual Studio專案之前,請確認你已經在DOS Command Prompt下成功進入到NT32的EFI Shell模擬環境,如果還沒成功,請先試試看下面方式:

1) E:\MyWorkSpace:\> EdkSetup.bat
2) 修改E:\MyWorkSpace\Conf\Target.txt 內,搜尋關鍵字MYTOOLS ,並把他改成VS2008x86或是VS2010x86,我是用VS2010,所以要改成VS2010x86

3) 先產生 SHELL檔案,透過 E:\MyWorkSpace:\> build -D BUILD_NEW_SHELL
4) 測試看看能不能看到EFI Shell模擬環境E:\MyWorkSpace:\> build run
5) 如果可以看到Shell,則輸入reset 離開模擬環境

如果上面步驟都已經成功,則你可以繼續底下的步驟來設定VS2010的EDKII專案


Step1: 執行VS2010
Step2: 選擇File->New->Project From Existing Code ...
Step3: 出現的畫面上選擇"Visual C++" project type 


Step4: Click "Browse" 然後選擇你的工作目錄 (我的是E:\MyWorkSpace)

Step5: 並在File type的地方輸入底下這些附檔名,他的用意是去辨識哪些檔案要加入專案

 *.c;*.h;*.asm;*.asm16;*.s;*.inc;*.asl;*.aslc;*.fdf;*.dsc;*.dec;*.inf;*.py


Step6: 繼續下一步,並選擇 "Use external build system" 然後直接按下 "Finish" (後面的其他設定可以忽略)


Step7: 在步驟6結束後,你應該可以看到專案檔被開啟成功,然後在專案的地方按滑鼠右鍵,然後選擇"Properties"

Step8: 選擇左邊的 "NMake" 然後設定 Configuration 成 "All Configurations".


Step 9: 然後再編輯右邊的 "Build Command Line","Rebuild All Command Line" 和 " Clean Command Line" ,分別輸入下面的設定(請依照自己的工作目錄設定):

For Build Command Line:
------------------------------
   cd /d E:\MyWorkSpace
   set WORKSPACE=E:\MyWorkSpace 
   call edksetup.bat --nt32
build 

For Rebuild All Command Line:
------------------------------
cd /d E:\MyWorkSpace
  set WORKSPACE=E:\MyWorkSpace
  call edksetup.bat --nt32
  build clean
build 

For Clean Command Line:
------------------------------
cd /d E:\MyWorkSpace
  set WORKSPACE=E:\MyWorkSpace
  call edksetup.bat --nt32
  build clean

Step10: 確定你的工作目錄下的Conf\Target.txt內的TOOL_CHAIN_TAG有設定成VS2010x86,不然你會沒辦法使用VS2010的專案來Compiler,如果你是使用VS2008則設定成VS2008x86即可! 

Step11: 再選擇一次專案的"Properties",然後選擇左邊的"Debugging",接著邊及右邊的這兩個選項:




Step12:  當上述的動作都完成了,你就可以試試看Rebuild和Start Debugging的功能了.

成功的話,你會看到EFI Shell的模擬畫面! 


※ 本篇文章是參考我以前同事部落格所多做的一些說明,如果你需要更仔細的說明,請參考我以前同事 Tim Lewis 的部落格~ 










星期四, 9月 06, 2012

快快樂樂學EFI(3)-建立EDKII 環境



光陰似箭,歲月如梭! 在EDK推出好幾年後,緊接著BIOS界中的另一個大事情就是又來了一個EDKII。

其實EDK II 推出的概念是因為EDK 有許多使用者有一堆抱怨,像是不能跨平台使用啦~不能用"微軟"之外的Compiler啦~東西不夠模組化啦~

因此針對了使用者的抱怨而做了一些修改? (一些嗎? 改的還蠻大的,不過幾乎都是在Build tool端,本身你寫EFI driver的方式沒啥改變)

從寫EFI driver的角度來看,你會發現有許多的EntryPoint全部被導入到EDKII的Library內去做初始化,這個好處是當Platform改變時容易移植到其他平台!

而其他的部分你就要去習慣新的Build tool的語法以及用法了。

不多說,那要怎麼開始呢? 一樣找Google 大神,找EDKII後點擊第一個連結去抓code吧!


1. 先下載 EDKII codebase

2.解壓縮到隨便一個目錄,我是解壓縮到 E:\UDK2010.SR1.UP1

3.從說明文件 "UDK2010.SR1.UP1-ReleaseNotes-MyWorkSpace.txt" 內你可以得知下面幾件事情

    1) REFERENCE PLATFORMS 有兩種: 
           a.Desktop - [Nt32Pkg]
                             Nt32Pkg\Nt32Pkg.dsc
           b. DUET - UEFI Simulation Environment directly on Hardware (via boot process)

    2) HOW TO BUILD (WINDOWS SYSTEM) 你要如何在windows系統去建構他
        a.Setup Build Environment 設定你的建構環境
         - Install Microsoft Visual Studio 2008* SP1 in the build machine and make sure that AMD64 
                 complier was selected when installing.

                 (安裝微軟的VS2008 SP1,在安裝時要確認你有把AMD64 Compiler選項打勾)

       - Download "iasl-win-20070508.zip" from "http://www.acpica.org/downloads/Version_20070508.php" 
          and extract file "iasl.exe" to C:\ASL
    
           (去這個連結抓iasl-win-20070508.zip 這個檔案,並解壓縮後把iasl.exe複製到C:\ASL ,如果
            C:\ASL目錄不存在請自己建立)

          b . Extract Common Source Code 解壓縮需要的檔案
               -  Extract files in [UDK2010.SR1.UP1.MyWorkSpace]  to the working space directory (e.g C:). 
                  Note the Directory "MyWorkSpace" will be created as a result.
                 
                  In this case, it is C:\MyWorkspace. There are two BaseTools package one is for Windows
                  system and another is for UNIX-Like system. 
                  
                  Please make sure BaseTools(Windows).zip is used here. Expand the appropriate BaseTools to 
                 C:\MyWorkSpace
                 
                 (把UDK2010.SR1.UP1.MyWorkSpace.zip檔案解壓縮後他會產生一個目錄叫做
                    MyWorkSpace,在這目錄內有需要的檔案,你可以把這個目錄複製到
                   C:\MyWorkSpace然後再把Windows的Build tool "BaseTools(Windows).zip"也解壓縮到
                  這個目錄裡面)
                    
               因為我是放在E:\MyWorkSpace,所以會長得像下面這樣子:


             c. Generate OpenSSL* Crypto Library (產生OpenSSL Crypto 函數庫)
                OpenSSL 的 Crypto 函數庫實作了許多資料編碼方法,像是資料摘要函數(使用
                 MD2/MD4/MD5/SHA雜湊演算法),對稱式加密函數(使用RC2/RC4/RC5/DES/IDEA
                 演算法)以及非對稱式加密函數(DSA/RSA 演算法)。                                                                               

                -  Open file "C:\MyWorkspace\CryptoPkg\Library\OpensslLib\Patch-HOWTO.txt" and 
                   follow the instruction to install OpenSSL* for UEFI building.
                    (打開這個目錄下的文件"Patch-HOWTO.txt",然後跟著他的說明去安裝需要的檔案)

                      ◎ Download OpenSSL 0.9.8w from official website:  
                           http://www.openssl.org/source/openssl-0.9.8w.tar.gz (先把這個檔案抓下來) 

                      ◎ Extract TAR into CryptoPkg/Library/OpenSslLib/openssl-0.9.8w 
                          (把解壓縮出來的目錄openssl-0.9.8w 放到CryptoPkg/Library/OpenSslLib底下)

                      ◎ Apply this patch: EDKII_openssl-0.9.8w.patch, and make installation 
                           (套用以及安裝這個修正)
                             ----------------------------- 
                             For Windows Environment:
                             -----------------------------
                            - Make sure the patch utility has been installed in your machine.
                               (確認你有安裝Patch的工具,如果沒有,請先到下面網站下載及安裝)
                                  Install Cygwin or get the patch utility binary from
                                  http://gnuwin32.sourceforge.net/packages/patch.htm

                                 我是下載下面紅色框框的那一個

安裝後會在我的C:\Program Files (x86)\GnuWin32目錄內


               
                            - cd $(WORKSPACE)\CryptoPkg\Library\OpensslLib\openssl-0.9.8w
                            - "C:\Program Files (x86)\GnuWin32\bin\patch" -p0 -i ..\EDKII_openssl-0.9.8w.patch

                 
                            - cd ..
                            - Install.cmd    
                                

              d.  Build Steps (開始Build code吧~)
                 *** NT32 ***
                  - Open a command prompt, type command "cd C:\MyWorkspace" to enter the workspace 
                      directory, and then type command "edksetup" to initialize the working environment.
                  - Type below commands to build platforms  "build -t VS2008x86 
                     (進入到你想到的Platform 目錄內,然後輸入build -t VS2008x86 ,然後你就可以
                      看到開始建構你的Code了,做到這一步就算完成了!)
 
                   
            底下是其他注意事項:
          
            There are two methods to select the tool chain (Use Microsoft Visual Studio 2008* as sample):
            - Update TOOL_CHAIN_TAG in file Conf/target.txt: TOOL_CHAIN_TAG = VS2008
            - Add -t build option in command line: "build -t VS2008 ... "

           For 32-bit VS2008 on 64-bit WINDOWS OS, VS2008x86 should be selected instead of VS2008.
           Please refer to tools_def.txt for all supported tool chains and detailed descriptions.
          (tools_def.txt will be generated at Conf directory after running "edksetup".)
           
        最後,希望大家都能夠成功建立自己的建構環境!

           

星期二, 9月 04, 2012

快快樂樂學EFI (2)


 
快快樂樂學EFI
Harrison Hsieh 2010/07/19
Chap 2 Build EFI How to
      這一章是用來說明如何去Build 你的EFI Tool Kit或是EDK,經由一步一步的帶領之下可以讓你很快的擁有一個EFI 開發環境。
 
2.1 Build EFI Tool Kit
首先,你必須透過SVN去下載一套EFI Tool Kit,假設我下載後是放在 D:\efitoolkit,則他的目錄結構會長的像下圖一樣:
 

 
首先,我們先去修改Build.cmd這個檔案,這個檔案最主要是去控制一些環境變數,這邊環境變數會影響你產生的輸出檔案是 IA32/X64
set SDK_BUILD_ENV=em64t  
set SDK_INSTALL_DIR=
D:\efitoolkit
SDK_BUILD_ENV - 是用來選擇你產生的執行檔是希望在哪個platform中執行,目前一共有幾種Platform可以選擇,像是nt32/sal64/em64t/bios32,而我們選擇的是em64t,他的意思代表我們要產生X64的執行檔
這樣子你才可以放在一個64 bit DXE環境下執行。 如果你想在一個NT32模擬環境或是PEI 32bit環境下執行,那你就要選擇 nt32.
 
SDK_INSTALL_DIR - 指定你的EFI Tool kit擺放的位置,我是放在D:\efitoolkit
 
接下來,你還需要去設定D:\efitoolkit\em64t\sdk.env ,這個檔案是決定你要使用哪一種Compiler 工具,預設是WinDDK,但是小弟總是喜歡來點不一樣的,因此我改使用VS2005!
為了使用VS2005,所以我就必須去修改這個檔案。

 
修改方式很簡單,就是指定到我的VS2005內的Compiler 目錄就可以了:
#MSSdk = C:\WINDDK\3790.1830\bin\win64\x86\amd64
MSSdk = "
C:\Program Files\Microsoft Visual Studio 8\VC\bin\x86_amd64"
然後就是重點了,你必須使用的是Visual Studio 2005 X64 Cross Tools Command Prompt ,而不是一般32 bitCommand Prompt.

接著切換目錄到你的EFI Tool Kit目錄,然後先執行Build.cmd設定環境後,就可以使用nmake 開始編譯你的環境。

 
編譯的結果會產生在 bin output 這兩個目錄內:
D:\efitoolkit\em64t\bin
D:\efitoolkit\em64t\output
 
所以你可以在這些目錄內找到你要的執行檔。
 
[Note]
如果你要build nt32,記得改一下SDK_BUILD_ENV = nt32,並改用Visual Studio 2005 Command Prompt (32bit)
 
2.2 Build EDK
 
EDK 內有許多的Platform 可以使用,其中比較常使用到的就是Nt32Developer's UEFI Emulation (DUET)/X64,下面就介紹這3PlatformBuild的方式:
2.2.1 Nt32 platform
使用VS2005 Build EDKNt32環境時需要注意的地方是把config.env內的USE_VC8 打開,然後再使用VS2005 Command prompt (32 bit)就可以去Build Nt32
(1)SET EDK_SOURCE=D:\EDK
     SET EDK_TOOLS_PATH=%VCINSTALLDIR% <--可有可無
(2)D:\EDK\Sample\Platform\Nt32\Build\Config.env
     USE_VC8 =
 YES
(3) 
然後依照下圖一步一步的做即可 (進入到Build folder,然後鍵入nmake all)

 
(4) Nt32還有個好處就是可以執行NT32模擬器,而執行的方式就是執行 system.cmd 設定 EFI Shell 模擬環境,然後再鍵入 nmake run

然後就會看到下圖:

 
2.2.2 DUET/X64 platform
DUET 這是一個開發者的模擬環境,在你執行nmake all之前,你必須設定下面的環境變數:
        set EDK_SOURCE=d:\edk
        set WIN_DDK_PATH=
可忽略,如果你是VS2003的話就必須設定
        set MASMPATH=c:\MASM615

另外就是要把config.env內的設定打開,這樣子才能使用VS2005
USE_VC8 = YES
USE_VC8_X64 = YES
接著,使用VS2005 Command prompt (32 bit)就可以去Build
 
[Note]
X64 platform build的方式如同DUEF,而且內含有X64 EFI Shell可以讓你在X64 platform使用。
DUET/X64 platform不支援nmake run的模擬環境,所以你沒辦法在你的工作機上運行。
 
 
 
 
  

快快樂樂學EFI (1)


快快樂樂學EFI
Harrison Hsieh 2010/07/19
Chap 1 EFI How to
1.1 概論
     有感於當初學習EFI的時候是直接經由BIOS vendor: "I公司"的網路上的訓練課程以及他們派了一組人來幫我們上了一星期Bring up之後,就直接在客戶的案子上邊做邊學,所以很多EFI基本的基礎都沒有學好!因此,最近想化整為零把EFI 重頭學習一遍! EFI 入門該學些甚麼呢?!  個人覺得,工欲善其事必先利其器! 所以先去抓一套可以編譯工具以及一套EDK或是 EFI Tool kits 來學習是最簡單的方式 所以我們的學習目標就是了解甚麼是EFI/UEFI ,然後再告訴你如何去找到你需要的資料以及建構出一個可以撰寫EFI code的環境。

1.2 EFI 歷史回顧
     Extensible Firmware Interface (EFI,可擴充韌體介面) 是一個規範,他規範了一個介面,界於作業系統(例如: Windows)與平台韌體(Platform firmware)之間的一個橋樑。 EFI 的改進是被用來取代傳統BIOS的介面(這個傳統的介面被稱之為IBM PC compatible PC BIOS或稱之為Legacy BIOS). 最初EFI是由Intel 所主導發展,Intel 已於2005年此規範交給目前UEFI論壇(Unified EFI Forum) 的會員一起共同維護與推廣,這便是眾所皆知的UEFI (Unified EFI,統一的EFI).
最初EFI發展動機是為了在1990年中的Intel-HP Itanium 系統,當時的PC BIOS有一個限制(支援16 bit 的處理器模式,1MB 位址空間與AT 硬體架構),而這個限制使的他無法支援大型伺服器平台的系統Intel-HP Itanium 最初的時候Intel 只是為了解決這些BIOS啟動時的限制,後來就乾脆改變它的名稱,且稱之為EFI

Intel Platform Innovation Framework for EFI
   Intel
 在其平台上為了EFI去建立了一個新框架(Framework),而這個框架的最初代號叫做Tiano,這個框架非常的完整,它包含了EFI對原本傳統韌體的所有支援,他也可以透過所謂的compatibility support module(CSM)來支援傳統的PC BIOS,簡單說就是傳統BIOS能做的EFI也能做,但是不是完整支援就要看CSM支援的程度。
特別是,這個框架包含了在Power- On後,所有必要的初始化步驟去初始化一個平台(Platform);但是這些步驟的運作並沒有被定義在EFI specification內,而是被定義在 Platform Initialization Specification(簡稱PI Spec)內的章節。 Intel 並沒有將這個架構完整的開放給一般的End-User知道,他只有開放這些資訊給一些獨立的BIOS 廠商(稱之為IBV),像是安邁 (American Megatrends AMI) 或是系微(Insyde Software)、鳳凰科技(Phoenix) …等的BIOS韌體供應商。
而在TianoCore project(也就是所謂的EFI Developer Kit EDK)Open source之中,會提到如何去開發這個Framework。這個開發工具中含括了EFI的一些硬體初始化的程式碼(只針對一些硬體,但並不包含韌體本身) ,至於這些程式碼的授權包含BSD license  Eclipse Public License等。
Tiano是為了取代BIOS的一種框架,所以透過EFI可以讓PC的設備自己撰寫一個驅動程式來管理這個設備。而對於開放原始碼來說,這也代表大家可以從TianoCore.org 下載這個專案,然後以BSDBerkley Software Distribution)的授權方式來生產你的產品。BSD的授權,你自己去修改它的軟體並且發展出屬於你自己的產品,但BSD並不會去要求你把修改的地方公開出來,而這種方法會有助於你去保護你的智慧財產權。
歷史故事簡略介紹完了,廢話不多說我們就馬上進入EFI 世界中,告訴你一個EFI的環境需要哪些工具來編譯、去哪裡下載EFI 工具包、如何建構你的編譯環境。

1.3 Compiler 工具
   為了能夠編譯一套EDK或是EFI Tool kits ,你會需要使用到 WinDDK或是VisualStudio,這是為了提供一些Compiler 工具像是CCompiler : CL.EXE或是像Lib工具: LIB.EXE 以及連結工具Link.exe...etc
   另外你可能還需要使用到MASM 來組譯一些少部分的組合語言程式碼,因此軟體需求如下:
(1) WinDDK version 3790.11830(EFI Tool kits預設)/ VisualStudio 2003(EDK預設)/VisualStudio 2005/VisualStudio 2008
(2) EFI Tools Kit /EDK source code.
(3) MASM
(4) TortoiseSVN
1.4 EFI Resource
  在茫茫網海中,如何蒐尋EFI 相關資源?! 小弟我不是幫Google 打廣告,是因為我常使用他去找資料 那我們要輸入哪些關鍵字可以找到我們要的資料呢?

 首先進入Google搜尋引擎,輸入關鍵字 "EFI EDK",你就會看到下面的連結 http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=EDK

目前EFI 相關資訊比較完整的地方就是這個網站,裡面你可以下載到你需要的EFI Tool kit/EDK ,並且有一些相關的文件可以幫助你開始你的EFI之旅。

1.5 EFI Tool Kits
  
接下來我們就開始看看這些不同的專案有哪些是可以幫助我們入門,首先要介紹的是 EFI 工具組(EFI Tool Kits),他是一個可以支援快速開發EFI 應用程式的一個環境,讓你可以快速的開發32 bit/64bit EFI應用程式。
這些應用程式包含 : EFI based applications, protocols, device drivers, EFI shells 以及不同平台的 OS loaders  (IA-32, IA-64(IPF) and Intel 64(EM64T or X64) platforms),你可以透過他的Source Repository下載。
在下載之後,如何得知你下載的EFI Tool kit 版本 : 例如 D:\efitoolkit\doc\RELNOTE.pdf 文件內會有版本,如下圖所示:

  EDK指的是Open-source的一個EFI “Framwork”元件,英特爾依照EFI規範所實做出來的一套Code,當時的開發的代號為“Tiano”

  EDK的基本上是一個範例元件,裡面有為框架的基礎程式碼(Framework's Foundation code)和驅動程序範例(Sample Driver)

  EDK也是一個開發工具包,可以用來Debugging/Testing EFI Framework's driver
你可以透過下面的連結去取得一些相關的資訊以及說明:
   (2) 一些Framework Spec : http://www.intel.com/technology/framework/spec.htm
從下圖中的紅色框框的地方就是SVN下載的連結

1.7 Download EDK/EFI Tool kits
 首先,你必須先安裝 TortoiseSVN,這是一個版本控制的軟體,可以幫助你去Server端把code抓下來! 如果你沒有使用過的人就請先研究看看這個東西要如何使用,這邊就不多說明!
    
 http://tortoisesvn.tigris.org/

 
接著,透過這個TortoiseSVN去抓一套最新版的EDK /EFI Tool kits 下來 方法很簡單,就是透過TortoiseSVNExport功能,在他的URL地方輸入你要抓的Code的位置(也就是前面提到的Source Repository)然後輸入好Export directory(例如存放到 D:\EfiToolKit ),然後就等他下載好就可以了,例如下面的圖示與步驟 https://efi-toolkit.svn.sourceforge.net/svnroot/efi-toolkit/trunk/efi-toolkit (下載EFI Tool Kits)

 
1.8 Reference