Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#1016873: grub2: enable "http" module for netboot

246 views
Skip to first unread message

Ansgar

unread,
Aug 8, 2022, 1:00:03 PM8/8/22
to
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
rhboot-f34-efinet-also-use-the-firmware-acceleration-for-http.patch

Ansgar

unread,
Aug 8, 2022, 4:30:03 PM8/8/22
to
On Mon, 08 Aug 2022 18:54:41 +0200 Ansgar wrote:
> 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
> +---

I tried a local build with:
- http added to NET_MODULES
- patch suse-add-support-for-UEFI-network-protocols.patch
(required for the next patch)
- patch rhboot-f34-efinet-also-use-the-firmware-acceleration-for-http.patch
with the patches from grub2_2.06-2ubuntu7.dsc.

With this grub looks for grub.cfg:

+---
| X.X.X.X - - [08/Aug/2022:22:09:19 +0200] "HEAD /patched/bootx64.efi HTTP/1.1" 200 0 "-" "UefiHttpBoot/1.0"
| X.X.X.X - - [08/Aug/2022:22:09:19 +0200] "GET /patched/bootx64.efi HTTP/1.1" 200 934240 "-" "UefiHttpBoot/1.0"
| X.X.X.X - - [08/Aug/2022:22:09:20 +0200] "GET /patched//grubx64.efi HTTP/1.1" 200 1478656 "-" "UefiHttpBoot/1.0"
| X.X.X.X - - [08/Aug/2022:22:09:20 +0200] "HEAD /grub/x86_64-efi/command.lst HTTP/1.1" 404 0 "-" "UefiHttpBoot/1.0"
| X.X.X.X - - [08/Aug/2022:22:09:20 +0200] "HEAD /grub/x86_64-efi/fs.lst HTTP/1.1" 404 0 "-" "UefiHttpBoot/1.0"
| X.X.X.X - - [08/Aug/2022:22:09:20 +0200] "HEAD /grub/x86_64-efi/crypto.lst HTTP/1.1" 404 0 "-" "UefiHttpBoot/1.0"
| X.X.X.X - - [08/Aug/2022:22:09:20 +0200] "HEAD /grub/x86_64-efi/terminal.lst HTTP/1.1" 404 0 "-" "UefiHttpBoot/1.0"
| X.X.X.X - - [08/Aug/2022:22:09:21 +0200] "HEAD /grub/grub.cfg HTTP/1.1" 200 0 "-" "UefiHttpBoot/1.0"
| X.X.X.X - - [08/Aug/2022:22:09:21 +0200] "GET /grub/grub.cfg HTTP/1.1" 200 779 "-" "UefiHttpBoot/1.0"
+---

It would also be nice if grub searched for grub.cfg in a location
relative to grubx64.efi like shim does for grubx64.efi (shim is
bootx64.efi here). (And/or DHCP options like pxelinux has[1].)

Ansgar

[1]: https://wiki.syslinux.org/wiki/index.php?title=PXELINUX#DHCP_options
0 new messages