BKM: Open Source Guest Firmware of XEN/IA64 VTI Guest 1. How to get the source? Do below command( with HG tool ): hg clone http://xenbits.xensource.com/ext/efi-vfirmware.hg *notice: Get HG tool A. Get HG tool. You can download it from http://www.selenic.com/mercurial/wiki/ B. Install HG tool. Follow steps below: tar xf mercurial-0.9.4.tar cd mercurial-0.9.4 python setup.py install 2. Get EDK2 Source The firmware developed base on EDK2 which is an open source EFI implementation. Before building, you must get a specific version of EDK2 source. Follow below steps: svn co -r 2398 https://edk2.tianocore.org/svn/edk2/trunk/edk2 The 2398 is the requested version needed by firmware. *notice: To use SVN download the source, you must register an account on Tianno¡¯s website. The URL is https://www.tianocore.org/ 3. Install building tools: a) Tools pre-requisite(From EDK2 buildnotes): The following list of tools must be installed on the development workstation prior to using the EDK II. Compiler Tool Chain A special GCC version 4.x or later (http://gcc.gnu.org). See below. Assembler Tool Chain GNU binutils 2.16.1 or later (Http://ftp.gnu.org/gnu/binutils) Java Development Kit ( Java 5.0 or later) Bea Systems* jrockit-25.2.0-jdk1.5.0_03 or later (http://www.bea.com) Java Tools Apache-ANT, version 1.6.5 or later (http://ant.apache.org) Ant-contrib, version 1.0b2 or later (http://prdownloads.sourceforge.net/ant-contrib/ant-contrib-1.0b2-bin.zip?download) Saxon8, version 8.1.1 (http://prdownloads.sourceforge.net/saxon/saxonb8-1-1.zip?download) XMLBeans, version 2.1.0 (http://xmlbeans.apache.org) *** DO NOT download the latest XMLBeans, version 2.2.0. It is not compatible with Saxon8, version 8.1.1 *** b) Install tools: *** Below info all from tianno's website. We suggest you installing these tools without configure environment variable. Because we are going to do this in a script which you will see it later *** Software Installation Order After installing the compiler tools and your Subversion client, the following required tools should be installed in this order: Java JDK, Apache-Ant, ant-contrib, xmlbeans, saxon8 Java Development Kit The Java Environment Variable must be set before attempting to build. e.g export JAVA_HOME=/root/jrockit-R27.2.0-jdk1.5.0_10 Java Tools The Apache-ANT requires the ANT_HOME environment variable to be set before attempting to build: Unzip apache-ant-1.6.5-bin.zip to a directory. We need to set an environment variable ANT_HOME to this location: export ANT_HOME= Unzip the ant-contrib-1.0b2-bin.zip file. The ant-contrib.jar file should be copied into the %ANT_HOME%/lib directory. Unzip xmlbeans-2.1.0.zip to a directory. XMLBeans requires the XMLBEANS_HOME environment variable to be set before attempting to build: export XMLBEANS_HOME= Unzip the saxonb8-1-1.zip file. The saxon8.jar file should be copied to the %XMLBEANS_HOME%\lib directory. *** DO NOT DOWNLOAD A LATER VERSION OF SAXON 8 ***/ The Ant and XMLBean tools are required to be in the path. export PATH=%PATH%;%ANT_HOME%\bin;%XMLBEANS_HOME%\bin Other Tools TortoiseSVN version 1.3.3. (http://tortoisesvn.tigris.org/) 4. Prepare building: Congratulations! You have finished install these awesome tools. Now let us do some prepare works for building. a) Create a symbolic link in your efi-vfirmware.hg: ln -s /path/to/my/private/edk2 edk2 b) Cutomize edk2-spare/env.sh Correctly define the environment variable and path, for instance: *************** env.h ********************** export JAVA_HOME=/root/jrockit-R27.2.0-jdk1.5.0_10 export ANT_HOME=/root/EDK2_tool_linux/apache-ant-1.7.0 export XMLBEANS_HOME=/root/EDK2_tool_linux/xmlbeans-2.1.0/xmlbeans-2.1.0 PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:$ANT_HOME/bin:$XMLBEANS_HOME/bin . ./edksetup.sh ******************************************** c) Run build.sh, it creates the source hierarchy: > sh build.sh d) Start the build: > cd edk2-xen > . ./link.sh > . ./env.sh > build 5. Get firmware binary: It is at edk2-xen/Build/Xen/DEBUG_UNIXGCC/FV/FV_RECOVERY.bin. If you are here, you are lucky and have an useable firmware!