[PATCH v3 00/15] efi_loader: efi http and ipconfig drivers

Heinrich Schuchardt xypron.glpk at gmx.de
Thu Nov 14 17:33:50 CET 2024


On 11/14/24 17:16, Adriano Córdova wrote:
> Hi Ilias,
> I have been testing with grub, and with the efi selftest. Here are the
> steps to test with a riscv grub:
>
> 1. Get grubriscv64.efi from e.g. the following .deb package
> wget http://launchpadlibrarian.net/754414418/grub-efi-riscv64-
> unsigned_2.12-5ubuntu5.1_riscv64.deb <http://
> launchpadlibrarian.net/754414418/grub-efi-riscv64-
> unsigned_2.12-5ubuntu5.1_riscv64.deb>

If you are on Debian or Ubuntu you can use

dpkg -x grub-efi-riscv64-unsigned_2.12-5ubuntu5.1_riscv64.deb target_dir

for extraction.

On other distros

ar -x grub-efi-riscv64-unsigned_2.12-5ubuntu5.1_riscv64.deb
mkdir -p target_dir
tar --zstd -xf data.tar.zst -C target_dir

target_dir/usr/lib/grub/riscv64-efi/monolithic/grubnetriscv64.efi
is the file I am using. That one has all the network modules included.

Best regards

Heinrich

>
> 2. Compile U-boot with qemu-riscv64_smode_defconfig. Enable CMD_WGET.
>
> 3. Create a tap interface:
> $ sudo ip tuntap add dev tap0 mode tap
> $ sudo ip addr add 10.0.0.0/24 <http://10.0.0.0/24> dev tap0
> $ sudo ip link set dev tap0 up
>
> 4. Start an http server in a directory containing grubriscv64.efi and a
> test file (e.g. a riscv kernel)
> $  sudo python3 -m http.server 80 --bind 10.0.0.0
>
> 5. Launch U-boot:
> $ qemu-system-riscv64 \
>      -machine virt \
>      -nographic \
>      -kernel u-boot \
>      -netdev tap,id=net0,ifname=tap0,script=no,downscript=no \
>      -device virtio-net-device,netdev=net0
>
> 6. Inside U-boot's console
> => setenv ipaddr 10.0.0.1
> => setenv netmask 255.255.255.0
> => wget 10.0.0.0:80/grubriscv64.efi <http://10.0.0.0/grubriscv64.efi>
> => bootefi $loadaddr
>
> 7. Print debug, check address and installed protocols (optional):
> grub> set debug="peimage,net"
> grub> net_ls_addr
> grub> lsefi
>
> 8. Download a test file, e.g. a kernel, through http (here Image is a
> riscv linux kernel):
> grub> linux (http,10.0.0.0:80)/Image
>
> 9. Try boot it:
> grub> boot
>
> Best,
> Adriano
>
> El jue, 14 nov 2024 a las 12:22, Ilias Apalodimas
> (<ilias.apalodimas at linaro.org <mailto:ilias.apalodimas at linaro.org>>)
> escribió:
>
>     Hi Adriano,
>
>     On Mon, 11 Nov 2024 at 23:10, Adriano Cordova <adrianox at gmail.com
>     <mailto:adrianox at gmail.com>> wrote:
>
>         Add support for EFI_HTTP_PROTOCOL,
>         EFI_HTTP_SERVICE_BINDING_PROTOCOL,
>         and EFI_IP4_CONFIG2_PROTOCOL.
>
>         This series depends on the series 'wget: Expose wget to
>         applications',
>         also found at:
>         https://github.com/0n41rd4/u-boot/commits/http-driver-wget
>         <https://github.com/0n41rd4/u-boot/commits/http-driver-wget>
>
>         The fist two patches of this series are not efi specific and
>         have also
>         been sent to the corresponding maintainers, but this series
>         depends on
>         them, so they are added here for redundancy. A branch with both
>         series
>         of patches, concatenated, is at:
>         https://github.com/0n41rd4/u-boot/commits/efi-http-driver
>         <https://github.com/0n41rd4/u-boot/commits/efi-http-driver>
>
>
>     It would help a lot if we had pointers (or an EFI app) using this
>     protocol to test. Are you using any of that for devel/debugging?
>
>     Thanks
>     /Ilias
>
>
>
>         Adriano Cordova (13):
>            net: net_utils: Move ip_to_string to lib/net_utils.c
>            net: wget: let wget_with_dns work with dns disabled
>            efi_loader: device_path: add definition of
>              DEVICE_PATH_SUB_TYPE_MSG_IPV4
>            efi_loader: device_path: add efi_dp_from_ipv4
>            efi_api: add definitions for HTTP and IP4_CONFIG2 protocols
>            efi_loader: efi_net: add efi_net_set_addr, efi_net_get_addr
>            efi_loader: device_path: add support for HTTP device path
>            efi_loader: net: set EFI bootdevice device path to HTTP when
>         loaded
>              from wget
>            efi_loader: net: add support to send http requests and parse http
>              headers
>            efi_loader: efi_net: add EFI_IP4_CONFIG2_PROTOCOL
>            efi_loader: efi_net: add EFI_HTTP_PROTOCOL
>            efi_selftest: add test for HTTP protocol
>            efi_selftest: add test for IPv4 Config2 protocol
>
>         Heinrich Schuchardt (2):
>            efi_loader: add IPv4() to device path to text protocol
>            lib: uuid: display HTTP and IPV4 Config II protocols
>
>           include/efi_api.h                        | 220 +++++++++
>           include/efi_loader.h                     |  42 ++
>           include/net-common.h                     |  10 +
>           lib/efi_loader/Kconfig                   |  17 +
>           lib/efi_loader/Makefile                  |   2 +
>           lib/efi_loader/efi_device_path.c         |  95 +++-
>           lib/efi_loader/efi_device_path_to_text.c |  23 +
>           lib/efi_loader/efi_http.c                | 563 +++++++++++++++
>         ++++++++
>           lib/efi_loader/efi_ipconfig.c            | 216 +++++++++
>           lib/efi_loader/efi_net.c                 | 316 ++++++++++++-
>           lib/efi_selftest/Makefile                |   2 +
>           lib/efi_selftest/efi_selftest_http.c     | 315 +++++++++++++
>           lib/efi_selftest/efi_selftest_ipconfig.c | 173 +++++++
>           lib/net_utils.c                          |  11 +
>           lib/uuid.c                               |  14 +
>           net/lwip/wget.c                          |   1 +
>           net/net.c                                |  11 -
>           net/wget.c                               |  39 +-
>           18 files changed, 2038 insertions(+), 32 deletions(-)
>           create mode 100644 lib/efi_loader/efi_http.c
>           create mode 100644 lib/efi_loader/efi_ipconfig.c
>           create mode 100644 lib/efi_selftest/efi_selftest_http.c
>           create mode 100644 lib/efi_selftest/efi_selftest_ipconfig.c
>
>         --
>         2.43.0
>



More information about the U-Boot mailing list