grublist 0.3.0

A Rust implementation of grub selection tool with interactive menu interface
# 功能建议列表

以下是计划中可以添加的有趣且实用的功能:

## 🔥 高优先级功能

### 1. 设置默认启动项(永久)
- **功能描述**:设置永久默认启动项,而不仅仅是下次启动
- **实现方式**:修改 `GRUB_DEFAULT` 为具体的菜单项路径或索引
- **使用场景**:用户想要永久设置某个kernel为默认启动项
- **命令**`grub-set-default` 或直接修改配置文件

### 2. 查看当前默认启动项
- **功能描述**:显示当前设置的默认启动项
- **实现方式**:读取 `GRUB_DEFAULT` 并显示对应的菜单项名称
- **使用场景**:用户想了解当前默认启动的是什么

### 3. GRUB超时时间设置
- **功能描述**:配置GRUB菜单显示的超时时间
- **实现方式**:编辑 `GRUB_TIMEOUT``GRUB_TIMEOUT_STYLE`
- **使用场景**:用户想要调整启动菜单等待时间

### 4. 搜索功能
- **功能描述**:在启动项列表中搜索(按名称、kernel版本等)
- **实现方式**:输入搜索关键词,高亮匹配的启动项
- **使用场景**:当启动项很多时,快速定位目标项
- **快捷键**:按 `/` 进入搜索模式

## ⚡ 中优先级功能

### 5. Kernel版本信息显示
- **功能描述**:显示每个启动项对应的kernel版本、发布日期等信息
- **实现方式**:解析 `/boot/vmlinuz-*` 文件名或读取kernel信息
- **使用场景**:帮助用户选择正确的kernel版本

### 6. 清理旧Kernel版本
- **功能描述**:列出并删除旧的、不再使用的kernel版本
- **实现方式**:扫描 `/boot` 目录,识别未使用的kernel
- **使用场景**:释放磁盘空间,清理系统
- **安全**:只删除非当前使用的kernel

### 7. 启动项重命名/自定义名称
- **功能描述**:允许用户为启动项设置自定义名称
- **实现方式**:创建配置文件存储自定义名称映射
- **使用场景**:让启动项名称更易读、更个性化

### 8. 配置文件备份管理
- **功能描述**:查看、恢复、删除配置文件备份
- **实现方式**:管理 `/etc/default/grub.bak` 等备份文件
- **使用场景**:需要回滚配置更改时

### 9. GRUB配置验证
- **功能描述**:检查配置文件语法是否正确
- **实现方式**:运行 `grub-mkconfig --dry-run` 或语法检查
- **使用场景**:修改配置后验证是否有错误

## 🎨 增强体验功能

### 10. 导出/导入配置
- **功能描述**:导出当前GRUB配置为JSON/YAML,支持导入
- **实现方式**:序列化配置到文件
- **使用场景**:备份配置、在多台机器间同步配置

### 11. 系统信息显示
- **功能描述**:显示系统信息(内存、CPU、当前运行的kernel等)
- **实现方式**:读取 `/proc` 文件系统
- **使用场景**:帮助用户了解系统状态

### 12. 启动时间统计
- **功能描述**:记录和显示各启动项的启动时间
- **实现方式**:解析系统日志或使用systemd分析
- **使用场景**:比较不同kernel的启动性能

### 13. 快速切换(快捷键)
- **功能描述**:为常用启动项设置数字快捷键(如按1、2、3快速选择)
- **实现方式**:在主菜单中显示快捷键提示
- **使用场景**:快速选择常用启动项

### 14. 主题/外观设置
- **功能描述**:配置GRUB主题、分辨率、字体等
- **实现方式**:编辑 `GRUB_THEME``GRUB_GFXMODE`- **使用场景**:个性化GRUB界面

### 15. 密码保护设置
- **功能描述**:设置GRUB密码保护
- **实现方式**:使用 `grub-mkpasswd-pbkdf2` 生成密码哈希
- **使用场景**:增强系统安全性

## 🔧 高级功能

### 16. 批量操作
- **功能描述**:批量设置多个启动项的kernel参数
- **实现方式**:选择多个启动项,统一设置参数
- **使用场景**:需要为多个kernel设置相同参数

### 17. 参数模板/预设
- **功能描述**:保存常用的kernel参数组合为模板
- **实现方式**:存储参数模板,快速应用
- **使用场景**:快速切换不同的参数配置(如调试模式、性能模式)

### 18. 启动项分组
- **功能描述**:将启动项分组管理(如:生产环境、测试环境、恢复模式)
- **实现方式**:使用标签或分组功能
- **使用场景**:管理大量启动项时更有序

### 19. 历史记录
- **功能描述**:记录最近选择的启动项
- **实现方式**:保存选择历史到配置文件
- **使用场景**:快速访问最近使用的启动项

### 20. 命令行模式
- **功能描述**:支持命令行参数直接执行操作
- **实现方式**:添加CLI参数解析
- **使用场景**:脚本自动化、远程执行
- **示例**`grublist --set-default "0>2" --reboot`

## 📊 统计和分析功能

### 21. 启动统计报告
- **功能描述**:生成启动项使用统计报告
- **实现方式**:分析系统日志,统计各启动项使用频率
- **使用场景**:了解哪些kernel最常用

### 22. Kernel参数效果对比
- **功能描述**:对比不同参数配置的效果
- **实现方式**:记录不同配置下的系统性能指标
- **使用场景**:优化kernel参数

## 🎯 推荐实现顺序

1. **第一阶段**(核心功能增强):
   - 设置默认启动项(永久)
   - 查看当前默认启动项
   - GRUB超时时间设置

2. **第二阶段**(用户体验提升):
   - 搜索功能
   - Kernel版本信息显示
   - 配置文件备份管理

3. **第三阶段**(高级功能):
   - 启动项重命名
   - 导出/导入配置
   - 参数模板/预设

4. **第四阶段**(分析和统计):
   - 启动时间统计
   - 启动统计报告
   - 清理旧Kernel版本

## 💡 实现建议

- 优先实现用户最常用的功能
- 保持界面简洁,避免功能过于复杂
- 确保所有功能都有适当的错误处理和用户提示
- 考虑添加配置文件来存储用户偏好设置
- 可以添加 `--help``--version` 等标准CLI选项