mirror of
https://github.com/hotwa/luci-app-openclaw.git
synced 2026-03-31 04:52:33 +00:00
feat(storage): support configurable install root
Add a LuCI install-root input, persist the selected path in UCI, and route install, status, backup, uninstall, and runtime scripts through the configured storage root for new installs. Reference: custom install root flow
This commit is contained in:
@@ -11,6 +11,8 @@
|
||||
# ============================================================================
|
||||
set -e
|
||||
|
||||
. /usr/libexec/openclaw-paths.sh
|
||||
|
||||
# ── Node.js 版本策略 (双版本兼容) ──
|
||||
# V2: 当前推荐版本,用于 OpenClaw v2026.3.11+ (要求 >= 22.16.0)
|
||||
# V1: 旧版兼容,用于 OpenClaw v2026.3.8 及更早版本
|
||||
@@ -22,18 +24,17 @@ NODE_VERSION="${NODE_VERSION:-${NODE_VERSION_V2}}"
|
||||
OC_TESTED_VERSION="2026.3.13"
|
||||
# 用户可通过 OC_VERSION 环境变量覆盖安装版本
|
||||
OC_VERSION="${OC_VERSION:-}"
|
||||
NODE_BASE="/opt/openclaw/node"
|
||||
OC_GLOBAL="/opt/openclaw/global"
|
||||
OC_DATA="/opt/openclaw/data"
|
||||
oc_load_paths "$OPENCLAW_INSTALL_ROOT"
|
||||
|
||||
# ── OverlayFS 兼容性修复 ──
|
||||
# iStoreOS/OpenWrt 上 Docker 的 bind mount (/overlay/upper/opt/docker)
|
||||
# 会导致 OverlayFS 合并视图中 /opt 完全不可写 (mkdir 报 "Directory not empty")。
|
||||
# 解决方案: 将 /overlay/upper/opt bind mount 到 /opt,绕过 OverlayFS 冲突。
|
||||
_oc_fix_opt() {
|
||||
oc_install_root_uses_opt_workaround "$OPENCLAW_INSTALL_ROOT" || return 0
|
||||
# 如果 /opt 可正常写入,无需修复
|
||||
if mkdir -p /opt/openclaw/.probe 2>/dev/null; then
|
||||
rmdir /opt/openclaw/.probe 2>/dev/null
|
||||
if mkdir -p "${OC_ROOT}/.probe" 2>/dev/null; then
|
||||
rmdir "${OC_ROOT}/.probe" 2>/dev/null
|
||||
return 0
|
||||
fi
|
||||
# /opt 不可写且 overlay upper 层存在 — 执行 bind mount 修复
|
||||
@@ -72,7 +73,9 @@ ensure_mkdir() {
|
||||
[ -d "$target" ] && return 0
|
||||
if ! mkdir -p "$target" 2>/dev/null; then
|
||||
log_error "无法创建目录: $target"
|
||||
log_error "如果安装了 Docker,可能需要手动执行: mount --bind /overlay/upper/opt /opt"
|
||||
if oc_install_root_uses_opt_workaround "$OPENCLAW_INSTALL_ROOT"; then
|
||||
log_error "如果安装了 Docker,可能需要手动执行: mount --bind /overlay/upper/opt /opt"
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
@@ -495,7 +498,7 @@ do_check() {
|
||||
|
||||
# 磁盘使用
|
||||
local used
|
||||
used=$(du -sh /opt/openclaw 2>/dev/null | awk '{print $1}')
|
||||
used=$(du -sh "$OC_ROOT" 2>/dev/null | awk '{print $1}')
|
||||
echo " 磁盘: ${used:-N/A}"
|
||||
|
||||
# libc 类型
|
||||
|
||||
Reference in New Issue
Block a user