boot_media/rpi5/config.txt: Pi 5 native boot config (FABRIC-3.md §IV.3 item 6)
Researched against the official raspberrypi.com config.txt reference and one real, working Pi 5 bare-metal project's own checked-in config.txt (leopoldch/BatMetal), not assumed from general Pi knowledge: - kernel=kernel_2712.img, os_check=0, device_tree=bcm2712-rpi-5-b.dtb - enable_uart=1 added (correction to the item's original text): costs nothing when unused, and is the only diagnostic channel that would survive a framebuffer failure on the untested mailbox path (rpi5_native_boot.c). - arm_64bit=1 dropped (correction to the item's original text): confirmed inert on Pi 5 by official docs. - dtparam=pciex1 researched, deliberately omitted with rationale recorded -- community-reported only, not needed until item 5's re-scoped RP1/PCIe work. - os_check=0 vs. BatMetal's own config (which omits it) recorded as an open, unresolved discrepancy rather than silently picked. boot_media/rpi5/README.md notes the one remaining gap this exposes: kernel_2712.img names a file nothing currently builds (item 1's separate-image build target is still outstanding future work). Doc-and-config only, no compiled code changed. Three-arch QEMU acceptance (amd64/aarch64/riscv64, in order) run to confirm non-regression only. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019YcT3H2PQeyujrzjqS3Var
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
11c93773d0
commit
ecdb32e0d6
+35
-3
@@ -442,9 +442,41 @@ blocker for free.
|
||||
is a materially larger, higher-blast-radius change than items 1–4 — it touches a file all
|
||||
three architectures share and boot through today. Recording the real shape here is this
|
||||
pass's own deliverable; building it is future work.
|
||||
6. **`config.txt` contents, decided from research**: `kernel=kernel_2712.img` (or `kernel8.img`
|
||||
with `os_check=0` if the Pi-5-specific name isn't used), `arm_64bit=1`, pointing at
|
||||
`bcm2712-rpi-5-b.dtb`.
|
||||
6. **`config.txt` contents — DONE, 2026-09-04.** Written to `boot_media/rpi5/config.txt`
|
||||
(new directory — `configs/` is Kconfig defconfigs, `img/` is banners/docs, neither fits).
|
||||
Researched against the official current `config.txt` reference
|
||||
(raspberrypi.com/documentation/computers/config_txt.html) and one real, working Pi 5
|
||||
bare-metal project's own checked-in `config.txt` (`leopoldch/BatMetal`), not assumed from
|
||||
general Pi knowledge. Final contents, with the reasoning as comments in the file itself:
|
||||
- `kernel=kernel_2712.img` — the real Pi-5-specific default filename firmware looks for
|
||||
first (falls back to `kernel8.img` if absent); naming our image this exactly removes
|
||||
ambiguity, so the item's own `kernel8.img`/`os_check=0` fallback alternative wasn't
|
||||
needed.
|
||||
- `os_check=0` — official docs name "bare-metal development" as the explicit use case for
|
||||
this flag. Kept despite BatMetal's own config.txt *not* setting it and still booting —
|
||||
recorded as an open discrepancy rather than silently resolved; no hardware in hand yet to
|
||||
confirm which behavior is actually gated.
|
||||
- `device_tree=bcm2712-rpi-5-b.dtb` — pins the DTB explicitly rather than relying on
|
||||
board-revision auto-selection (confirmed via WebSearch of `config.txt` syntax docs).
|
||||
- `enable_uart=1` — **correction to this item's own original text, which didn't have
|
||||
this.** Added per review: costs nothing when nothing is listening, and is the only
|
||||
diagnostic channel that survives a framebuffer failure on the first real boot (the
|
||||
mailbox framebuffer path, `rpi5_native_boot.c`, has two documented-unverified details
|
||||
and has never run on silicon). Enables the Pi 5's dedicated JST debug UART, not the
|
||||
GPIO 14/15 header (`dtoverlay=uart0`, deliberately left out — needs a USB-serial
|
||||
adapter this HDMI-only bring-up doesn't have). `rpi5_uart_base()` already exists
|
||||
and is currently uncalled — this is the hook a UART fallback console would use.
|
||||
- `arm_64bit=1` — **dropped, correction to this item's own original text.** Official
|
||||
docs: "Models that only support a 64-bit kernel ignore this flag" — confirmed inert on
|
||||
Pi 5, not wrong to include, just meaningless.
|
||||
- `dtparam=pciex1` — researched (BatMetal's own comment: "Required for RP1 access"), not
|
||||
included. Community-reported only, not confirmed against official docs, and surprising
|
||||
if true (RP1 is normally always-on). Not needed yet — item 5's real RP1/PCIe work is
|
||||
still re-scoped, not implemented. Revisit if that work needs it.
|
||||
- `boot_media/rpi5/README.md` also added, noting the one remaining gap this item's
|
||||
`config.txt` exposes but doesn't itself close: `kernel_2712.img` names a file nothing
|
||||
currently builds — item 1's separate-image build target (linking at `0x80000`) is still
|
||||
outstanding future work, same gap that item's own text already flagged.
|
||||
|
||||
**Hardware-dependent, after 2026-09-17 (not started until then):**
|
||||
7. Build the boot media (SD card: `config.txt`, `bcm2712-rpi-5-b.dtb`, kernel image).
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Raspberry Pi 5 native boot media
|
||||
|
||||
What goes on the SD card for the native (non-UEFI) boot path (FABRIC-3.md §IV):
|
||||
|
||||
- `config.txt` — checked in here, done (§IV.3 item 6).
|
||||
- `bcm2712-rpi-5-b.dtb` — Raspberry Pi firmware's own stock DTB; not built by this
|
||||
project, copied from the firmware release the card is otherwise built from.
|
||||
- `kernel_2712.img` — **does not exist yet.** `config.txt` names it, but no build target
|
||||
in `Makefile.starkernel` currently emits a raw image by this name at load address
|
||||
0x80000 — item 1 (entry stub) explicitly scoped a separate-image build target as future
|
||||
work, not part of that item. Building this file is the remaining prerequisite before
|
||||
item 7 (assembling the card) is possible.
|
||||
@@ -0,0 +1,62 @@
|
||||
# LithosAnanke native (non-UEFI) boot config for Raspberry Pi 5 (BCM2712).
|
||||
# FABRIC-3.md §IV.3 item 6 -- see that section's own doc comment for the
|
||||
# research trail behind each line (confirmed against raspberrypi.com's
|
||||
# current config.txt reference and a real, working Pi 5 bare-metal
|
||||
# project's own checked-in config.txt, not assumed from general Pi
|
||||
# knowledge).
|
||||
|
||||
# Load our own kernel image directly -- no UEFI, no Linux. kernel_2712.img
|
||||
# is the real filename Pi 5/500/CM5 firmware looks for first (its own
|
||||
# 16K-page-size build); naming our own image this exactly, rather than
|
||||
# falling back to kernel8.img, removes any ambiguity about which file the
|
||||
# firmware picks up.
|
||||
kernel=kernel_2712.img
|
||||
|
||||
# Disable the firmware's Linux-compatible-image sanity check. Without
|
||||
# this, official docs describe it as checking for "a compatible Device
|
||||
# Tree file before attempting to boot" and warn that "older non-compatible
|
||||
# kernels would be loaded and then hang" -- documented specifically as the
|
||||
# bare-metal-development escape hatch. One real working Pi 5 bare-metal
|
||||
# project's own config.txt does NOT set this and still boots, so it may
|
||||
# not be strictly required for every non-Linux image; kept here anyway
|
||||
# since the official doc names this exact use case and there is no
|
||||
# hardware in hand yet to verify which behavior is actually gated.
|
||||
os_check=0
|
||||
|
||||
# Pin the exact devicetree explicitly rather than relying on the
|
||||
# firmware's own board-revision auto-selection (which would also resolve
|
||||
# to this file on real Pi 5 hardware, per general config.txt convention --
|
||||
# explicit is certain, not just probably-correct).
|
||||
device_tree=bcm2712-rpi-5-b.dtb
|
||||
|
||||
# Enable the dedicated debug UART (Pi 5's own JST connector, not the GPIO
|
||||
# 14/15 header pins). Not because serial capture hardware is set up for
|
||||
# this bring-up (that decision is HDMI-only, FABRIC-3.md §IV) -- this is
|
||||
# a firmware-side switch that costs nothing when nothing is listening, and
|
||||
# it is the only diagnostic channel that survives a framebuffer failure.
|
||||
# rpi5_uart_base() (rpi5_dtb.c) already exists and is currently uncalled;
|
||||
# this is the hook a UART-based fallback console would use if the mailbox
|
||||
# framebuffer driver's two documented unverified details turn out wrong on
|
||||
# real hardware.
|
||||
enable_uart=1
|
||||
|
||||
# Deliberately NOT set, researched but not included this pass:
|
||||
# dtoverlay=uart0 -- GPIO 14/15 header UART; needs a USB-serial
|
||||
# adapter this bring-up doesn't have (HDMI-only
|
||||
# decision). enable_uart=1 above covers the JST
|
||||
# debug UART instead, which needs no extra cable.
|
||||
# dtparam=pciex1 -- one real Pi 5 bare-metal project's own config.txt
|
||||
# comments this as "Required for RP1 access", which
|
||||
# would be surprising (RP1 is always-on in stock Pi
|
||||
# 5 boots) and is community-reported, not confirmed
|
||||
# against official docs. Not needed for this boot
|
||||
# (no RP1 access yet -- FABRIC-3.md §IV.3 item 5 is
|
||||
# still re-scoped, not implemented). Revisit if that
|
||||
# item's own real Broadcom-indirect PCIe work needs
|
||||
# it.
|
||||
# arm_64bit=1 -- researched and dropped: official docs state
|
||||
# "Models that only support a 64-bit kernel ignore
|
||||
# this flag" -- inert on Pi 5, not wrong to include,
|
||||
# just meaningless. The original item 6 wording
|
||||
# named this; corrected here rather than carried
|
||||
# forward.
|
||||
@@ -1,5 +1,5 @@
|
||||
# Capsule Block Manifest — Auto-generated
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-05T02:45:26Z -->
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-05T03:03:47Z -->
|
||||
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
|
||||
<!-- Hand-written justifications and immutability notes live -->
|
||||
<!-- in MANIFEST.md alongside this auto-generated index. -->
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user