native: bash + SHELL + jq + file for onboard Claude CLI
On the G7 user reports Claude Code CLI complains "SHELL env var isn't
set" and some Bash-tool commands don't run. Init has HOME+PATH but no
SHELL; busybox's sh applet lacks bashisms (arrays, process subs,
\$'…' escapes) that CLI internals and user commands rely on.
init: export SHELL=/bin/sh, TERM=xterm-256color, COLORTERM=truecolor,
EDITOR=/bin/vi so tty-based tools like Claude's repl get reasonable
color + editor behavior.
docker-build.sh:
- Bundle real GNU bash (from the builder image) + its shared-lib
deps at /bin/bash. Claude's Bash tool `bash -c "…"` now hits
actual bash, not busybox-pretending-to-be-sh.
- Additional busybox applets: pwd tty logger clear reset man less
more tac nl fold cmp hexdump md5sum sha256sum sha512sum base64
nslookup ping traceroute pgrep pkill timeout stty sysctl free
uptime uname usleep unzip zcat — common CLI ergonomics.
- Bundle jq, file, strace if present — common debug tools. jq is
critical for any JSON poking from the shell.
Dockerfile.builder: explicit bash + file installs so the above
always have a source in the builder image (they would mostly be
there anyway but the list is now self-documenting).
Audio: still investigating. G7 now reports 3 sdmode toggles (was
10,686) confirming the 10ms/40ms SOF buffer fix works. hw:0,0
correctly opens "Speakers" per /proc/asound. Remaining gap is
apparently in the DSP → I2S → amp path at the signal level, not
the ALSA/kernel/GPIO layers — testable via the speaker.mjs piece
now that ac-native boots cleanly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>