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 March 6, 2019 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 135flag is specified, guids are converted to names if they are known (and 136show up in 137.Fl -list-guids ). 138.It Fl H Fl -hex 139List variable data as a hex dump. 140.It Fl L Fl -list-guids 141Lists the well known GUIDs. 142The names listed here may be used in place of the numeric GUID values. 143These names will replace the numeric GUID values unless 144.Fl -raw-guid 145flag is specified. 146.It Fl l Fl -list 147List all the variables. 148If the 149.Fl -print 150flag is also listed, their values will be displayed. 151.It Fl -load-option 152Decode the variable as if it were a UEFI Boot Option, including information about what device and/or paths the UEFI DevicePaths decode to. 153.It Fl N Fl -no-name 154Do not display the variable name. 155.It Fl p Fl -print 156Print the value of the variable. 157.It Fl R Fl -raw-guid 158Do not substitute well known names for GUID numeric values in output. 159.It Fl u Fl -utf8 160Treat the value of the variable as UCS2 and convert it to UTF8 and 161print the result. 162.It Fl w Fl -write 163Write (replace) the variable specified with the value specified from 164standard input. 165No command line option to do this is available since UEFI variables 166are binary structures rather than strings. 167.Xr echo 1 168.Fl n 169can be used to specify simple strings. 170.It Ar name 171Display the 172.Ar name 173environment variable. 174.El 175.Sh COMPATIBILITY 176The 177.Nm 178program is intended to be compatible (strict superset) with a program 179of the same name included in the Red Hat libefivar package, 180but the 181.Fl d 182and 183.Fl -print-decimal 184flags are not implemented and never will be. 185.Pp 186The 187.Fl d 188flag is short for 189.Fl -device-path . 190.Sh SEE ALSO 191Appendix A of the UEFI specification has the format for GUIDs. 192All GUIDs 193.Dq Globally Unique Identifiers 194have the format described in RFC 4122. 195.Sh HISTORY 196The 197.Nm 198utility first appeared in 199.Fx 11.1 . 200