EFI Variables

Warner Losh imp at bsdimp.com
Mon Nov 30 21:19:57 UTC 2015


On Tue, Nov 24, 2015 at 7:15 PM, John Baldwin <jhb at freebsd.org> wrote:

> On Wednesday, October 28, 2015 01:38:28 PM Rui Paulo wrote:
> > 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.
>
> I belive Warner has been working on adding more support for EFI runtime
> services to FreeBSD multiuser which might permit this.
>

I'll see if I can get them in....

Warner


More information about the freebsd-hackers mailing list