{"id":864,"date":"2025-02-03T13:22:56","date_gmt":"2025-02-03T04:22:56","guid":{"rendered":"https:\/\/txn.myds.me\/blog\/?p=864"},"modified":"2025-02-03T13:22:56","modified_gmt":"2025-02-03T04:22:56","slug":"edk2-hello","status":"publish","type":"post","link":"https:\/\/blog.txn.red\/?p=864","title":{"rendered":"edk2 Hello"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u3057\u3070\u3089\u304f\u4e2d\u65ad\u3057\u3066\u3044\u305f Mikan \u672c\u95a2\u9023\u3067\u3059\u30025\u65e5\u76ee\u304f\u3089\u3044\u307e\u3067\u672c\u306b\u6cbf\u3063\u3066\u3084\u3063\u3066\u3044\u305f\u306e\u3067\u3059\u304c\u3069\u3046\u3082\u99b4\u67d3\u3081\u306a\u3044\u306e\u3067\u3084\u308a\u65b9\u3092\u5909\u3048\u308b\u3053\u3068\u306b\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u672c\u3092\u307f\u3061\u3057\u308b\u3079\u306b\u3057\u3064\u3064\u3082\u74b0\u5883\u69cb\u7bc9\u304b\u3089\u52dd\u624b\u306b\u884c\u3044\u3001\u597d\u304d\u306b\u66f8\u3044\u3066\u3044\u304f\u307b\u3046\u304c\u308f\u304b\u308a\u3084\u3059\u3044\u306e\u3067\u306f\uff1f\u3068\u601d\u3044\u3084\u3063\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305a\u306f edk2 Hello world \u304b\u3089<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%25e4%25ba%258b%25e5%2589%258d%25e6%25ba%2596%25e5%2582%2599\">\u4e8b\u524d\u6e96\u5099<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">edk2 \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u4e88\u3081 BaseTools \u3092\u30d3\u30eb\u30c9\u3057\u3066\u304a\u304f\u3053\u3068\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BaseTools \u306b build \u30b9\u30af\u30ea\u30d7\u30c8\u304c\u542b\u307e\u308c\u308b\u306e\u3067\u3053\u308c\u3092\u3057\u3068\u304b\u306a\u3044\u3068\u30d3\u30eb\u30c9\u304c\u3067\u304d\u306a\u3044\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%25e3%2583%2584%25e3%2583%25aa%25e3%2583%25bc%25e6%25a7%258b%25e9%2580%25a0\">\u30c4\u30ea\u30fc\u69cb\u9020<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u3064\u304f\u308b HelloPkg \u306f\u6700\u7d42\u7684\u306b\u3053\u3046\u3044\u3046\u611f\u3058\u3067\u914d\u7f6e\u3057\u3066\u3044\u307e\u3059\u3002edk2 \u30d5\u30a9\u30eb\u30c0\u306f git clone \u3057\u305f\u6642\u306b\u3067\u304d\u305f\u30d5\u30a9\u30eb\u30c0\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30eb\u30fc\u30c8\n<ul class=\"wp-block-list\">\n<li>edk2 \u30d5\u30a9\u30eb\u30c0\n<ul class=\"wp-block-list\">\n<li>Build<\/li>\n\n\n\n<li>HelloPkg &lt;&lt; \u4eca\u56de\u4f5c\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\n<ul class=\"wp-block-list\">\n<li>In\uff43lude<\/li>\n\n\n\n<li>Library<\/li>\n\n\n\n<li>Main.c<\/li>\n\n\n\n<li>Hello.inf<\/li>\n\n\n\n<li>HelloPkg.dec<\/li>\n\n\n\n<li>HelloPkg.dsc<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"%25e3%2582%25b3%25e3%2583%25bc%25e3%2583%2589\">\u30b3\u30fc\u30c9<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Claude \u306b\u805e\u304f\u3068\u4e0a\u8a18\u306e\u5404\u30a2\u30a4\u30c6\u30e0\u3092\u4f5c\u308c\u3068\u8a00\u308f\u308b\u306e\u3067\u4f5c\u3063\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>$ cd edk2\n$ mkdir Include Library\n$ touch Main.c Hello.inf HelloPkg.dec Hello.Pkg.dsc<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u5404\u30d5\u30a1\u30a4\u30eb\u306f\u3053\u3093\u306a\u611f\u3058\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u521d\u306f\u3001C \u30bd\u30fc\u30b9\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-c\" data-file=\"Main.c\" data-lang=\"C\"><code>#include &lt;Uefi.h&gt;\n#include &lt;Library\/UefiLib.h&gt;\n#include &lt;Library\/UefiApplicationEntryPoint.h&gt;\n\nEFI_STATUS\nEFIAPI\nUefiMain(\n    IN EFI_HANDLE       ImageHandle,\n    IN EFI_SYSTEM_TABLE *SystemTable\n)\n{\n    Print(L&quot;Hello edk2\\n&quot;);\n    return EFI_SUCCESS;\n}\n<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">UefiMain \u306f\u306a\u3093\u306b\u3082\u3057\u3066\u3044\u306a\u3044\u306e\u3067\u6975\u3081\u3066\u30b7\u30f3\u30d7\u30eb\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b21\u306f\u3001 HelloPkg.dec \u3067\u3059\u3002<br>\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5f79\u5272\u306f\u3088\u304f\u308f\u304b\u3063\u3066\u3044\u307e\u305b\u3093\u304c\u4eca\u306e\u6240\u3001\u3042\u307e\u308a\u66f8\u304f\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>[Defines]\nDEC_SPECIFICATION = 0x00010005\nPACKAGE_NAME      = HelloPkg\nPACKAGE_GUID      = 25d16f8a-7fb0-467d-a13d-97c83f2a84a4\nPACKAGE_VERSION   = 0.1\n\n\n[Includes]\nInclude\n\n[Guids]\n\n[Protocols]\n\n[PcdsFixedAtBuild]<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">DEC_SPECIFICATION \u306f edk2 \u306e\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b DEC \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u3059\u3002<br>PACKAGE_GUID \u306f uuidgen \u306a\u3069\u3067\u751f\u6210\u3057\u305f\u5024\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">edk2 \u3067\u306f\u3061\u3087\u304f\u3061\u3087\u304f GUID \u3092\u6307\u5b9a\u3059\u308b\u5834\u9762\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u305d\u306e\u90fd\u5ea6 uuidgen \u306a\u3069\u3067\u751f\u6210\u3057\u3066\u30b3\u30d4\u30da\u3057\u3066\u3084\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HelloPkg.dsc \u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>[Defines]\nPLATFORM_NAME               = HelloPkg\nPLATFORM_GUID               = 46fcca5f-7fe2-4cd7-83e4-f0b535d60410\nPLATFORM_VERSION            = 0.1\nDSC_SPECIFICATION           = 0x00010005\nOUTPUT_DIRECTORY            = Build\/HelloPkg\nSUPPORTED_ARCHITECTURES     = X64\nBUILD_TARGETS               = DEBUG|RELEASE|NOOPT\nSKUID_IDENTIFIER            = DEFAULT\n\n[LibraryClasses]\nUefiApplicationEntryPoint|MdePkg\/Library\/UefiApplicationEntryPoint\/UefiApplicationEntryPoint.inf\nUefiLib|MdePkg\/Library\/UefiLib\/UefiLib.inf\n\n# dependencies\nBaseLib|MdePkg\/Library\/BaseLib\/BaseLib.inf\nBaseMemoryLib|MdePkg\/Library\/BaseMemoryLib\/BaseMemoryLib.inf\nDebugLib|MdePkg\/Library\/BaseDebugLibNull\/BaseDebugLibNull.inf\nDevicePathLib|MdePkg\/Library\/UefiDevicePathLib\/UefiDevicePathLib.inf\nMemoryAllocationLib|MdePkg\/Library\/UefiMemoryAllocationLib\/UefiMemoryAllocationLib.inf\nPcdLib|MdePkg\/Library\/BasePcdLibNull\/BasePcdLibNull.inf\nPrintLib|MdePkg\/Library\/BasePrintLib\/BasePrintLib.inf\nRegisterFilterLib|MdePkg\/Library\/RegisterFilterLibNull\/RegisterFilterLibNull.inf\nUefiBootServicesTableLib|MdePkg\/Library\/UefiBootServicesTableLib\/UefiBootServicesTableLib.inf\nUefiRuntimeServicesTableLib|MdePkg\/Library\/UefiRuntimeServicesTableLib\/UefiRuntimeServicesTableLib.inf\n\n[Components]\nHelloPkg\/Hello.inf<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u7a0b\u3068\u7570\u306a\u308a\u7d50\u69cb\u66f8\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3069\u3046\u3084\u3089\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u8a18\u8ff0\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u540d\u3092\u983c\u308a\u306b\u30d3\u30eb\u30c9\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u89e3\u6c7a\u3057\u3066\u3044\u304f\u3088\u3046\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u306e\u4ed5\u7d44\u307f\u3068 source edksetup.sh \u3092\u4f7f\u3063\u3066\u3001Main.c \u3067\u7a81\u7136\u51fa\u3066\u304d\u305f Uefi.h \u3068\u304b\u3092\u53c2\u7167\u3057\u3001\u30ea\u30f3\u30af\u3059\u308b\u3063\u3066\u3053\u3068\u3092\u3057\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u521d [LibraryClasses] \u306b\u306f UefiApplicationEntryPoint \u3068 UefiLibMdePkg \u306e2\u884c\u3057\u304b\u8a18\u8ff0\u3057\u3066\u3044\u306a\u304b\u3063\u305f\u306e\u3067\u3059\u304c\u3001\u305d\u308c\u3060\u3068 edk2 \u306e build \u30b3\u30de\u30f3\u30c9\u3067\u30d3\u30eb\u30c9\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u304d\u307e\u3059\u3002<br>\u4f8b\u3048\u3070\u3001 BaseLibMdePkg \u304c\u898b\u3064\u304b\u3089\u306a\u3044\u3088\u3068\u304b\u8a00\u3063\u3066\u304d\u307e\u3059\u3002\u76f4\u3057\u3066\u306f\u30d3\u30eb\u30c9\u3092\u7e70\u308a\u8fd4\u3057\u3066\u3044\u304f\u3046\u3061\u306b\u3053\u3046\u3044\u3046\u3075\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002\u7d50\u5c40 Mikan \u672c\u306e[LibraryClasses] \u3068\u307b\u307c\u540c\u3058\u611f\u3058\u306b\u306a\u3063\u305f\u306f\u305a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hello.inf \u3067\u3059<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>[Defines]\nINF_VERSION     = 0x00010005\nBASE_NAME       = HelloApp\nFILE_GUID       = 2bbb1fb0-95b5-4b59-a98c-15093d771b11\nMODULE_TYPE     = UEFI_APPLICATION\nVERSION_STRING  = 0.1\nENTRY_POINT     = UefiMain\n\n[Sources]\nMain.c\n\n[Packages]\nMdePkg\/MdePkg.dec\nHelloPkg\/HelloPkg.dec\n\n[LibraryClasses]\nUefiLib\nUefiApplicationEntryPoint<\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d3\u30eb\u30c9\u3059\u308b\u3068 BASE_NAME \u304c\u5f15\u304d\u7d99\u304c\u308c\u3066 HelloApp.efi \u304c\u4f5c\u6210\u3055\u308c\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30d3\u30eb\u30c9\u7d50\u679c\u306f edk2\/Build\/HelloPkg\/DEBUG_CLANGDWARF\/X64 \u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u5b58\u5148\u306e\u30d5\u30a9\u30eb\u30c0\u306f build \u30b3\u30de\u30f3\u30c9\u306b\u5f15\u6570\u3092\u6e21\u3055\u306a\u3051\u308c\u3070\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DEBUG_CLANGDWARF \u306f\u3001edk2\/Conf \u306etarget.txt \u306e TARGET= \u3068 TOOL_CHAIN_TAG= \u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u3082\u306e\u306b\u306a\u308a\u307e\u3059\u3002GCC \u3092\u4f7f\u3063\u3066\u3044\u308c\u3070 DEBUG_GCC \u3068\u304b\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">X64 \u306e\u90e8\u5206\u3082\u540c\u3058\u3088\u3046\u306b target.txt \u306e TARGET_ARCHI= \u306e\u5024\u304c\u6765\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">build -t CLANGDWARF \u3068\u304b\u3059\u308b\u3068 target.txt \u306e\u5185\u5bb9\u3092\u7121\u8996\u3057\u3066\u6307\u5b9a\u306e\u5185\u5bb9\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9577\u304f\u306a\u3063\u305f\u306e\u3067 QEMU \u3067\u306e\u5b9f\u884c\u306f\u6b21\u306e\u8a18\u4e8b\u306b\u3057\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3057\u3070\u3089\u304f\u4e2d\u65ad\u3057\u3066\u3044\u305f Mikan \u672c\u95a2\u9023\u3067\u3059\u30025\u65e5\u76ee\u304f\u3089\u3044\u307e\u3067\u672c\u306b\u6cbf\u3063\u3066\u3084\u3063\u3066\u3044\u305f\u306e\u3067\u3059\u304c\u3069\u3046\u3082\u99b4\u67d3\u3081\u306a\u3044\u306e\u3067\u3084\u308a\u65b9\u3092\u5909\u3048\u308b\u3053\u3068\u306b\u3057\u305f\u3002 \u672c\u3092\u307f\u3061\u3057\u308b\u3079\u306b\u3057\u3064\u3064\u3082\u74b0\u5883\u69cb\u7bc9\u304b\u3089\u52dd\u624b\u306b\u884c\u3044\u3001\u597d\u304d\u306b\u66f8\u3044\u3066\u3044\u304f\u307b\u3046\u304c\u308f\u304b\u308a\u3084\u3059\u3044 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[9],"tags":[10],"class_list":["post-864","post","type-post","status-publish","format-standard","hentry","category-dev","tag-mikan"],"_links":{"self":[{"href":"https:\/\/blog.txn.red\/index.php?rest_route=\/wp\/v2\/posts\/864","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.txn.red\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.txn.red\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.txn.red\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.txn.red\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=864"}],"version-history":[{"count":0,"href":"https:\/\/blog.txn.red\/index.php?rest_route=\/wp\/v2\/posts\/864\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.txn.red\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.txn.red\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.txn.red\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}