aboutsummaryrefslogtreecommitdiff
path: root/working/velox-reinstall/velox-uefi-boot-entry-reference.org
blob: 8d677da1395dc7ec101c7b92cb881975bbfbc9cd (plain)
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.