X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=OvmfPkg%2FREADME;h=2c8b51fc76bf79e4ec5d397313b730096bd100a9;hb=bf23b44d926982dfc9ecc7785cea17e0889a9297;hp=aee3aa681975e72d68f2eb9c6fa1302aa06d6d0b;hpb=2dae09a53058408846f3710f4b3060b26aab0c55;p=mirror_edk2.git diff --git a/OvmfPkg/README b/OvmfPkg/README index aee3aa6819..2c8b51fc76 100644 --- a/OvmfPkg/README +++ b/OvmfPkg/README @@ -5,7 +5,7 @@ The Open Virtual Machine Firmware (OVMF) project aims to support firmware for Virtual Machines using the edk2 code base. More information can be found at: - https://edk2.tianocore.org/OVMF.html +http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF === STATUS === @@ -13,10 +13,12 @@ Current status: Alpha Current capabilities: * IA32 and X64 architectures -* QEMU (0.9.1 or later) +* QEMU (0.10.0 or later) - Video, keyboard, IDE, CD-ROM, serial - Runs UEFI shell -* UEFI Linux has booted (but is not stable) + - Optional NIC support. Requires QEMU (0.12.2 or later) +* UEFI Linux boots +* UEFI Windows 8 boots === FUTURE PLANS === @@ -27,10 +29,9 @@ Current capabilities: Pre-requisites: * Build environment capable of build the edk2 MdeModulePkg. -* A properly configured ASL compiler - * Intel ASL compiler: Available from http://www.acpica.org - or - * Microsoft ASL compiler: Available from http://www.acpi.info +* A properly configured ASL compiler: + - Intel ASL compiler: Available from http://www.acpica.org + - Microsoft ASL compiler: Available from http://www.acpi.info Update Conf/target.txt ACTIVE_PLATFORM for OVMF: PEI arch DXE arch UEFI interfaces @@ -48,24 +49,107 @@ Following the edk2 build process, you will find the OVMF binaries under the $WORKSPACE/Build/*/*/FV directory. The actual path will depend on how your build is configured. You can expect to find these binary outputs: -* OVMF.fd -* CirrusLogic5446.rom +* OVMF.FD + - Please note! This filename has changed. Older releases used OVMF.Fv. +* OvmfVideo.rom + - This file is not built separately any longer, starting with svn r13520. More information on building OVMF can be found at: -* https://edk2.tianocore.org/build-ovmf.html + +http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=How_to_build_OVMF === RUNNING OVMF on QEMU === * QEMU 0.9.1 or later is required. -* Either copy, rename or symlink OVMF.fd => bios.bin -* Either copy, rename or symlink CirrusLogic5446.rom => vgabios-cirrus.bin +* Either copy, rename or symlink OVMF.FD => bios.bin * Be sure to use qemu-system-x86_64, if you are using and X64 firmware. (qemu-system-x86_64 works for the IA32 firmware as well, of course.) * Use the QEMU -L parameter to specify the directory where the bios.bin - and vgabios-cirrus.bin files are located. -* Optionally you can use the QEMU -serial command to capture the - OVMF debug messages. For example: -serial file:serial.log + file is located. * The EFI shell is built into OVMF builds at this time, so it should run automatically if a UEFI boot application is not found on the removable media. +* On Linux, newer version of QEMU may enable KVM feature, and this might + cause OVMF to fail to boot. The QEMU '-no-kvm' may allow OVMF to boot. +* Capturing OVMF debug messages on qemu: + - The default OVMF build writes debug messages to IO port 0x402. The + following qemu command line options save them in the file called + debug.log: '-debugcon file:debug.log -global isa-debugcon.iobase=0x402'. + - It is possible to revert to the original behavior, when debug messages were + written to the emulated serial port (potentially intermixing OVMF debug + output with UEFI serial console output). For this the + '-D DEBUG_ON_SERIAL_PORT' option has to be passed to the build command (see + the next section), and in order to capture the serial output qemu needs to + be started with eg. '-serial file:serial.log'. + - Debug messages fall into several categories. Logged vs. suppressed + categories are controlled at OVMF build time by the + 'gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel' bitmask (an UINT32 + value) in the selected .dsc file. Individual bits of this bitmask are + defined in . One non-default bit (with + some performance impact) that is frequently set for debugging is 0x00400000 + (DEBUG_VERBOSE). + - The RELEASE build target ('-b RELEASE' build option, see below) disables + all debug messages. The default build target is DEBUG. + +=== Build Scripts === + +On systems with the bash shell you can use OvmfPkg/build.sh to simplify +building and running OVMF. + +So, for example, to build + run OVMF X64: +$ OvmfPkg/build.sh -a X64 +$ OvmfPkg/build.sh -a X64 qemu + +And to run a 64-bit UEFI bootable ISO image: +$ OvmfPkg/build.sh -a X64 qemu -cdrom /path/to/disk-image.iso + +To build a 32-bit OVMF without debug messages using GCC 4.5: +$ OvmfPkg/build.sh -a IA32 -b RELEASE -t GCC45 + +=== Network Support === + +To add network drivers to OVMF: + +* Download UEFI drivers for the e1000 NIC + - http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=17515&lang=eng + - Install the drivers into a directory called Intel3.5 in your WORKSPACE + +* Include the drivers in OVMF during the build: + - Add '-D NETWORK_ENABLE' to your build command + - For example: build -D NETWORK_ENABLE + +* Use the QEMU -net parameter to enable NIC support. + - QEMU does not support UEFI DHCP or UEFI PXE Boot, so long timeouts will + occur when NICs are enabled. The long timeouts can be avoided by + interrupts the boot sequence by pressing a key when the logo appears. + - Example: Enable e1000 NIC with a DHCP server and restrict packet + forwarding: + -net nic,model=e1000 -net user,restrict=yes -net user,dhcpstart=10.0.2.10 + - Example: Enable e1000 NIC with a DHCP server, restrict packet forwarding, + and generate PCAP file: + -net nic,model=e1000 -net user,restrict=yes -net user,dhcpstart=10.0.2.10 + -net dump,file=a.pcap + - Example: Enable 2 e1000 NICs with a DHCP server and restrict + packet forwarding: + -net nic,model=e1000,addr=3 -net nic,model=e1000,addr=4 + -net user,restrict=yes -net user,dhcpstart=10.0.2.10 + +=== UNIXGCC Debug === + +If you build with the UNIXGCC toolchain, then debugging will be disabled +due to larger image sizes being produced by the UNIXGCC toolchain. The +first choice recommendation is to use GCC44 or newer instead. + +If you must use UNIXGCC, then you can override the build options for +particular libraries and modules in the .dsc to re-enable debugging +selectively. For example: + [Components] + OvmfPkg/Library/PlatformBdsLib/PlatformBdsLib.inf { + + GCC:*_*_*_CC_FLAGS = -UMDEPKG_NDEBUG + } + IntelFrameworkModulePkg/Universal/BdsDxe/BdsDxe.inf { + + GCC:*_*_*_CC_FLAGS = -UMDEPKG_NDEBUG + }