#!/bin/sh # ShiMeta-AI-Stack RK3588 板卡安装脚本(分包平台镜像版) # # 板上一条命令: # wget https://mirrors.shimetapi.cn/repos/RK3588/shimeta-ai/install.sh -O - | sh # # 或指定版本: # sh install.sh -v 1.0.0 # # 流程: 检测 RK3588 → 读 bare/LATEST → 下载 bare/shimeta-rk3588__aarch64.tar.gz # → 解到 ~/shimeta-rk3588 → (配好 CAMERA_URLS 时)装 systemd 服务并启动 set -e SERVER="${SERVER:-https://mirrors.shimetapi.cn/repos/RK3588/shimeta-ai}" VERSION="" case "$1" in -v) VERSION="$2" ;; esac case "$2" in -v) VERSION="$3" ;; esac INSTALL_DIR="${INSTALL_DIR:-$HOME/shimeta-rk3588}" # ---- 板型检测: 只装 RK3588 ---- detect_board() { if grep -qai "rk3588" /proc/device-tree/model 2>/dev/null; then echo "rk3588"; return 0 fi if [ -e /dev/mpp_service ] && [ "$(uname -m)" = "aarch64" ]; then echo "rk3588"; return 0 fi echo "unknown" } BOARD=$(detect_board) if [ "${BOARD}" != "rk3588" ]; then echo "[install] 未检测到 RK3588 (device-tree/model=$(tr -d '\0' < /proc/device-tree/model 2>/dev/null || echo '?'), arch=$(uname -m))" echo "[install] 本软件源仅支持 RK3588; GK7206 请用:" echo "[install] wget https://mirrors.shimetapi.cn/repos/GK7206/shimeta-ai/install.sh -O - | sh" exit 1 fi # ---- 下载工具 ---- dl() { # dl if command -v wget >/dev/null 2>&1; then wget "${SERVER}/$1" -O "$2" else curl -sL "${SERVER}/$1" -o "$2" fi } # ---- 版本: bare/LATEST, -v 覆盖 ---- if [ -z "${VERSION}" ]; then echo "[install] 读取最新版本 (bare/LATEST)..." VERSION=$(dl "bare/LATEST" /tmp/.shimeta_latest 2>/dev/null && cat /tmp/.shimeta_latest | tr -d ' \r\n') fi [ -n "${VERSION}" ] || { echo "[install] 取版本失败(镜像无 bare/LATEST?), 用 -v <版本> 指定"; exit 1; } PKG="shimeta-rk3588_${VERSION}_aarch64.tar.gz" echo "============================================" echo " ShiMeta-AI-Stack RK3588 v${VERSION}" echo " 服务器: ${SERVER}" echo " 安装到: ${INSTALL_DIR}" echo "============================================" # ---- 升级: 先停服务(避免文件占用/端口残留) ---- if systemctl list-units 'inference@*' --no-legend 2>/dev/null | grep -q inference; then echo "[install] 升级: 停止旧推理实例..." sudo systemctl stop 'inference@*' 2>/dev/null || true sudo systemctl stop inference.service 2>/dev/null || true fi # ---- 下载 + 解包 ---- echo "[install] 下载 bare/${PKG} ..." TARBALL="/tmp/${PKG}" dl "bare/${PKG}" "${TARBALL}" [ -s "${TARBALL}" ] || { echo "[install] 下载失败: bare/${PKG}"; exit 1; } mkdir -p "${INSTALL_DIR}" tar xzf "${TARBALL}" -C "$(dirname "${INSTALL_DIR}")" rm -f "${TARBALL}" chmod +x "${INSTALL_DIR}"/deploy/*.sh "${INSTALL_DIR}"/deploy/shimeta_rknn* 2>/dev/null || true echo "[install] 解包完成 → ${INSTALL_DIR}" # ---- 服务的绝对路径以 /home/shimeta 为准 ---- if [ "${HOME}" != "/home/shimeta" ]; then echo "[install] ⚠️ 当前用户不是 shimeta(${HOME}) — systemd 单元/启动器内嵌 /home/shimeta 路径," echo "[install] 标准板卡用户为 shimeta; 如确需自定义, 手动改 deploy/*.service 与 shimeta_rknn*" fi # ---- 已配 CAMERA_URLS → 直接装服务; 否则引导用户先配 ---- . "${INSTALL_DIR}/deploy/pipeline.env" 2>/dev/null || true URLS="${CAMERA_URLS:-${CAMERA_URL:-}}" if [ -n "${URLS}" ]; then echo "[install] CAMERA_URLS 已配置 → 安装服务..." (cd "${INSTALL_DIR}/deploy" && sudo bash install.sh) else echo echo "[install] 完成。接下来 2 步:" echo " 1) 填摄像头地址(多路空格分隔):" echo " nano ${INSTALL_DIR}/deploy/pipeline.env" echo " 例: CAMERA_URLS=\"rtsp://192.168.1.10:554/live rtsp://192.168.1.11:554/live\"" echo " 2) 一键装服务(开机自启):" echo " cd ${INSTALL_DIR}/deploy && sudo bash install.sh" echo echo " 装好后: 检测 curl http://$(hostname -I | awk '{print $1}'):8080/api/status" echo " 画面 ffplay -rtsp_transport tcp rtsp://$(hostname -I | awk '{print $1}'):8554/livestream/0" echo " 多路: 第 N 路 HTTP=8080+N, 渲染流 livestream/N" echo " 免服务试跑: shimeta_rknn ${INSTALL_DIR}/vendor/rtm.zip (需先跑过上面的 install.sh 装启动器," echo " 或 ${INSTALL_DIR}/inference/build/shimeta_rknn 直接调)" fi