Message ID | 20241018142235.715571-7-ilias.apalodimas@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | Enable https for wget | expand |
On Fri, 18 Oct 2024 at 08:23, Ilias Apalodimas <ilias.apalodimas@linaro.org> wrote: > > We now can use a combination og lwIP & mbedTLS and download from > https://. Describe the config options needed to enable it as well > as some limitations > > Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> > --- > doc/develop/uefi/uefi.rst | 45 +++++++++++++++++++++++++++++++++++++-- > 1 file changed, 43 insertions(+), 2 deletions(-) > Reviewed-by: Simon Glass <sjg@chromium.org> > diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst > index 0760ca91d4fc..198288a6889f 100644 > --- a/doc/develop/uefi/uefi.rst > +++ b/doc/develop/uefi/uefi.rst > @@ -681,8 +681,8 @@ 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 > -~~~~~~~~~~~~~~ > +UEFI HTTP Boot using the legacy TCP stack > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > HTTP Boot provides the capability for system deployment and configuration > over the network. HTTP Boot can be activated by specifying:: > @@ -715,6 +715,47 @@ We need to preset the "httpserverip" environment variable to proceed the wget:: > > setenv httpserverip 192.168.1.1 > > +UEFI HTTP(s) Boot using lwIP > +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > +Similar to the above U-Boot can do EFI HTTP boot using lwIP. If we combine this > +with mbedTLS we can also download from https:// > + > +HTTP(s) Boot can be activated by specifying:: > + > + CONFIG_EFI_HTTP_BOOT > + CONFIG_NET_LWIP > + CONFIG_MBEDTLS_LIB_TLS > + > +For QEMU targets there's a Kconfig that supports this by default:: > + > + make qemu_arm64_lwip_defconfig > + > +The commands and functionality are similar to the legacy stack, with the notable > +exception of not having to define an "httpserverip" if you are trying to resolve > +an IP. However, lwIP code doesn't yet support redirects:: > + > + => efidebug boot add -u 1 netinst https://cdimage.debian.org/cdimage/weekly-builds/arm64/iso-cd/debian-testing-arm64-netinst.iso > + => dhcp > + DHCP client bound to address 10.0.2.15 (3 ms) > + => efidebug boot order 1 > + => bootefi bootmgr > + > + HTTP server error 302 > + Loading Boot0001 'netinst' failed > + EFI boot manager: Cannot load any image > + > +If the url you specified isn't a redirect:: > + > + => efidebug boot add -u 1 netinst https://download.rockylinux.org/pub/rocky/9/isos/aarch64/Rocky-9.4-aarch64-minimal.iso > + => dhcp > + => bootefi bootmgr > + ####################################### > + > +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. > + > Executing the built in hello world application > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > -- > 2.45.2 >
diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst index 0760ca91d4fc..198288a6889f 100644 --- a/doc/develop/uefi/uefi.rst +++ b/doc/develop/uefi/uefi.rst @@ -681,8 +681,8 @@ 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 -~~~~~~~~~~~~~~ +UEFI HTTP Boot using the legacy TCP stack +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HTTP Boot provides the capability for system deployment and configuration over the network. HTTP Boot can be activated by specifying:: @@ -715,6 +715,47 @@ We need to preset the "httpserverip" environment variable to proceed the wget:: setenv httpserverip 192.168.1.1 +UEFI HTTP(s) Boot using lwIP +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Similar to the above U-Boot can do EFI HTTP boot using lwIP. If we combine this +with mbedTLS we can also download from https:// + +HTTP(s) Boot can be activated by specifying:: + + CONFIG_EFI_HTTP_BOOT + CONFIG_NET_LWIP + CONFIG_MBEDTLS_LIB_TLS + +For QEMU targets there's a Kconfig that supports this by default:: + + make qemu_arm64_lwip_defconfig + +The commands and functionality are similar to the legacy stack, with the notable +exception of not having to define an "httpserverip" if you are trying to resolve +an IP. However, lwIP code doesn't yet support redirects:: + + => efidebug boot add -u 1 netinst https://cdimage.debian.org/cdimage/weekly-builds/arm64/iso-cd/debian-testing-arm64-netinst.iso + => dhcp + DHCP client bound to address 10.0.2.15 (3 ms) + => efidebug boot order 1 + => bootefi bootmgr + + HTTP server error 302 + Loading Boot0001 'netinst' failed + EFI boot manager: Cannot load any image + +If the url you specified isn't a redirect:: + + => efidebug boot add -u 1 netinst https://download.rockylinux.org/pub/rocky/9/isos/aarch64/Rocky-9.4-aarch64-minimal.iso + => dhcp + => bootefi bootmgr + ####################################### + +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. + Executing the built in hello world application ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We now can use a combination og lwIP & mbedTLS and download from https://. Describe the config options needed to enable it as well as some limitations Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org> --- doc/develop/uefi/uefi.rst | 45 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-)