1abf903a5SSascha Wildner.\"
2abf903a5SSascha Wildner.\" Copyright (c) 2017-2018 Netflix, Inc.
3abf903a5SSascha Wildner.\"
4abf903a5SSascha Wildner.\" Redistribution and use in source and binary forms, with or without
5abf903a5SSascha Wildner.\" modification, are permitted provided that the following conditions
6abf903a5SSascha Wildner.\" are met:
7abf903a5SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright
8abf903a5SSascha Wildner.\"    notice, this list of conditions and the following disclaimer.
9abf903a5SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright
10abf903a5SSascha Wildner.\"    notice, this list of conditions and the following disclaimer in the
11abf903a5SSascha Wildner.\"    documentation and/or other materials provided with the distribution.
12abf903a5SSascha Wildner.\"
13abf903a5SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14abf903a5SSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15abf903a5SSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16abf903a5SSascha Wildner.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17abf903a5SSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18abf903a5SSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19abf903a5SSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20abf903a5SSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21abf903a5SSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22abf903a5SSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23abf903a5SSascha Wildner.\" SUCH DAMAGE.
24abf903a5SSascha Wildner.\"
25*1c9138ceSSascha Wildner.\" $FreeBSD: head/usr.sbin/efibootmgr/efibootmgr.8 364795 2020-08-26 02:05:58Z scottph $
26abf903a5SSascha Wildner.\"
27*1c9138ceSSascha Wildner.Dd August 27, 2020
28abf903a5SSascha Wildner.Dt EFIBOOTMGR 8
29abf903a5SSascha Wildner.Os
30abf903a5SSascha Wildner.Sh NAME
31abf903a5SSascha Wildner.Nm efibootmgr
32abf903a5SSascha Wildner.Nd manipulate the EFI Boot Manager
33abf903a5SSascha Wildner.Sh SYNOPSIS
34abf903a5SSascha Wildner.Nm
35abf903a5SSascha Wildner.Op Fl v
36abf903a5SSascha Wildner.Nm
37abf903a5SSascha Wildner.Fl a
38abf903a5SSascha Wildner.Fl b Ar bootnum
39abf903a5SSascha Wildner.Nm
40abf903a5SSascha Wildner.Fl A
41abf903a5SSascha Wildner.Fl b Ar bootnum
42abf903a5SSascha Wildner.Nm
43abf903a5SSascha Wildner.Fl B
44abf903a5SSascha Wildner.Fl b Ar bootnum
45abf903a5SSascha Wildner.Nm
46abf903a5SSascha Wildner.Fl c
47abf903a5SSascha Wildner.Fl l Ar loader
48abf903a5SSascha Wildner.Op Fl aD
49abf903a5SSascha Wildner.Op Fl b Ar bootnum
50abf903a5SSascha Wildner.Op Fl k Ar kernel
51abf903a5SSascha Wildner.Op Fl L Ar label
52abf903a5SSascha Wildner.Op Fl e Ar env
53abf903a5SSascha Wildner.Nm
54abf903a5SSascha Wildner.Fl E
55abf903a5SSascha Wildner.Op Fl d
56abf903a5SSascha Wildner.Op Fl p
57abf903a5SSascha Wildner.Nm
58*1c9138ceSSascha Wildner.Fl f
59*1c9138ceSSascha Wildner.Nm
60*1c9138ceSSascha Wildner.Fl F
61*1c9138ceSSascha Wildner.Nm
62abf903a5SSascha Wildner.Fl n
63abf903a5SSascha Wildner.Fl b Ar bootnum
64abf903a5SSascha Wildner.Nm
65abf903a5SSascha Wildner.Fl N
66abf903a5SSascha Wildner.Nm
67abf903a5SSascha Wildner.Fl o Ar bootorder
68abf903a5SSascha Wildner.Nm
69abf903a5SSascha Wildner.Fl t Ar timeout
70abf903a5SSascha Wildner.Nm
71abf903a5SSascha Wildner.Fl T
72abf903a5SSascha Wildner.Sh "DESCRIPTION"
73*1c9138ceSSascha WildnerThe
74abf903a5SSascha Wildner.Nm
75*1c9138ceSSascha Wildnerprogram manipulates how UEFI Boot Managers boot the system.
76*1c9138ceSSascha WildnerIt can create and destroy methods for booting along with activating or
77*1c9138ceSSascha Wildnerdeactivating them.
78*1c9138ceSSascha WildnerIt can also change the defined order of boot methods.
79*1c9138ceSSascha WildnerIt can create a temporary boot (BootNext) variable that references a
80*1c9138ceSSascha Wildnerboot method to be tried once upon the next boot.
81abf903a5SSascha Wildner.Pp
82abf903a5SSascha WildnerThe UEFI standard defines how hosts may control what is used to
83abf903a5SSascha Wildnerbootstrap the system.
84abf903a5SSascha WildnerEach method is encapsulated within a persistent UEFI variable, stored
85abf903a5SSascha Wildnerby the UEFI BIOS of the form
86*1c9138ceSSascha Wildner.Cm Boot Ns Em XXXX
87*1c9138ceSSascha Wildner(where XXXX are uppercase hexadecimal digits).
88*1c9138ceSSascha WildnerThese variables are numbered, each describing where to load the bootstrap
89*1c9138ceSSascha Wildnerprogram from, and whether or not the method is active (used for booting,
90*1c9138ceSSascha Wildnerotherwise the method will be skipped).
91*1c9138ceSSascha WildnerThe order of these methods is controlled by another variable,
92abf903a5SSascha Wildner.Cm BootOrder .
93*1c9138ceSSascha WildnerThe currently booted method is communicated using
94abf903a5SSascha Wildner.Cm BootCurrent .
95abf903a5SSascha WildnerA global timeout can also be set.
96abf903a5SSascha Wildner.Pp
97abf903a5SSascha Wildner.Nm
98*1c9138ceSSascha Wildnerrequires that the kernel module
99*1c9138ceSSascha Wildner.Xr efirt 9
100*1c9138ceSSascha Wildnermodule be present or loaded to get and set these
101abf903a5SSascha Wildnernon-volatile variables.
102abf903a5SSascha Wildner.Pp
103abf903a5SSascha WildnerThe following options are available:
104abf903a5SSascha Wildner.Bl -tag -width Ds
105099aa738SSascha Wildner.It Fl a , Fl -activate
106abf903a5SSascha WildnerActivate the given
107abf903a5SSascha Wildner.Ar bootnum
108abf903a5SSascha Wildnerboot entry, or the new entry when used with
109abf903a5SSascha Wildner.Fl c .
110099aa738SSascha Wildner.It Fl A , Fl -deactivate
111abf903a5SSascha WildnerDeactivate the given
112abf903a5SSascha Wildner.Ar bootnum
113abf903a5SSascha Wildnerboot entry.
114099aa738SSascha Wildner.It Fl b Ar bootnum , Fl -bootnum Ar bootnum
115abf903a5SSascha WildnerWhen creating or modifying an entry, use
116abf903a5SSascha Wildner.Ar bootnum
117abf903a5SSascha Wildneras the index.
118abf903a5SSascha WildnerWhen creating a new entry, fail if it already exists.
119099aa738SSascha Wildner.It Fl B , Fl -delete
120abf903a5SSascha WildnerDelete the given
121abf903a5SSascha Wildner.Ar bootnum
122abf903a5SSascha Wildnerboot entry.
123099aa738SSascha Wildner.It Fl c , Fl -create
124abf903a5SSascha WildnerCreate a new
125abf903a5SSascha Wildner.Cm Boot
126*1c9138ceSSascha Wildnervariable (aka method or entry).
127099aa738SSascha Wildner.It Fl D , Fl -dry-run
128abf903a5SSascha WildnerProcess but do not change any variables.
129099aa738SSascha Wildner.It Fl E , Fl -esp
130abf903a5SSascha WildnerPrint the
131abf903a5SSascha Wildner.Dx
132abf903a5SSascha Wildnerpath to the ESP device, derived from the EFI variables
133abf903a5SSascha Wildner.Va BootCurrent
134abf903a5SSascha Wildnerand
135abf903a5SSascha Wildner.Va BootXXXX .
136abf903a5SSascha WildnerThis is the ESP partition used by UEFI to boot the current
137abf903a5SSascha Wildnerinstance of the system.
138abf903a5SSascha WildnerIf
139abf903a5SSascha Wildner.Fl d -device-path
140abf903a5SSascha Wildneris specified, the UEFI device path to the ESP is reported instead.
141abf903a5SSascha WildnerIf
142abf903a5SSascha Wildner.Fl p -unix-path
143abf903a5SSascha Wildneris specified, the mount point of the ESP is reported instead.
144*1c9138ceSSascha Wildner.It Fl f , Fl -fw-ui , Fl F , Fl -no-fw-ui
145*1c9138ceSSascha WildnerSet or clear the request to the system firmware to stop in its user
146*1c9138ceSSascha Wildnerinterface on the next boot.
147099aa738SSascha Wildner.It Fl k Ar kernel , Fl -kernel Ar kernel
148abf903a5SSascha WildnerThe path to and name of the kernel.
149099aa738SSascha Wildner.It Fl l Ar loader , Fl -loader Ar loader
150abf903a5SSascha WildnerThe path to and name of the loader.
151099aa738SSascha Wildner.It Fl L Ar label , Fl -label Ar label
152*1c9138ceSSascha WildnerAn optional description for the method.
153099aa738SSascha Wildner.It Fl n , Fl -bootnext
154abf903a5SSascha WildnerSet
155abf903a5SSascha Wildner.Ar bootnum
156abf903a5SSascha Wildnerboot entry as the
157abf903a5SSascha Wildner.Cm BootNext
158abf903a5SSascha Wildnervariable.
159099aa738SSascha Wildner.It Fl N , Fl -delete-bootnext
160abf903a5SSascha WildnerDelete the
161abf903a5SSascha Wildner.Cm BootNext
162abf903a5SSascha Wildneroptional variable.
163099aa738SSascha Wildner.It Fl o Ar bootorder , Fl -bootorder Ar bootorder
164abf903a5SSascha WildnerSet
165abf903a5SSascha Wildner.Cm BootOrder
166abf903a5SSascha Wildnervariable to the given comma delimited set of
167abf903a5SSascha Wildner.Ar bootnum Ns s .
168abf903a5SSascha WildnerThe numbers are in hex to match
169abf903a5SSascha Wildner.Cm Boot Ns Em XXXX ,
170abf903a5SSascha Wildnerbut may omit leading zeros.
171099aa738SSascha Wildner.It Fl t Ar timeout , Fl -set-timeout Ar timeout
172abf903a5SSascha WildnerSet the bootmenu timeout value.
173099aa738SSascha Wildner.It Fl T , Fl -del-timeout
174abf903a5SSascha WildnerDelete the
175abf903a5SSascha Wildner.Cm BootTimeout
176abf903a5SSascha Wildnervariable.
177099aa738SSascha Wildner.It Fl v , Fl -verbose
178abf903a5SSascha WildnerDisplay the device path of boot entries in the output.
179abf903a5SSascha Wildner.El
180099aa738SSascha Wildner.Sh EXAMPLES
181abf903a5SSascha WildnerTo display the current
182abf903a5SSascha Wildner.Cm Boot
183abf903a5SSascha Wildnerrelated variables in the system:
184abf903a5SSascha Wildner.Pp
185*1c9138ceSSascha Wildner.Dl efibootmgr -v
186abf903a5SSascha Wildner.Pp
187abf903a5SSascha WildnerThis will display the optional
188abf903a5SSascha Wildner.Cm BootNext
189*1c9138ceSSascha Wildner(if present),
190*1c9138ceSSascha Wildner.Cm BootCurrent
191*1c9138ceSSascha Wildner(currently booted method), followed by the optional
192abf903a5SSascha Wildner.Cm Timeout
193abf903a5SSascha Wildnervalue, any
194abf903a5SSascha Wildner.Cm BootOrder
195abf903a5SSascha Wildnerthat may be set, followed finally by all currently defined
196abf903a5SSascha Wildner.Cm Boot
197abf903a5SSascha Wildnervariables, active or not.
198*1c9138ceSSascha WildnerThe verbose flag,
199*1c9138ceSSascha Wildner.Pq Fl v ,
200*1c9138ceSSascha Wildneraugments this output with the disk partition uuids,
201abf903a5SSascha Wildnersize/offset and device-path of the variable.
202*1c9138ceSSascha WildnerThe flag will also include any unreferenced (by BootOrder) variables.
203abf903a5SSascha Wildner.Pp
204abf903a5SSascha WildnerThe
205abf903a5SSascha Wildner.Nm
206abf903a5SSascha Wildnerprogram can be used to create new EFI boot variables.
207*1c9138ceSSascha WildnerThe following command may be used to create a new boot method, using
208*1c9138ceSSascha Wildnerthe EFI partition mounted under
209abf903a5SSascha Wildner.Pa /mnt ,
210*1c9138ceSSascha Wildnermark the method active, using
211*1c9138ceSSascha Wildnerthe given loader and label the method
212abf903a5SSascha Wildner.Qq FreeBSD-11 :
213abf903a5SSascha Wildner.Pp
214*1c9138ceSSascha Wildner.Dl efibootmgr -a -c -l /mnt/EFI/freebsd/loader.efi -L FreeBSD-11
215abf903a5SSascha Wildner.Pp
216abf903a5SSascha WildnerThis will result in the next available bootnum being assigned to a
217abf903a5SSascha Wildnernew UEFI boot variable, and given the label
218abf903a5SSascha Wildner.Qq FreeBSD-11
219abf903a5SSascha Wildnersuch as:
220abf903a5SSascha Wildner.Pp
221abf903a5SSascha Wildner.Dl Boot0009 FreeBSD-11
222abf903a5SSascha Wildner.Pp
223*1c9138ceSSascha WildnerNote newly created boot entries are, by default, created inactive, hence
224*1c9138ceSSascha Wildnerthe reason
225*1c9138ceSSascha Wildner.Fl a
226*1c9138ceSSascha Wildnerflag is specified above so that it will be considered for booting.
227*1c9138ceSSascha WildnerThe active state is denoted by a '*' following the
228abf903a5SSascha Wildner.Cm Boot Ns Em XXXX
229abf903a5SSascha Wildnername in the output.
230abf903a5SSascha WildnerThey are also inserted into the first position of current
231abf903a5SSascha Wildner.Cm BootOrder
232abf903a5SSascha Wildnervariable if it exists.
233abf903a5SSascha WildnerThey must first be set to active before being considered available to attempt
234abf903a5SSascha Wildnerbooting from, else they are ignored.
235abf903a5SSascha Wildner.Pp
236abf903a5SSascha Wildner.Dl efibootmgr -B -b 0009
237abf903a5SSascha Wildner.Pp
238abf903a5SSascha WildnerWill delete the given boot entry Boot0009.
239abf903a5SSascha Wildner.Pp
240*1c9138ceSSascha WildnerTo set the given boot entry active:
241abf903a5SSascha Wildner.Pp
242abf903a5SSascha Wildner.Dl efibootmgr -a -b 0009
243abf903a5SSascha Wildner.Pp
244abf903a5SSascha WildnerTo set a given boot entry to be used as the
245abf903a5SSascha Wildner.Cm BootNext
246abf903a5SSascha Wildnervariable, irrespective of its active state, use:
247abf903a5SSascha Wildner.Pp
248abf903a5SSascha Wildner.Dl efibootmgr -n -b 0009
249abf903a5SSascha Wildner.Pp
250abf903a5SSascha WildnerTo set the
251abf903a5SSascha Wildner.Cm BootOrder
252abf903a5SSascha Wildnerfor the next reboot use:
253abf903a5SSascha Wildner.Pp
254abf903a5SSascha Wildner.Dl efibootmgr -o 0009,0003,...
255abf903a5SSascha Wildner.Sh SEE ALSO
256abf903a5SSascha Wildner.Xr efivar 8 ,
257*1c9138ceSSascha Wildner.Xr uefi 8 ,
258*1c9138ceSSascha Wildner.Xr efirt 9
259*1c9138ceSSascha Wildner.Sh STANDARDS
260*1c9138ceSSascha WildnerThe Unified Extensible Firmware Interface Specification is available
261*1c9138ceSSascha Wildnerfrom
262*1c9138ceSSascha Wildner.Pa www.uefi.org .
263