fix(pve-nvidia-host): refuse early on Secure Boot without an enrolled DKMS key; record nh3-pve SB=on
This commit is contained in:
@@ -139,9 +139,12 @@ NH3 DNS are all fine. Open items:
|
|||||||
**nh3-ml1 (Prime, 2026-09-25 ~1410): IN PROGRESS.** CT 109 on nh3-pve at
|
**nh3-ml1 (Prime, 2026-09-25 ~1410): IN PROGRESS.** CT 109 on nh3-pve at
|
||||||
10.100.50.80 (VLAN 50, outside the UDM pool .150–.249), local-zfs, a second
|
10.100.50.80 (VLAN 50, outside the UDM pool .150–.249), local-zfs, a second
|
||||||
embed/rerank (TEI) backend on the new RTX. Playbooks are host-generic as of
|
embed/rerank (TEI) backend on the new RTX. Playbooks are host-generic as of
|
||||||
`bc278d4`. **Blocked:** the permission classifier refused the host driver install
|
`bc278d4`. Prime cleared the driver install at ~1418. **It then failed: nh3-pve has
|
||||||
(`pve-nvidia-host.yaml` on nh3-pve), and nothing host-side has run. Prime has to
|
SECURE BOOT ON** (esh-pve has it off), and the unsigned DKMS module was refused.
|
||||||
run it or allow it. After it: `gpu-lxc.yaml` with nh3 vars → embed-rerank with
|
The installer rolled back. The playbook now refuses on this up front. Unblocking
|
||||||
|
needs the console at boot (MokManager enroll, or SB off in the BIOS), which ties
|
||||||
|
it to the IGFX/NanoKVM visit, unless Prime picks a VFIO VM. Waiting on his call.
|
||||||
|
After it: `gpu-lxc.yaml` with nh3 vars → embed-rerank with
|
||||||
`HOST_NAME/HOST_IP` → parity vs esh-ml1 → monitoring and DNS → gateway routing
|
`HOST_NAME/HOST_IP` → parity vs esh-ml1 → monitoring and DNS → gateway routing
|
||||||
(Prime's call).
|
(Prime's call).
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,13 @@
|
|||||||
# module holds nothing and unloads cleanly. The unload step refuses if nouveau
|
# module holds nothing and unloads cleanly. The unload step refuses if nouveau
|
||||||
# has actually bound a device; then the blacklist plus a reboot is the only way.
|
# has actually bound a device; then the blacklist plus a reboot is the only way.
|
||||||
#
|
#
|
||||||
|
# ⚠ SECURE BOOT: a DKMS-built module only loads under Secure Boot if its signing
|
||||||
|
# key is enrolled as a MOK, and enrolling needs a person at the console at boot
|
||||||
|
# (MokManager). esh-pve has Secure Boot OFF. nh3-pve has it ON (lockdown =
|
||||||
|
# integrity), and the 2026-09-25 install failed there with "module failed to load".
|
||||||
|
# The installer rolled itself back. The first step below now refuses early
|
||||||
|
# instead of getting that far.
|
||||||
|
#
|
||||||
# Upgrading the driver: bump driver_version + driver_sha256 here AND
|
# Upgrading the driver: bump driver_version + driver_sha256 here AND
|
||||||
# driver_version in playbooks/gpu-lxc.yaml, run this on every GPU host, then
|
# driver_version in playbooks/gpu-lxc.yaml, run this on every GPU host, then
|
||||||
# gpu-lxc.yaml for every GPU LXC. Until both have run, CUDA in the container
|
# gpu-lxc.yaml for every GPU LXC. Until both have run, CUDA in the container
|
||||||
@@ -50,6 +57,18 @@ vars:
|
|||||||
gpu_match: RTX 2000
|
gpu_match: RTX 2000
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
- name: Pre-flight — Secure Boot off, or the DKMS signing key already enrolled
|
||||||
|
shell: |
|
||||||
|
if mokutil --sb-state 2>/dev/null | grep -q 'SecureBoot enabled'; then
|
||||||
|
if [ -f /var/lib/dkms/mok.pub ] && mokutil --test-key /var/lib/dkms/mok.pub 2>&1 | grep -q 'already enrolled'; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "Secure Boot is ON and no enrolled DKMS key: the nvidia module would be refused." >&2
|
||||||
|
echo "Needs the console at boot: disable Secure Boot in the BIOS, or enroll /var/lib/dkms/mok.pub via MokManager." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
changed_when: "false"
|
||||||
|
|
||||||
# DKMS needs the headers for the RUNNING kernel (built now) and the series
|
# DKMS needs the headers for the RUNNING kernel (built now) and the series
|
||||||
# meta-package (so each future kernel's headers arrive with it and DKMS
|
# meta-package (so each future kernel's headers arrive with it and DKMS
|
||||||
# rebuilds on upgrade). nh3-pve had neither, nor dkms or a compiler.
|
# rebuilds on upgrade). nh3-pve had neither, nor dkms or a compiler.
|
||||||
|
|||||||
@@ -90,6 +90,14 @@ not power back on by itself.
|
|||||||
Display = IGFX (or enable iGPU Multi-Monitor). Reaching the BIOS now needs a
|
Display = IGFX (or enable iGPU Multi-Monitor). Reaching the BIOS now needs a
|
||||||
display on the RTX's mini-DP, for example the NanoKVM through a mini-DP→HDMI
|
display on the RTX's mini-DP, for example the NanoKVM through a mini-DP→HDMI
|
||||||
adapter. Verify with `lspci | grep 00:02.0` and `boot_vga` on `00:02.0`.
|
adapter. Verify with `lspci | grep 00:02.0` and `boot_vga` on `00:02.0`.
|
||||||
|
- ⚠ **Secure Boot is ON here** (`mokutil --sb-state`, lockdown `integrity`;
|
||||||
|
enrolled MOK = the Proxmox Secure Boot CA). esh-pve, the same model, has it
|
||||||
|
OFF. Any DKMS-built module, the NVIDIA driver included, is refused until its
|
||||||
|
key is enrolled through MokManager at boot or Secure Boot is turned off in the
|
||||||
|
BIOS. Both need the console, and the console is blind (below). The 2026-09-25
|
||||||
|
NVIDIA install failed on this and rolled itself back. What it left, all
|
||||||
|
harmless: headers `6.8.12-11` plus the series meta, dkms and build-essential;
|
||||||
|
nouveau blacklisted and unloaded; the `.run` staged in `/root/nvidia`.
|
||||||
- **OOB decision (Prime via Miranda, 2026-09-25): HOLD. nh3-pve stays console-blind
|
- **OOB decision (Prime via Miranda, 2026-09-25): HOLD. nh3-pve stays console-blind
|
||||||
until the next NH3 site visit.** No BIOS change and no reboot until then. The
|
until the next NH3 site visit.** No BIOS change and no reboot until then. The
|
||||||
accepted risk: a boot without network means a site trip. **Target end state:**
|
accepted risk: a boot without network means a site trip. **Target end state:**
|
||||||
|
|||||||
Reference in New Issue
Block a user