mirror of https://github.com/acidanthera/audk.git
OvmfPkg: enable the generic network stack by default
DHCP, PXE, and StdLib socket apps are enabled in OVMF by the sum of: (a) a UEFI NIC driver, (b) the generic network stack. The only choice for (a) used to be the proprietary Intel E1000 driver, which is cumbersome to obtain and enable. The iPXE UEFI NIC drivers packaged with qemu-1.5 cover (a) for each NIC type supported by qemu, and are easy to obtain & configure, even for earlier qemu versions. Therefore enable (b) per default as well. This doesn't take up much space; the binaries (b) adds to the firmware don't seem to need -D FD_SIZE_2MB. Intel's e1000 driver remains an option, requested by the -D E1000_ENABLE build flag. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14366 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
15e277d5ac
commit
7628b0f5aa
|
@ -467,7 +467,6 @@
|
|||
#
|
||||
# Network Support
|
||||
#
|
||||
!if $(NETWORK_ENABLE)
|
||||
MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
|
||||
MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
||||
MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
|
||||
|
@ -481,7 +480,6 @@
|
|||
MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
|
||||
MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
|
||||
MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
|
||||
!endif
|
||||
|
||||
#
|
||||
# Usb Support
|
||||
|
|
|
@ -249,10 +249,11 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
|
|||
#
|
||||
# Network modules
|
||||
#
|
||||
!if $(NETWORK_ENABLE)
|
||||
!if $(E1000_ENABLE)
|
||||
FILE DRIVER = 5D695E11-9B3F-4b83-B25F-4A8D5D69BE07 {
|
||||
SECTION PE32 = Intel3.5/EFI32/E3507E2.EFI
|
||||
}
|
||||
!endif
|
||||
INF MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
|
||||
INF MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
||||
INF MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
|
||||
|
@ -266,7 +267,6 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
|
|||
INF MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
|
||||
INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
|
||||
INF MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
|
||||
!endif
|
||||
|
||||
#
|
||||
# Usb Support
|
||||
|
|
|
@ -474,7 +474,6 @@
|
|||
#
|
||||
# Network Support
|
||||
#
|
||||
!if $(NETWORK_ENABLE)
|
||||
MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
|
||||
MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
||||
MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
|
||||
|
@ -488,7 +487,6 @@
|
|||
MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
|
||||
MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
|
||||
MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
|
||||
!endif
|
||||
|
||||
#
|
||||
# Usb Support
|
||||
|
|
|
@ -249,10 +249,11 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
|
|||
#
|
||||
# Network modules
|
||||
#
|
||||
!if $(NETWORK_ENABLE)
|
||||
!if $(E1000_ENABLE)
|
||||
FILE DRIVER = 5D695E11-9B3F-4b83-B25F-4A8D5D69BE07 {
|
||||
SECTION PE32 = Intel3.5/EFIX64/E3507X2.EFI
|
||||
}
|
||||
!endif
|
||||
INF MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
|
||||
INF MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
||||
INF MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
|
||||
|
@ -266,7 +267,6 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
|
|||
INF MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
|
||||
INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
|
||||
INF MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
|
||||
!endif
|
||||
|
||||
#
|
||||
# Usb Support
|
||||
|
|
|
@ -472,7 +472,6 @@
|
|||
#
|
||||
# Network Support
|
||||
#
|
||||
!if $(NETWORK_ENABLE)
|
||||
MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
|
||||
MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
||||
MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
|
||||
|
@ -486,7 +485,6 @@
|
|||
MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
|
||||
MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
|
||||
MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
|
||||
!endif
|
||||
|
||||
#
|
||||
# Usb Support
|
||||
|
|
|
@ -249,10 +249,11 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
|
|||
#
|
||||
# Network modules
|
||||
#
|
||||
!if $(NETWORK_ENABLE)
|
||||
!if $(E1000_ENABLE)
|
||||
FILE DRIVER = 5D695E11-9B3F-4b83-B25F-4A8D5D69BE07 {
|
||||
SECTION PE32 = Intel3.5/EFIX64/E3507X2.EFI
|
||||
}
|
||||
!endif
|
||||
INF MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
|
||||
INF MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
|
||||
INF MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
|
||||
|
@ -266,7 +267,6 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
|
|||
INF MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
|
||||
INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf
|
||||
INF MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf
|
||||
!endif
|
||||
|
||||
#
|
||||
# Usb Support
|
||||
|
|
|
@ -108,31 +108,65 @@ $ OvmfPkg/build.sh -a IA32 -b RELEASE -t GCC45
|
|||
|
||||
=== Network Support ===
|
||||
|
||||
To add network drivers to OVMF:
|
||||
OVMF provides a generic UEFI network stack by default, with the lowest level
|
||||
driver (the NIC driver) missing in the default build. In order to complete the
|
||||
stack and make eg. DHCP, PXE Boot, and socket test utilities from the StdLib
|
||||
edk2 package work, (1) qemu has to be configured to emulate a NIC, (2) a
|
||||
matching UEFI NIC driver must be available when OVMF boots.
|
||||
|
||||
* 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
|
||||
(If a NIC is configured for the virtual machine, and -- dependent on boot order
|
||||
-- PXE booting is attempted, but no DHCP server responds to OVMF's DHCP
|
||||
DISCOVER message at startup, the boot process may take approx. 3 seconds
|
||||
longer.)
|
||||
|
||||
* Include the drivers in OVMF during the build:
|
||||
- Add '-D NETWORK_ENABLE' to your build command
|
||||
- For example: build -D NETWORK_ENABLE
|
||||
* For each NIC emulated by qemu, a GPLv2 licensed UEFI driver is available from
|
||||
the iPXE project. The qemu source distribution, starting with version 1.5,
|
||||
contains prebuilt binaries of these drivers (and of course allows one to
|
||||
rebuild them from source as well).
|
||||
|
||||
* 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
|
||||
* Use the qemu -netdev and -device options, or the legacy -net option, to
|
||||
enable NIC support: <http://wiki.qemu.org/Documentation/Networking>.
|
||||
|
||||
* For a qemu >= 1.5 binary running *without* any "-M machine" option where
|
||||
"machine" would identify a < qemu-1.5 configuration (for example: "-M
|
||||
pc-i440fx-1.4" or "-M pc-0.13"), the drivers are available from the default
|
||||
qemu installation to OVMF without further settings.
|
||||
|
||||
* For a qemu binary in [0.13, 1.5), or a qemu >= 1.5 binary with an "-M
|
||||
machine" option where "machine" selects a < qemu-1.5 configuration:
|
||||
|
||||
- download a >= 1.5.0-rc1 source tarball from <http://wiki.qemu.org/Download>,
|
||||
|
||||
- extract the following files from the tarball and install them in a
|
||||
location that is accessible to qemu processes (this may depend on your
|
||||
SELinux configuration, for example):
|
||||
|
||||
qemu-VERSION/pc-bios/efi-e1000.rom
|
||||
qemu-VERSION/pc-bios/efi-ne2k_pci.rom
|
||||
qemu-VERSION/pc-bios/efi-pcnet.rom
|
||||
qemu-VERSION/pc-bios/efi-rtl8139.rom
|
||||
qemu-VERSION/pc-bios/efi-virtio.rom
|
||||
|
||||
- extend the NIC's -device option on the qemu command line with a matching
|
||||
"romfile=" optarg:
|
||||
|
||||
-device e1000,...,romfile=/full/path/to/efi-e1000.rom
|
||||
-device ne2k_pci,...,romfile=/full/path/to/efi-ne2k_pci.rom
|
||||
-device pcnet,...,romfile=/full/path/to/efi-pcnet.rom
|
||||
-device rtl8139,...,romfile=/full/path/to/efi-rtl8139.rom
|
||||
-device virtio-net-pci,...,romfile=/full/path/to/efi-virtio.rom
|
||||
|
||||
* Independently of the iPXE NIC drivers, Intel's proprietary E1000 NIC driver
|
||||
can be embedded in the OVMF image at build time, as an alternative guest
|
||||
driver for "-device e1000":
|
||||
|
||||
- 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 driver in OVMF during the build:
|
||||
- Add "-D E1000_ENABLE -D FD_SIZE_2MB" to your build command,
|
||||
- For example: "build -D E1000_ENABLE -D FD_SIZE_2MB".
|
||||
|
||||
=== UNIXGCC Debug ===
|
||||
|
||||
|
|
Loading…
Reference in New Issue