test-kit 环境配置(依赖 / 环境基线 / 配置全览)

生成于 2026-09-17 15:26:19(UTC)· 本页为只读快照;判定以 kit-preflight 门禁为准
① 依赖安装(kit-init)② 门禁预检(kit-preflight)
检查进度:检查完成(rc=0)(100%)
实现细节(状态源与刷新)
状态源 /ctl/prep.state(单行 state=… rc=… ts=… step=…);每个步骤边界重生成本页,进行中附加 meta refresh 3 秒自刷新。
测试项启用(控制面:保存后下一轮生效)
勾选要跑的阶段、按需改「时长(秒)」;改完点下方「保存配置(勾选与时长)」。改动下一轮生效
实现细节(校验 / 备份 / 原子替换)
阶段枚举取自本 conf 的 [phase:*] 定义节,勾选态=当前 [runner] phases;时长值=该阶段现 conf 的 duration(留空=不改,非负整数);perf-baseline 按项数运行、无总时长键。保存=整份校验通过后原子替换 kit.conf 并留存 kit.conf.bak-时间戳,失败原文件一字不动。

阶段启用([runner] phases)

按项数运行(无总时长键)
什么时候用它:改了上面的阶段勾选或时长、想把改动写入配置时。
门禁与预检结果(preflight)
取 log-dir 下最新一份 preflight-*.log(kit-preflight.sh 输出,三列:状态/检查项/说明)。硬门禁 FAIL 不可 override,软项 WARN 可带 -f 放行——以 kit-preflight 退出码为准。
来源:/home/vm-embedded/vlab/kitweb-demo/sandbox/run/log/preflight-20260917-145501.log(当前 log-dir 最新,非当前报告轮——重放归档轮时原轮日志不在本机)
状态检查项说明
PASSID-01sandbox 演示桩(真实内核比对见 VM/真板轮:results/28-vm-test/)
PASSID-02sandbox 演示桩(PREEMPT_RT 在 VM/真板轮核验)
PASSCD-01sandbox 演示桩(coredump 组件)
WARNBK-01sandbox 演示桩(无破坏性步骤,快照由编排方负责)
汇总:PASS=3 WARN=1 FAIL=0 其他行=3
离线依赖清单(dependencies.list:包 / 版本 / deb 文件)
套件零外网依赖闭包(deb 内嵌随包);各工具实装与否以预检 KIT-02 行为准(缺失工具的用例将按 N/A 登记)——guest 侧逐包实装版本采集为产出侧扩展项(候批)。
包名版本离线 deb
can-utils2020.11.0-1can-utils_2020.11.0-1_arm64.deb
ethtool1%3a5.9-1ethtool_1%3a5.9-1_arm64.deb
fio3.25-2fio_3.25-2_arm64.deb
htop3.0.5-7htop_3.0.5-7_arm64.deb
iperf33.9-1+deb11u3iperf3_3.9-1+deb11u3_arm64.deb
kexec-tools1%3a2.0.20-2.1kexec-tools_1%3a2.0.20-2.1_arm64.deb
rt-tests1.5-2rt-tests_1.5-2_arm64.deb
stress-ng0.12.06-1stress-ng_0.12.06-1_arm64.deb
systemd-coredump247.3-7+deb11u8systemd-coredump_247.3-7+deb11u8_arm64.deb
原始文件:(文件不在可访问路径,路径:/home/vm-embedded/vlab/kitweb-demo/sandbox/kit/etc/dependencies.list)
环境基线(kernel.env:内核期望 / RT 要求 / 串口)
test-env.conf 为动态 shell 逻辑(source 形态)不直读——其消费的基线键在 kernel.env;实际内核与期望的比对结果见预检 ID-01/ID-02 行。
KERNEL_EXPECT5.10.264-rt160
KERNEL_BUILD_TAG_EXPECT"#1 SMP PREEMPT_RT Sat Sep 5 07:17:40 UTC 2026"
REQUIRE_RTyes
CONSOLE_DEVICEttyAMA0
kit.conf 全配置(按节折叠;控制面:键名/值可编辑 + 可删键 + 可新增键 + 可新增节 + 可删除节 + 草稿编辑)
来源:/home/vm-embedded/vlab/kitweb-demo/sandbox/kit/kit.conf;键值与文件逐字一致(注释不进页,原文见下方链接)。
改键名/改值=直接编辑;删键值对=行尾「删除」按钮;新增键值对=节底「新增键值对」按钮(点一下就加一行空白,先写入草稿,点「保存配置」才写入 conf)。

[runner](6 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。

[phase:monitor](5 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。

[phase:rt-baseline](4 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。

[phase:rt-tuning](3 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。

[phase:perf-baseline](3 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。

[phase:fault-inject](4 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。

[phase:can](4 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。

[target:journald](5 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。

[target:ssh](5 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。

[target:sandbox-heartbeat](5 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。

[web](5 键)

删节=整份校验通过后原子替换;[runner]/[web] 为单例必需节(服务端拒删)。
点一下就新增一行空白(写入草稿,点「保存配置」后生效)。
什么时候用它:改了键名 / 键值、删了键或加了新键、想把这些改动写入配置时(下一轮生效)。
实现细节(行级重写 / 草稿 / 校验 / 备份)
改名/改值/删键/新增键:只重写被改动的行(保持行序与注释);编辑中先落草稿,整份经 E 规则校验通过才写入 conf,原文件留存 .bak-时间戳;未知键保存后 WARN 提示(不阻断)。

新增节

什么时候用它:要新增一个阶段([phase:*])或被测/被监控服务([target:*])节时——选模板、填节名、点下方按钮即可。
实现细节(命名白名单 / 骨架 / 校验)
节名白名单 [A-Za-z0-9_-]+ 且与现网节名不重名;模板骨架带合法默认值([target:*] 恰一个语言字段非空),追加到 conf 尾部后整份校验,通过才写入。新增 [phase:*] 需自行加入 [runner] phases 才会参与执行。
原文(含注释):(文件不在可访问路径,路径:/home/vm-embedded/vlab/kitweb-demo/sandbox/kit/kit.conf)
开测前建议检查清单(行业惯例折入,候自动化覆盖)
清单来源=行业惯例调研(T25,2026-09-12 转存 evidence);「候自动化」项的 guest 侧采集为产出侧扩展(候批),当前由测试执行者开测前手动核对。来源不硬编码 URL,链接指向证据树路径:targets/<芯片>/results/25-prepare-page/evidence/t25-industry-preflight-checklist-report.md(证据树,未随包分发)。

① 已被预检自动覆盖的(跑 kit-preflight 即已覆盖)

下列基线项由 kit-preflight.sh 自动核对,结论见上方第一区;开测前无需人工重复,例外之处在第二组给出复核命令。
检查项预检 ID覆盖说明
内核版本与构建指纹ID-01 / ID-04版本号逐字比对 + uname -v 构建指纹子串核验(硬门禁)
PREEMPT_RT 实时状态ID-02/sys/kernel/realtime=1 核验(RT 轮硬门禁)
主机名身份ID-03与期望主机名比对,身份漂移提示
内核 panic 触发后行为SYS-kernel.panickernel.panic 值级比对(重启延迟秒数)
SysRq 已启用SYS-kernel.sysrqkernel.sysrq 值级比对
内存 overcommit 策略SYS-vm.overcommit_memoryvm.overcommit_memory 值级比对
coredump 链路CD-01 ~ CD-04coredumpctl 在位、core_pattern 管道、DefaultLimitCORE、目录可写
journald 持久化JR-01 / JR-02Storage 配置核验 + /var/log/journal 实际在档
pstore/ramoops 崩溃留证PS-01 / PS-02 / PS-03后端注册(硬门禁)、pstorefs 挂载、陈旧残留扫描
cgroup 版本CG-01cgroup2fs / tmpfs 判定
根分区磁盘余量DSK-01可用 MB 与阈值比对(core/journal 预算)
时钟年份合理性CLK-01UTC 年份落在 202x(粗检;同步状态见第二组)
串口 console 与 gettySER-01 / SER-02cmdline console= 核验 + serial-getty 活跃状态
failed 单元与残留崩溃进程SVC-01 / SVC-02基线是否干净(failed 单元 / core-dump 残留扫描)
阶段所需工具在位KIT-02按已配置阶段聚合核验;缺失由 kit-init 补装、用例按 N/A 登记
results/log 目录在位KIT-01kit-init 前置检查
备份在档(board)BK-01原系统备份 + 当前配置快照须在档(board 硬门禁)
CAN 接口在位与波特率CAN-01接口存在性与波特率核验
监控物料与只读试跑MAT-01 / MAT-02targets 清单 + 监控器 dry-run
语言环境 traceback 变量ENV-PYTHONFAULTHANDLER 等DefaultEnvironment 三变量核验(现场 traceback 完整性)

② 建议手动检查(候产出侧自动化)

以下按 T25 报告主表逐项转写:查什么 / 为什么开测前要查 / 参考命令。命令为 root 可跑单行形态,优先 coreutils/procfs/sysfs;带 systemd 的命令在离线板上失败可静默跳过。
检查什么为什么开测前要查参考命令
时钟是否已同步(NTP/chrony)时间戳、日志排序、超时判定与多机因果都依赖墙钟;时钟未同步会让「超时/抖动」结论失去意义timedatectl show -p NTPSynchronized -p NTP; chronyc tracking
RTC 与时区RTC 用本地时间会在时区/夏令时切换时跳变,跨天测试与趋势比对受影响timedatectl show -p LocalRTC -p Timezone
CPU governor 调频策略powersave/ondemand 动态调频直接改变性能与延迟测量,是台架受控变量for f in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do printf '%s=%s\n' "$f" "$(cat "$f")"; done
CPU 隔离与低抖动参数若不隔离,调度 tick、RCU 回调、IRQ 都会注入抖动,实时/延迟结果不可比grep -Eo 'isolcpus=[^ ]*|nohz=[^ ]*|nohz_full=[^ ]*|rcu_nocbs=[^ ]*|irqaffinity=[^ ]*' /proc/cmdline
irqbalance 与 IRQ 亲和实时部署中 irqbalance 周期性搬移中断,打破核绑定设计并引入抖动systemctl is-enabled irqbalance; cat /proc/irq/default_smp_affinity
CPU idle states(深 C-state)深 C-state 退出延迟影响唤醒延迟与功耗测试的可重复性cat /sys/devices/system/cpu/cpu0/cpuidle/state*/name
swap 与换页活动换页引入额外延迟并污染内存/延迟类结果;vmstat 的 si/so 应尽量为 0cat /proc/swaps /proc/sys/vm/swappiness; grep pswpin /proc/vmstat; grep pswpout /proc/vmstat
vm.overcommit_memory(现场复核)策略决定稀疏分配是失败还是「假成功」,影响 OOM 时机与可复现性(预检 SYS 已比对基线)cat /proc/sys/vm/overcommit_memory /proc/sys/vm/overcommit_ratio
vm.panic_on_oomOOM 时 panic 还是 oom_killer 杀进程,决定失败形态是否可归因cat /proc/sys/vm/panic_on_oom
panic_on_oops 语义基线oops 后继续还是立即 panic(且 panic 非零才重启),决定整轮判定口径,跑前必须记录对齐cat /proc/sys/kernel/panic_on_oops /proc/sys/kernel/panic
soft/hard lockup 检测软锁阈值=2×watchdog_thresh;KVM guest 默认关 nmi_watchdog,需显式核对cat /proc/sys/kernel/softlockup_panic /proc/sys/kernel/watchdog_thresh /proc/sys/kernel/nmi_watchdog
hung_task 检测D 状态挂起默认只告警;存储/驱动问题常先以此出现,设 panic 需配 kdump 留现场cat /proc/sys/kernel/hung_task_panic /proc/sys/kernel/hung_task_timeout_secs
kernel.tainted 基线非零 taint 表示已加载树外模块或发生过告警/崩溃,影响结果可信与缺陷归因cat /proc/sys/kernel/tainted
panic_on_warn / warn_limit决定 WARN 是否触发 panic 抓现场;开太早会被已知良性 WARN 打断长测cat /proc/sys/kernel/panic_on_warn /proc/sys/kernel/warn_limit
coredump ulimit 与 core_patternulimit -c 为 0 基本可判不会产生 core;管道模式把 core 交给用户态收集器(预检 CD 已核链路,此处核测试进程)ulimit -c; cat /proc/sys/kernel/core_pattern
kdump 崩溃转储内核 panic 场景只有 kdump 能给出完整内存转储;小于 4GB 内存需手工预留 crashkernelgrep -o 'crashkernel=[^ ]*' /proc/cmdline; systemctl is-active kdump
nofile 资源限制fd 密集型用例触顶会以 EMFILE 假失败;nr_open 是进程级上限、file-max 是系统级上限ulimit -n; cat /proc/sys/fs/nr_open /proc/sys/fs/file-max
threads-max / pid_maxfork/线程密集型测试的硬上限;pid_max 决定 PID 回绕cat /proc/sys/kernel/threads-max /proc/sys/kernel/pid_max
aio-max-nraio-nr 触顶后 io_setup 直接 EAGAIN,AIO/io_uring 用例会假失败cat /proc/sys/fs/aio-nr /proc/sys/fs/aio-max-nr
熵池可用性VM/无 RTC 板卡熵积累慢,加密类用例可能阻塞或失败;5.6+ 内核熵语义已变,作基线记录cat /proc/sys/kernel/random/entropy_avail /proc/sys/kernel/random/poolsize
文件系统类型与挂载选项日志型 fs 的 journal 重排引入延迟;至少 noatime/nodiratime 减少额外写grep ' / ' /proc/mounts; grep -E 'noatime|relatime' /proc/mounts
磁盘余量与 inode写满磁盘/耗尽 inode 会丢结果并产生 ENOSPC 假失败;journal/core 容量也依赖剩余空间(预检 DSK 仅核可用 MB)df -h / /tmp /var; df -i / /tmp /var
journald 容量策略长测期间容量策略决定日志是否被挤掉(默认 SystemMaxUse 10%、SystemKeepFree 15%;预检 JR 核持久化)grep -E '^#?System(MaxUse|KeepFree)' /etc/systemd/journald.conf
日志转发与限流转发批量不当造成 I/O 尖峰;审计日志上限防止日志区被撑满grep -E '^[^#].*@' /etc/rsyslog.conf; grep -E '^max_log_file' /etc/audit/auditd.conf
cron/at/timers 干扰测试窗口内的定时任务是典型的抖动与随机失败来源ls /etc/cron.d /etc/cron.daily; systemctl list-timers --all
多余服务与图形界面图形界面与 MTA/RPC/NFS 等既是噪声源,也影响最长尾延迟systemctl get-default; systemctl list-units --type=service --state=running
SELinux 模式enforcing 策略拒绝会表现为「功能正常但被拦下」的假失败,须记录并与套件预期对齐getenforce; cat /sys/fs/selinux/enforce
AppArmor 状态enforce 的 profile 拒绝会表现为随机失败;complain 模式只记录不拦截aa-status --enabled; cat /sys/module/apparmor/parameters/enabled
观测采集前提(/proc 与 sysstat)sar 要求 /proc 已挂载;不核对采样器(sa1)事后就没有基线数据grep '^/proc ' /proc/mounts; ls /var/log/sa
内核 config 前置校验主流测试框架开跑前校验内核 config 前提(如 LTP 的 KCONFIG_PATH);前提不满足应显式标记而非带病开跑ls -l /boot/config-$(uname -r) /proc/config.gz