精简环境说明
BootPilot 面向 openKylin 桌面启动诊断与优化,围绕“启动时间花在哪里、面板何时完成通知、补丁如何验证与恢复”三个问题,提供事件采集、等待定位、面板通知优化和可回滚试用工具。
系统启动耗时降低 17.6%;应用初始化提前约 4.148 秒。
本项目沿用初赛仓库的 master 分支,按本届决赛要求组织材料。
master
通过按需停用未使用的系统服务,减少系统启动开销。优化前后各测试五轮,统计中位数:
系统启动总时长减少 1.180 秒。测试数据见 系统服务测试结果,原始记录与复算方法见 系统服务实验记录。
通过改进面板完成通知机制,消除会话中的通知等待。2026-10-05,在同一实验环境下开展五组 A/B 配对测试,原版与补丁版各五轮。
五组实验中,补丁版均更早进入应用初始化阶段,逐对提前量中位数为 4.148 s,范围为 3.930–4.232 s。
ukui-session main
CLOCK_MONOTONIC
原始记录见 实验数据,可通过 python3 tests/verify_finals_evidence.py 核验采集回执并重新计算结果。
python3 tests/verify_finals_evidence.py
UKUI 登录启动包含界面加载、组件完成通知和应用初始化等环节。BootPilot 将这些事件关联起来,定位“界面已就绪但会话仍在等待通知”的问题,并对面板完成通知进行条件化改进。
项目适用于 openKylin 桌面启动问题定位、UKUI 面板补丁验证及原版与候选版本的对照实验。整体设计与实现详见 项目说明书,三项主要改进详见 项目创新说明。
查看 决赛演示视频。也可通过 答辩 PPT 查看项目方案与测试结果,通过 可验证交付物 和 部署说明 了解候选版本的安装、运行及恢复流程。
Python 模块不需要编译。在固定提交的独立 ukui-panel 源码副本中检查和应用 patches/ukui-panel-4.22.0.0-ok0.5/0001-experimental-ready-notification.patch,再运行:
cmake -S bootpilot-tests -B build-notifier-tests -DCMAKE_BUILD_TYPE=RelWithDebInfo cmake --build build-notifier-tests -j2 QT_QPA_PLATFORM=offscreen QT_QUICK_BACKEND=software dbus-run-session -- ./build-notifier-tests/test-notifier cmake -S . -B build-panel -DCMAKE_BUILD_TYPE=RelWithDebInfo cmake --build build-panel --target ukui-panel -j2
也可使用 demo 中已应用补丁的源码归档,直接进入构建步骤。构建产物通过独立目录部署,保留系统原版面板。详细步骤见 补丁来源、构建与许可证。
先执行只读检查:
python3 -B tools/bootpilot.py panel-plan python3 -B tools/bootpilot.py system-timing --output /tmp/bootpilot-system-new.json python3 -B tools/bootpilot.py panel-bundle verify --manifest demo/artifacts/manifest.json --manifest-sha256 598bc7553a97ca54944efa31a1b46f319d94b9d0b72edc3cef44d0ac39b16b91
安装流程为:检查适用性 → 部署独立工件 → 接入原版并核验 → 申请单次候选 → 重启登录并验收 → 恢复原版配置。恢复后的原版在下一次登录时核验。完整命令见 干净环境部署和恢复,工件清单见 交付物说明。
python3 -B -m unittest discover -s tests -v python3 tests/verify_finals_evidence.py
Python 测试覆盖候选选择、请求消费、身份校验和配置恢复;Linux 专属测试在 Linux 环境执行,Qt 模块测试使用独立 D-Bus。对照实验证据 包含十轮原始事件、采集回执和功能反馈,验证脚本可核验哈希并离线复算实验结果。
BootPilot/ ├── README.md ├── src/ # 项目源代码 ├── docs/ # 项目说明、创新与贡献说明、技术文档 ├── tests/ # 测试脚本与五组配对实验记录 ├── demo/ # 候选二进制、源码归档与校验材料 ├── presentation/ # 答辩 PPT 与演示视频 ├── 作品原创承诺书.pdf ├── patches/ # UKUI 补丁及上游许可证 ├── tools/ # 命令行入口 ├── scripts/ # 构建与辅助脚本 ├── profiles/ # 服务策略配置 ├── systemd/ # systemd 配置 └── results/ # 历史实验记录
当前材料状态见 提交材料清单。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
BootPilot:openKylin 启动路径分析与可回滚优化
BootPilot 面向 openKylin 桌面启动诊断与优化,围绕“启动时间花在哪里、面板何时完成通知、补丁如何验证与恢复”三个问题,提供事件采集、等待定位、面板通知优化和可回滚试用工具。
系统启动耗时降低 17.6%;应用初始化提前约 4.148 秒。
✅ 参赛材料
本项目沿用初赛仓库的
master分支,按本届决赛要求组织材料。🚀 优化效果
系统服务优化
通过按需停用未使用的系统服务,减少系统启动开销。优化前后各测试五轮,统计中位数:
系统启动总时长减少 1.180 秒。测试数据见 系统服务测试结果,原始记录与复算方法见 系统服务实验记录。
桌面会话优化
通过改进面板完成通知机制,消除会话中的通知等待。2026-10-05,在同一实验环境下开展五组 A/B 配对测试,原版与补丁版各五轮。
五组实验中,补丁版均更早进入应用初始化阶段,逐对提前量中位数为 4.148 s,范围为 3.930–4.232 s。
桌面会话计时说明
ukui-session main入口,使用CLOCK_MONOTONIC时钟。原始记录见 实验数据,可通过
python3 tests/verify_finals_evidence.py核验采集回执并重新计算结果。💡 项目方案
UKUI 登录启动包含界面加载、组件完成通知和应用初始化等环节。BootPilot 将这些事件关联起来,定位“界面已就绪但会话仍在等待通知”的问题,并对面板完成通知进行条件化改进。
项目适用于 openKylin 桌面启动问题定位、UKUI 面板补丁验证及原版与候选版本的对照实验。整体设计与实现详见 项目说明书,三项主要改进详见 项目创新说明。
🎬 演示与复现
查看 决赛演示视频。也可通过 答辩 PPT 查看项目方案与测试结果,通过 可验证交付物 和 部署说明 了解候选版本的安装、运行及恢复流程。
🛠️ 环境与依赖
构建方法
Python 模块不需要编译。在固定提交的独立 ukui-panel 源码副本中检查和应用 patches/ukui-panel-4.22.0.0-ok0.5/0001-experimental-ready-notification.patch,再运行:
也可使用 demo 中已应用补丁的源码归档,直接进入构建步骤。构建产物通过独立目录部署,保留系统原版面板。详细步骤见 补丁来源、构建与许可证。
安装与运行
先执行只读检查:
安装流程为:检查适用性 → 部署独立工件 → 接入原版并核验 → 申请单次候选 → 重启登录并验收 → 恢复原版配置。恢复后的原版在下一次登录时核验。完整命令见 干净环境部署和恢复,工件清单见 交付物说明。
测试与验证
Python 测试覆盖候选选择、请求消费、身份校验和配置恢复;Linux 专属测试在 Linux 环境执行,Qt 模块测试使用独立 D-Bus。对照实验证据 包含十轮原始事件、采集回执和功能反馈,验证脚本可核验哈希并离线复算实验结果。
📁 仓库目录
当前材料状态见 提交材料清单。