Skip to content

smaug firmware pass: BIOS flashed, AMT disabled, RENDER_GID read - #479

Merged
Gerrrt merged 5 commits into
mainfrom
gerrrt/bios-flashed-s06kt81l
Sep 16, 2026
Merged

Gerrrt merged 5 commits into
mainfrom
gerrrt/bios-flashed-s06kt81l

Conversation

@Gerrrt

@Gerrrt Gerrrt commented Sep 16, 2026

Copy link
Copy Markdown
Owner

Three pre-build firmware items on smaug, all done before the pool exists and
before the host carries anything.

1. BIOS flashed

S06KT03R (2017-05-22) → S06KT81L (2024-02-05), boot block 1.03
1.81, by the DOS utility from a FreeDOS stick.

The timing was the point, not the convenience. A flash resets BIOS
settings, and two of this machine's are load-bearing: Configure SATA as [AHCI], because a reset to RAID puts a controller between ZFS and the disks,
and CSM [Disabled], because TrueNAS is installed UEFI and would not boot with
it on. With no pool and no data, a reset cost a re-check rather than an
unbootable host with a library on it. Both survived, as did the machine
type-model, serial, UUID, MAC and clock.

The embedded controller did not moveS06CT01A before and after.
Recorded as an observation, not a failure: whether that package updates the
component at all is unestablished, and inventing a diagnosis for a version
string that may simply not change would be worse than saying it is unknown.

2. AMT was on its factory-default credential, and is now off

The MEBx accepted admin. Intel's default — so no ME password had ever
been set, through this machine's whole service life with whoever had it before.
Manageability Feature Selection read Enabled. ME network name and domain
were blank, which is evidence it had never been provisioned and is recorded
as evidence rather than proof.

Closed in the order the firmware requires rather than the order that reads
best: a new ME password (MEBx forces one), then Unconfigure Network Access
Full Unprovision while the feature was still enabled — a disabled feature
cannot be unprovisioned, and stale provisioning behind a disabled toggle is the
kind of thing that comes back — then the feature disabled. Verified by the
<CTRL-P> prompt no longer being offered at boot.

Disabled rather than hardened, the opposite of ADR-0033 for shiva, and
the difference is the host's job rather than a change of posture: Saruman is
headless in a rack where a remote console earns its keep; smaug is a tower
with a monitor beside it on the segment with the televisions.

The general lesson already had a home — hardware.md's CRS326 entry says a
used device arrives carrying whatever its last owner left on it. Same sentence,
different device, and the management plane is the part nobody thinks to look
at.

3. RENDER_GID filled in

107 render, read off the host. The node existing at all matters more than the
number: the kernel bound a driver to the P630 and exposed a render node, which
is another step of ADR-0040's reopen condition standing up after Active Video: IGD. The step it is not is a container using that node — still
build-the-nas.md §6's to prove, and the comment says so, because
three-quarters of a condition met reads like a condition met if nobody writes
down which quarter is missing.


make validate passes; check_docs green at 10 assertions. main is merged
in rather than rebased; #478 landed mid-write.

Refs #413 #138

🤖 Generated with Claude Code

Gerrrt and others added 4 commits September 16, 2026 17:16
S06KT03R dated 2017-05-22 to S06KT81L dated 2024-02-05, boot block 1.03 to
1.81, by the DOS utility from a FreeDOS stick on 2026-09-16. Six and a half
years of firmware, and it predated the Spectre and Meltdown microcode by a
year.

The timing was the point rather than the convenience. A flash resets BIOS
settings, and two of this machine's are load-bearing: Configure SATA as [AHCI],
because a reset to RAID puts a controller between ZFS and the disks, and CSM
[Disabled], because TrueNAS is installed UEFI and would not boot with it on.
Doing it with no pool and no data meant a reset cost a re-check rather than an
unbootable host with a library on it. Both were re-checked; both survived. So
did the machine type-model, the serial, the UUID, the MAC and the clock, none
of which a Lenovo flash reliably preserves.

The embedded controller did not move. It read S06CT01A before and reads
S06CT01A after, and whether that package updates the component at all is
unestablished — so it is recorded as an observation and not as a failure.
Nothing misbehaves, the BIOS half plainly took, and inventing a diagnosis for
a version string that may simply not change would be worse than saying it is
unknown.

The runbook's §0.1 gains a status note and keeps its procedure. The section is
for the next machine and for the next time this one needs it, so it is marked
done rather than deleted.

Refs #413

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…is off (#413)

Found on 2026-09-16 during the pre-build firmware pass, and closed the same day
before the host carried anything.

The MEBx accepted `admin`. That is Intel's factory default, so no ME password
had ever been set on this machine — through its whole service life with whoever
had it before, and through the fortnight it has been here. Manageability
Feature Selection read Enabled. The ME network name and domain were both blank,
which is evidence it had never been provisioned onto a network and is recorded
as evidence rather than as proof, because a blank host name is not the same
claim as an unprovisioned engine.

Closed in the order the firmware requires and not in the order that reads
best: a new ME password first, because MEBx forces one at first login; then
Unconfigure Network Access → Full Unprovision WHILE the feature was still
enabled, because a disabled feature cannot be unprovisioned and leaving stale
provisioning behind a disabled toggle is the kind of thing that comes back;
then the feature disabled. Verified by the <CTRL-P> prompt no longer being
offered at boot, which is a property of the machine rather than a setting
anyone reported.

Disabled rather than hardened, which is the opposite of what ADR-0033 decided
for shiva, and the difference is the host's job rather than a change of
posture. Saruman is headless in a rack and a remote console is load-bearing
there, so its iLO was kept and locked down. smaug is a tower with a monitor
beside it, on the segment with the televisions and the consoles; out-of-band
management buys it nothing and would cost a plane that answers when the
operating system is off.

The general lesson already had a home. hardware.md's CRS326 entry says a used
device arrives carrying whatever its last owner left on it, users included —
this is the same sentence about a different device, and the management plane is
the part nobody thinks to look at. SECURITY.md's Known exposure table carries
the row, in the shape the editor-undo-file finding uses: found, closed, and
written down rather than quietly fixed.

Refs #413

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The one value .env.example deliberately left blank, because it is a host fact
and not an image one: `stat -c '%g %G' /dev/dri/renderD128` on smaug returns
`107 render`.

The node existing at all is worth more than the number. It means the kernel
bound a driver to the P630 and exposed a render node, which is another step of
ADR-0040's reopen condition standing up — after `Active Video: IGD` in the BIOS.
The step it is not is a container using that node, which stays §6's to prove:
the comment says so, because three-quarters of a condition met reads like a
condition met if nobody writes down which quarter is missing.

Getting this wrong never fails loudly. Jellyfin falls back to software
transcoding and one 4K stream saturates the box, which presents as "the film
stutters" rather than as an error.

Refs #138 #413

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Gerrrt Gerrrt changed the title docs: smaug's BIOS is S06KT81L, flashed before the pool existed (#413) smaug firmware pass: BIOS flashed, AMT disabled, RENDER_GID read Sep 16, 2026
The static is set, the Kea reservation is in, and the inbound rules exist. That
fires three obligations this repository wrote down in advance, and they are the
substance of this commit rather than a tidy-up after it.

ADR-0016 said: "README.md and security.md both say the media segment is 'egress
only, no path to anything else'. That sentence becomes wrong for CasaBonita on
the day the first rule is created ... it is edited when the rules exist, not
now." The rules exist. Both now distinguish the direction the ADR's own title
turns on — terminal OUTWARD, which is unchanged and still true of all three
guest segments, from inbound, where CasaBonita is now the single exception and
reachable by two more-trusted segments to one host on named ports.

The TS150 entry in hardware.md set its own promotion trigger — "it enters the
Compute table when it is racked, or rather placed, addressed and in
network.md" — and that trigger has fired. The Storage column reads the boot
disk alone on purpose: the mirror does not exist until the Exos drives land,
and describing a pool nobody has created is the kind of claim that table exists
to not make.

network.md gains the host row and loses "not yet built". Its Reaches column
does NOT change, which ADR-0016 also predicted: nothing on CasaBonita initiates
anywhere, and all four passes let a more trusted segment reach in.

Verified from morpheus rather than from the UI, because position is what goes
wrong with pf and an appended rule matches nothing while looking present. Every
pass sits above Block access to CasaBonita on its interface: 167-168 before 169
on igc0.99, 194-195 before 196 on igc0.50. The negative test passes too —
Winterfell is still refused on 443, so the Winterfell rule is as narrow as it
reads rather than wider. And the #223 tripwire on igc0.40 reads 118,621
evaluations and zero packets, which is the check ADR-0016 named.

Four rules rather than three: the Hicks pass is split into 443 and 8096 instead
of one rule with a port list. Functionally identical, and the rule descriptions
read better for it.

One wording change was forced by a checker and is worth recording because the
same trap is waiting for three other rows. count_alloy_agents counts any
architecture.md row whose Contents cell contains "alloy" and is not marked not
built. The row first said "No Alloy agent", which that heuristic cannot
distinguish from having one, and the count went to five. Reworded to say the
same thing without the word. bahamut, leviathan and titan all say "runs no
Alloy" today and are only safe because they are still marked not built.

Refs #413 #223

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Gerrrt
Gerrrt merged commit 2f2afca into main Sep 16, 2026
3 checks passed
@Gerrrt
Gerrrt deleted the gerrrt/bios-flashed-s06kt81l branch September 16, 2026 18:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant