xref: /freebsd/usr.sbin/efivar/efivar.8 (revision 72c59f1728c12fbdcd316c172708d8f3a60299be)
1.\"
2.\" Copyright (c) 2017-2019 Netflix, Inc.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\"
13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23.\" SUCH DAMAGE.
24.\"
25.\" $FreeBSD$
26.\"
27.Dd June 18, 2020
28.Dt EFIVAR 8
29.Os
30.Sh NAME
31.Nm efivar
32.Nd UEFI environment variable interaction
33.Sh SYNOPSIS
34.Nm
35.Op Fl abdDHlLNpRtuw
36.Op Fl n Ar name
37.Op Fl f Ar file
38.Op Fl -append
39.Op Fl -ascii
40.Op Fl -attributes
41.Op Fl -binary
42.Op Fl -delete
43.Op Fl -device-path
44.Op Fl -fromfile Ar file
45.Op Fl -guid
46.Op Fl -hex
47.Op Fl -list-guids
48.Op Fl -list
49.Op Fl -load-option
50.Op Fl -name Ar name
51.Op Fl -no-name
52.Op Fl -print
53.Op Fl -print-decimal
54.Op Fl -raw-guid
55.Op Fl -utf8
56.Op Fl -write
57.Sh DESCRIPTION
58This program manages
59.Dq Unified Extensible Firmware Interface
60.Pq UEFI
61environment variables.
62UEFI variables have three part: A namespace, a name and a value.
63The namespace is a GUID that is self assigned by the group defining the
64variables.
65The name is a Unicode name for the variable.
66The value is binary data.
67All Unicode data is presented to the user as UTF-8.
68.Pp
69The following options are available:
70.Bl -tag -width 20m
71.It Fl n Ar name Fl -name Ar name
72Specify the name of the variable to operate on.
73The
74.Ar name
75argument is the GUID of the variable, followed by a dash, followed by the
76UEFI variable name.
77The GUID may be in numeric format, or may be one of the well known
78symbolic name (see
79.Fl -list-guids
80for a complete list).
81.It Fl f Ar file Fl -fromfile Ar file
82When writing or appending to a variable, take the data for the
83variable's value from
84.Ar file
85instead of from the command line.
86This flag implies
87.Fl -write
88unless the
89.Fl -append
90or
91.Fl -print
92flags are given.
93This behavior is not well understood and is currently unimplemented
94for writes.
95When
96.Fl -print
97is specified, the contents of the file are used as the value to
98print using any other specified flags.
99This is used primarily for testing purposes for more complicated
100variable decoding.
101.It Fl a Fl -append
102Append the specified value to the UEFI variable rather than replacing
103it.
104.It Fl t Ar attr Fl -attributes Ar attr
105Specify, in hexadecimal, the attributes for this
106variable.
107See section 7.2 (GetVariable subsection, Related Definitions) of the
108UEFI Specification for hex values to use.
109.It Fl A Fl -ascii
110Display the variable data as modified ascii: All printable characters
111are printed, while unprintable characters are rendered as a two-digit
112hexadecimal number preceded by a % character.
113.It Fl b Fl -binary
114Display the variable data as binary data.
115Usually will be used with the
116.Fl N
117or
118.Fl -no-name
119flag.
120Useful in scripts.
121.It Fl D Fl -delete
122Delete the specified variable.
123May not be used with either the
124.Fl -write
125or the
126.Fl -append
127flags.
128No
129.Ar value
130may be specified.
131.It Fl d Fl -device Fl -device-path
132Interpret the variables printed as UEFI device paths and print the
133UEFI standard string representation.
134.It Fl g Fl -guid
135Convert GUIDs to names if they are known
136.Po and show them up in
137.Fl -list-guids
138.Pc .
139.It Fl H Fl -hex
140List variable data as a hex dump.
141.It Fl L Fl -list-guids
142Lists the well known GUIDs.
143The names listed here may be used in place of the numeric GUID values.
144These names will replace the numeric GUID values unless
145.Fl -raw-guid
146flag is specified.
147.It Fl l Fl -list
148List all the variables.
149If the
150.Fl -print
151flag is also listed, their values will be displayed.
152.It Fl -load-option
153Decode the variable as if it were a UEFI Boot Option, including information about what device and/or paths the UEFI DevicePaths decode to.
154.It Fl N Fl -no-name
155Do not display the variable name.
156.It Fl p Fl -print
157Print the value of the variable.
158.It Fl R Fl -raw-guid
159Do not substitute well known names for GUID numeric values in output.
160.It Fl u Fl -utf8
161Treat the value of the variable as UCS2 and convert it to UTF8 and
162print the result.
163.It Fl w Fl -write
164Write (replace) the variable specified with the value specified from
165standard input.
166No command line option to do this is available since UEFI variables
167are binary structures rather than strings.
168.Xr echo 1
169.Fl n
170can be used to specify simple strings.
171.It Ar name
172Display the
173.Ar name
174environment variable.
175.El
176.Sh COMPATIBILITY
177The
178.Nm
179program is intended to be compatible (strict superset) with a program
180of the same name included in the Red Hat libefivar package,
181but the
182.Fl d
183and
184.Fl -print-decimal
185flags are not implemented and never will be.
186.Pp
187The
188.Fl d
189flag is short for
190.Fl -device-path .
191.Sh SEE ALSO
192Appendix A of the UEFI specification has the format for GUIDs.
193All GUIDs
194.Dq Globally Unique Identifiers
195have the format described in RFC 4122.
196.Sh HISTORY
197The
198.Nm
199utility first appeared in
200.Fx 11.1 .
201