1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
#+TITLE: Velox UEFI Boot Entry — Recovery Reference
#+AUTHOR: Craig Jennings
#+DATE: 2026-08-15
Captured 2026-08-15 before a BIOS update (03.05 → 04.02) as insurance against
the update clearing NVRAM. Velox's mainboard swap on 2026-08-13 left exactly
this kind of empty NVRAM, which is what forced the reinstall — so a cleared
boot entry is the specific failure worth being able to undo in one command
rather than reconstruct.
* State at capture
- BIOS: 03.05 (2025-10-30)
- BootCurrent: 0001
- BootOrder: 2001,0001,2002,2003 (USB ahead of ZBM — why the Ventoy stick
boots when it's inserted)
- Timeout: 0 seconds
* The entry that matters
=Boot0001* ZFSBootMenu=
| field | value |
|----------------+----------------------------------------------|
| ESP part GUID | 8e51b680-f90a-444f-8da5-7e4f93625775 |
|----------------+----------------------------------------------|
| partition | 1 (GPT), start 0x800, size 0x100000 |
|----------------+----------------------------------------------|
| loader path | =\EFI\ZBM\zfsbootmenu.efi= |
|----------------+----------------------------------------------|
| cmdline (data) | =spl_hostid=0x22f8a7a1 zbm.timeout=3= |
| | =zbm.prefer=zroot zbm.import_policy=hostid= |
|----------------+----------------------------------------------|
The =data= field is that command line in UTF-16LE, which is how efibootmgr
passes it as optional data. Recreate with =-u= and the plain string; efibootmgr
does the encoding.
* Recreating it
From a booted system (or the archangel ISO), with the ESP identified as
=/dev/nvme0n1p1= or whatever it enumerates as:
#+begin_src bash
efibootmgr --create \
--disk /dev/nvme0n1 --part 1 \
--label "ZFSBootMenu" \
--loader '\EFI\ZBM\zfsbootmenu.efi' \
--unicode 'spl_hostid=0x22f8a7a1 zbm.timeout=3 zbm.prefer=zroot zbm.import_policy=hostid'
#+end_src
Confirm the disk/part against =lsblk -o NAME,PARTUUID,PARTTYPENAME= first —
the partition GUID above is the authoritative identifier, not the device name,
which can enumerate differently.
Then set the order so ZBM is reachable:
#+begin_src bash
efibootmgr --bootorder 0001,2001,2002,2003
#+end_src
(The original order put USB first. Keep whichever you prefer; what matters is
that the ZBM entry exists and is in the list.)
* Other entries (firmware-generated, recreate themselves)
| Boot2001 | EFI USB Device |
|----------+----------------|
| Boot2002 | EFI DVD/CDROM |
|----------+----------------|
| Boot2003 | EFI Network |
|----------+----------------|
These are stock firmware entries and come back on their own. Only Boot0001
carries anything unique.
|