aboutsummaryrefslogtreecommitdiff
path: root/doc/develop/uefi/uefi.rst
diff options
context:
space:
mode:
authorTom Rini2023-11-18 15:52:53 -0500
committerTom Rini2023-11-18 15:52:53 -0500
commit9e4b42267e1fb5805ecddbb92629f456d8cd4047 (patch)
tree55418a14399a744ee648c997eeb1b3fdb3fb5ef4 /doc/develop/uefi/uefi.rst
parentae7ec8b0be41b59ef323f7531c0fe6745e8fef45 (diff)
parentc022eed4bedf2e16e737fde22b03289d2a48cb27 (diff)
Merge tag 'efi-next-18112023' of https://source.denx.de/u-boot/custodians/u-boot-tpm into next
EFI HTTP Boot is currently supported by using a combination of wget, blkmap and bootefi commands. The user has to download the image, mount it using blkmap and then execute the efi installer using bootefi. This series simplifies the user experience. Instead of doing all the steps manually, users can now enable a new Kconfig (EFI_HTTP_BOOT) which will select wget, blkmap and dns options. They can then use efidebug command to add a boot option for the EFI Bootmanager using => efidebug boot add -u 3 netinst http://<path> => efidebug boot order 3 => bootefi bootmgr The boot manager will automatically download and mount the image. Once it's mounted it will locate and launch the installer. It's worth noting that this rarely fails, but the reason is irrelevant to the current patchset. More information can be found here https://lore.kernel.org/u-boot/CAOMZO5CoduEgwgdQiybmoKh6qQZOezUtRRQO4ecaGdZBBz5dDw@mail.gmail.c om/ The tl;dr is that wget sometimes fails to download the file correctly or set the size env variables. We expect all these to be solved once LWIP is stable and pulled
Diffstat (limited to 'doc/develop/uefi/uefi.rst')
-rw-r--r--doc/develop/uefi/uefi.rst34
1 files changed, 34 insertions, 0 deletions
diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst
index fb16ac743a0..6bc9d92285b 100644
--- a/doc/develop/uefi/uefi.rst
+++ b/doc/develop/uefi/uefi.rst
@@ -642,6 +642,40 @@ UEFI variables. Booting according to these variables is possible via::
As of U-Boot v2020.10 UEFI variables cannot be set at runtime. The U-Boot
command 'efidebug' can be used to set the variables.
+UEFI HTTP Boot
+~~~~~~~~~~~~~~
+
+HTTP Boot provides the capability for system deployment and configuration
+over the network. HTTP Boot can be activated by specifying::
+
+ CONFIG_EFI_HTTP_BOOT
+
+Enabling that will automatically select::
+
+ CONFIG_CMD_DNS
+ CONFIG_CMD_WGET
+ CONFIG_BLKMAP
+
+Set up the load option specifying the target URI::
+
+ efidebug boot add -u 1 netinst http://foo/bar
+
+When this load option is selected as boot selection, resolve the
+host ip address by dns, then download the file with wget.
+If the downloaded file extension is .iso or .img file, efibootmgr tries to
+mount the image and boot with the default file(e.g. EFI/BOOT/BOOTAA64.EFI).
+If the downloaded file is PE-COFF image, load the downloaded file and
+start it.
+
+The current implementation tries to resolve the IP address as a host name.
+If the uri is like "http://192.168.1.1/foobar",
+the dns process tries to resolve the host "192.168.1.1" and it will
+end up with "host not found".
+
+We need to preset the "httpserverip" environment variable to proceed the wget::
+
+ setenv httpserverip 192.168.1.1
+
Executing the built in hello world application
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~