方向 D1:环境完善
📋 为什么重要
方向 D1 的核心价值在于提供开箱即用的开发环境,让新用户能够快速上手 IMX-Forge 项目,无需繁琐的环境配置。
核心价值:
- 降低用户上手门槛
- 提供一致的开发环境
- 减少环境配置问题
- 提升开发效率
当开发者能够快速搭建好环境并开始工作时,他们更容易继续深入学习和贡献。
💡 如何开始
根据你的需求和情况选择任务:
如果你是新用户,想要快速开始:
- 从 D1-004 (env-init.sh) 开始 - 一键配置本地环境
- 然后尝试 D1-001 (Dockerfile) - 容器化开发环境
如果你是 VS Code 用户:
- 优先完成 D1-001 (Dockerfile)
- 然后做 D1-003 (Devcontainer) - 获得最佳体验
如果你需要频繁烧录系统:
- 先完成 D1-004 (env-init.sh)
- 然后做 D1-005 (flash.sh) - 安全烧录脚本
如果你想要多板卡支持:
- 可以选择 D1-006 (板卡配置重构) - 可选任务
🎯 核心目标
- 提供开箱即用的开发环境
- 容器化构建系统
- 完善辅助工具链
- 更新文档体系
当前状态
项目已经具备 Dockerfile、国内镜像版本、env-init.sh 和基础文档。D1 后续重点不是从零开始,而是补齐 Devcontainer、Compose/TFTP/NFS 辅助服务、安全烧录脚本和板卡配置抽象。
📝 任务清单
任务 D1-001:创建 Dockerfile
优先级:P0 推荐基础:无
为什么重要:Docker 环境可以确保所有开发者使用完全一致的工具链和依赖,避免"在我机器上能跑"的问题。
适合场景:希望快速搭建一致的开发环境,或在 CI/CD 中使用。
详细要求: 创建完整的 Docker 构建环境,预装所有必需的工具和依赖。
- 基于 Ubuntu 24.04 官方镜像
- 安装 ARM 交叉编译工具链(15.2.rel1)
- 安装所有构建依赖(build-essential, device-tree-compiler, etc.)
- 优化镜像大小(使用多阶段构建)
- 支持非 root 用户运行
- 提供便捷的 ENTRYPOINT
验收标准:
- [ ] 镜像大小 < 2GB
- [ ] 可以成功编译 U-Boot
- [ ] 可以成功编译 Linux 内核
- [ ] 可以成功编译 BusyBox
- [ ] 提供使用文档
相关文件:
docker/Dockerfiledocker/README.md
任务 D1-002:创建 docker-compose.yml
优先级:P1 推荐基础:D1-001
为什么重要:Docker Compose 可以简化 Docker 使用,让开发者一键启动完整的开发环境(包括 TFTP、NFS 等辅助服务)。
适合场景:需要频繁使用网络启动(TFTP/NFS)的开发者。
详细要求: 编写 Docker Compose 配置文件,简化 Docker 使用。
- 配置构建容器服务
- 可选:配置 TFTP 服务器
- 可选:配置 NFS 服务器
- 支持卷挂载(源代码目录)
- 支持环境变量配置
- 提供一键启动脚本
验收标准:
- [ ]
docker-compose up可以启动开发环境 - [ ] 可以在容器中执行构建
- [ ] 可以访问 TFTP/NFS 服务(如果配置)
- [ ] 提供使用文档
相关文件:
docker-compose.ymldocker/README.md
任务 D1-003:创建 Devcontainer 配置
优先级:P1 推荐基础:D1-001
为什么重要:VS Code Devcontainer 提供最佳的开发体验,一键打开即可获得完整环境,无需手动配置。
适合场景:使用 VS Code 作为主要编辑器的开发者。
详细要求: 为 VS Code 用户提供完整的开发容器配置。
- 创建
.devcontainer/devcontainer.json - 配置 VS Code 扩展推荐
- 配置开发环境变量
- 支持端口转发(TFTP/NFS)
- 提供使用文档
验收标准:
- [ ] VS Code 可以自动识别 Devcontainer
- [ ] 一键打开容器
- [ ] 预装推荐的 VS Code 扩展
- [ ] 提供使用文档
相关文件:
.devcontainer/devcontainer.json.devcontainer/devcontainer-compose.yml(可选)
任务 D1-004:创建 env-init.sh
优先级:P0 推荐基础:无
为什么重要:对于不使用 Docker 的开发者,env-init.sh 可以自动检查和配置本地环境,大幅降低环境配置的难度。
适合场景:希望在本地(特别是 WSL2)直接开发的用户。
详细要求: 编写一键环境配置脚本,自动检查依赖、设置环境变量、验证工具链。
- 检测操作系统版本
- 验证所有必需的依赖包
- 自动设置 PATH 环境变量
- 验证交叉编译工具链
- 生成环境配置报告
- 支持 WSL2 特殊配置
- 提供修复建议
验收标准:
- [x] 可以检测缺失的依赖
- [x] 可以自动设置环境变量
- [x] 可以验证工具链版本
- [x] 输出清晰的环境报告
- [x] 支持 WSL2
- [x] 提供使用文档
相关文件:
scripts/init/env-init.sh✅ 已完成document/tutorial/start/02_env_init_guide.md✅ 已完成
状态:✅ 已完成 (2026-04-07)
任务 D1-005:创建 flash.sh
优先级:P1 推荐基础:D1-004
为什么重要:统一的烧录脚本可以避免手动操作的错误,提供安全的确认机制,防止误删除重要数据。
适合场景:需要频繁烧录 SD 卡或 eMMC 的开发者。
详细要求: 编写统一的 SD 卡/eMMC 烧录脚本,支持自动分区、格式化、文件复制。
- 自动检测存储设备
- 安全确认机制(防止误操作)
- 自动分区和格式化
- 复制 U-Boot、内核、DTB、Rootfs
- 支持 eMMC 和 SD 卡
- 提供进度显示
- 完整的错误处理
验收标准:
- [ ] 可以安全烧录 SD 卡
- [ ] 可以安全烧录 eMMC
- [ ] 有完善的安全检查
- [ ] 提供进度显示
- [ ] 错误处理完善
- [ ] 提供使用文档
相关文件:
scripts/flash.shdocument/tutorial/usage/01_flash_guide.md(新增)
任务 D1-006:板卡配置重构(可选)
优先级:P2 推荐基础:无
为什么重要:统一的板卡配置结构可以简化多板卡支持,让新板卡的接入更加规范和简单。
适合场景:需要支持多个板卡,或希望为项目添加新板卡支持的开发者。
详细要求: 将板卡配置迁移到新的 boards/ 目录结构,简化多板卡支持。
- 创建
boards/目录 - 创建
boards/alpha-board/board.conf - 创建
boards/alpha-board/linux/和boards/alpha-board/uboot/ - 创建
scripts/select-board.sh - 更新构建脚本支持板卡配置
验收标准:
- [ ] 新的目录结构创建完成
- [ ] 板卡配置文件创建完成
- [ ] 可以切换板卡
- [ ] 构建脚本支持新配置
- [ ] 提供迁移文档
相关文件:
boards/alpha-board/board.confscripts/select-board.shdocument/todo/board_migration.md(新增)
🔗 相关方向
- D2:工具完备 - 环境配置完成后,可以开发更多辅助工具
- D3:示例展示 - 好的开发环境是创建示例项目的基础
🔗 相关资源
- 主路线图:roadmap.md
- 快速开始:QUICK_START.md
让每个开发者都能轻松上手! 🚀