Score:1

Running steamcmd on BOX86 in armhf chroot

mx flag

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}/Steam.AppBundle/Steam/Contents/MacOS/${STEAMCMD}"
  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
Score:1
mx flag

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.

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.