Slide 1

Slide 1 text

PLAY WITH UEFI @syuu1228

Slide 2

Slide 2 text

UEFI࢖ͬͨ͜ͱ͋Δਓɹϊ

Slide 3

Slide 3 text

UEFI APPLICATIONॻ͍ͨ͜ͱ ͋Δਓɹϊ

Slide 4

Slide 4 text

ࠓ೔͸؆୯ͳUEFI APPLICATIONΛ ॻ͍ͯ༡ΜͰΈΑ͏ͱ͍͏࿩Ͱ͢

Slide 5

Slide 5 text

UEFIͱ͸Կ͔ʁ • 90೥୅ʹIntelͱHPʹΑΓ։ൃ͞ΕͨɺIA32/IA64ڞ௨ͷϒʔτγεςϜ • PCʹґવͱͯ͠࢒ΔϨΨγʔͳ࢓૊ΈͰ͋ΔBIOSΛஔ͖׵͑ • CPUඇґଘͳΞʔΩςΫνϟ • CPUඇґଘͳυϥΠό • 128partitionɾover 2TBͷσΟεΫΛαϙʔτ͢ΔGPTΛ࠾༻ • ωοτϫʔΫରԠͳͲͷଟ࠼ͳػೳʹରԠ • ϞδϡϥʔܕͷσβΠϯ • ߴ଎ىಈʹ΋د༩

Slide 6

Slide 6 text

(U)EFIͷྺ࢙̍ • 1990೥୅ʹIntelɾHP͕IA64ΞʔΩςΫνϟΛઃܭͨ࣌͠ ʹɺIA32/IA64྆ํͰ࢖͑ΔϑΝʔϜ΢ΣΞ࢓༷Λ࡞ͬͨ ͷ͕࢝·Γ • IA64Ͱ͸ͦΕ͔͠ͳ͍ͷͰ࢖ΘΕ͍͕ͯͨɺIA32Ͱ͸޿ ·Βͣ • ྫ֎ɿ2006೥ʹϦϦʔε͞ΕͨIntel Mac͸EFI 1.10Λϕʔε ʹͨ͠ಠࣗϑΝʔϜ΢ΣΞΛ࠾༻

Slide 7

Slide 7 text

(U)EFIͷྺ࢙̎ • EFI specification͸Intel͔ΒUnified EFI Forum΁Ҡ؅
 ˠن໊͕֨UEFIʹɾ2.xܥ͕ϦϦʔε • 2009೥ࠒ͔Β2TBͷน͕໰୊ࢹ͞Ε࢝ΊɺUEFI౥ࡌPC ͕ීٴ͠͸͡ΊΔɾOS΋ඪ४ରԠ΁ • ී௨ʹͦͷลͷϤ˓όγͰUEFIରԠػങ͑ΔΑ͏ʹˡ ΠϚίίʂ

Slide 8

Slide 8 text

MBRͱ2TBͷน • MBRͷύʔςΟʔγϣϯςʔϒϧͰ͸ɺ։࢝ηΫλ஋ͱηΫλ਺ ͕32bit(4G sectors) • 4G sectors * 512byte = 2TB! • ύʔςΟʔγϣϯςʔϒϧม͑Δ͔ηΫλαΠζม͑Δ͔͠ͳ͍ ˠޓ׵ੑແ͘ͳΔ • όουϊ΢ϋ΢Ͱճආग़དྷͳ͍͜ͱ΋ແ͍͚Ͳ… • ΋͏͠ΜͲ͍͠GPTΛલఏͱ͍ͯ͠ΔUEFIʹҠߦ͠Α͏Α

Slide 9

Slide 9 text

MBRͱGPTͷൺֱ • MBRͰ͸ύʔςΟʔγϣϯɿ4ݸˠ128ݸ • ηΫλΞυϨε௕ɿ32bit→64bit • ύʔςΟʔγϣϯλΠϓɿ1byte→16byte GUID • ϒʔτϑϥάɿ1byte→ଐੑϑϥάɿ8bytes • ύʔςΟʔγϣϯ໊ɿ72bytes UTF-16 • όοΫΞοϓͷύʔςΟʔγϣϯςʔϒϧྖҬ

Slide 10

Slide 10 text

GPT

Slide 11

Slide 11 text

GPT ύʔςΟγϣϯΤϯτϦ

Slide 12

Slide 12 text

UEFIͷݟͨ໨ • ී௨ͷBIOSΈ͍ͨͳىಈը໘Ͱ͋Δࣄ͕ଟ͍ • σϑΥϧτઃఆͰOS͕ࣗಈతʹϒʔτ͞ΕΔݶΓɺಛʹBIOSϒʔ τͱͷݟͨ໨্ͷҧ͍͸ͳ͍ • ୠ͠ɺΑ͘ݟΔͱશવҧ͏ɿ • Boot Managerͱ͍͏GRUBͷϒʔτϝχϡʔͷΑ͏ͳ΋ͷ͕͋Δ • UEFI Shellͱ͍͏ίϚϯυϓϩϯϓτͷΑ͏ͳγΣϧ͕͋Δ

Slide 13

Slide 13 text

ϝΠϯϝχϡʔ

Slide 14

Slide 14 text

BOOT MANAGER ϒʔτ߲໨ͷબ୒ը໘ɻ
 OS͸ࣗ෼ͷϒʔτϩʔμΛ͜͜ʹొ࿥͢Δ

Slide 15

Slide 15 text

BOOT MAINTENANCE MANAGER ϝχϡʔͷฤूɺϩʔυ͢ΔυϥΠόͷࢦ ఆɺ೚ҙͷϑΝΠϧͷ࣮ߦͳͲ

Slide 16

Slide 16 text

UEFI SHELL ίϚϯυϓϩϯϓτ෩ͷγΣϧ
 ೚ҙͷOSىಈͳͲʹ࢖༻

Slide 17

Slide 17 text

GRUB2 FOR UEFI

Slide 18

Slide 18 text

UEFI͔Βͷϒʔτ BootManagerͷઃఆ஋͕σϑΥϧτͷ৔߹ • UEFI͕HDDΛݕग़ɺGPTΛϩʔυ • EFI System PartitionΛݕࡧ • \EFI\BOOT\BOOTX64.EFIΛϩʔυ
 ʢ32bit؀ڥͳΒBOOTX86.EFIʣ

Slide 19

Slide 19 text

EFI SYSTEM PARTITION • ύʔςΟʔγϣϯλΠϓGUID͕EFI System Partitionͳ FATϑΝΠϧγεςϜ • GPTʹϒʔτηΫλ͸ແ͍ • ͔͜͜ΒUEFIΞϓϦέʔγϣϯΛϩʔυ͢ΔࣄʹΑΓ ىಈ

Slide 20

Slide 20 text

UEFI APPLICATION • 64bit protected modeͷPEόΠφϦ
 ʢUEFI͕x64൛ͷ৔߹ʣ • ֦ுࢠɿ.EFI • UEFI APIΛར༻֤ͯ͠छॲཧΛ࣮૷

Slide 21

Slide 21 text

UEFI͔Βͷϒʔτ ݫີʹ͸Ͳ͏ͳ͍ͬͯΔ͔ ҎԼͷΑ͏ͳUEFI NVRAM variablesʹΑΓىಈॲཧ੍͕ޚ͞ΕΔ • Boot####ɿϩʔυ͢ΔUEFI applicationͷPATHɾ
 ຢ͸σΟεΫͷσόΠεPATH • BootOrderɿBoot####ͷࢼߦॱংʢ഑ྻͰࢦఆʣ • BootNextɿ࣍ճىಈ࣌ʹϩʔυ͢ΔBoot####ʢBootOrderΑΓ༏ ઌɺҰ౓ىಈ͢Δͱ࡟আʣ • Timeoutɿઃఆඵ਺͚ͩBoot MenuΛදࣔʢࣗಈىಈΛ஗Ԇʣ

Slide 22

Slide 22 text

ઃఆྫ • ىಈ·Ͱ10ඵ଴ͭ • ubuntu→HDD→CDROM→Network→ShellͷॱͰࢼߦ • ϑΝΠϧࢦఆ͕ͳ͍υϥΠϒ͸EFI System Partitionͷ\EFI\BOOT\BOOTX64.EFIΛ୳ ࡧ

Slide 23

Slide 23 text

EFIBOOTMGR • efibootmgrͰϒʔτϝχϡʔΛฤू • Χʔωϧ͸/sys/firmware/efi/vars/ɾ/sys/firmware/efi/efivars/ܦ༝ͰUEFI NVRAM variables΁ͷϢʔβϥϯυ͔ΒͷΞΫηεΛڐՄ͍ͯ͠Δ

Slide 24

Slide 24 text

/SYS/FIRMWARE/EFI/EFIVARS syuu@ubuntu:~$ ls /sys/firmware/efi/efivars
 Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c
 Boot0001-8be4df61-93ca-11d2-aa0d-00e098032b8c
 Boot0002-8be4df61-93ca-11d2-aa0d-00e098032b8c
 Boot0003-8be4df61-93ca-11d2-aa0d-00e098032b8c
 Boot0004-8be4df61-93ca-11d2-aa0d-00e098032b8c
 BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c
 … $ sudo cat /sys/firmware/efi/efivars/ Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c 
 @EFI VMware Virtual SCSI Hard Drive (0.0)
 ?A
 ?

Slide 25

Slide 25 text

UEFIͷ಺෦ߏ଄ PEI CPU init Chipset init Board init DXE Load drivers %FWJDF %SJWFST Boot Manager 4FSWJDFT UEFI Apps UEFI Bootl oader UEFI APIs OS Load UEFI apps UEFI specification PI specification

Slide 26

Slide 26 text

UEFIͷ಺෦ߏ଄ PEI CPU init Chipset init Board init DXE Load drivers %FWJDF %SJWFST Boot Manager 4FSWJDFT UEFI Apps UEFI Bootl oader UEFI APIs OS Load UEFI apps UEFI specification PI specification ࠓ೔͸͜͜Λݟ͍͖ͯ·͢

Slide 27

Slide 27 text

UEFI APPLICATIONͷछྨ • ೋछྨͷUEFI Application • ௨ৗͷUEFI Applicationɿऴྃ࣌ʹExit()Λίʔϧ͠ɺ UEFI ShellͳͲʹ੍ޚΛ໭͢ • OS Loaderɿऴྃ࣌ʹExitBootServices()Λίʔϧ͠ɺ UEFI͕ར༻͍ͯͨ͠ࢿݯΛ։์੍ͯ͠ޚΛOS΁Ҡ͢

Slide 28

Slide 28 text

MAIN() IN UEFI APPLICATION EFI_STATUS HelloMain ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable) ! Ҿ਺͸̎ݸʢImageHandleɺSystemTableʣ ImageHandle͸ϩʔυ͞ΕͨUEFI ApplicationͷΠϝʔδϑΝΠϧʹର͢Δϋϯυϧ SystemTableΛܦ༝ͯ͠શͯͷUEFI API΁ΞΫηε

Slide 29

Slide 29 text

UEFI SYSTEM TABLE UEFI Applicationʹରͯ͠ެ։͢ΔΠϯλϑΣʔε͕શͯ ٧Ίࠐ·Εͨߏ଄ମ 80 June 27, 2012 Version 2.3.1, Errata C #define EFI_2_30_SYSTEM_TABLE_REVISION ((2<<16) | (30)) #define EFI_2_20_SYSTEM_TABLE_REVISION ((2<<16) | (20)) #define EFI_2_10_SYSTEM_TABLE_REVISION ((2<<16) | (10)) #define EFI_2_00_SYSTEM_TABLE_REVISION ((2<<16) | (00)) #define EFI_1_10_SYSTEM_TABLE_REVISION ((1<<16) | (10)) #define EFI_1_02_SYSTEM_TABLE_REVISION ((1<<16) | (02)) #define EFI_SYSTEM_TABLE_REVISION EFI_2_30_SYSTEM_TABLE_REVISION #define EFI_SPECIFICATION_VERSION EFI_SYSTEM_TABLE_REVISION #define EFI_SYSTEM_TABLE_REVISION EFI_2_31_SYSTEM_TABLE_REVISION typedef struct { EFI_TABLE_HEADER Hdr; CHAR16 *FirmwareVendor; UINT32 FirmwareRevision; EFI_HANDLE ConsoleInHandle; EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn; EFI_HANDLE ConsoleOutHandle; EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut; EFI System Table EFI_HANDLE StandardErrorHandle; EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr; EFI_RUNTIME_SERVICES *RuntimeServices; EFI_BOOT_SERVICES *BootServices; UINTN NumberOfTableEntries; EFI_CONFIGURATION_TABLE *ConfigurationTable; } EFI_SYSTEM_TABLE; Parameters Hdr The table header for the EFI System Table. This header contains the EFI_SYSTEM_TABLE_SIGNATURE and EFI_SYSTEM_TABLE_REVISION values along with the size of the EFI_SYSTEM_TABLE structure and a 32-bit CRC to verify that the contents of the EFI System Table are valid. FirmwareVendor A pointer to a null terminated string that identifies the vendor that produces the system firmware for the platform.

Slide 30

Slide 30 text

CONOUT, CONIN, STDERR #include #include EFI_STATUS EFIAPI UefiMain (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable) { SystemTable->ConOut->OutputString(SystemTable->ConOut, L"Hello World\r\n"); return EFI_SUCCESS; } •ίϯιʔϧ΁ͷೖग़ྗAPI •จࣈΤϯίʔσΟϯά͸UTF-16Λ࢖༻

Slide 31

Slide 31 text

RUNTIME SERVICES • ExitBootServices()ޙ΋UEFI͕OSʹରͯ͠ఏڙ͢ΔαʔϏε • ࠷௿ݶͷػೳͷΈ • Time (GetTime, SetTime...) • Virtual Memory (SetirtualAddressMap...) • Variable Services (GetVariable...) • Miscellaneous Services(ResetSystem...)

Slide 32

Slide 32 text

BOOT SERVICES • ExitBootServices()·ͰUEFI Applicationʹఏڙ͢ΔαʔϏε • Task Priority Services (RaiseTPL...) • Memory Services (AllocatePages...) • Event & Timer Services (CreateEvent, SetTimer...) • Protocol Handler Services (HandleProtocol...) • Image Services (LoadImage, StartImage...) • Miscellaneous Services (Stall, CopyMem...) • Open and Close Protocol Services (OpenProtocol...) • Library Services (LocateProtocol...) • 32bit CRC Services (CalculateCrc32...)

Slide 33

Slide 33 text

PROCOTOLS • ωοτϫʔΫϓϩτίϧελοΫͷ͜ͱͰ͸ͳ͍ • UEFI্Ͱఏڙ͞ΕΔ༷ʑͳαʔϏεͷࣄ • UEFI DriverΛ࣮૷͠UEFI΁ϩʔυ͢ΔࣄʹΑΓɺࣗ࡞ ͷProtocolΛఏڙ͢Δࣄ΋Մೳ

Slide 34

Slide 34 text

ఆٛ͞Ε͍ͯΔPROTOCOL • EFI Loaded Image • Device Path Protocol • UEFI Driver Model • Console Support • Media Access • PCI Bus Support • SCSI Driver Models and Bus Support • iSCSI Boot • USB Support • Debugger Support • Compression Algorithm • ACPI Protocols • TCP/IP, IPSec, FTP • ARP & DHCP • UDP & MTFTP • etc...

Slide 35

Slide 35 text

PROTOCOLར༻ྫ #define EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID \ { \ 0x964e5b22, 0x6459, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} \ } EFI_GUID gEfiSimpleFileSystemProtocolGuid = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID; EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Vol; EFI_FILE_HANDLE Root; EFI_FILE_HANDLE CurDir; EFI_FILE_HANDLE FileHandle; CHAR16 *FileName = L”hoge.txt”; ! gBS->HandleProtocol ( DeviceHandle, &gEfiSimpleFileSystemProtocolGuid, &Vol ); ! Vol->OpenVolume (Vol, &Root); ! CurDir->Open ( CurDir, &FileHandle, FileName, EFI_FILE_MODE_READ, 0 ); •ProtocolͷHandleΛܦ༝ͯ͠APIίʔϧ

Slide 36

Slide 36 text

Α͘ΈΔͱ • ͖ͬ͞ग़͖ͯͨConOutͱ͔΋Protocol • HandleProtocolͱ͔͠ͳͯ͘΋͙͢ݺ΂ΔΑ͏ʹ SystemTableʹϙΠϯλ͕࠷ॳ͔Β༻ҙ͞ΕͯΔ͚ͩ

Slide 37

Slide 37 text

UEFIͷSDK • EDK IIɿΦʔϓϯιʔεͰ։ൃ͞Ε͍ͯΔUEFI࣮૷ͰɺσϑΝΫτελϯμʔυ
 άά͙ͬͯ͢ग़ͯ͘Δͷ͸͜Εɻ
 ୠ͠ɺϏϧυํ๏ͷυΩϡϝϯτΛΑ͘ݟΔͱtrunkΛνΣοΫΞ΢τ͍ͯ͠Δɻ
 ͦͯ͠ɺtrunkͩͱ৭ʑͱ஍ཕ͕͋ͬͯසൟʹ౿Ή… • UDK2010ɿIntel͕࡞͍ͬͯΔEDK IIͷstableϦϦʔεɻ
 ஍ཕΛ౿Έͨ͘ͳ͔ͬͨΒͬͪ͜Λ࢖ͬͨ΄͏͕ྑ͍ͷ͕ͩɺEDK IIʹ͔͠ແ͍ػೳ΋ ৭ʑͱଘࡏɻ • gnu-efiɿEDK II͸UEFIϑΝʔϜ΢ΣΞͷιʔείʔυΛશؚͯΜͰ͍Δ͕ɺͪ͜Β͸UEFI ApplicationΛ࣮૷͢ΔͨΊ͚ͩͷLightweightͳ࣮૷ɻ
 γϯϓϧ؆୯͓खܰͰී௨ͷMakefile΋࢖͑Δ͠ɺLinux΍OSXϢʔβʹͱͬͯ͸ͬͪ͜ͷ ํ͕࢖͍΍ͦ͢͏ɻɹ…͕ͩɺ͜ΕͰ΋৭ʑͱ౿Μͩ…

Slide 38

Slide 38 text

OVMF FOR QEMU/KVM • EDK II্ͰϏϧυͰ͖ΔQEMUɾKVM༻ͷUEFI࣮૷ • ίϚϯυҰൃͰϏϧυˍ࣮ߦ·Ͱ؆୯ʹग़དྷΔ • QEMUͰdebugconΛ༗ޮʹ͢ΔͱUEFI͔Βͷσόοάग़ྗ͕ಘΒΕΔ • γϦΞϧίϯιʔϧΛ༗ޮʹ͢ΔͱVGAଆͱಉ౳ͷग़ྗ͕ಘΒΕΔ • ͪΐͬͱઃఆ͢Ε͹gdb΋ܨ͕Δ͸ͣ • stable൛͡Όͳ͍ͷ͕ܹ͘͠ؾʹͳΔ͚ͲͦΜͳ΋Μଘࡏ͠ͳ͍ͷͰݟͳ ͔ͬͨ͜ͱʹ͢Δ͔͠…

Slide 39

Slide 39 text

EDK IIʹ͔͠ͳ͍΋ͷ • ͜͜·Ͱݟ͖ͯͨΑ͏ʹɺUEFIͷAPI͸ඪ४CͷAPIͱޓ׵ ੑ͕ͳ͍ • ௨ৗͷOSͰಈ࡞͍ͯ͠ΔΞϓϦέʔγϣϯΛҠ২͢Δͷ ͕໘౗ • libcͱPOSIX APIͷҰ෦ͱBSD SocketΛҠ২ͯ͠͠·͑ʂ
 ˠPythonҠ২Ͱ͖ͪΌ͍·ͨ͠
 ˠmruby΋Ҡ২Ͱ͖ͪΌ͍·ͨ͠

Slide 40

Slide 40 text

EDK II࢖ͬͯTWITTERΫϥΠΞ ϯτΛҠ২ͯ͠Έͨ • ૊ΈࠐΈͱ͔Ͱ࢖͍΍ͦ͢͏ͳPureC࣮૷ͷTwitterΫϥ ΠΞϯτʮTwitter4CʯΛར༻
 https://github.com/Plemling138/Twitter4C • Makefile͡Όͳͯ͘ಠࣗܗࣜͷ.infͱ͍͏ϏϧυεΫϦϓ τΛఆٛ • μϝͦ͏ͳͱ͜ΖΛҰͭͮͭ௵ͯ͠ߦͬͨΒಈ͍ͨ
 https://gist.github.com/syuu1228/4965390

Slide 41

Slide 41 text

μϝϙΠϯτ̍ • ͜ͷϓϩάϥϜɺϝοηʔδ͕೔ຊޠͩ… if(access_token == NULL) { //ϦΫΤεττʔΫϯऔಘ if(errcode = Twitter_GetRequestToken(c, r), errcode < 0) { - printf("ϦΫΤεττʔΫϯͷऔಘͰΤϥʔ͕ൃੜ͍ͯ͠·͢\n"); - printf("Τϥʔίʔυ:%d\n", errcode); + printf("error occured during get request token\n"); + printf("error code:%d\n", errcode); exit(0); }

Slide 42

Slide 42 text

μϝϙΠϯτ̎ • ͳΜ͔஌ΒΜ͚ͲTRUE/FALSE͕redefinedʹͳΔͷͰ +#if 0 #define TRUE 1 #define FALSE 0 +#endif

Slide 43

Slide 43 text

μϝϙΠϯτ̏ • ඍົͳܕͷζϨ //࣌ؒΛऔಘͯ͠λΠϜελϯϓͱҰҙͳ஋Ληοτ gettimeofday(&tv, NULL); - sprintf(tstamp, "%ld", tv.tv_sec); + sprintf(tstamp, "%d", tv.tv_sec); - sprintf(nonce_tmp, "%ld", tv.tv_usec); + sprintf(nonce_tmp, "%d", tv.tv_usec); base64_encode(nonce_tmp, strlen(nonce_tmp), nonce, 128); URLEncode(nonce, nonce_urlenc);

Slide 44

Slide 44 text

μϝϙΠϯτ̐ • ͳΜ͔஌ΒΜ͚ͲϦΫΤεττʔΫϯͷऔಘʹࣦഊͯ͠͠·ͬͯɺೝূͷͱ͜Ζ·Ͱߦ͚ͳ͍ • ΊΜͲ͔ͤ͐͘ΒΞΫηετʔΫϯͱ͔Ұ੾ΛιʔείʔυʹϕλຒΊࠐΈͯ͠Έͨ a->user_id = "΄͛΄͛"; a->access_token = "΄͛΄͛"; a->access_secret = "΄͛΄͛"; a->pin = "2630697";

Slide 45

Slide 45 text

ϋϚΓϙΠϯτ • X64Ͱࢼͯͨ͠ΒɺUEFI ApplicationଆͷόΠφϦͷABIʹޡΓͰ΋ ͋Δͷ͔ɺgethostbyname()͢ΔͱUEFIଆ͕ṖͷࢮΛ਱͛Δͱ͔͍ ͏൵ࢂͳ໨ʹ͋ͬͨ • άάͬͯͨΒϏϧυΦϓγϣϯม͑ͨΒಈ͍ͨͱ͔ɺIA32ͳΒߦ ͚ͨͱ͔ॻ͍ͯ͋ͬͨͷͰॱʹࢼͨ͠
 Re: [edk2] OVMF x64 - CR has Bad Signatureɿhttp://bit.ly/Yi3N8Y • ϏϧυΦϓγϣϯม͑ͯ΋μϝͩͬͨͷͰɺIA32ʹͨ͠ʢ͜Εͩ ͱ࣮ػͷUEFI͸X64ͳͷͰࠔΔΜ͕ͩɻɻɻɻ

Slide 46

Slide 46 text

πΠʔτͰ͖ͨʂ • OSΛىಈ͠ͳͯ͘΋πΠʔτग़དྷΔ
 ͦ͏ɺUEFIͳΒͶ • ΋ͬͱؤுΕ͹Python΍mrubyܦ༝Ͱ΋πΠʔτग़དྷ Δ͸ͣ

Slide 47

Slide 47 text

·ͱΊ • UEFIͳΒϦΞϧϞʔυͷΞηϯϒϦΰϦΰϦॻ͍ͨ ΓɺαΠζʹ೰ΜͩΓ͠ͳ͍Ͱ΋ؾܰʹCͰOSϨε؀ ڥ޲͚ͷϓϩάϥϜΛॻ͘͜ͱ͕ग़དྷ·͢ • EDK IIΛ࢖͑͹ඪ४C APIΛ࢖ͬͯϓϩάϥϛϯάग़དྷ ·͢ • ͳͷͰɺΈΜͳ΋৭ʑҠ২ͯ͠ΈΑ͏