feat(chv-guest): 阶段 1 数据盘独立持久(客内挂载)

- 新增 chv-guest/chv-data-mount.sh:按 LABEL=CHVDATA 找盘
  (不依赖 /dev/vd? 固定名;seed ISO 与根盘排除),无 fs
  即 mkfs.ext4 -L CHVDATA,挂到 /home/chv/workspace,幂等;
  无数据盘即静默退出 0(copy 模式旧 VM 不报错)。
- build.sh:缺脚本即失败(与 chv-sync.sh 同款门);拷入
  镜像 /usr/local/bin/chv-data-mount;99-chv-sync.cfg
  runcmd 在 chv-sync boot 之前调它(工作区先挂好再 clone)。
- buildinfo.py BASE_CONTENTS 与两 lockfile DECLARED_SOURCES
  登记 chv-data-mount(repo_commit,随 P2 三脚本先例)。
- tests:test_chv_opt_stage1.DataMountScriptTest(脚本内容、
  构建接线、lockfile 登记);P2 干跑夹具补新文件。
回归:discover test_chv_*.py 与 test_cloud_hypervisor.py 全过。
不推、不合、不部署;只本地分支。
This commit is contained in:
host committed 2026-11-08 09:45:00 +00:00
1 parent 7a6fae7993
commit a5f836e9fd
7 files changed
+118 -2

No files matched your search

+10 -1
View File
@@ -172,6 +172,13 @@ if [ ! -f "$SCRIPT_DIR/chv-sync.sh" ]; then
echo "缺少 chv-sync.sh(Gitea 双向同步脚本):$SCRIPT_DIR" >&2
exit 1
fi
# feat-chv-opt-landing(阶段 1):数据盘挂载脚本缺失即失败
#(与 chv-sync.sh 同款门:构建产物须含它,否则工作区落回
# 系统盘、"独立持久" 只剩文档声称)。
if [ ! -f "$SCRIPT_DIR/chv-data-mount.sh" ]; then
echo "缺少 chv-data-mount.sh(数据盘挂载脚本):$SCRIPT_DIR" >&2
exit 1
fi
# 对齐 Muse P2:单元启动器 / broker / 浏览器子代理三脚本缺一即失败。
for p2_script in chv-cell.py chv-broker.py chv-browser.py; do
if [ ! -f "$SCRIPT_DIR/$p2_script" ]; then
@@ -281,11 +288,13 @@ VC_ARGS=(-a "$OUT/disk.raw"
--run-command 'mkdir -p /app/work && chmod 1777 /app/work && test -d /app/work && [ "$(stat -c %a /app/work)" = "1777" ]'
--copy-in "$SCRIPT_DIR/chv-sync.sh:/usr/local/bin/"
--run-command 'mv /usr/local/bin/chv-sync.sh /usr/local/bin/chv-sync && chmod +x /usr/local/bin/chv-sync'
--copy-in "$SCRIPT_DIR/chv-data-mount.sh:/usr/local/bin/"
--run-command 'mv /usr/local/bin/chv-data-mount.sh /usr/local/bin/chv-data-mount && chmod +x /usr/local/bin/chv-data-mount'
--copy-in "$SCRIPT_DIR/chv-cell.py:/usr/local/bin/"
--copy-in "$SCRIPT_DIR/chv-broker.py:/usr/local/bin/"
--copy-in "$SCRIPT_DIR/chv-browser.py:/usr/local/bin/"
--run-command 'mv /usr/local/bin/chv-cell.py /usr/local/bin/chv-cell && mv /usr/local/bin/chv-broker.py /usr/local/bin/chv-broker && mv /usr/local/bin/chv-browser.py /usr/local/bin/chv-browser && chmod +x /usr/local/bin/chv-cell /usr/local/bin/chv-broker /usr/local/bin/chv-browser'
--run-command 'printf "runcmd:\n - systemctl restart ssh || service ssh restart || true\n - test -f /etc/chv/guest-env && chown chv:chv /etc/chv/guest-env || true\n - /usr/local/bin/chv-sync boot >>/var/log/chv-sync.log 2>&1 || true\n" > /etc/cloud/cloud.cfg.d/99-chv-sync.cfg'
--run-command 'printf "runcmd:\n - systemctl restart ssh || service ssh restart || true\n - test -f /etc/chv/guest-env && chown chv:chv /etc/chv/guest-env || true\n - /usr/local/bin/chv-data-mount >>/var/log/chv-data-mount.log 2>&1 || true\n - /usr/local/bin/chv-sync boot >>/var/log/chv-sync.log 2>&1 || true\n" > /etc/cloud/cloud.cfg.d/99-chv-sync.cfg'
--run-command 'git config --system user.name chv && git config --system user.email chv@localhost && git config --system credential.helper store && git config --system init.defaultBranch main'
--run-command "$GT_INSTALL_CMD"
--run-command '/usr/local/bin/gt version > /app/guest-versions-gt.txt'