]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: enable the generic network stack by default
authorjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 15 May 2013 18:20:39 +0000 (18:20 +0000)
committerjljusten <jljusten@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 15 May 2013 18:20:39 +0000 (18:20 +0000)
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

OvmfPkg/OvmfPkgIa32.dsc
OvmfPkg/OvmfPkgIa32.fdf
OvmfPkg/OvmfPkgIa32X64.dsc
OvmfPkg/OvmfPkgIa32X64.fdf
OvmfPkg/OvmfPkgX64.dsc
OvmfPkg/OvmfPkgX64.fdf
OvmfPkg/README

index c99cee39651b86d799fd271a23354cd6b2cfb1df..0e6d1879b5e19384f248f7be83c54aaa787b24c3 100644 (file)
   #\r
   # Network Support\r
   #\r
-!if $(NETWORK_ENABLE)\r
   MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf\r
   MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf\r
   MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf\r
   MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf\r
   MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
   MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
-!endif\r
 \r
   #\r
   # Usb Support\r
index 8861980b9dc7eba7228c61c502cadf33cdfd9364..4665b9e1bd36e012486017635f335bf518ea030f 100644 (file)
@@ -249,10 +249,11 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
 #\r
 # Network modules\r
 #\r
-!if $(NETWORK_ENABLE)\r
+!if $(E1000_ENABLE)\r
   FILE DRIVER = 5D695E11-9B3F-4b83-B25F-4A8D5D69BE07 {\r
     SECTION PE32 = Intel3.5/EFI32/E3507E2.EFI\r
   }\r
+!endif\r
   INF  MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf\r
   INF  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf\r
   INF  MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf\r
@@ -266,7 +267,6 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
   INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf\r
   INF  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
   INF  MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
-!endif\r
 \r
 #\r
 # Usb Support\r
index 9173aae70e6b6475ecefb101ec748dfb04a41a61..48da5328e0385d7462460f3949b6f3d84079c781 100644 (file)
   #\r
   # Network Support\r
   #\r
-!if $(NETWORK_ENABLE)\r
   MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf\r
   MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf\r
   MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf\r
   MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf\r
   MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
   MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
-!endif\r
 \r
   #\r
   # Usb Support\r
index 93a36b7ccad11a5e1bfb3247e59be1641bdd8cb7..177c880d4b2a1ce7ae33d31cdd6f661f9c7baca4 100644 (file)
@@ -249,10 +249,11 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
 #\r
 # Network modules\r
 #\r
-!if $(NETWORK_ENABLE)\r
+!if $(E1000_ENABLE)\r
   FILE DRIVER = 5D695E11-9B3F-4b83-B25F-4A8D5D69BE07 {\r
     SECTION PE32 = Intel3.5/EFIX64/E3507X2.EFI\r
   }\r
+!endif\r
   INF  MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf\r
   INF  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf\r
   INF  MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf\r
@@ -266,7 +267,6 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
   INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf\r
   INF  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
   INF  MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
-!endif\r
 \r
 #\r
 # Usb Support\r
index dce9ce108698ba60c97485b7966022da6c1750c8..7f138ce48d9aed70a380a22f79f732390ae0a2e8 100644 (file)
   #\r
   # Network Support\r
   #\r
-!if $(NETWORK_ENABLE)\r
   MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf\r
   MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf\r
   MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf\r
   MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf\r
   MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
   MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
-!endif\r
 \r
   #\r
   # Usb Support\r
index d023cb19b047ab4e3119cd209dbf2f92a80e054f..1d3ba8e52fed63b3ed0c3bae209897c9592d72ee 100644 (file)
@@ -249,10 +249,11 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
 #\r
 # Network modules\r
 #\r
-!if $(NETWORK_ENABLE)\r
+!if $(E1000_ENABLE)\r
   FILE DRIVER = 5D695E11-9B3F-4b83-B25F-4A8D5D69BE07 {\r
     SECTION PE32 = Intel3.5/EFIX64/E3507X2.EFI\r
   }\r
+!endif\r
   INF  MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf\r
   INF  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf\r
   INF  MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf\r
@@ -266,7 +267,6 @@ FILE FREEFORM = PCD(gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLogoFile) {
   INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf\r
   INF  MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
   INF  MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
-!endif\r
 \r
 #\r
 # Usb Support\r
index 2c8b51fc76bf79e4ec5d397313b730096bd100a9..13058eae47a89c4abcf34ce2be62de829e8da17a 100644 (file)
@@ -108,31 +108,65 @@ $ OvmfPkg/build.sh -a IA32 -b RELEASE -t GCC45
 \r
 === Network Support ===\r
 \r
-To add network drivers to OVMF:\r
-\r
-* Download UEFI drivers for the e1000 NIC\r
-  - http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=17515&lang=eng\r
-  - Install the drivers into a directory called Intel3.5 in your WORKSPACE\r
-\r
-* Include the drivers in OVMF during the build:\r
-  - Add '-D NETWORK_ENABLE' to your build command\r
-  - For example: build -D NETWORK_ENABLE\r
-\r
-* Use the QEMU -net parameter to enable NIC support.\r
-  - QEMU does not support UEFI DHCP or UEFI PXE Boot, so long timeouts will\r
-    occur when NICs are enabled.  The long timeouts can be avoided by\r
-    interrupts the boot sequence by pressing a key when the logo appears.\r
-  - Example: Enable e1000 NIC with a DHCP server and restrict packet\r
-    forwarding:\r
-    -net nic,model=e1000 -net user,restrict=yes -net user,dhcpstart=10.0.2.10\r
-  - Example: Enable e1000 NIC with a DHCP server, restrict packet forwarding,\r
-    and generate PCAP file:\r
-    -net nic,model=e1000 -net user,restrict=yes -net user,dhcpstart=10.0.2.10\r
-    -net dump,file=a.pcap\r
-  - Example: Enable 2 e1000 NICs with a DHCP server and restrict\r
-    packet forwarding:\r
-    -net nic,model=e1000,addr=3 -net nic,model=e1000,addr=4\r
-    -net user,restrict=yes -net user,dhcpstart=10.0.2.10\r
+OVMF provides a generic UEFI network stack by default, with the lowest level\r
+driver (the NIC driver) missing in the default build. In order to complete the\r
+stack and make eg. DHCP, PXE Boot, and socket test utilities from the StdLib\r
+edk2 package work, (1) qemu has to be configured to emulate a NIC, (2) a\r
+matching UEFI NIC driver must be available when OVMF boots.\r
+\r
+(If a NIC is configured for the virtual machine, and -- dependent on boot order\r
+-- PXE booting is attempted, but no DHCP server responds to OVMF's DHCP\r
+DISCOVER message at startup, the boot process may take approx. 3 seconds\r
+longer.)\r
+\r
+* For each NIC emulated by qemu, a GPLv2 licensed UEFI driver is available from\r
+  the iPXE project. The qemu source distribution, starting with version 1.5,\r
+  contains prebuilt binaries of these drivers (and of course allows one to\r
+  rebuild them from source as well).\r
+\r
+* Use the qemu -netdev and -device options, or the legacy -net option, to\r
+  enable NIC support: <http://wiki.qemu.org/Documentation/Networking>.\r
+\r
+* For a qemu >= 1.5 binary running *without* any "-M machine" option where\r
+  "machine" would identify a < qemu-1.5 configuration (for example: "-M\r
+  pc-i440fx-1.4" or "-M pc-0.13"), the drivers are available from the default\r
+  qemu installation to OVMF without further settings.\r
+\r
+* For a qemu binary in [0.13, 1.5), or a qemu >= 1.5 binary with an "-M\r
+  machine" option where "machine" selects a < qemu-1.5 configuration:\r
+\r
+  - download a >= 1.5.0-rc1 source tarball from <http://wiki.qemu.org/Download>,\r
+\r
+  - extract the following files from the tarball and install them in a\r
+    location that is accessible to qemu processes (this may depend on your\r
+    SELinux configuration, for example):\r
+\r
+    qemu-VERSION/pc-bios/efi-e1000.rom\r
+    qemu-VERSION/pc-bios/efi-ne2k_pci.rom\r
+    qemu-VERSION/pc-bios/efi-pcnet.rom\r
+    qemu-VERSION/pc-bios/efi-rtl8139.rom\r
+    qemu-VERSION/pc-bios/efi-virtio.rom\r
+\r
+  - extend the NIC's -device option on the qemu command line with a matching\r
+    "romfile=" optarg:\r
+\r
+    -device e1000,...,romfile=/full/path/to/efi-e1000.rom\r
+    -device ne2k_pci,...,romfile=/full/path/to/efi-ne2k_pci.rom\r
+    -device pcnet,...,romfile=/full/path/to/efi-pcnet.rom\r
+    -device rtl8139,...,romfile=/full/path/to/efi-rtl8139.rom\r
+    -device virtio-net-pci,...,romfile=/full/path/to/efi-virtio.rom\r
+\r
+* Independently of the iPXE NIC drivers, Intel's proprietary E1000 NIC driver\r
+  can be embedded in the OVMF image at build time, as an alternative guest\r
+  driver for "-device e1000":\r
+\r
+  - Download UEFI drivers for the e1000 NIC\r
+    - http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=17515&lang=eng\r
+    - Install the drivers into a directory called Intel3.5 in your WORKSPACE.\r
+\r
+  - Include the driver in OVMF during the build:\r
+    - Add "-D E1000_ENABLE -D FD_SIZE_2MB" to your build command,\r
+    - For example: "build -D E1000_ENABLE -D FD_SIZE_2MB".\r
 \r
 === UNIXGCC Debug ===\r
 \r