Source: grub2 Version: 2.06-3 Severity: normal Control: found -1 2.04-20 Hi,
I'm trying to netboot Debian via HTTP (on UEFI). grub2 seems to not find its grub.cfg and the http server does not see any tried to download it either. I only get the grub rescue shell and running "set" shows no network configurations (no net_* variables are set to something meaningful, unlike when booting via PXE). I tried with grubnetx64.efi.signed from both stable and testing/unstable, chainloaded via shimx64.efi.signed. Ubuntu's grub has at least the following changes which seem related: +--- | grub2 (2.06-2ubuntu1) jammy; urgency=medium | * Merge from Debian unstable; remaining changes: | [...] | - build-efi-images: Add http to netboot images | [...] | - Added patches: | [...] | + rhboot-f34-efinet-also-use-the-firmware-acceleration-for-http.patch +--- The first change should be adding "http" to NET_MODULES in "build-efi-images": +--- | NET_MODULES="$CD_MODULES | http | tftp | " +---[ debian/build-efi-images ] This seems generally useful even when not booting via http. I'm not sure if the second patch is relevant and what its upstream status is, but I've attached it (rhboot-f34-efinet-also-use-the-firmware-acceleration-for-http.patch extracted from grub2_2.06-2ubuntu7.dsc). It seems to change various `net_ls_*` commands to use the EFI version of the command when booted over http (instead of only when booted over https and opa). It would be nice if http boot worked. Ansgar
From: Peter Jones <pjo...@redhat.com> Date: Mon, 30 Jul 2018 14:06:42 -0400 Subject: efinet: also use the firmware acceleration for http Signed-off-by: Peter Jones <pjo...@redhat.com> Patch-Name: rhboot-f34-efinet-also-use-the-firmware-acceleration-for-http.patch --- grub-core/net/efi/net.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/grub-core/net/efi/net.c b/grub-core/net/efi/net.c index 9b7a218..b2fe4db 100644 --- a/grub-core/net/efi/net.c +++ b/grub-core/net/efi/net.c @@ -1336,7 +1336,9 @@ grub_efi_net_boot_from_https (void) && (subtype == GRUB_EFI_URI_DEVICE_PATH_SUBTYPE)) { grub_efi_uri_device_path_t *uri_dp = (grub_efi_uri_device_path_t *) dp; - return (grub_strncmp ((const char*)uri_dp->uri, "https://", sizeof ("https://") - 1) == 0) ? 1 : 0; + grub_dprintf ("efinet", "url:%s\n", (const char *)uri_dp->uri); + return (grub_strncmp ((const char *)uri_dp->uri, "https://", sizeof ("https://") - 1) == 0 || + grub_strncmp ((const char *)uri_dp->uri, "http://", sizeof ("http://") - 1) == 0); } if (GRUB_EFI_END_ENTIRE_DEVICE_PATH (dp))