UEFI 虚拟环境的建立
UEFI  虚拟环境的建立
    UEFI虚拟环境主要有两种:一种是建立于操作系统之上的,类似一个应用程序的虚拟环境(称为:Nt32),该虚拟环境是无法加载光盘efi文件启动的。另一种是运行于过去的BIOS之上的虚拟环境(DUET),此种虚拟环境更接近于实际的UEFI环境,可以加载光盘efi文件启动。
一、首先介绍第一种UEFI虚拟环境(Nt32)的建立方法:
uefi boot    1、系统需求
        Microsoft Windows 2000/XP/2003
        256MB+ 系统内存
        500MB+ 硬盘空间
        Visual Studio .NET 2003 or 2005 Professional(Visual Studio 2008Visual Studio 2005        的使用方法相同)
    2、解压EDKEFI_DEVELOP_KIT)包。
        先从/servlets/ProjectDocumentList官方网页中下载最新EDK    的相关源码包。并解压,默认的解压文件夹为:C:\Fw\Edk
    3、建立Nt32模拟环境
        使用Visual Studio 命令行模式作为编译环境。并在命令行中输入VcVars32命令,即    建立使用Visual Studio x86 工具的编译环境。如下图:
       
图1.1  建立编译环境
        然后在命令行中输入:
        cd    C:\FW\Edk\Sample\Platform\Nt32\Build
        若是使用VS2005或者VS2008则需要修改该文件夹下的v文件。可以用记        事本打开,将
        Set        USE_VC8 = NO
        改为:
        Set        USE_VC8 = YES
        接下来就可以开始编译和建立NT32模拟环境了。输入命令如下:
        set EDK_SOURCE=C:\FW\EDK
        cd  C:\FW\Edk\Sample\Platform\Nt32\
        build
        接下来就是等待Nt32模拟环境建立完成。
    4、使用Nt32模拟环境
        首先设置环境变量,可以直接运行d来自动设置环境变量,也可以手动修        改。环境变量主要是定义如下几项:
            匹配一个1.44MB的软盘,命令如下:
            set EFI_WIN_NT_PHYSICAL_DISKS=a:RW;2880;512
            设置窗体名称,命令如下:
            set EFI_WIN_NT_UGA="UGA Window 1"
            设置一个系统路径作为一个EFI Nt32模拟环境下的文件系统,命令如下:
            set EFI_WIN_NT_FILE_SYSTEM=c:\virtual需要先在C盘目录下建立一个                virtual的文件夹)
        设置完环境变量后,如下图所示:
1.2  模拟环境编译完成后
        输入命令:
            cd Uefi
            System
            Nmake Run
        即可开始运行Nt32模拟环境,建立完成。
        建立过程也可以参考台北的UEFI培训课程的PPT
二、DUET模拟环境的建立
    DUET模拟环境分为:x86(即32位)和x64两种。建立方法略有不同,基本过程一样。
    1、先介绍x86模式的DUET模拟环境建立
        1)准备工具
            建立DUET镜像,需要以下工具:
            1*Visual Studio 2003* 或者*Visual Studio 2005/2008*
                    假定安装在<VS_PATH>。例如VS_PATH = C:\Program Files\Microsoft                Visual    Studio 2005
            2WinDDK
                    假定安装在<WIN_DDK_PATH>。例如:WIN_DDK_PATH =                        C:\WinDDK\6001_18001
            3MASM
                    假定安装在<MASMPATH>。例如:MASMPATH C:\MASM611
        2)准备源代码(源代码都可以从上下载最新版本)
            1)解压缩Edk-Dev-Snapshot-20081121.zip(或更新)到一个目录中,例如:C:\                (即c盘根目录)。EDK源码将解压在C:\Edk下。可以标记这个路径为                    <EdkRoot>
            2)解压缩EnhancedFat-Dev-Snapshot-20081121.zip(和上面的EDK版本相对应)                <EdkRoot>\Other\Maintained\Universal\Disk\FileSystem下。
        3 建立步骤(以VS2005为例,VS2008相同)
1)运行Visual Studio 2005 Command Prompt来开启命令行形式并输入命令VcVars32,此步骤同建立Nt32模拟环境。
2)设置环境变量,输入命令如下:
                set EDK_SOURCE=<EdkRoot>
                  set WIN_DDK_PATH=<WIN_DDK_PATH>
                  set MASMPATH=<MASMPATH>
<EdkRoot>是Edk的根目录,根据上面的源代码解压缩目录,<EdkRoot>应该为C:\Edk。而<WIN_DDK_PATH>就是WinDDK的安装目录,例如根据上面的是:C:\WinDDK\6001.18001。<MASMPATH>是MASM的安装目录,例如上面的C:\MASM611。
            3)输入命令到<EdkRoot>\Sample\Platform\DUET目录下:
                Cd C:\Edk\Sample\Platform\DUET
4)修改该目录下的v文件,将文件中的"USE_VC8 = NO" 改为 "USE_VC8 = YES"。
5)最后输入命令:
    Nmake  <target>
    来建立模拟环境镜像。<target>可以为以下四个之一:efi32, uefi32, efi64, uefi64。建议32位选用uefi32。所以命令为:nmake uefi32。等待编译完成。
          4)创建U盘启动
            1)首先确定所用的U盘可以被启动加载到DOS。即U盘可以通过BIOS启动
            2)设置环境变量,输入下面的命令:
                set EFI_BOOT_DISK=<UD>:
                这里<UD>为所插入U盘的盘符。若是H则为set EFI_BOOT_DISK=H:。
            3)输入命令:
                Nmake createusb
                Nmake usb
                如果是建立在FAT32文件格式下的U盘,则输入下面命令:
                Nmake createusb32
                Nmake usb32
        等待完成后,这个U盘就可以通过BIOS来加载启动UEFI模拟环境了。在此之前需要在BIOS中设置能够U盘启动,而且将优先级高于从硬盘启动。
    2、然后介绍x64模式的DUET模拟环境建立
        1)准备工具
            建立DUET镜像,需要以下工具:
            1*Visual Studio 2003* 或者*Visual Studio 2005/2008*
                    假定安装在<VS_PATH>。例如VS_PATH = C:\Program Files\Microsoft                Visual    Studio 2005
            2WinDDK
                    假定安装在<WIN_DDK_PATH>。例如:WIN_DDK_PATH =                        C:\WinDDK\6001_18001
            3MASM
                    假定安装在<MASMPATH>。例如:MASMPATH C:\MASM611
        2)准备源代码(源代码都可以从上下载最新版本)
            1)解压缩Edk-Dev-Snapshot-20081121.zip(或更新)到一个目录中,例如:C:\                (即c盘根目录)。EDK源码将解压在C:\Edk下。可以标记这个路径为                    <EdkRoot>
            2)解压缩EnhancedFat-Dev-Snapshot-20081121.zip(和上面的EDK版本相对应)                <EdkRoot>\Other\Maintained\Universal\Disk\FileSystem下。
        3 建立步骤(以VS2005为例,VS2008相同)
1)运行Visual Studio 2005 Command Prompt来开启命令行形式并输入命令VcVars32,此步骤同建立32位模拟环境。
2)设置环境变量,输入命令如下:
                set EDK_SOURCE=<EdkRoot>
                  set WIN_DDK_PATH=<WIN_DDK_PATH>
                  set MASMPATH=<MASMPATH>
<EdkRoot>是Edk的根目录,根据上面的源代码解压缩目录,<EdkRoot>应该为C:\Edk。而<WIN_DDK_PATH>就是WinDDK的安装目录,例如根据上面的是:C:\WinDDK\6001.18001。<MASMPATH>是MASM的安装目录,例如上面的C:\MASM611。
            3)输入命令到<EdkRoot>\Sample\Platform\DUET目录下:
                Cd C:\Edk\Sample\Platform\DUET
4)修改该目录下的v文件,将文件中的"USE_VC8 = NO" 改为 "USE_VC8 = YES"。
5)最后输入命令:
    Nmake  <target>
    来建立模拟环境镜像。<target>可以为以下四个之一:efi32, uefi32, efi64,    uefi64。建议64位选用uefi64。所以命令为:nmake uefi64
2.1  64位模拟环境编译出错
如上图所示,如果直接使用指令编译,会出现上面不到e:\WinDDK\6001.18001\bin\win64\x86\amd64\lib路径的错误,是由于WinDDK中本身就没有这个路径。我现在的解决方法是在e:\WinDDK\6001.18001\bin目录下
新建一个win64的文件夹,并将e:\WinDDK\6001.18001\bin目录下的x86文件夹拷贝到win64那个新建的文件夹下。然后重新编译。编译中主要的错误是不到编译器或者链接器路径,解决的方法是新建路径并通过拷贝所需的编译器或者链接器到这个新建路径下。拷贝的编译器或链接器都是来自于e:\WinDDK\6001.18001\bin目录下和C:\Program Files\Microsoft Visual Studio 9.0\VC\bin目录下。一下是编译成功的界面:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。