This commit introdues a new build option to OvmfPkg: HTTP_BOOT_ENABLE.
When HttpBoot is enabled, a new Network boot option will show in the
boot manager menu with the device path like this:
PciRoot(0x0)/Pci(0x3,0x0)/MAC(
525400123456,0x1)/IPv4(0.0.0.0)/Uri()
It works like the PXE one but fetches the NBP from the given http
url instead of the tftp service.
A simple testing environment can be set up with the QEMU tap network
and dnsmasq + lighttpd.
Here is the example of the dnsmasq config:
interface=<tap interface>
dhcp-range=192.168.111.100,192.168.111.120,12h
dhcp-option=60,"HTTPClient"
dhcp-boot="http://<tap ip>/<efi file>"
It's similar to the PXE server settings except the tftp function is
disabled, the option 60 must be "HTTPClient", and the boot uri is a
http url.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gary Ching-Pang Lin <glin@suse.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18258
6f19259b-4bc3-4df7-8a09-
765794883524
#\r
DEFINE SECURE_BOOT_ENABLE = FALSE\r
DEFINE NETWORK_IP6_ENABLE = FALSE\r
+ DEFINE HTTP_BOOT_ENABLE = FALSE\r
\r
[BuildOptions]\r
GCC:*_UNIXGCC_*_CC_FLAGS = -DMDEPKG_NDEBUG\r
AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf\r
!endif\r
\r
+!if $(HTTP_BOOT_ENABLE) == TRUE\r
+ HttpLib|MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf\r
+!endif\r
+\r
S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf\r
SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf\r
OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf\r
MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf\r
MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
+!endif\r
+!if $(HTTP_BOOT_ENABLE) == TRUE\r
+ NetworkPkg/DnsDxe/DnsDxe.inf\r
+ NetworkPkg/HttpDxe/HttpDxe.inf\r
+ NetworkPkg/HttpBootDxe/HttpBootDxe.inf\r
!endif\r
OvmfPkg/VirtioNetDxe/VirtioNet.inf\r
\r
INF MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf\r
INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
INF MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
+!endif\r
+!if $(HTTP_BOOT_ENABLE) == TRUE\r
+ INF NetworkPkg/DnsDxe/DnsDxe.inf\r
+ INF NetworkPkg/HttpDxe/HttpDxe.inf\r
+ INF NetworkPkg/HttpBootDxe/HttpBootDxe.inf\r
!endif\r
INF OvmfPkg/VirtioNetDxe/VirtioNet.inf\r
\r
#\r
DEFINE SECURE_BOOT_ENABLE = FALSE\r
DEFINE NETWORK_IP6_ENABLE = FALSE\r
+ DEFINE HTTP_BOOT_ENABLE = FALSE\r
\r
[BuildOptions]\r
GCC:*_UNIXGCC_*_CC_FLAGS = -DMDEPKG_NDEBUG\r
AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf\r
!endif\r
\r
+!if $(HTTP_BOOT_ENABLE) == TRUE\r
+ HttpLib|MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf\r
+!endif\r
+\r
S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf\r
SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf\r
OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf\r
MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf\r
MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
+!endif\r
+!if $(HTTP_BOOT_ENABLE) == TRUE\r
+ NetworkPkg/DnsDxe/DnsDxe.inf\r
+ NetworkPkg/HttpDxe/HttpDxe.inf\r
+ NetworkPkg/HttpBootDxe/HttpBootDxe.inf\r
!endif\r
OvmfPkg/VirtioNetDxe/VirtioNet.inf\r
\r
INF MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf\r
INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
INF MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
+!endif\r
+!if $(HTTP_BOOT_ENABLE) == TRUE\r
+ INF NetworkPkg/DnsDxe/DnsDxe.inf\r
+ INF NetworkPkg/HttpDxe/HttpDxe.inf\r
+ INF NetworkPkg/HttpBootDxe/HttpBootDxe.inf\r
!endif\r
INF OvmfPkg/VirtioNetDxe/VirtioNet.inf\r
\r
#\r
DEFINE SECURE_BOOT_ENABLE = FALSE\r
DEFINE NETWORK_IP6_ENABLE = FALSE\r
+ DEFINE HTTP_BOOT_ENABLE = FALSE\r
\r
[BuildOptions]\r
GCC:*_UNIXGCC_*_CC_FLAGS = -DMDEPKG_NDEBUG\r
AuthVariableLib|MdeModulePkg/Library/AuthVariableLibNull/AuthVariableLibNull.inf\r
!endif\r
\r
+!if $(HTTP_BOOT_ENABLE) == TRUE\r
+ HttpLib|MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf\r
+!endif\r
+\r
S3BootScriptLib|MdeModulePkg/Library/PiDxeS3BootScriptLib/DxeS3BootScriptLib.inf\r
SmbusLib|MdePkg/Library/BaseSmbusLibNull/BaseSmbusLibNull.inf\r
OrderedCollectionLib|MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.inf\r
MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf\r
MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
+!endif\r
+!if $(HTTP_BOOT_ENABLE) == TRUE\r
+ NetworkPkg/DnsDxe/DnsDxe.inf\r
+ NetworkPkg/HttpDxe/HttpDxe.inf\r
+ NetworkPkg/HttpBootDxe/HttpBootDxe.inf\r
!endif\r
OvmfPkg/VirtioNetDxe/VirtioNet.inf\r
\r
INF MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe.inf\r
INF MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf\r
INF MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf\r
+!endif\r
+!if $(HTTP_BOOT_ENABLE) == TRUE\r
+ INF NetworkPkg/DnsDxe/DnsDxe.inf\r
+ INF NetworkPkg/HttpDxe/HttpDxe.inf\r
+ INF NetworkPkg/HttpBootDxe/HttpBootDxe.inf\r
!endif\r
INF OvmfPkg/VirtioNetDxe/VirtioNet.inf\r
\r