[systemd-devel] [PATCH 1/2] systemctl: Add reboot to firmware support

Jan Janssen medhefgo at web.de
Tue Mar 17 05:58:22 PDT 2015



> Gesendet: Dienstag, 17. März 2015 um 13:41 Uhr
> Von: "Dimitri John Ledkov" <dimitri.j.ledkov at intel.com>
> An: "Jan Janssen" <medhefgo at web.de>
> Cc: "systemd Mailing List" <systemd-devel at lists.freedesktop.org>
> Betreff: Re: [systemd-devel] [PATCH 1/2] systemctl: Add reboot to firmware support
>
> On 17 March 2015 at 12:12, Jan Janssen <medhefgo at web.de> wrote:
> > Dimitri John Ledkov <dimitri.j.ledkov <at> intel.com> writes:
> >
> >> Both gummyboot and grub-efi have a menu option to reboot into
> >> firmware, is that not enough? Why do we need to have it from userspace
> >> / the booted system?
> >>
> >
> > There can be plenty of reasons why the firmware won't provide you with an
> > option. One of them being a FastBoot implementation that doesn't initialize
> > USB input devices. And also, if one were to directly boot from the efi stub
> > without boot loader (and not getting 5000€ in the process).
> >
> > But this is primarily a reason of convenience. If your bootloader doesn't
> > give you a boot to firmware option, or your bootloader is being annoying and
> > boots to your OS faster than you can interface with it, you're currently out
> > of luck. I'm not too sure, but grub-efi probably even requires you to
> > actually specifically create the entry in the configuration; and touching
> > the grub config is just plain annoying. Especially if you just want that
> > entry for the one time EFI setup every once in a blue moon.
> >
> > Also, the fact that there have been people asking questions about how to get
> > to the EFI/BIOS has always been there. With this you can just tell them to
> > "systemctl --firmware reboot" on any modern computer and be done with it.
> 
> Then wouldn't we want to support it generically in src/core/shutdown.c
> / systemctl halt_now and expose it via logind API somehow as well?

Someone already did something like that a year ago, with no real response:
http://lists.freedesktop.org/archives/systemd-devel/2013-January/008216.html

> In some ways it is similar to REBOOT_PARAM_FILE handling for the
> SYS_reboot syscall, e.g. on Nexus devices $ reboot bootloader ->
> reboots one into firmware (there is also usually "recovery" reboot
> argument support).

When looking at the code I did consider consuming the reboot param, but since I don't
know anything about I, I wouldn't know if that would break any existing use cases.

> This efi reboot is useful functionality, but if it's only hidden
> inside systemctl invocation, it would hard to integrate via e.g. DBus
> api calls from GUI application.

I feel like doing it that way is just overcomplicating things. Exposing it so easily to GUI
applications is mostly a waste of time for the rare occasion that it would get used.

> Can this be piggybacked on to reboot command arg?
> 
> $ systemctl reboot efi-firmware
> 
> same way that $ systemctl reboot bootloader is already supported (on
> platforms that support that arg)

That's an option, but is there any EFI system out there that already consumes the
parameter itself? I don't know, but is so, we can't consume it ourselves.

> Looking at Logind1 Api Reboot() it does not accept string argument
> there. RebootWithArg() or SetRebootParam() calls would be nice as
> well.
> 

Jan


More information about the systemd-devel mailing list