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

Dimitri John Ledkov dimitri.j.ledkov at intel.com
Tue Mar 17 05:41:47 PDT 2015

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?

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

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.

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)

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



Open Source Technology Center
Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ.

More information about the systemd-devel mailing list