Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:michael-chang:devel:grub:appendedsig-2.11:v2
grub2
efi-linux-provide-linux-command.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File efi-linux-provide-linux-command.patch of Package grub2
From: Michael Chang <mchang@suse.com> Date: Mon, 7 Sep 2020 17:02:57 +0800 Subject: [PATCH] efi/linux: provide linux command The linux kernel's efi handover entry point is used to boot efistub of the linux kernel. Since then the efistub has been improved with many new features and fixes that ordinary 32-bit entry point cannot provide. Besides, nearly every x86 efi kernel is built with efistub enabled so it is of little value to keep 32-bit entry as default to boot kernel without needed kconfig options enabled. For all good reasons, making efi handover the default entry point for booting kernel in x86 efi platform so that linux command works in the same way to linuxefi. This can also reduce the complexity of providing general grub configuation for x86 system due to the linux command may not be available in signed image for UEFI Secure Boot and linuxefi is not available for leagcy bios booting. Signed-off-by: Michael Chang <mchang@suse.com> --- grub-core/Makefile.core.def | 6 ++++-- grub-core/gensyminfo.sh.in | 3 +++ grub-core/loader/i386/efi/linux.c | 17 +++++++++++++---- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def index 28aea1370..198d8cd02 100644 --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@ -1798,7 +1798,9 @@ module = { module = { name = linux; - x86 = loader/i386/linux.c; + i386_pc = loader/i386/linux.c; + i386_efi = loader/i386/efi/linux.c; + x86_64_efi = loader/i386/efi/linux.c; i386_xen_pvh = loader/i386/linux.c; xen = loader/i386/xen.c; i386_pc = lib/i386/pc/vesa_modes_table.c; @@ -1877,7 +1879,7 @@ module = { module = { name = linuxefi; - efi = loader/i386/efi/linux.c; + efi = lib/fake_module.c; enable = i386_efi; enable = x86_64_efi; }; diff --git a/grub-core/gensyminfo.sh.in b/grub-core/gensyminfo.sh.in index 9bc767532..098de9258 100644 --- a/grub-core/gensyminfo.sh.in +++ b/grub-core/gensyminfo.sh.in @@ -35,3 +35,6 @@ fi # Print all undefined symbols used by module @TARGET_NM@ -u @TARGET_NMFLAGS_MINUS_P@ -p $module | sed "s@^\([^ ]*\).*@undefined $modname \1@g" + +# Specify linuxefi module should load default linux +test "$modname" = "linuxefi" && echo "undefined $modname grub_initrd_init" || true diff --git a/grub-core/loader/i386/efi/linux.c b/grub-core/loader/i386/efi/linux.c index 6bb9c484f..355ecc9b9 100644 --- a/grub-core/loader/i386/efi/linux.c +++ b/grub-core/loader/i386/efi/linux.c @@ -333,20 +333,29 @@ grub_cmd_linux (grub_command_t cmd __attribute__ ((unused)), } static grub_command_t cmd_linux, cmd_initrd; +static grub_command_t cmd_linuxefi, cmd_initrdefi; -GRUB_MOD_INIT(linuxefi) +GRUB_MOD_INIT(linux) { - cmd_linux = + cmd_linuxefi = grub_register_command ("linuxefi", grub_cmd_linux, 0, N_("Load Linux.")); - cmd_initrd = + cmd_initrdefi = grub_register_command ("initrdefi", grub_cmd_initrd, 0, N_("Load initrd.")); + cmd_linux = + grub_register_command ("linux", grub_cmd_linux, + 0, N_("Load Linux.")); + cmd_initrd = + grub_register_command ("initrd", grub_cmd_initrd, + 0, N_("Load initrd.")); my_mod = mod; } -GRUB_MOD_FINI(linuxefi) +GRUB_MOD_FINI(linux) { + grub_unregister_command (cmd_linuxefi); + grub_unregister_command (cmd_initrdefi); grub_unregister_command (cmd_linux); grub_unregister_command (cmd_initrd); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor