Celeb Glow
news | March 17, 2026

Running steamcmd on BOX86 in armhf chroot

I want to run a game server on my raspberry pi 4 (4GB) using steamcmd. I have already set up a chroot and box86 to run a teamspeak 3 server.

I am following these instructions and I am stuck on step 8, that is running steamcmd.sh.

I have altered the file to run box86, however whenever I run the shell script, it seems to update itself before executing, reverting my edits.

#!/usr/bin/env bash
STEAMROOT="$(cd "${0%/*}" && echo $PWD)"
STEAMCMD=`basename "$0" .sh`
UNAME=`uname`
if [ "$UNAME" == "Linux" ]; then STEAMEXE="${STEAMROOT}/linux32/${STEAMCMD}" PLATFORM="linux32" export LD_LIBRARY_PATH="$STEAMROOT/$PLATFORM:$LD_LIBRARY_PATH"
else # if [ "$UNAME" == "Darwin" ]; then STEAMEXE="${STEAMROOT}/${STEAMCMD}" if [ ! -x ${STEAMEXE} ]; then STEAMEXE="${STEAMROOT}/" fi export DYLD_LIBRARY_PATH="$STEAMROOT:$DYLD_LIBRARY_PATH" export DYLD_FRAMEWORK_PATH="$STEAMROOT:$DYLD_FRAMEWORK_PATH"
fi
ulimit -n 2048
MAGIC_RESTART_EXITCODE=42
if [ "$DEBUGGER" == "gdb" ] || [ "$DEBUGGER" == "cgdb" ]; then ARGSFILE=$(mktemp $USER.steam.gdb.XXXX) # Set the LD_PRELOAD varname in the debugger, and unset the global version. if [ "$LD_PRELOAD" ]; then echo set env LD_PRELOAD=$LD_PRELOAD >> "$ARGSFILE" echo show env LD_PRELOAD >> "$ARGSFILE" unset LD_PRELOAD fi $DEBUGGER -x "$ARGSFILE" --args /usr/local/bin/box86 "$STEAMEXE" "$@" rm "$ARGSFILE"
else $DEBUGGER /usr/local/bin/box86 "$STEAMEXE" "$@"
fi
STATUS=$?
if [ $STATUS -eq $MAGIC_RESTART_EXITCODE ]; then exec "$0" "$@"
fi
exit $STATUS

When I run this modified file I get this:

Box86 with Dynarec v0.2.1 7c0b11e built on May 6 2021 17:03:01
WARNING: setlocale('en_US.UTF-8') failed, using locale: 'C'. International characters may not work.
Redirecting stderr to '/root/Steam/logs/stderr.txt'
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[ 0%] Checking for available updates...
[----] Verifying installation...
[ 0%] Downloading update...
[ 0%] Checking for available updates...
[----] Download complete.
[----] Extracting package...
[----] Extracting package...
[----] Extracting package...
[----] Extracting package...
[----] Installing update...
[----] Installing update...
[----] Installing update...
[----] Installing update...
[----] Installing update...
[----] Installing update...
[----] Installing update...
[----] Installing update...
[----] Cleaning up...
[----] Update complete, launching Steamcmd...
/opt/steamcmd/steamcmd.sh: line 37: /opt/steamcmd/linux32/steamcmd: cannot execute binary file: Exec format error

If I use a different file name, such as steamcmd_custom.sh I get this:

Box86 with Dynarec v0.2.1 7c0b11e built on May 6 2021 17:03:01
Error: file is not found (check BOX86_PATH)
./steamcmd_custom.sh: line 38: 71730 Segmentation fault (core dumped) $DEBUGGER /usr/local/bin/box86 "$STEAMEXE" "$@"

And running

box86 steamcmd

from /opt/steamcmd/linux32 yields me

Box86 with Dynarec v0.2.1 7c0b11e built on May 6 2021 17:03:01
WARNING: setlocale('en_US.UTF-8') failed, using locale: 'C'. International characters may not work.
Redirecting stderr to '/root/Steam/logs/stderr.txt'
[ 0%] Checking for available updates...
[----] Verifying installation...
[----] !!! Fatal Error: Failed to load steamconsole.so

1 Answer

Run it with

LD_LIBRARY_PATH="/opt/steamcmd/linux32/:$LD_LIBRARY_PATH" box86 linux32/steamcmd

This will make the library path be available to steamcmd.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy