# kernel-compare **Repository Path**: weizhw/kernel-compare ## Basic Information - **Project Name**: kernel-compare - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-23 - **Last Updated**: 2026-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # KDelta · 内核函数变化对比系统 一款专为 Linux 内核移植与适配打造的 API 差异分析工具,解决跨版本内核升级时因底层函数签名静默变更导致的编译失败与适配困难问题。 突破传统依赖 Git 日志人工翻阅头文件的低效模式,能够深度解析不同版本内核源码,精准对比任意指定函数或批量导出符号的参数级别差异——不仅明确指出函数返回值类型的演变,更能逐个参数高亮展示其新增、删除、重命名及类型重构的细节,并支持通过导入自定义函数依赖清单来一键过滤无关变动,直接锁定影响当前项目的具体参数变化。 ## 功能特性 - **内核对比**:上传两个内核源码包,深度对比函数签名差异,逐参数高亮展示变更 - **版本匹配**:输入内核版本号,自动从已导入文件中找出版本最接近的内核,按接近度排序,支持一键跳转比对 - **文件管理**:支持 `.src.rpm`、`.rpm`、`.tar.gz`、`.tar.xz`、`.tar.bz2` 等格式,最大 500MB - **历史记录**:比对结果自动保存,支持搜索、分页浏览和详情查看 - **深色/浅色主题**:支持一键切换,偏好自动持久化 ## 项目结构 ``` ├── app.py # Flask 主应用(路由 + API) ├── db.py # SQLite 数据库模块 ├── kernel_analyzer.py # 内核分析协调器 ├── version_matcher.py # 版本匹配模块 ├── run_app.py # 启动入口 ├── analyzers/ # 分析器 │ ├── source_code_analyzer.py │ └── subsystem_analyzer.py ├── extractors/ # 解压提取 │ └── archive_extractor.py ├── parsers/ # 符号解析 │ └── elf_symbol_parser.py └── templates/ └── index.html # 前端单页面 ``` ## 快速开始 ### 环境要求 - Python 3.8+ - Flask ### 安装依赖 ```bash pip install flask ``` ### 启动服务 ```bash python run_app.py ``` 启动后访问 http://127.0.0.1:5000 ### 调试模式 ```bash KDELTA_DEBUG=true python run_app.py ``` ## API 接口 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/upload` | 上传内核文件 | | POST | `/api/compare` | 比对两个内核 | | GET | `/api/version-match?version=3.10.0-1160.24.1.el7` | 版本匹配查找 | | GET | `/api/files` | 已上传文件列表 | | DELETE | `/api/files/` | 删除上传文件 | | GET | `/api/files//download` | 下载文件 | | GET | `/api/history` | 比对历史(分页+搜索) | | GET | `/api/history/` | 比对详情 | | DELETE | `/api/history/` | 删除比对记录 | | GET | `/api/stats` | 系统统计信息 | | POST | `/api/settings/clear-history` | 清空比对历史 | | POST | `/api/settings/clear-files` | 清空上传文件 | ## 版本匹配算法 从内核文件名中解析版本号语义分量(major / minor / patch / release / distro),计算加权距离: ``` distance = major_diff × 10000 + minor_diff × 1000 + patch_diff × 100 + release_distance × 10 + distro_penalty × 50000 ``` 匹配度 = `max(0, 100 - distance / 100)`,同发行版优先排前,组内按距离升序。 ## 技术栈 - **后端**:Python + Flask + SQLite - **前端**:单页面应用,Bootstrap + jQuery + Font Awesome - **存储**:SQLite(元数据) + 本地文件系统(源码包 + 结果) ## License 参见 [LICENSE](LICENSE)