1 |
|
---|
2 | === OVMF OVERVIEW ===
|
---|
3 |
|
---|
4 | The Open Virtual Machine Firmware (OVMF) project aims
|
---|
5 | to support firmware for Virtual Machines using the edk2
|
---|
6 | code base. More information can be found at:
|
---|
7 |
|
---|
8 | http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF
|
---|
9 |
|
---|
10 | === STATUS ===
|
---|
11 |
|
---|
12 | Current status: Alpha
|
---|
13 |
|
---|
14 | Current capabilities:
|
---|
15 | * IA32 and X64 architectures
|
---|
16 | * QEMU (0.9.1 or later)
|
---|
17 | - Video, keyboard, IDE, CD-ROM, serial
|
---|
18 | - Runs UEFI shell
|
---|
19 | - Optional NIC support. Requires QEMU (0.12.2 or later)
|
---|
20 | * UEFI Linux has booted (but is not stable)
|
---|
21 |
|
---|
22 | === FUTURE PLANS ===
|
---|
23 |
|
---|
24 | * Stabilize UEFI Linux boot
|
---|
25 | * Test/Stabilize UEFI Self-Certification Tests (SCT) results
|
---|
26 |
|
---|
27 | === BUILDING OVMF ===
|
---|
28 |
|
---|
29 | Pre-requisites:
|
---|
30 | * Build environment capable of build the edk2 MdeModulePkg.
|
---|
31 | * A properly configured ASL compiler:
|
---|
32 | - Intel ASL compiler: Available from http://www.acpica.org
|
---|
33 | - Microsoft ASL compiler: Available from http://www.acpi.info
|
---|
34 |
|
---|
35 | Update Conf/target.txt ACTIVE_PLATFORM for OVMF:
|
---|
36 | PEI arch DXE arch UEFI interfaces
|
---|
37 | * OvmfPkg/OvmfPkgIa32.dsc IA32 IA32 IA32
|
---|
38 | * OvmfPkg/OvmfPkgIa32X64.dsc IA32 X64 X64
|
---|
39 | * OvmfPkg/OvmfPkgX64.dsc X64 X64 X64
|
---|
40 |
|
---|
41 | Update Conf/target.txt TARGET_ARCH based on the .dsc file:
|
---|
42 | TARGET_ARCH
|
---|
43 | * OvmfPkg/OvmfPkgIa32.dsc IA32
|
---|
44 | * OvmfPkg/OvmfPkgIa32X64.dsc IA32 X64
|
---|
45 | * OvmfPkg/OvmfPkgX64.dsc X64
|
---|
46 |
|
---|
47 | Following the edk2 build process, you will find the OVMF binaries
|
---|
48 | under the $WORKSPACE/Build/*/*/FV directory. The actual path will
|
---|
49 | depend on how your build is configured. You can expect to find
|
---|
50 | these binary outputs:
|
---|
51 | * OVMF.FD
|
---|
52 | - Please note! This filename has changed. Older releases used OVMF.Fv.
|
---|
53 | * CirrusLogic5446.rom
|
---|
54 |
|
---|
55 | More information on building OVMF can be found at:
|
---|
56 |
|
---|
57 | http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=How_to_build_OVMF
|
---|
58 |
|
---|
59 | === RUNNING OVMF on QEMU ===
|
---|
60 |
|
---|
61 | * QEMU 0.9.1 or later is required.
|
---|
62 | * Either copy, rename or symlink OVMF.FD => bios.bin
|
---|
63 | * Either copy, rename or symlink CirrusLogic5446.rom => vgabios-cirrus.bin
|
---|
64 | * Be sure to use qemu-system-x86_64, if you are using and X64 firmware.
|
---|
65 | (qemu-system-x86_64 works for the IA32 firmware as well, of course.)
|
---|
66 | * Use the QEMU -L parameter to specify the directory where the bios.bin
|
---|
67 | and vgabios-cirrus.bin files are located.
|
---|
68 | * Optionally you can use the QEMU -serial command to capture the
|
---|
69 | OVMF debug messages. For example: -serial file:serial.log
|
---|
70 | * The EFI shell is built into OVMF builds at this time, so it should
|
---|
71 | run automatically if a UEFI boot application is not found on the
|
---|
72 | removable media.
|
---|
73 | * On Linux, newer version of QEMU may enable KVM feature, and this might
|
---|
74 | cause OVMF to fail to boot. The QEMU '-no-kvm' may allow OVMF to boot.
|
---|
75 |
|
---|
76 | === Build Scripts ===
|
---|
77 |
|
---|
78 | On systems with the bash shell you can use OvmfPkg/build.sh to simplify
|
---|
79 | building and running OVMF.
|
---|
80 |
|
---|
81 | So, for example, to build + run OVMF X64:
|
---|
82 | $ OvmfPkg/build.sh -a X64
|
---|
83 | $ OvmfPkg/build.sh -a X64 qemu
|
---|
84 |
|
---|
85 | And to run a 64-bit UEFI bootable ISO image:
|
---|
86 | $ OvmfPkg/build.sh -a X64 qemu -cdrom /path/to/disk-image.iso
|
---|
87 |
|
---|
88 | To build a 32-bit OVMF without debug serial messages using GCC 4.5:
|
---|
89 | $ OvmfPkg/build.sh -a IA32 -b RELEASE -t GCC45
|
---|
90 |
|
---|
91 | === Network Support ===
|
---|
92 |
|
---|
93 | To add network drivers to OVMF:
|
---|
94 |
|
---|
95 | * Download UEFI drivers for the e1000 NIC
|
---|
96 | - http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=17515&lang=eng
|
---|
97 | - Install the drivers into a directory called Intel3.5 in your WORKSPACE
|
---|
98 |
|
---|
99 | * Include the drivers in OVMF during the build:
|
---|
100 | - Add '-D NETWORK_ENABLE' to your build command
|
---|
101 | - For example: build -D NETWORK_ENABLE
|
---|
102 |
|
---|
103 | * Use the QEMU -net parameter to enable NIC support.
|
---|
104 | - QEMU does not support UEFI DHCP or UEFI PXE Boot, so long timeouts will
|
---|
105 | occur when NICs are enabled. The long timeouts can be avoided by
|
---|
106 | interrupts the boot sequence by pressing a key when the logo appears.
|
---|
107 | - Example: Enable e1000 NIC with a DHCP server and restrict packet
|
---|
108 | forwarding:
|
---|
109 | -net nic,model=e1000 -net user,restrict=yes -net user,dhcpstart=10.0.2.10
|
---|
110 | - Example: Enable e1000 NIC with a DHCP server, restrict packet forwarding,
|
---|
111 | and generate PCAP file:
|
---|
112 | -net nic,model=e1000 -net user,restrict=yes -net user,dhcpstart=10.0.2.10
|
---|
113 | -net dump,file=a.pcap
|
---|
114 | - Example: Enable 2 e1000 NICs with a DHCP server and restrict
|
---|
115 | packet forwarding:
|
---|
116 | -net nic,model=e1000,addr=3 -net nic,model=e1000,addr=4
|
---|
117 | -net user,restrict=yes -net user,dhcpstart=10.0.2.10
|
---|
118 |
|
---|