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))

Reply via email to