daefiman Posted April 10, 2006 Share Posted April 10, 2006 I have the beta two version of Visual Studio 2005 .NET, and am trying to compile the Intel EFI Sample Implementation 1.10 for the IA-32EMB architecture. I have modified the build scripts to work with the newest Visual Studio, as they only officially support VC6/7/7.1 (and 2005 -> VC8), but have run into difficulties when trying to link some of the objects. Below is the output of the build system, and if anyone could help, I would appreciate it. I cannot use the pre-built floppy versions, as I have no floppy drive (and the floppy image bootsector does not support FAT32, which is the filesystem of my boot partition, onto which I hope to install this EFI implementation). E:\EFI-Framework\BUILD\ia-32emb>build vc8 ************************************************************************ * E F I 1.1 * * * * Extensible Firmware Interface * * Sample Implementation * * * ************************************************************************ EFI_SOURCE=E:\EFI-Framework EFI_MSVCTOOLPATH=C:\Program Files\Microsoft Visual Studio 8\VC EFI_MASMPATH=E:\EFI-Framework\Tools\Ia32\MASM611 EFI_DEBUG=YES EFI_DEBUG_CLEAR_MEMORY=YES EFI_BOOTSHELL=YES EFI_LIBPATH=C:\Program Files\Microsoft Visual Studio 8\VC\lib EFI_PSDKPATH=C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK !!! Current environment being used: VC 8 !!! E:\EFI-Framework\BUILD\ia-32emb>nmake Microsoft (R) Program Maintenance Utility Version 8.00.50215.44 Copyright (C) Microsoft Corporation. All rights reserved. "E:\EFI-Framework\build\tools\bin\VcCheck" type E:\EFI-Framework\Corefw\Fw\Platform\BuildTip\IA-32Emb\Banner.c > E:\EFI-Framework\Corefw\Fw\Platform\BuildTip\IA-32Emb\Banner.xxx del E:\EFI-Framework\Corefw\Fw\Platform\BuildTip\IA-32Emb\Banner.c rename E:\EFI-Framework\Corefw\Fw\Platform\BuildTip\IA-32Emb\Banner.xxx banner.c "E:\EFI-Framework\build\tools\bin\genmake" Processing corefw\fw\efi Processing corefw\fw\efi\inc Processing corefw\fw\inc Processing corefw\fw\platform\bootmgr\default Processing corefw\fw\platform\bootmgr\maint Processing corefw\fw\platform\buildtip\bios32 Processing corefw\fw\platform\buildtip\ia-32emb Processing corefw\fw\platform\buildtip\inc Processing corefw\fw\platform\buildtip\nt32 Processing corefw\fw\platform\buildtip\sal64 Processing corefw\fw\platform\drivers\biosint\bioskeyboard Processing corefw\fw\platform\drivers\biosint\biossnp16 Processing corefw\fw\platform\drivers\biosint\biosvga Processing corefw\fw\platform\drivers\biosint\biosvgaminiport Processing corefw\fw\platform\drivers\biosint\disk Processing corefw\fw\platform\inc Processing corefw\fw\platform\lib Processing corefw\fw\platform\pldriver Processing corefw\fw\platform\pldriver\biosint Processing corefw\fw\platform\pldriver\cache Processing corefw\fw\platform\pldriver\cdrom Processing corefw\fw\platform\pldriver\cpu_interrupt Processing corefw\fw\platform\pldriver\cpu_timer Processing corefw\fw\platform\pldriver\defio Processing corefw\fw\platform\pldriver\efildr Processing corefw\fw\platform\pldriver\govirtual Processing corefw\fw\platform\pldriver\internalshell Processing corefw\fw\platform\pldriver\interruptcontroller Processing corefw\fw\platform\pldriver\interruptcontroller\8259 Processing corefw\fw\platform\pldriver\legacyboot Processing corefw\fw\platform\pldriver\nulldefio Processing corefw\fw\platform\pldriver\nvram Processing corefw\fw\platform\pldriver\reset Processing corefw\fw\platform\pldriver\sal Processing corefw\fw\platform\pldriver\stall Processing corefw\fw\platform\pldriver\stall\8253 Processing corefw\fw\platform\pldriver\time Processing corefw\fw\platform\pldriver\time\dallas1287 Processing corefw\fw\platform\pldriver\timer Processing corefw\fw\platform\pldriver\tpl Processing corefw\fw\platform\pldriver\unicode Processing corefw\fw\platform\pldriver\unicode\english Processing corefw\fw\platform\pldriver\watchdog Processing edk Processing edk\drivers\atapipassthru Processing edk\drivers\bis\basecode Processing edk\drivers\bis\inc Processing edk\drivers\bis\oasis\inc Processing edk\drivers\bis\oasis\inc\intel Processing edk\drivers\bis\oasis\src\addins\intel\cssmcl Processing edk\drivers\bis\oasis\src\addins\intel\cssmcsp Processing edk\drivers\bis\oasis\src\addins\intel\cssmcsp\intelcsp\csm_bis Processing edk\drivers\bis\oasis\src\addins\intel\cssmcsp\tal Processing edk\drivers\bis\oasis\src\addins\intel\cssmvl Processing edk\drivers\bis\oasis\src\fwk\cssm Processing edk\drivers\bis\oasis\src\fwk\port Processing edk\drivers\bis\oasis\src\fwk\util\ber_der\r1_1 Processing edk\drivers\bis\oasis\src\fwk\util\ber_der\r1_1\inc Processing edk\drivers\bis\oasis\src\icl Processing edk\drivers\bis\oasis\src\icl\include Processing edk\drivers\bis\oasis\src\integrity Processing edk\drivers\bis\oasis\src\integrity\inc Processing edk\drivers\cirruslogic5430 Processing edk\drivers\console\conplatform Processing edk\drivers\console\consplitter Processing edk\drivers\console\graphicsconsole Processing edk\drivers\console\terminal Processing edk\drivers\debugport Processing edk\drivers\debugsupport Processing edk\drivers\decompress Processing edk\drivers\diskio Processing edk\drivers\ebc Processing edk\drivers\filesystem\fat Processing edk\drivers\ide Processing edk\drivers\isabus Processing edk\drivers\isafloppy Processing edk\drivers\isaserial Processing edk\drivers\partition Processing edk\drivers\pcatisaacpi Processing edk\drivers\pcatisaacpibios Processing edk\drivers\pcatpcirootbridge Processing edk\drivers\pcibus Processing edk\drivers\pcivgaminiport Processing edk\drivers\ps2keyboard Processing edk\drivers\ps2mouse Processing edk\drivers\pxebc Processing edk\drivers\pxedhcp4 Processing edk\drivers\scsibus Processing edk\drivers\scsidisk Processing edk\drivers\serialmouse Processing edk\drivers\snp32_64 Processing edk\drivers\undi Processing edk\drivers\usb\uhci Processing edk\drivers\usb\usbbot Processing edk\drivers\usb\usbbus Processing edk\drivers\usb\usbcbi\cbi0 Processing edk\drivers\usb\usbcbi\cbi1 Processing edk\drivers\usb\usbkb Processing edk\drivers\usb\usbmassstorage Processing edk\drivers\usb\usbmouse Processing edk\drivers\vgaclass Processing edk\drivers\winntthunk\blockio Processing edk\drivers\winntthunk\console Processing edk\drivers\winntthunk\serialio Processing edk\drivers\winntthunk\simplefilesystem Processing edk\drivers\winntthunk\uga Processing edk\drivers\winntthunk\winntbusdriver Processing edk\drivers\winntthunk\winntpcirootbridge Processing edk\guid Processing edk\include Processing edk\lib\eficommonlib Processing edk\lib\efidriverlib Processing edk\lib\include Processing edk\lib\print Processing edk\lib\print\unicode Processing edk\protocol Processing inc Processing inc\protocol Processing lib Processing shell Processing shell\attrib Processing shell\bcfg Processing shell\cls Processing shell\comp Processing shell\cp Processing shell\date Processing shell\debug Processing shell\dmpstore Processing shell\dumpbs Processing shell\edit Processing shell\eficompress Processing shell\efidecompress Processing shell\err Processing shell\getmtc Processing shell\hexedit Processing shell\inc Processing shell\iomod Processing shell\lib Processing shell\load Processing shell\loadbmp Processing shell\loadpcirom Processing shell\ls Processing shell\mem Processing shell\memmap Processing shell\mkdir Processing shell\mode Processing shell\mv Processing shell\newshell Processing shell\pci Processing shell\reset Processing shell\rm Processing shell\setsize Processing shell\shellenv Processing shell\stall Processing shell\time Processing shell\touch Processing shell\type Processing shell\ver Processing shell\vol Make files generated "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo -f Output\Lib\Makefile all "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo -f Output\Edk\Lib\EfiCommonLib\Makefile all "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo -f Output\Edk\Lib\EfiDriverLib\Makefile all "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo -f Output\Edk\Lib\Print\Makefile all "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo -f Output\Edk\Protocol\Makefile all "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo -f Output\Edk\Guid\Makefile all "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo -f Output\Corefw\Fw\Platform\Lib\makefile all "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo -f Output\Corefw\Fw\Efi\Makefile all "C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe" -nologo -f Output\Corefw\Fw\Platform\BootMgr\Default\Makefile all link output\Null.obj /NOLOGO /MACHINE:X86 /SUBSYSTEM:CONSOLE /NODEFAULTLIB /INCREMENTAL:NO /MAP /OPT:REF /DRIVER /ALIGN:32 /DEBUG E:\EFI-Framework\BUILD\ia-32emb\output\corefw\fw\platform\bootmgr\default\default.lib E:\EFI-Framework\BUILD\ia-32emb\output\lib\lib.lib E:\EFI-Framework\BUILD\ia-32emb\output\Corefw\Fw\Platform\Lib\Lib.lib E:\EFI-Framework\BUILD\ia-32emb\output\Edk\Protocol\Protocol.lib /ENTRY:InitializeBootManager /OUT:bin\bootmgr.dll default.lib(load.obj) : error LNK2019: unresolved external symbol ___security_cookie referenced in function _BmLocateHandleByDiskSignatureAndPartition default.lib(var.obj) : error LNK2001: unresolved external symbol ___security_cookie default.lib(default.obj) : error LNK2001: unresolved external symbol ___security_cookie lib.lib(print.obj) : error LNK2001: unresolved external symbol ___security_cookie default.lib(load.obj) : error LNK2019: unresolved external symbol @__security_check_cookie@4 referenced in function _BmLocateHandleByDiskSignatureAndPartition default.lib(var.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4 default.lib(default.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4 lib.lib(print.obj) : error LNK2001: unresolved external symbol @__security_check_cookie@4 lib.lib(efirtlib.obj) : error LNK2019: unresolved external symbol _memset referenced in function _RtZeroMem bin\bootmgr.dll : fatal error LNK1120: 3 unresolved externals NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.exe"' : return code '0x460' Stop. NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\nmake.exe"' : return code '0x2' Stop. This wasn't from a clean build, but the results are the same nonetheless, and there are no errors or warnings outputted prior to those above even with a clean build. Link to comment Share on other sites More sharing options...
daefiman Posted April 11, 2006 Author Share Posted April 11, 2006 *bump* - Anyone? I'm quite keen to get EFI on a partition... Link to comment Share on other sites More sharing options...
bofors Posted April 11, 2006 Share Posted April 11, 2006 I am really to see somebody finally working on EFI. Thanks. Do you know if the Intel EFI Sample Implementation 1.10 is complete, as in includes everything needed to run Apple's EFI firmware? Have you looked into using the TianoCore EFI implementation? https://edk.tianocore.org/ Link to comment Share on other sites More sharing options...
daefiman Posted April 11, 2006 Author Share Posted April 11, 2006 I don't know yet whether the Sample is complete, and will not be testing the Apple EFI firmware, as I do not own a copy of OS X with the firmware on. Currently, I am concentrating on installing (and fixing the above problems) the Intel Implementation on a FAT32 partition. If anyone could help, that would be great, as after, I will look at the TianoCore implementation. I'll still look at that version if the Intel one fails to work. I have both downloaded. If I can get hold of the Apple firmware legally, then I will gladly help out. Perhaps I'll download Boot Camp and take a look at that. Link to comment Share on other sites More sharing options...
cyclonefr Posted April 11, 2006 Share Posted April 11, 2006 Respect! what u meant by dont count on me? just to clarify ur making a EFI support for regular mainboard right? Link to comment Share on other sites More sharing options...
bofors Posted April 11, 2006 Share Posted April 11, 2006 Currently, I am concentrating on installing (and fixing the above problems) the Intel Implementation on a FAT32 partition. I assume that you know that the TianoCore has a "Enhanced FAT-Driver" project which is open source, but requires registration. If I can get hold of the Apple firmware legally, then I will gladly help out. You can legally download the EFI firmware from Apple. Here is the latest (update 1.0 for Boot Camp) version for the Mac Mini: http://www.apple.com/support/downloads/mac...reupdate10.html This includes the original EFI firmware for all three Intel Macs: http://www.apple.com/support/downloads/fir...ationcdv10.html If anyone could help... I am sorry that I do not program with Visual Studio, but I am sure that you will figure out how to compile the EFI implementations soon. Please post instruction when you do. Thanks again for working on this. Link to comment Share on other sites More sharing options...
daefiman Posted April 12, 2006 Author Share Posted April 12, 2006 Well, atm I'm looking at the Intel implementation, and it seems - having looked a bit at the makefiles - that it supports FAT32. I'm probably going to install my copy of Visual Studio 6, ancient though it is, since VS 2005 doesn't like me. @cyclonefr: I don't want people to get expectant and then find I haven't managed to get anything done. My main aim is not to be, as it has seemed until now, like some people who promise an Intel WiFi driver. Oh, and, yes - I am building an implementation for the regular, legacy PC. @bofors: Thanks for clarifying the legality of Boot Camp. I'll look into it now. Link to comment Share on other sites More sharing options...
daefiman Posted April 12, 2006 Author Share Posted April 12, 2006 Update: I have installed VS 6, and have successfully compiled the implementation for BIOS32 and IA-32EMB. The former uses legacy BIOS calls for I/O, and the latter does without and uses the EFI drivers; it's designed for embedded systems (hence the EMB suffix), but should work with all IA-32 devices, like our PCs. However, both these systems leave me in the same situation as the binaries provided with the implementation by Intel. I copy the fat32 bs32.com and efildr20, which should load up the framework from the \EFI, directory to the root of my boot partition, set GRUB and the NTLDR to load bs32.com and pass through control, but with no success. All the machine does is hang on execution; pun not really intended. Looks like I'll have to use the TianoCore EDK, as without a floppy drive, it seems that the Intel implementation is unusable. If anyone wants to suggest what to do, they need to grab the sample implementation, and set up VS6 as described in the release notes. I'll start using Bochs or Qemu for debugging, I think. How, though, does one get Qemu to boot off a partition rather than an image? Update2: Looks like I'll have to use the Intel Sample Implementation, as the TianoCore EDK does not provide a build tip for either BIOS32 or IA-32EMB (nor their equivalents), just NT32. I'll have to rumage around in the Intel bootsector code to see what's going on... Update3 (wrong): Seems the system cannot find the Efildr20 file on boot, and so pulls an interrupt 3. This interrupt, as far as I can see, causes the CPU to "break", and stop execution. If someone wants to correct that, I'd be glad. The bs32.asm file denotes EFILDR20 as the filename, not Efildr20. Perhaps the bs32.com file, which GRUB/NTLDR loads, is case-sensitive. Since the bootsector can only be one sector long, I am reluctant to modify it. I have renamed the file, and I hope that will work... Link to comment Share on other sites More sharing options...
Bearcat Posted April 12, 2006 Share Posted April 12, 2006 Update: I have installed VS 6, and have successfully compiled the implementation for BIOS32 and IA-32EMB. The former uses legacy BIOS calls for I/O, and the latter does without and uses the EFI drivers; it's designed for embedded systems (hence the EMB suffix), but should work with all IA-32 devices, like our PCs. Question: Is VS 6, the only way to compile this from Intel? Is there a way to build this using GCC or the Intel compilers? thanks Link to comment Share on other sites More sharing options...
daefiman Posted April 12, 2006 Author Share Posted April 12, 2006 Looks like there is no other way to compile, sorry. And bs32.com seems not to be looking for EFILDR20 over Efildr20... Link to comment Share on other sites More sharing options...
cyclonefr Posted April 12, 2006 Share Posted April 12, 2006 daefiman im so sad i cant help u futher but as i read all this line it looks like having ur file working and it's done? Link to comment Share on other sites More sharing options...
daefiman Posted April 12, 2006 Author Share Posted April 12, 2006 cyclonefr, not quite. I have compiled some modified source code - in the hope that it will boot far enough to print debug messages. The Intel Sample Framework has compiled in this form with Visual C++ 6, but I have not been able to boot it from my FAT32 partition using GRUB or the NTLDR. Moreover, I have no floppy drive to test the floppy drive solution, but - even so - that is unwieldy and even slower than the hd option. I can't really see why the boot code isn't working - I did study OS development (I couldn't grasp much for the life of me) for a time; however, I have never worked with hard drive booting, or filesystems other than FAT12 on floppies. I may have to rewrite the bootsector code, with aid from some tutorial, and see if that works. Link to comment Share on other sites More sharing options...
c0nfused Posted April 18, 2006 Share Posted April 18, 2006 I'm going to be using VMWare to play around with EFI. I want to use a virtual drive so I don't have to completely repartition my drive. I thought that EFI partitions the harddrive in a different way and cannot access harddrives partitioned in a regular fashion. Is this correct? I read something about this on the Intel EFI page. Link to comment Share on other sites More sharing options...
c0nfused Posted April 19, 2006 Share Posted April 19, 2006 I was running the standard intel implementation (the provided binary) through VMWARE and its unstable as hell. I continue to get errors everytime I run EFI programs. Sometimes they will run, but usually I get a "can't be found" error. I managed to partition a HD, but I can't get hte formatting program to run yet.... Link to comment Share on other sites More sharing options...
CoolBits Posted April 19, 2006 Share Posted April 19, 2006 Sorry if i ask stupid things but wouldnt be easyer to get somewhere or make an EFI bootloader which would load efi? Like an executable... and then efi loads NTLDR or grub or lilo whatever... Im not a programmer so sorry if im shooting in the dark Link to comment Share on other sites More sharing options...
c0nfused Posted April 19, 2006 Share Posted April 19, 2006 Thats essentially what we are doing. Here is the loading sequence on the BIOS computer Power ON -> Bios -> EFI -> OS Here is the loading sequence on an EFI computer Power ON -> EFI -> OS Link to comment Share on other sites More sharing options...
cyclonefr Posted May 8, 2006 Share Posted May 8, 2006 no news of daefiman project? Link to comment Share on other sites More sharing options...
stainboy Posted June 20, 2006 Share Posted June 20, 2006 still nothing fresh? Link to comment Share on other sites More sharing options...
Superhai Posted August 1, 2006 Share Posted August 1, 2006 I come upon this thread while searching for something else, why isn't it under macefix86? I have compiled the intel implementation under VC8 and it boots from my fat32 memory stick. But you have to make some modification on some make files to do it. Link to comment Share on other sites More sharing options...
kevinosx Posted January 28, 2007 Share Posted January 28, 2007 Anybody know of any EFI implementations working or partially working for pc's yet via BIOS-EFI-OS? Link to comment Share on other sites More sharing options...
MoDs Posted November 13, 2007 Share Posted November 13, 2007 Sorry to bring up an old thread. Bad me... But i really need the "EFI Sample Implementation," because Intel stopped seeding it. I would greatly appreciate it if anyone can PM me the download link, or send it directly to my email: mods.29a @ gmail. com (please remove spaces). Thanks very much in advance. I'm looking forward to anyone's reply Link to comment Share on other sites More sharing options...
Superhai Posted November 13, 2007 Share Posted November 13, 2007 It is obsolete, go to tianocore.org and download whatever you need from there. Link to comment Share on other sites More sharing options...
Recommended Posts