2014년 9월 16일 화요일

Windows 에서 UEFI 빌드 환경 구성하기

Windows 에서 UEFI 빌드 환경 구성하기


요약

UDK2014 를 Windows 개발환경에서 빌드하는 방법을 설명합니다. UDK 패키지 파일내의 2014-ReleaseNotes-MyWorkSpace.txt 를 참고했습니다.

시작

  1. 개발 환경
    • windows 7, x64
    • visual studio 2010
  2. 소스코드 압축 풀기
    • UDK2014.MyWorkSpace.zip -> d:\work.uefi\MyWorkSpace
    • BaseTools(Windows).zip -> d:\work.uefi\MyWorkSpace\BaseTools\
  3. 빌드 환경 셋업 하기
    • d:\work.uefi\MyWorkSpace 에서 command prompt 하나 띄우고,
    • EDK_TOOLS_PATH 환경 변수 설정해주고
    • edksetup.bat --nt32 실행하면 준비 완료
        d:\work.uefi\MyWorkSpace>set EDK_TOOLS_PATH=d:\work.uefi\MyWorkSpace\BaseTools\BaseTools
      
        d:\work.uefi\MyWorkSpace>edksetup.bat --nt32
                  PATH      = d:\work.uefi\MyWorkSpace\BaseTools\BaseTools\Bin;d:\work.uefi\MyWork
        Space\BaseTools\BaseTools\Bin\Win32;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VS
        TSDB\Deploy;...[skip]
      
             WORKSPACE      = d:\work.uefi\MyWorkSpace
        EDK_TOOLS_PATH      = d:\work.uefi\MyWorkSpace\BaseTools\BaseTools
      
        copying ... target.template to d:\work.uefi\MyWorkSpace\Conf\target.txt
        copying ... tools_def.template to d:\work.uefi\MyWorkSpace\Conf\tools_def.txt
        copying ... build_rule.template to d:\work.uefi\MyWorkSpace\Conf\build_rule.txt
      
        Rebuilding of tools is not required.  Binaries of the latest,
        tested versions of the tools have been tested and included in the
        EDK II repository.
      
        If you really want to build the tools, use the ForceRebuild option.
      
        !!! WARNING !!! No CYGWIN_HOME set, gcc build may not be used !!!
      
        d:\work.uefi\MyWorkSpace>
      
  4. 빌드하기
    • build -t <tool chain name> 명령으로 빌드
    • tool chain 을 변경하려면
      • Conf/target.txt : TOOL_CHAIN_TAG = VS2010x86 으로 변경하거나
      • build -t <tool chain name>
    • x64 머신에서 x86 버전 vs 를 사용하므로 VS2010x86 tool chain 을 사용
    • vs 는 x86 버전밖에 없다는 건 함정
    • tool chain 정보는 Conf/tools_def.txt 참고 (edksetup 에서 동적으로 생성해 주는 파일 임)
        d:\work.uefi\MyWorkSpace>build -t VS2010x86
        ..........
        ..........
        Generate Region at Offset 0x28E000
           Region Size = 0x2000
           Region Name = DATA
      
        Generate Region at Offset 0x290000
           Region Size = 0x10000
           Region Name = None
      
        GUID cross reference file can be found at d:\work.uefi\myworkspace\Build\NT32IA32\DEBUG_VS
        2010x86\FV\Guid.xref
      
        FV Space Information
        FVRECOVERY [66%Full] 2621440 total, 1733424 used, 888016 free
      
        - Done -
        Build end time: 23:37:28, Sep.16 2014
        Build total time: 00:02:12
        d:\work.uefi\MyWorkSpace>
      
  5. 하드웨어의 기능을 이용하는 빌드 옵션들
    • build -D <option> 을 이용해서 기능 추가 할 수 있음
    • build -D SECURE_BOOT_ENABLE <- 요렇게!
    • SECURE_BOOT_ENABLE
      • Provides access for generic authentication information
      • associated with specific device path.
    • TPM_UID_ENABLE
      • Provides TCG-defined service, and user identification feature.
    • IP6_NETWORK_ENABLE
      • Provides Ipv6 network stack support.
    • DUAL_NETWORK_ENABLE
      • Provides both Ipv4 and Ipv6 network stacks support.
    • SOURCE_DEBUG_ENABLE
      • Provides source debugging feature.
  6. visual studio 에서 빌드하려면?
  7. 실행은?
    • make 의 run 타겟을 이용할 수도 있고
    • d:\work.uefi\MyWorkSpace\Build\NT32IA32\DEBUG_VS2010x86\IA32\SecMain.exe 를 실행해도 됨
  8. 끝!