audk/DuetPkg
Hao Wu bab82372a9 DuetPkg: Add POSTBUILD in DSC files to run post-build automatically
https://bugzilla.tianocore.org/show_bug.cgi?id=220

Currently, the post-build scripts PostBuild.bat/PostBuild.sh in DuetPkg
need to be run manually. Especially for Windows batch script, it also
requires users to set the build options (like tool chain, target and arch)
in file Conf/target.txt. If users using command line options via '-t' or
'-a', the post-build script won't work properly.

The package DSC files now support the feature to execute post-build script
automatically by adding a 'POSTBUILD' definition. This feature also passes
the build options into the post-build script as parameters. This commit
uses this feature to make the post-build works for DuetPkg more
user-friendly. Also, ReadMe.txt is updated to reflect the new steps for
UEFI Emulation (DUET) development.

Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
2016-11-14 19:33:11 +08:00
..
AcpiResetDxe Fix DuetPkg build failure after adding the new reset type EfiResetPlatformSpecific. 2013-08-22 05:55:29 +00:00
BiosVideoThunkDxe Fixed one code error, should use & instead of |. 2014-07-10 01:25:41 +00:00
BootSector Fix CRLF format 2014-01-22 08:35:25 +00:00
DxeIpl DuetPkg DxeIpl and EfiLdr: Add the missing EFIAPI for the function 2016-10-12 20:35:11 +08:00
EfiLdr DuetPkg DxeIpl and EfiLdr: Add the missing EFIAPI for the function 2016-10-12 20:35:11 +08:00
FSVariable DuetPkg FSVariable: return error for empty str VariableName to GetVariable 2016-05-15 17:48:53 +08:00
FvbRuntimeService Update the copyright notice format 2010-04-28 12:39:50 +00:00
Include Clean up the private GUID definition in module Level. 2011-09-20 02:12:45 +00:00
LegacyMetronome Update the copyright notice format 2010-04-28 12:39:50 +00:00
Library DuetPkg/DuetBdsLib: rebase to ARRAY_SIZE() 2016-10-27 11:10:31 +02:00
PciBusNoEnumerationDxe DuetPkg-PciBusNoEnumerationDxe: Fix stack overflow 2016-02-26 10:39:15 +08:00
PciRootBridgeNoEnumerationDxe Fix comparisons of enumerated types which may cause warnings for some compilers. 2012-08-28 06:48:28 +00:00
SataControllerDxe DuetPkg: SataControllerDxe: fix private array subscripting 2015-09-22 11:18:13 +00:00
SmbiosGenDxe DuetPkg: Fix GCC error to avoid the duplicated global variable in SmbiosGenDxe 2015-12-18 02:29:12 +00:00
Contributions.txt */Contributions.txt: Update example email address 2015-02-03 17:29:14 +00:00
CreateBootDisk.bat DuetPkg: Add POSTBUILD in DSC files to run post-build automatically 2016-11-14 19:33:11 +08:00
CreateBootDisk.sh DuetPkg: Add POSTBUILD in DSC files to run post-build automatically 2016-11-14 19:33:11 +08:00
DuetPkg.dec Update the Package version. 2011-12-13 08:31:55 +00:00
DuetPkg.fdf DuetPkg: Convert to build FatPkg from source 2016-04-08 13:47:31 +02:00
DuetPkgIa32.dsc DuetPkg: Add POSTBUILD in DSC files to run post-build automatically 2016-11-14 19:33:11 +08:00
DuetPkgX64.dsc DuetPkg: Add POSTBUILD in DSC files to run post-build automatically 2016-11-14 19:33:11 +08:00
License.txt Update copyright format 2012-04-24 06:49:39 +00:00
PostBuild.bat DuetPkg: Add POSTBUILD in DSC files to run post-build automatically 2016-11-14 19:33:11 +08:00
PostBuild.sh DuetPkg: Add POSTBUILD in DSC files to run post-build automatically 2016-11-14 19:33:11 +08:00
ReadMe.txt DuetPkg: Add POSTBUILD in DSC files to run post-build automatically 2016-11-14 19:33:11 +08:00
build32.sh DuetPkg: Add POSTBUILD in DSC files to run post-build automatically 2016-11-14 19:33:11 +08:00
build64.sh DuetPkg: Add POSTBUILD in DSC files to run post-build automatically 2016-11-14 19:33:11 +08:00

ReadMe.txt

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Developer's UEFI Emulation (DUET) on Edk2

A. Build DUET image on Windows Platform
========================================
1. Tools preparation

  To build DUET image, Visual Studio is required:
  1). Base on below link to create Visual Studio build environment.
      https://github.com/tianocore/tianocore.github.io/wiki/Windows-systems

2. Build Duet Platform module

  1). run cmd.exe to open command line window.
  2). enter workspace root directory such as c:\edk2_tree
  3). set the environment variable EDK_TOOLS_BIN to point at the BaseTools binaries directory
      i.e., "set EDK_TOOLS_BIN=c:\edk2-BaseTools-win32"
  4). run "edksetup.bat"
  5). run "build -p DuetPkg\DuetPkgIa32.dsc -a IA32 -t VS2015x86" for IA32 architecture platform (using 64-bit VS2015 for example) or
          "build -p DuetPkg\DuetPkgX64.dsc -a X64 -t VS2015x86" for X64 architecture platform.

  NOTE: The post build script 'PostBuild.sh' will be automatically called after the build command.


Create bootable disk
======================

3. Create boot disk
  The following steps are same for IA32 architecture platform or X64 architecture platform.

3.1 Create floppy boot disk
  1). enter <Workspace>\DuetPkg directory.
  2). Insert a floppy disk to drive
  3). run "CreateBootDisk.bat floppy a: FAT12 IA32" if floppy drive is a: disk and Arch to boot is IA32.
      or
      run "CreateBootDisk.bat floppy a: FAT12 X64" if floppy drive is a: disk and Arch to boot is X64.
3.2 Create usb boot disk
  1). enter <Workspace>\DuetPkg directory.
  2). Plugin usb disk
  3). run "CreateBootDisk.bat usb e: FAT16 IA32" if usb drive is e: and FAT format is FAT16 and Arch to boot is IA32.
      or "CreateBootDisk.bat usb e: FAT16 X64" if usb drive is e: and FAT format is FAT16 and Arch to boot is X64.
      or "CreateBootDisk.bat usb e: FAT32 IA32" if usb drive is e: and FAT format is FAT32 and Arch to boot is IA32.
      or "CreateBootDisk.bat usb e: FAT32 X64" if usb drive is e: and FAT format is FAT32 and Arch to boot is X64.
  4). UnPlug usb disk and plugin it again.
  5). run "CreateBootDisk.bat usb e: FAT16 IA32 step2" if usb drive is e: and FAT format is FAT16 and Arch to boot is IA32.
      or "CreateBootDisk.bat usb e: FAT16 X64 step2" if usb drive is e: and FAT format is FAT16 and Arch to boot is X64.
      or "CreateBootDisk.bat usb e: FAT32 IA32 step2" if usb drive is e: and FAT format is FAT32 and Arch to boot is IA32.
      or "CreateBootDisk.bat usb e: FAT32 X64 step2" if usb drive is e: and FAT format is FAT32 and Arch to boot is X64.

B. Build DUET image on Linux Platform
======================================
1. Tools preparation

  To build DUET image, GCC installation (4.4+) is required:
  1). Base on below link to create GCC build environment.
      https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-with-Native-GCC

2. Build Duet Platform module

  1). Open the terminal.
  2). enter workspace root directory such as /edk2_tree
  3). run ". edksetup.sh BaseTools"
  4). run "build -p DuetPkg/DuetPkgIa32.dsc -a IA32 -t GCC49" for IA32 architecture platform (using GCC 4.9 for example) or
          "build -p DuetPkg/DuetPkgX64.dsc -a X64 -t GCC49" for X64 architecture platform.

  NOTE: The post build script 'PostBuild.sh' will be automatically called after the build command.
        After post build action, you should check the size of EfiLdr at $WORKSPACE/Build/DuetPkgIA32(DuetPkgX64)/DEBUG_GCC49 directory, it must less than 470k.
        If not, you should manually remove some unnecessary drivers at DuetPkg.fdf file.

3. Create bootable disk
   The following steps are same for IA32 architecture platform or X64 architecture platform.

3.1 Create floppy boot disk
  1). enter /edk2_tree/DuetPkg directory.
  2). Insert a floppy disk to drive
  3). run "CreateBootDisk.sh" to build floppy drive
      such as "./CreateBootDisk.sh floppy /media/floppy0 /dev/fd0 FAT12 IA32"

3.2 Create usb boot disk
  1). enter /edk2_tree/DuetPkg directory.
  2). Plugin usb disk
  3). run "CreateBootDisk.sh" to build usb drive
      such as "./CreateBootDisk.sh usb /media/usb0 /dev/sdb0 FAT16 IA32"
  4). UnPlug usb disk and plugin it again.
  5). run "./CreateBootDisk.sh usb /media/usb0 /dev/sdb0 FAT16 IA32 step2"