Package: grub2 / 2.02~beta3-5

Metadata

Package Version Patches format
grub2 2.02~beta3-5 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
olpc_prefix_hack.patch | (download)

grub-core/kern/ieee1275/init.c | 11 11 + 0 - 0 !
1 file changed, 11 insertions(+)

 hack prefix for olpc

This sucks, but it's better than what OFW was giving us.

Patch-Name: olpc_prefix_hack.patch

core_in_fs.patch | (download)

util/setup.c | 8 8 + 0 - 0 !
1 file changed, 8 insertions(+)

 write marker if core.img was written to filesystem

The Debian bug reporting script includes a warning in this case.

Patch-Name: core_in_fs.patch

dpkg_version_comparison.patch | (download)

util/grub-mkconfig_lib.in | 7 4 + 3 - 0 !
1 file changed, 4 insertions(+), 3 deletions(-)

 improve handling of debian kernel version numbers

grub_legacy_0_based_partitions.patch | (download)

util/getroot.c | 14 14 + 0 - 0 !
1 file changed, 14 insertions(+)

 support running grub-probe in grub-legacy's update-grub

disable_floppies.patch | (download)

grub-core/kern/emu/hostdisk.c | 12 12 + 0 - 0 !
1 file changed, 12 insertions(+)

 disable use of floppy devices

An ugly kludge.  Should this be merged upstream?

grub.cfg_400.patch | (download)

util/grub-mkconfig.in | 4 4 + 0 - 0 !
1 file changed, 4 insertions(+)

 make grub.cfg world-readable if it contains no passwords

Patch-Name: grub.cfg_400.patch

gfxpayload_keep_default.patch | (download)

util/grub.d/10_linux.in | 4 0 + 4 - 0 !
1 file changed, 4 deletions(-)

 disable gfxpayload=keep by default

Setting gfxpayload=keep has been known to cause efifb to be
inappropriately enabled.  In any case, with the current Linux kernel the
result of this option is that early kernelspace will be unable to print
anything to the console, so (for example) if boot fails and you end up
dumped to an initramfs prompt, you won't be able to see anything on the
screen.  As such it shouldn't be enabled by default in Debian, no matter
what kernel options are enabled.

gfxpayload=keep is a good idea but rather ahead of its time ...

Bug-Debian: http://bugs.debian.org/567245
install_stage2_confusion.patch | (download)

util/grub-install.c | 14 14 + 0 - 0 !
1 file changed, 14 insertions(+)

 if grub legacy is still around, tell packaging to ignore it

Bug-Debian: http://bugs.debian.org/586143
mkrescue_efi_modules.patch | (download)

util/grub-mkrescue.c | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 build vfat into efi boot images

mkconfig_loopback.patch | (download)

util/grub-mkconfig_lib.in | 24 24 + 0 - 0 !
util/grub.d/10_linux.in | 5 5 + 0 - 0 !
util/grub.d/20_linux_xen.in | 5 5 + 0 - 0 !
3 files changed, 34 insertions(+)

 handle filesystems loop-mounted on file images

Improve prepare_grub_to_access_device to emit appropriate commands for
such filesystems, and ignore them in Linux grub.d scripts.

This is needed for Ubuntu's Wubi installation method.

This patch isn't inherently Debian/Ubuntu-specific.  losetup and
/proc/mounts are Linux-specific, though, so we might need to refine this
before sending it upstream.  The changes to the Linux grub.d scripts
might be better handled by integrating 10_lupin properly instead.

Patch-Name: mkconfig_loopback.patch

restore_mkdevicemap.patch | (download)

Makefile.util.def | 17 17 + 0 - 0 !
docs/man/grub-mkdevicemap.h2m | 4 4 + 0 - 0 !
include/grub/util/deviceiter.h | 14 14 + 0 - 0 !
util/deviceiter.c | 1021 1021 + 0 - 0 !
util/devicemap.c | 13 13 + 0 - 0 !
util/grub-mkdevicemap.c | 181 181 + 0 - 0 !
6 files changed, 1250 insertions(+)

 restore grub-mkdevicemap

This is kind of a mess, requiring lots of OS-specific code to iterate
over all possible devices.  However, we use it in a number of scripts to
discover devices and reimplementing those in terms of something else
would be very complicated.

gettext_quiet.patch | (download)

grub-core/gettext/gettext.c | 5 5 + 0 - 0 !
1 file changed, 5 insertions(+)

 silence error messages when translations are unavailable

Bug: https://savannah.gnu.org/bugs/?35880
mkconfig_mid_upgrade.patch | (download)

util/grub-mkconfig.in | 7 7 + 0 - 0 !
1 file changed, 7 insertions(+)

 bail out if trying to run grub-mkconfig during upgrade to 2.00

Since files in /etc/grub.d/ are conffiles, they are not put in place
until grub-common is configured, meaning that they may be out of sync
with the parts of grub-mkconfig that reside in /usr/.  In GRUB 1.99,
/etc/grub.d/00_header contained a reference to ${GRUB_PREFIX}/video.lst.
This and other code from 1.99 breaks with 2.00's grub-mkconfig.
Deferring this to when grub-PLATFORM.postinst eventually runs is safe
and avoids this problem.

install_efi_fallback.patch | (download)

grub-core/osdep/linux/platform.c | 19 17 + 2 - 0 !
1 file changed, 17 insertions(+), 2 deletions(-)

 fall back to i386-pc if booted using efi but -efi is missing

It may be possible, particularly in recovery situations, to be booted
using EFI on x86 when only the i386-pc target is installed.  There's
nothing actually stopping us installing i386-pc from an EFI environment,
and it's better than returning a confusing error.

mkconfig_ubuntu_recovery.patch | (download)

configure.ac | 11 11 + 0 - 0 !
util/grub.d/10_linux.in | 16 14 + 2 - 0 !
util/grub.d/30_os-prober.in | 2 1 + 1 - 0 !
3 files changed, 26 insertions(+), 3 deletions(-)

 "single" -> "recovery" when friendly-recovery is installed
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

If configured with --enable-ubuntu-recovery, also set nomodeset for
recovery mode, and disable 'set gfxpayload=keep' even if the system
normally supports it.  See
https://launchpad.net/ubuntu/+spec/desktop-o-xorg-tools-and-processes.

install_locale_langpack.patch | (download)

util/grub-install-common.c | 40 33 + 7 - 0 !
1 file changed, 33 insertions(+), 7 deletions(-)

 prefer translations from ubuntu language packs if available

Bug-Ubuntu: https://bugs.launchpad.net/bugs/537998
mkconfig_nonexistent_loopback.patch | (download)

util/grub-mkconfig_lib.in | 2 1 + 1 - 0 !
util/grub.d/30_os-prober.in | 9 5 + 4 - 0 !
2 files changed, 6 insertions(+), 5 deletions(-)

 avoid getting confused by inaccessible loop device backing paths

Bug-Ubuntu: https://bugs.launchpad.net/bugs/938724
no_insmod_on_sb.patch | (download)

grub-core/kern/dl.c | 13 13 + 0 - 0 !
grub-core/kern/efi/efi.c | 28 28 + 0 - 0 !
include/grub/efi/efi.h | 1 1 + 0 - 0 !
3 files changed, 42 insertions(+)

 don't permit loading modules on uefi secure boot

default_grub_d.patch | (download)

grub-core/osdep/unix/config.c | 114 93 + 21 - 0 !
util/grub-mkconfig.in | 5 5 + 0 - 0 !
2 files changed, 98 insertions(+), 21 deletions(-)

 read /etc/default/grub.d/*.cfg after /etc/default/grub

Bug-Ubuntu: https://bugs.launchpad.net/bugs/901600
blacklist_1440x900x32.patch | (download)

grub-core/video/i386/pc/vbe.c | 9 9 + 0 - 0 !
1 file changed, 9 insertions(+)

 blacklist 1440x900x32 from vbe preferred mode handling

Bug-Ubuntu: https://bugs.launchpad.net/bugs/701111
uefi_firmware_setup.patch | (download)

Makefile.util.def | 6 6 + 0 - 0 !
util/grub.d/30_uefi-firmware.in | 46 46 + 0 - 0 !
2 files changed, 52 insertions(+)

 output a menu entry for firmware setup on uefi fastboot systems

mkconfig_ubuntu_distributor.patch | (download)

util/grub.d/10_linux.in | 9 8 + 1 - 0 !
1 file changed, 8 insertions(+), 1 deletion(-)

 remove gnu/linux from default distributor string for ubuntu

Ubuntu is called "Ubuntu", not "Ubuntu GNU/Linux".

linuxefi.patch | (download)

grub-core/Makefile.core.def | 8 8 + 0 - 0 !
grub-core/kern/efi/mm.c | 32 32 + 0 - 0 !
grub-core/loader/i386/efi/linux.c | 371 371 + 0 - 0 !
include/grub/efi/efi.h | 3 3 + 0 - 0 !
include/grub/i386/linux.h | 1 1 + 0 - 0 !
5 files changed, 415 insertions(+)

 add "linuxefi" loader which avoids exitbootservices

linuxefi_debug.patch | (download)

grub-core/loader/i386/efi/linux.c | 28 25 + 3 - 0 !
1 file changed, 25 insertions(+), 3 deletions(-)

 add more debugging to linuxefi

linuxefi_require_shim.patch | (download)

grub-core/loader/i386/efi/linux.c | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 make linuxefi refuse to boot without shim

This is only intended as a temporary measure.

linuxefi_non_sb_fallback.patch | (download)

grub-core/loader/i386/efi/linux.c | 2 1 + 1 - 0 !
grub-core/loader/i386/linux.c | 43 43 + 0 - 0 !
2 files changed, 44 insertions(+), 1 deletion(-)

 if running under uefi secure boot, attempt to use linuxefi loader

mkconfig_signed_kernel.patch | (download)

util/grub.d/10_linux.in | 15 15 + 0 - 0 !
1 file changed, 15 insertions(+)

 generate configuration for signed uefi kernels if available

install_signed.patch | (download)

util/grub-install.c | 192 145 + 47 - 0 !
1 file changed, 145 insertions(+), 47 deletions(-)

 install signed images if uefi secure boot is enabled
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

sleep_shift.patch | (download)

grub-core/commands/sleep.c | 27 26 + 1 - 0 !
grub-core/normal/menu.c | 19 19 + 0 - 0 !
2 files changed, 45 insertions(+), 1 deletion(-)

 allow shift to interrupt 'sleep --interruptible'

Upstream would like to consider this at more length. See
http://lists.gnu.org/archive/html/grub-devel/2009-08/msg00718.html, and
the rest of the thread for context.

wubi_no_windows.patch | (download)

util/grub.d/30_os-prober.in | 19 19 + 0 - 0 !
1 file changed, 19 insertions(+)

 skip windows os-prober entries on wubi systems

Since we're already being booted from the Windows boot loader, including
entries that take us back to it mostly just causes confusion, and stops
us from being able to hide the menu if there are no other OSes
installed.

https://blueprints.launchpad.net/ubuntu/+spec/foundations-o-wubi

maybe_quiet.patch | (download)

config.h.in | 2 2 + 0 - 0 !
configure.ac | 16 16 + 0 - 0 !
grub-core/boot/i386/pc/boot.S | 11 11 + 0 - 0 !
grub-core/boot/i386/pc/diskboot.S | 26 26 + 0 - 0 !
grub-core/kern/main.c | 17 17 + 0 - 0 !
grub-core/kern/rescue_reader.c | 2 2 + 0 - 0 !
grub-core/normal/main.c | 11 11 + 0 - 0 !
grub-core/normal/menu.c | 17 15 + 2 - 0 !
util/grub.d/10_linux.in | 15 11 + 4 - 0 !
9 files changed, 111 insertions(+), 6 deletions(-)

 add configure option to reduce visual clutter at boot time

If this option is enabled, then do all of the following:

Don't display introductory message about line editing unless we're
actually offering a shell prompt.  (This is believed to be a workaround
install_efi_ubuntu_flavours.patch | (download)

util/grub-install.c | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 cope with kubuntu setting grub_distributor

This is not a very good approach, and certainly not sanely upstreamable;
quick_boot.patch | (download)

configure.ac | 11 11 + 0 - 0 !
docs/grub.texi | 14 14 + 0 - 0 !
grub-core/normal/menu.c | 24 24 + 0 - 0 !
util/grub-mkconfig.in | 3 2 + 1 - 0 !
util/grub.d/00_header.in | 77 65 + 12 - 0 !
util/grub.d/10_linux.in | 4 4 + 0 - 0 !
util/grub.d/30_os-prober.in | 21 21 + 0 - 0 !
7 files changed, 141 insertions(+), 13 deletions(-)

 add configure option to bypass boot menu if possible

If other operating systems are installed, then automatically unhide the
menu.  Otherwise, if GRUB_HIDDEN_TIMEOUT is 0, then use keystatus if
available to check whether Shift is pressed.  If it is, show the menu,
otherwise boot immediately.  If keystatus is not available, then fall
back to a short delay interruptible with Escape.

This may or may not remain Ubuntu-specific, although it's not obviously
wanted upstream.  It implements a requirement of
https://wiki.ubuntu.com/DesktopExperienceTeam/KarmicBootExperienceDesignSpec#Bootloader.

If the previous boot failed (defined as failing to get to the end of one
of the normal runlevels), then show the boot menu regardless.

gfxpayload_dynamic.patch | (download)

configure.ac | 11 11 + 0 - 0 !
grub-core/Makefile.core.def | 9 9 + 0 - 0 !
grub-core/commands/i386/pc/hwmatch.c | 146 146 + 0 - 0 !
util/grub.d/10_linux.in | 37 34 + 3 - 0 !
4 files changed, 200 insertions(+), 3 deletions(-)

 add configure option to enable gfxpayload=keep dynamically

Set GRUB_GFXPAYLOAD_LINUX=keep unless it's known to be unsupported on
the current hardware.  See
https://blueprints.launchpad.net/ubuntu/+spec/packageselection-foundations-n-grub2-boot-framebuffer.

vt_handoff.patch | (download)

configure.ac | 11 11 + 0 - 0 !
util/grub.d/10_linux.in | 28 27 + 1 - 0 !
2 files changed, 38 insertions(+), 1 deletion(-)

 add configure option to use vt.handoff=7

This is used for non-recovery Linux entries only; it enables
flicker-free booting if gfxpayload=keep is in use and a suitable kernel
is present.

probe_fusionio.patch | (download)

grub-core/osdep/linux/getroot.c | 13 13 + 0 - 0 !
util/deviceiter.c | 19 19 + 0 - 0 !
2 files changed, 32 insertions(+)

 probe fusionio devices

Bug-Ubuntu: https://bugs.launchpad.net/bugs/1237519
ignore_grub_func_test_failures.patch | (download)

tests/grub_func_test.in | 4 3 + 1 - 0 !
1 file changed, 3 insertions(+), 1 deletion(-)

 ignore functional test failures for now as they are broken

See: https://lists.gnu.org/archive/html/grub-devel/2013-11/msg00242.html

mkconfig_recovery_title.patch | (download)

docs/grub.texi | 5 5 + 0 - 0 !
util/grub-mkconfig.in | 7 6 + 1 - 0 !
util/grub.d/10_hurd.in | 4 2 + 2 - 0 !
util/grub.d/10_kfreebsd.in | 2 1 + 1 - 0 !
util/grub.d/10_linux.in | 2 1 + 1 - 0 !
util/grub.d/10_netbsd.in | 2 1 + 1 - 0 !
util/grub.d/20_linux_xen.in | 2 1 + 1 - 0 !
7 files changed, 17 insertions(+), 7 deletions(-)

 add grub_recovery_title option

This allows the controversial "recovery mode" text to be customised.

Bug-Ubuntu: https://bugs.launchpad.net/bugs/1240360
skip_gettext_strings_test.patch | (download)

tests/gettext_strings_test.in | 3 3 + 0 - 0 !
1 file changed, 3 insertions(+)

 don't run gettext_strings_test

This test is mainly useful as an upstream maintenance check.

install_powerpc_machtypes.patch | (download)

grub-core/osdep/basic/platform.c | 5 5 + 0 - 0 !
grub-core/osdep/linux/platform.c | 72 72 + 0 - 0 !
grub-core/osdep/unix/platform.c | 28 22 + 6 - 0 !
grub-core/osdep/windows/platform.c | 6 6 + 0 - 0 !
include/grub/util/install.h | 3 3 + 0 - 0 !
util/grub-install.c | 11 11 + 0 - 0 !
6 files changed, 119 insertions(+), 6 deletions(-)

 port yaboot logic for various powerpc machine types

Some powerpc machines require not updating the NVRAM.  This can be handled
by existing grub-install command-line options, but it's friendlier to detect
this automatically.

On chrp_ibm machines, use the nvram utility rather than nvsetenv.  (This
is possibly suitable for other machines too, but that needs to be
verified.)

ieee1275 clear reset.patch | (download)

grub-core/term/terminfo.c | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 include a text attribute reset in the clear command for ppc

Always clear text attribute for clear command in order to avoid problems
after it boots.

* grub-core/term/terminfo.c: Add escape for text attribute reset

Bug-Ubuntu: https://bugs.launchpad.net/bugs/1295255
ppc64el disable vsx.patch | (download)

grub-core/kern/powerpc/ieee1275/startup.S | 12 12 + 0 - 0 !
1 file changed, 12 insertions(+)

 disable vsx instruction

VSX bit is enabled by default for Power7 and Power8 CPU models,
so we need to disable them in order to avoid instruction exceptions.
Kernel will activate it when necessary.

* grub-core/kern/powerpc/ieee1275/startup.S: Disable VSX.

Also-By: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Also-By: Colin Watson <cjwatson@debian.org>

grub install pvxen paths.patch | (download)

util/grub-install.c | 24 22 + 2 - 0 !
1 file changed, 22 insertions(+), 2 deletions(-)

 grub-install: install pv xen binaries into the upstream specified
 path

Upstream have defined a specification for where guests ought to place their
xenpv grub binaries in order to facilitate chainloading from a stage 1 grub
loaded from dom0.

http://xenbits.xen.org/docs/unstable-staging/misc/x86-xenpv-bootloader.html

The spec calls for installation into /boot/xen/pvboot-i386.elf or
/boot/xen/pvboot-x86_64.elf.

Signed-off-by: Ian Campbell <ijc@hellion.org.uk>

Bug-Debian: https://bugs.debian.org/762307
insmod xzio and lzopio on xen.patch | (download)

util/grub.d/10_linux.in | 1 1 + 0 - 0 !
1 file changed, 1 insertion(+)

 arrange to insmod xzio and lzopio when booting a kernel as a xen
 guest

This is needed in case the Linux kernel is compiled with CONFIG_KERNEL_XZ or
CONFIG_KERNEL_LZO rather than CONFIG_KERNEL_GZ (gzio is already loaded by
grub.cfg today).

Signed-off-by: Ian Campbell <ijc@debian.org>

Bug-Debian: https://bugs.debian.org/755256
grub install extra removable.patch | (download)

util/grub-install.c | 110 108 + 2 - 0 !
1 file changed, 108 insertions(+), 2 deletions(-)

 add support for forcing efi installation to the removable media path

Add an extra option to grub-install "--force-extra-removable". On EFI
platforms, this will cause an extra copy of the grub-efi image to be
written to the appropriate removable media patch
/boot/efi/EFI/BOOT/BOOT$ARCH.EFI as well. This will help with broken
UEFI implementations where the firmware does not work when configured
with new boot paths.

Signed-off-by: Steve McIntyre <93sam@debian.org>

Bug-Debian: https://bugs.debian.org/767037 https://bugs.debian.org/773092
mkconfig_other_inits.patch | (download)

util/grub.d/10_linux.in | 10 10 + 0 - 0 !
util/grub.d/20_linux_xen.in | 11 11 + 0 - 0 !
2 files changed, 21 insertions(+)

 generate alternative init entries in advanced menu

Add fallback boot entries for alternative installed init systems.  Based
on patches from Michael Biebl and Didier Roche.

Bug-Debian: https://bugs.debian.org/757298
Bug-Debian: https://bugs.debian.org/773173
syslinux test out of tree.patch | (download)

Makefile.am | 6 0 + 6 - 0 !
tests/syslinux/ubuntu10.04_grub.cfg.in | 30 15 + 15 - 0 !
tests/syslinux_test.in | 14 10 + 4 - 0 !
3 files changed, 25 insertions(+), 25 deletions(-)

 syslinux_test: fix out-of-tree build handling

When doing out-of-tree builds, abs_top_srcdir may well contain ".."
segments, and grub-syslinux2cfg canonicalises its --root argument.  As a
result, the expansion of @abs_top_srcdir@ may not match what
grub-syslinux2cfg produces.

accept empty module.patch | (download)

util/grub-module-verifierXX.c | 3 2 + 1 - 0 !
1 file changed, 2 insertions(+), 1 deletion(-)

 accept empty modules

For the Xen platform the all_video.mod module is empty.
With old binutils the .symtab section remained (containing
only section symbols), so the check didn't trigger, but starting
with binutils 2.27 not even a .symtab remains.  As there are
also no relocations that's no problem (and that is checked
independently).

uuid test precedence 1.patch | (download)

util/grub.d/10_linux.in | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 10_linux: fix grouping of tests for grub_device

Commit 7290bb562 causes GRUB_DISABLE_LINUX_UUID to be ignored due to
mixing of || and && operators. Add some parens to help with that.

uuid test precedence 2.patch | (download)

util/grub.d/20_linux_xen.in | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 20_linux_xen: fix test for grub_device

Same fix as in 082bc9f.

zpool_full_device_name.patch | (download)

grub-core/osdep/unix/getroot.c | 1 1 + 0 - 0 !
1 file changed, 1 insertion(+)

 tell zpool to emit full device names

zfs-initramfs currently provides extraneous, undesired symlinks to
devices directly underneath /dev/ to satisfy zpool's historical output
of unqualified device names. By including this environment variable to
signal our intent to zpool, zfs-linux packages can drop the symlink
behavior when updating to its upstream or backported output behavior.

Bug: https://savannah.gnu.org/bugs/?43653
Bug-Debian: https://bugs.debian.org/824974
Bug-Ubuntu: https://bugs.launchpad.net/bugs/1527727
misc fix invalid char strtol.patch | (download)

grub-core/kern/misc.c | 6 5 + 1 - 0 !
1 file changed, 5 insertions(+), 1 deletion(-)

 misc: fix invalid character recongition in strto*l

Would previously allow digits larger than the base and didn't check that
net_read_bracketed_ipv6_addr.patch | (download)

grub-core/net/http.c | 21 17 + 4 - 0 !
grub-core/net/net.c | 93 87 + 6 - 0 !
grub-core/net/tftp.c | 6 5 + 1 - 0 !
include/grub/net.h | 1 1 + 0 - 0 !
4 files changed, 110 insertions(+), 11 deletions(-)

 net: read bracketed ipv6 addrs and port numbers

Allow specifying port numbers for http and tftp paths, and allow ipv6 addresses
to be recognized with brackets around them, which is required to specify a port
number

Patch-Name: net_read_bracketed_ipv6_addr.patch

bootp_new_net_bootp6_command.patch | (download)

grub-core/net/bootp.c | 908 907 + 1 - 0 !
grub-core/net/ip.c | 39 39 + 0 - 0 !
include/grub/net.h | 72 72 + 0 - 0 !
3 files changed, 1018 insertions(+), 1 deletion(-)

 bootp: new net_bootp6 command

Implement new net_bootp6 command for IPv6 network auto configuration via the
DHCPv6 protocol (RFC3315).

Signed-off-by: Michael Chang <mchang@suse.com>
Signed-off-by: Ken Lin <ken.lin@hpe.com>

Patch-Name: bootp_new_net_bootp6_command.patch

efinet_uefi_ipv6_pxe_support.patch | (download)

grub-core/net/drivers/efi/efinet.c | 24 19 + 5 - 0 !
include/grub/efi/api.h | 55 54 + 1 - 0 !
2 files changed, 73 insertions(+), 6 deletions(-)

 efinet: uefi ipv6 pxe support

When grub2 image is booted from UEFI IPv6 PXE, the DHCPv6 Reply packet is
cached in firmware buffer which can be obtained by PXE Base Code protocol. The
network interface can be setup through the parameters in that obtained packet.

Signed-off-by: Michael Chang <mchang@suse.com>
Signed-off-by: Ken Lin <ken.lin@hpe.com>

Patch-Name: efinet_uefi_ipv6_pxe_support.patch

bootp_process_dhcpack_http_boot.patch | (download)

grub-core/net/bootp.c | 67 65 + 2 - 0 !
include/grub/net.h | 1 1 + 0 - 0 !
2 files changed, 66 insertions(+), 2 deletions(-)

 bootp: add processing dhcpack packet from http boot

The vendor class identifier with the string "HTTPClient" is used to denote the
packet as responding to HTTP boot request. In DHCP4 config, the filename for
HTTP boot is the URL of the boot file while for PXE boot it is the path to the
boot file. As a consequence, the next-server becomes obseleted because the HTTP
URL already contains the server address for the boot file. For DHCP6 config,
efinet_set_network_from_uefi_devpath.patch | (download)

grub-core/net/drivers/efi/efinet.c | 268 259 + 9 - 0 !
include/grub/efi/api.h | 11 11 + 0 - 0 !
2 files changed, 270 insertions(+), 9 deletions(-)

 efinet: setting network from uefi device path

The PXE Base Code protocol used to obtain cached PXE DHCPACK packet is no
longer provided for HTTP Boot. Instead, we have to get the HTTP boot
information from the device path nodes defined in following UEFI Specification
sections.

 9.3.5.12 IPv4 Device Path
 9.3.5.13 IPv6 Device Path
 9.3.5.23 Uniform Resource Identifiers (URI) Device Path

This patch basically does:

include/grub/efi/api.h:
Add new structure of Uniform Resource Identifiers (URI) Device Path

grub-core/net/drivers/efi/efinet.c:
Check if PXE Base Code is available, if not it will try to obtain the netboot
information from the device path where the image booted from. The DHCPACK
packet is recoverd from the information in device patch and feed into the same
DHCP packet processing functions to ensure the network interface is setting up
the same way it used to be.

Signed-off-by: Michael Chang <mchang@suse.com>
Signed-off-by: Ken Lin <ken.lin@hpe.com>

Patch-Name: efinet_set_network_from_uefi_devpath.patch

efinet_set_dns_from_uefi_proto.patch | (download)

grub-core/net/drivers/efi/efinet.c | 163 163 + 0 - 0 !
include/grub/efi/api.h | 76 76 + 0 - 0 !
2 files changed, 239 insertions(+)

 efinet: setting dns server from uefi protocol

In the URI device path node, any name rahter than address can be used for
looking up the resources so that DNS service become needed to get answer of the
name's address. Unfortunately the DNS is not defined in any of the device path
nodes so that we use the EFI_IP4_CONFIG2_PROTOCOL and EFI_IP6_CONFIG_PROTOCOL
to obtain it.

These two protcols are defined the sections of UEFI specification.

 27.5 EFI IPv4 Configuration II Protocol
 27.7 EFI IPv6 Configuration Protocol

include/grub/efi/api.h:
Add new structure and protocol UUID of EFI_IP4_CONFIG2_PROTOCOL and
EFI_IP6_CONFIG_PROTOCOL.

grub-core/net/drivers/efi/efinet.c:
Use the EFI_IP4_CONFIG2_PROTOCOL and EFI_IP6_CONFIG_PROTOCOL to obtain the list
of DNS server address for IPv4 and IPv6 respectively. The address of DNS
servers is structured into DHCPACK packet and feed into the same DHCP packet
processing functions to ensure the network interface is setting up the same way
it used to be.

Signed-off-by: Michael Chang <mchang@suse.com>
Signed-off-by: Ken Lin <ken.lin@hpe.com>

Patch-Name: efinet_set_dns_from_uefi_proto.patch

grub install efibootmgr check.patch | (download)

grub-core/osdep/unix/platform.c | 24 15 + 9 - 0 !
include/grub/util/install.h | 2 1 + 1 - 0 !
util/grub-install.c | 14 11 + 3 - 0 !
3 files changed, 27 insertions(+), 13 deletions(-)

 make grub-install check for errors from efibootmgr

Code is currently ignoring errors from efibootmgr, giving users
clearly bogus output like:

        Setting up grub-efi-amd64 (2.02~beta3-4) ...
        Installing for x86_64-efi platform.
        Could not delete variable: No space left on device
        Could not prepare Boot variable: No space left on device
        Installation finished. No error reported.

and then potentially unbootable systems. If efibootmgr fails,
grub-install should know that and report it!

Signed-off-by: Steve McIntyre <93sam@debian.org>

Bug-Debian: https://bugs.debian.org/853234