강좌 & 팁
글 수 2,412
2015.10.28 22:17:33 (*.39.166.80)
48923
[UEFI] GUID FAQ 번역
이번 번역글은 UEFI 의 GUID에 대한 FAQ 입니다.
번역 원문은 http://tianocore.sourceforge.net/wiki/GUID 입니다.
발로 번역한 거라 내용중 틀릴 수도 있는데 그런 부분은 꼭! 지적해 주세요.
번역된 내용을 나중에 한글 FAQ 를 해당 사이트에 올려 오픈 소스 하시는 분들에게 도움이 되고 싶습니다.
번역을 도와 주신 미지님께 가슴 깊이 감사 드립니다.
GUID FAQ
### GUID를 생성하는 방법은?
GUID 란 전세계적으로 유일한 고유번호를 지정하기위한 128 비트 크기의 ID 규정으로
인텔 웹사이트에 있는 "Wired for Management WfM 2.0" 규격서에서 정의하고 있습니다.
http://www.guidgen.com 란 웹사이트에서 GUID 를 생성할 수도 있고,
마이크로소프트 비주얼 스튜디오로도 GUID 를 생성할수 있습니다.
이러한 툴로 생성된 GUID는 중복 가능성은 거의 없습니다.
### 콘솔에 표시된 모든 GUID를 어떻게 디코드합니까?
빌드 과정에서 GUID.xref 파일이 생성되며, 빌드 결과 디렉토리에 있습니다.
이렇게 생성된 GUID.xref 파일은 모든 GUID와 각 GUID와 관련된 모듈을 나열합니다.
GUID를 디코드하는 다른 방법은 워크스페이스에서 검색 유틸리티를 사용하여
DEC 와 INF 파일을 검색하는 것입니다.
DEC 파일은 GUID 값들 간에 매핑된 모든 프로토콜 과 PPI,GUID
그리고 C 소스에서 사용되는 글로벌 변수에 대한 C 네임 선언을 포함합니다.
FILE GUID 를 포함한 INF 파일은 FV에 저장된 FFS 파일의 GUID 이름에 대해 정의합니다.
DEC 예
----------------------------------------------------------------------------------
Guid specify the device is the console out device.
Include/Guid/ConsoleOutDevice.
hgEfiConsoleOutDeviceGuid = { 0xD3B36F2C, 0xD551, 0x11D4,
{ 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }
[Protocols]
Load File protocol provides capability to load
and unload EFI image into memory and execute it.
Include/Protocol/LoadPe32Image.h
This protocol is deprecated.
Native EDKII module should NOT use this protocol to load/unload image.
If developer need implement such functionality,
they should use BasePeCoffLib.
gEfiLoadPeImageProtocolGuid = { 0x5CB5C776, 0x60D5, 0x45EE,
{ 0x88, 0x3C, 0x45, 0x27, 0x08, 0xCD, 0x74, 0x3F }
----------------------------------------------------------------------------------
INF 예
----------------------------------------------------------------------------------
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = DiskIoDxe
FILE_GUID = 6B38F7B4-AD98-40e9-9093-ACA2B5A253C4
MODULE_TYPE = UEFI_DRIVER
VERSION_STRING = 1.0
ENTRY_POINT = InitializeDiskIo
----------------------------------------------------------------------------------
### 커스터머가 정의한 GUID 와 규격서에 정의된 GUID를 디코드하는 쉬운 방법이 있습니까?
아직까지 질문하신 것을 관리할 수 있는 툴은 없습니다.
이런 관리 툴을 요청해 보세요
지금으로서는 Guid.xref 파일을 이용하여 스프레드 시트로 가져와서
규격서에 있는 GUID와 비교하는 방법이 있습니다.
소스 코드에 있는 프로토콜, PPI 와 GUID 를 사용한 GUID는
DEC 파일에 반드시 명기되어 있어야 합니다.
DEC 파일은 GUID 를 위해 코멘트(주석) 블록을 사용할 수 있고,
프로토콜, PPI 와 GUID 를 위한 간단한 설명을 넣을 수 있습니다.
산업 표준 규격에 근거한 모든 GUID 는 MdePkg 에 있고,
MdePkg 에 대한 문서를 만들수 있는 Doxygen 에도 있습니다.
각 Protocol/PPI/GUID 에 대한 전체 .h 파일은
Protocol/PPI/GUID 를 정의한 DEC 파일처럼 같은 패키지에 있어야 합니다.
UDK 2010에 포함된 일부 패키지는 인클루드 파일 구성에 대한 권장 사항을 따르고 있기 때문에,
Protocol/PPI/GUID 과 관련된 .h 파일을 찾아 보는 것은 좋습니다.
<PackageName>\
<PackageName>.dec
Include\
Protocol\
<Protocol1.h>
<Protocol2.h>
Ppi\
<Ppi1.h>
<Ppi2.h>
Guid\
<Guid1.h>
<Guid2.h>
### 프로토콜 드라이버에 대한 GUID 체인을 추적하는 툴이 있습니까?
빌드 도구는 xref 파일을 생성하는데 생성된 xref 파일은 플랫폼에 필요한 guid name 과 관련된
모든 빌드 대상이 되는 GUID 를 정의합니다.
이 과정에서 각 name 에 대한 GUID 값을 매핑합니다.
### 각 프로토콜에 대응하는 GUID 이름은 어디에서 사용되고 있습니까?
BUILD –Y 명령을 사용하여 GUID 사용처의 리포트를 만들수 있습니다.
### GUID 가 매핑하는 드라이버는 무엇이고 설치된 드라이버를 찾는 방법은 무엇입니까?
빌드 과정 중에 Guid.xref 파일이 생성되는데
이렇게 생성된 Guid.xref 파일은 모든 GUID 와 플랫폼에 빌트되는 각 GUID 와 관련된 모듈을 나열합니다.
쉘 프롬프트에서 "Drivers" 명령을 이용하면 설치된 드라이버를 리스트를 볼수 있습니다.
### 플랫폼에 설치된 모든 GUID에 대한 데이터 베이스가 있습니까?
예, 있습니다. EFI 쉘 프롬프트에서 "dh" 명령을 사용하면 GUID와 관련된 모든 핸들을 볼 수 있습니다.
빌드 과정에서 Guid.xref 파일이 빌드 결과 디렉토리에 생성됩니다.
이 파일은 모든 GUID와 각 GUID 에 관련된 모듈을 나열합니다.
### 왜 GUID를 선언하는 섹션이 FDF 파일에 있습니까?
GUID 섹션은 guid 와 관련된 부분을 정의하기 위해 사용됩니다.
GUID keyword - used for signing- compression
- encryption (encapsulation section -list of sections]
as devided in the PI Spec.
번역 : 뭐라는 거야?
### 왜 GUID를 사용합니까?
맵핑 때문인데, 압축과는 상관이 없습니다.
툴들이 실행될 때 상호 참조가 되는 GUID 는 conf 디렉토리에 있는 tools_def.txt 를 사용합니다.