目录

BootSem:基于桌面语义建模的 openKylin 启动关键路径分析与可回滚优化

██████╗  ██████╗  ██████╗ ████████╗███████╗███████╗███╗   ███╗
██╔══██╗██╔═══██╗██╔═══██╗╚══██╔══╝██╔════╝██╔════╝████╗ ████║
██████╔╝██║   ██║██║   ██║   ██║   ███████╗█████╗  ██╔████╔██║
██╔══██╗██║   ██║██║   ██║   ██║   ╚════██║██╔══╝  ██║╚██╔╝██║
██████╔╝╚██████╔╝╚██████╔╝   ██║   ███████║███████╗██║ ╚═╝ ██║
╚═════╝  ╚═════╝  ╚═════╝    ╚═╝   ╚══════╝╚══════╝╚═╝     ╚═╝

1. 项目定位

BootSem 是面向 openKylin 桌面系统的可解释启动优化与证据审计工具:它把启动采集、关键路径分析、风险审查、可回滚优化和结果验证串成一条可复核的证据链。

BootSem 不把服务裁剪当作黑名单操作,而是综合启动时序、依赖关系、桌面语义、风险知识图谱和受控实验结果,区分可优化项、桌面核心能力、环境波动和需要人工确认的高风险建议。

2. 界面与功能示例

Go TUI 默认展示冻结的 FORMAL Snapshot,也可以在只读约束下切换到本地 LIVE Results。正式快照和实时结果不会混合展示。

BootSem TUI 总览

BootSem 操作中心

TUI 的数据来源、快捷键和安全模型见 Go TUI README

3. 快速上手

以下流程适用于 Linux、Bash 和已安装 systemd-analyze 的环境。它只进行采集、分析和查看,不会修改系统配置。

git clone https://www.gitlink.org.cn/HpDE6ZqTPa/okczxtqdxnfxyyh.git
cd okczxtqdxnfxyyh
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt
python -m unittest discover tests
./run.sh help
./run.sh analyze

如果需要 Go TUI,再执行 make go-tui,然后运行 ./run.sh tui。没有 Linux 或 systemd-analyze 时,可以先在开发机运行 Go TUI,使用内嵌只读 Formal Snapshot 查看界面;这条路径不能替代真实环境采集,也不会生成正式优化收益结论。

4. 安装要求与依赖

  • Linux,建议 openKylin、Ubuntu 或 Debian;
  • Python 3.8+、Bash、awk;
  • systemd-analyze:真实启动分析需要;
  • Go 1.21+:仅在需要重新构建 Go TUI 时需要;
  • jq、bc:部分基准脚本的可选依赖。

核心 Python 分析模块主要使用标准库。依赖清单见 requirements.txt

Ubuntu、Debian 和 openKylin 可先安装基础工具:

sudo apt update
sudo apt install -y python3 python3-venv bash systemd

Go 1.21+ 仅在重新构建 Go TUI 时需要;jq、bc 仅在运行部分基准脚本时需要。真实启动分析需要 systemd-analyzesystemctl 和可读取的系统日志;没有这些工具时只能运行模拟分析、单元测试和 Formal Snapshot 演示。

python3 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements.txt

构建 Go TUI:

make go-tui
go -C go-tui test ./...

构建产物放在 go-tui/dist/,不会提交到仓库。完整构建说明见 go-tui/README.md

安装完成后可用以下命令进行基础验证:

python -m unittest discover tests
./run.sh analyze
./run.sh report

analyzediagnosereportverifyoptimize --dry-run 默认不修改系统;实际应用优化需要人工确认和 sudo 权限:

sudo ./run.sh optimize --yes

5. 标准工作流:采集、诊断、审查、优化与验证

BootSem 的推荐工作流是五个可检查阶段,而不是一条命令直接删服务:

analyze → diagnose → review/plan → optimize → verify
   │          │             │          │          │
 原始证据   关键路径      风险审查    受控变更    功能与收益门禁

5.1 采集与分析(Analyze)

./run.sh analyze

读取启动时间、服务状态、依赖链和内核/系统日志,生成 analysis_result.json、HTML/Markdown 报告及因果诊断基础数据。

5.2 瓶颈诊断(Diagnose)

./run.sh diagnose
./run.sh causal-diagnose
./run.sh risk-knowledge

规则诊断负责定位启动瓶颈;反事实因果诊断区分“可优化、需解释、受保护”;风险知识图谱为桌面、网络、输入、账户、存储和硬件相关服务提供保护依据。

5.3 方案生成与审查(Review / Plan)

./run.sh plan
./run.sh evidence-manifest
./run.sh agent-gate

候选项必须绑定到分析证据、风险说明、依赖影响和回滚路径。agent-gate 会检查证据资格、来源哈希、正式快照和提交卫生规则。

5.4 受控优化与回滚(Optimize)

sudo ./run.sh optimize --dry-run
sudo ./run.sh optimize --yes
sudo ./run.sh optimize --rollback

高风险内核参数不会默认选中;应用入口只接受项目定义的选择项和固定确认词,不提供自由 Shell 或密码入口。

5.5 功能与收益验证(Verify)

./run.sh verify
./run.sh benchmark
./run.sh final-summary

验证先检查功能完整性,再检查证据完整性和统计门禁。正式结果要求有效样本数量、唯一 boot/session、前后协议一致和首用功能探针均满足要求。

6. 命令参考与输出说明

命令 作用 是否修改系统 主要输出
./run.sh analyze 采集并分析启动证据 tests/data/results/analysis_result.json、boot_report.*
./run.sh report 根据已有数据生成报告 boot_report.html、boot_report.md
./run.sh diagnose 规则诊断启动瓶颈 终端摘要及结果目录报告
./run.sh causal-diagnose 反事实因果诊断 causal_diagnosis.json/.md
./run.sh risk-knowledge 生成服务风险知识图谱 risk_knowledge_graph.json/.md
./run.sh plan 生成优化方案并审查 实验计划与审查结果
./run.sh evidence-manifest 生成来源和 SHA-256 清单 evidence_manifest.json
./run.sh agent-gate 检查提交就绪条件 agent_gate_report.json/.md
./run.sh optimize –dry-run 预览候选修改 预览和事务信息
./run.sh optimize –yes 应用人工确认后的修改 应用事务和回滚信息
./run.sh optimize –rollback 回滚受控修改 回滚事务信息
./run.sh verify 验证系统功能 verify_*.json
./run.sh benchmark 运行性能基准 通常否 基准摘要和原始样本
./run.sh tui 打开 Go TUI 读取 Formal 或 Live 结果

默认结果目录是 tests/data/results/。运行时产物被 .gitignore 排除;正式提交只保留冻结快照和经审核的材料。

7. 证据协议与正式评测结果

正式性能结论来自冻结的 Formal Snapshot,采用 5 轮有效冷启动样本的中位数,不使用单次最佳值。

openKylin 2.0 SP2

指标(5 轮中位数) 优化前 RC5 优化后 RC10 变化
内核阶段 7.285 s 3.373 s -3.912 s(-53.70%)
用户空间 28.103 s 4.987 s -23.116 s(-82.25%)
总启动时间 35.339 s 8.375 s -26.964 s(-76.30%)

两组冷启动样本均为 5/5 有效,均使用 systemd backend,记录 KARE not detected。优化后的正式桌面会话为独立 RC12 campaign,不替代 RC5→RC10 冷启动结果。

正式证据至少应能回答:样本是否来自真实 systemd 启动;每轮是否有唯一 boot/session ID;原始文件、摘要和报告能否通过来源哈希关联;优化前后是否使用同一采集协议;首用功能、网络、显示和桌面会话是否通过门禁。

8. 安全模型、权限控制与回滚机制

  • Analyze、diagnose、plan、report、verify 默认不修改系统;
  • Optimize 的真实应用需要人工确认和必要的 sudo 权限;
  • 高风险内核参数默认不选中,必须显式勾选;
  • 桌面登录、输入、网络、账户、核心存储等能力进入保护名单后不能被普通候选覆盖;
  • 应用前保存事务信息和回滚路径;
  • TUI 的 Formal 模式只读,Apply、Rollback 和 Cold Benchmark 需要输入 BOOTSEM;
  • BootSem 不接受自由 Shell、任意 systemd unit 或密码作为优化输入。

9. 实测数据与模拟数据边界

数据类型 用途 能否形成正式收益结论
真实 Linux/systemd 采集 启动分析、功能验证、正式实验 满足协议和门禁后可以
tests/data 模拟/固定夹具 单元测试、回归测试、界面演示 不能替代真实实验

Go TUI 默认打开只读 Formal Snapshot。切换 Live Results 只表示读取本地实时结果,不代表这些结果自动具备正式证据资格。

10. 跨发行版兼容性矩阵

系统 当前数据 状态 结论边界
openKylin 2.0 SP2 启动分析、5+5 冷启动、5 轮桌面会话、首用功能验证 正式完成 可形成正式优化结论
Ubuntu 24.04 LTS 启动分析、因果诊断、风险图谱、功能验证及诊断性桌面记录 诊断数据完整 证明工具链兼容,不外推正式收益
Debian 12 启动分析、因果诊断、风险图谱和功能验证 桌面会话受环境阻断 证明核心分析流程兼容,不形成正式收益

Ubuntu 和 Debian 的结果用于验证采集、分析、风险审计和功能检查能力;它们没有完成与 openKylin 相同的正式前后对照协议,因此不宣称跨发行版性能收益。

11. 故障排查与常见问题

没有 systemd-analyze

使用 Go TUI 的 Formal Snapshot 或运行测试夹具;不要把固定快照写成真实启动结果。

TUI 没有显示最新结果

确认 Live Results 目录存在 analysis_result.json、benchmark_after.json、evidence_manifest.json 和 agent_gate_report.json,检查结果文件时间戳,然后重新运行 ./run.sh analyze 或 ./run.sh report。

Optimize 被拒绝

先运行 sudo ./run.sh optimize –dry-run,检查候选项、风险等级、依赖影响和回滚路径。高风险项、保护项、未在优化目录中的项或缺少 BOOTSEM 确认都会被拒绝。

正式门禁失败

按顺序检查有效样本数、唯一 boot/session、来源 SHA-256、正式快照、桌面首用探针和功能验证报告。不要用修改报告文字的方式掩盖原始证据缺口。

12. 开发指南、测试体系与目录结构

python -m unittest discover tests
go -C go-tui test ./...
make test
./tests/verify.sh
git diff --check
BootSem/
├── analyzer/          Python 分析、诊断、风险和证据模块
├── optimizations/     优化目录和受控应用脚本
├── scripts/            桌面标记、测量和采集脚本
├── tests/              单元测试、行为测试和验证夹具
├── tools/              报告、摘要和辅助工具
├── go-tui/             Go 终端证据控制台
├── figures/            说明图和演示图
├── run.sh              统一命令入口
├── Makefile            构建、测试和质量门禁
└── pyproject.toml      Python 项目配置

提交前请确认测试通过、git diff –check 通过,并且没有把虚拟环境、VM/ISO、运行时结果、构建产物或审计解包目录加入提交。

13. 研究结论边界与许可证

BootSem 当前正式结果主要来自受控虚拟机重启和有限批次测量,不能直接等同于物理断电冷启动,也不能据此对所有发行版、硬件或桌面环境作普遍性能承诺。

本项目为中国研究生操作系统开源创新大赛参赛作品。Go TUI 子目录保留其随附许可证说明。使用或扩展 BootSem 时,请同时保留原始证据、实验协议和结果边界。

14. 发行版与源码包

当前正式发行版为 v1.0.1。源码包仅包含可移植的代码、测试、构建脚本、README 和 MIT 许可证;项目说明书、汇报 PPT、演示视频和说明图片作为发行版材料单独提供。

相关文档

关于

BootSem 面向 openKylin 桌面系统启动性能分析场景,通过桌面语义建模、systemd/D-Bus 环境适配和不可变证据链,定位影响桌面可用性的关键启动路径。项目提供 analyze → diagnose → review → optimize → verify 完整工作流,支持正式采集、统计分析、优化审查、安全门禁和回滚验证,并以 TUI 界面和结构化结果输出可复核的分析结论。

769.0 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号