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