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>
85 lines
4.2 KiB
Plaintext
85 lines
4.2 KiB
Plaintext
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"
|