grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 1/1] Add support for grub-emu to kexec Linux menu entries


From: Daniel Kiper
Subject: Re: [PATCH v2 1/1] Add support for grub-emu to kexec Linux menu entries
Date: Thu, 11 Aug 2022 20:08:20 +0200
User-agent: NeoMutt/20170113 (1.7.2)

On Mon, Aug 08, 2022 at 02:58:06PM -0400, Robbie Harwood wrote:
> Daniel Kiper <dkiper@net-space.pl> writes:
>
> > On Tue, Jul 19, 2022 at 04:39:34PM -0400, Robbie Harwood wrote:
> >
> >> +static grub_err_t
> >> +grub_linux_boot (void)
> >> +{
> >> +  grub_err_t rc = GRUB_ERR_NONE;
> >> +  char *initrd_param;
> >> +  const char *kexec[] = { "kexec", "-l", kernel_path, boot_cmdline, NULL, 
> >> NULL };
> >> +  const char *systemctl[] = { "systemctl", "kexec", NULL };
> >
> > I would prefer if we do not hardcode these commands. E.g. kexec
> > command has many options which can be useful for debugging. If we
> > hardcode the command here we cannot use these options.
>
> Can you clarify what you would like to see instead?  I'm not sure what
> the alternative would be.

E.g. grub.cfg could contain:

set kexec_load_cmd=/sbin/kexec
set kexec_load_opts='-l'

Then GRUB should replace "linux" command with combined kexec_load_cmd,
kexec_load_opts, boot_cmdline, etc. Of course we can assume some reasonable
defaults if kexec_load_cmd and/or kexec_load_opts variables are not present.

> >> +  rc = grub_util_exec (systemctl);
> >> +
> >> +  if (rc == GRUB_ERR_NONE)
> >> +    return rc;
> >> +
> >> +  grub_error (rc, N_("Error trying to perform 'systemctl kexec'"));
> >> +
> >> +  /* need to check read-only root before resetting hard!? */
> >> +  grub_dprintf ("linux", "Performing 'kexec -e -x'");
> >
> > I would really do not fall back to 'kexec -e' by default. It is too
> > dangerous. And again I would not hardcode this command too.
>
> Same question as above regarding the alternative... also, can you

set kexec_exec_cmd=/bin/systemctl
set kexec_exec_opts=kexec

set kexec_exec_force_cmd=/sbin/kexec
set kexec_exec_force_opts='-e -x'

Etc...

Maybe names are not perfect but I hope you know what I mean...

> elaborate on the danger you see here?

The "kexec -e" executes the new kernel immediately without unmounting/remounting
filesystems, etc. So, ... I think this feature should be disabled by default.
If somebody knows what is doing then they should be able to enable it, e.g.,
by setting a GRUB env variable.

> >> +    grub_fatal (N_("Use '"PACKAGE"-emu --kexec' to force a system 
> >> restart."));
> >> +
> >> +  grub_dprintf ("linux", "Performing 'systemctl kexec' (%s) ",
> >> +          (kexecute==1) ? "do-or-die" : "just-in-case");
> >
> > s/kexecute==1/kexecute/
> >
> > Please be more consistent how you check kexecute.
>
> None of this is my code yet - I just rebased the existing patch - but
> I will make these and other requested changes :)  Thanks for the review;
> I'll cut another version once we resolve the conversations above.

Cool! Thank you!

Please do not forget about docs... :-)

Daniel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]