EFI Variables
Rui Paulo
rpaulo at me.com
Wed Oct 28 21:38:36 UTC 2015
On Wed, 2015-10-28 at 07:27 +0100, Ganael Laplanche wrote:
> On Tuesday, October 27, 2015 07:24:23 PM Emmanuel Vadot wrote:
>
> Hi Emmanuel,
>
> > I'm currently hacking around the loader.efi
>
> Great :)
>
> > I've also added the list and get command to the not working
> > "nvram"
> > command.
>
> I had myself posted a PR to fix that command as well as add a verbose
> switch
> and the ability to specify a variable name, see :
>
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=202614
>
> > For the "set" subcommand I think that the best way to handle it
> > is :
> > "nvram set myvar data" -> This will set the variable myvar to
> > data with
> > the freebsd guid (if there is any)
> >
> > and
> >
> > "nvram set myvar guid data" -> This will force the guid to <guid>
>
> It can be useful to set variables containing *strings*, but will
> hardly handle
> binary stuff :/
>
> I am not sure whether it should be the loader's job to set
> variables... I can
> think of changing the boot order, but it may be difficult to get it
> right by
> hand and would probably require an upper-level tool, such as
> efibootmgr on
> Linux.
>
> > I'll look tomorrow how to access efivars once the kernel is
> > booted so
> > we can set some from some userland tool (especially the boot
> > related
> > one).
>
> Yes, this is interesting as the current kernel (amd64) does not
> provide access
> to EFI variables at all.
>
> 10.x/ia64 provided access to EFI variables through libefi(3) and
> io(4). It
> should be possible to import that code to other archs too, but you'll
> have to
> save the entry point to the Runtime Services Tables and maybe set a
> Virtual
> Address Map too (not sure about that point).
>
It would be nice to set some EFI variables in the loader, but you can't
expect to handle binary data from the loader. Like you said, we need a
special tool to change EFI variables on a system already running
FreeBSD.
--
Rui Paulo
More information about the freebsd-hackers
mailing list