保姆级教程:在Ubuntu 16.04虚拟机上,一步步编译SSD202开发板的完整镜像(含kernel 4.9.84和buildroot 2020.05)
SSD202开发板镜像编译实战从虚拟机配置到完整系统构建1. 环境准备与工具链配置在Ubuntu 16.04虚拟机上搭建嵌入式开发环境首先要解决的是64位系统对32位工具链的兼容性问题。许多开发者在这一步就会遇到第一个坑——缺少必要的32位库文件。执行以下命令安装基础依赖sudo apt-get update sudo apt-get install lib32z1 lib32ncurses5 lib32stdc6常见问题排查若提示Unable to locate package尝试先运行sudo dpkg --add-architecture i386部分旧版本Ubuntu需要额外安装libc6:i386和libncurses5:i386交叉编译工具链的解压和配置也需要特别注意路径问题。假设我们将工具链解压到~/ssd202/toolchain目录mkdir -p ~/ssd202/toolchain tar -xzf gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf.tar.gz -C ~/ssd202/toolchain环境变量配置是另一个容易出错的地方。编辑~/.bashrc文件时建议在末尾添加export PATH$PATH:~/ssd202/toolchain/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf/bin export CROSS_COMPILEarm-linux-gnueabihf-验证工具链是否生效source ~/.bashrc arm-linux-gnueabihf-gcc --version2. 源码获取与预处理SSD202开发需要四类核心源码组件版本获取方式Linux内核4.9.84官方镜像站点或SigmaStar提供补丁U-Boot2015.01Denx官方FTPBuildroot2020.05Buildroot官网项目代码自定义SigmaStar提供的百度网盘资源内核补丁应用技巧先解压原始内核源码tar -xvf linux-4.9.84.tar.gz进入目录应用补丁cd linux-4.9.84 patch -p1 ../ssd201_kernel_4.9.84.patch修改文件权限chmod x ms_pack_modules.sh对于U-Boot类似的步骤但需要注意使用-jxvf参数解压.bz2格式压缩包补丁应用后执行chmod ax create_img.sh mz mkimage3. 编译脚本深度解析Release_to_customer.sh是SigmaStar提供的自动化编译脚本但需要针对具体环境进行定制化修改。关键修改点包括路径配置# 修改为你的实际工作目录 export ROOTDIR/home/yourname/ssd202 export RELEASEDIR$ROOTDIR/images架构设置export ARCHarm export CROSS_COMPILEarm-linux-gnueabihf-编译优化针对多核CPU# 根据CPU核心数调整例如4核 make -j4脚本参数详解-f闪存类型nand/nor-p芯片型号ssd201/ssd202-q快速启动模式fastboot/空典型执行命令./Release_to_customer.sh -f nand -p ssd2024. Buildroot定制与系统构建Buildroot需要单独配置和编译这是构建完整系统的最后一步。关键配置项包括目标架构设置Target options → Target Architecture ARM (little endian) Target Binary Format ELF Target Architecture Variant cortex-A7工具链配置Toolchain → Toolchain type External toolchain Toolchain Custom toolchain Toolchain path /home/yourname/ssd202/toolchain/gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf系统组件选择System configuration → Root filesystem overlay directories $(ROOTDIR)/project/rootfs Enable root login with password y编译命令make menuconfig # 图形化配置界面 make -j4 # 开始编译编译完成后系统镜像将生成在output/images/目录下包含rootfs.cpio根文件系统zImage压缩内核镜像ssd202.dtb设备树文件5. 常见问题解决方案问题1补丁应用失败检查patch文件与源码版本是否匹配确认patch命令的-p参数级别正确查看.rej文件了解冲突内容问题2编译过程中断检查磁盘空间df -h确认内存足够可添加swap空间sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile问题3生成的镜像无法启动确认uboot环境变量设置正确检查flash分区表与实际硬件匹配验证内核命令行参数cat /proc/cmdline6. 进阶技巧与优化建议加速后续编译注释掉Release_to_customer.sh中的make clean部分使用ccache缓存编译结果sudo apt-get install ccache export CCACHE_DIR/tmp/ccache export PATH/usr/lib/ccache:$PATH自定义根文件系统在Buildroot配置中添加自定义包BR2_EXTERNAL /path/to/your/custom/package修改post-build.sh脚本添加后期处理内核调试技巧启用KGDB调试echo CONFIG_KGDBy .config echo CONFIG_KGDB_SERIAL_CONSOLEy .config使用QEMU模拟运行qemu-system-arm -M vexpress-a9 -kernel zImage -dtb ssd202.dtb -initrd rootfs.cpio -serial stdio在实际项目中我发现最耗时的往往是环境配置阶段。建议首次搭建时做好完整记录将关键步骤写成自动化脚本后续开发效率能提升数倍。对于团队协作可以考虑使用Docker容器统一开发环境避免因环境差异导致的各种奇怪问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2466776.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!