引言 在嵌入式系统开发中,经常需要根据特定硬件平台修改和编译Linux系统。本文以Hinas系统为例,详细介绍从内核编译到镜像部署的全流程操作,涵盖内核定制、镜像创建、文件系统修改等关键环节,为嵌入式开发者提供可复用的技术参考。
详细步骤说明
1. 准备工作与环境配置
技术背景:需提前配置交叉编译工具链并准备内核源码。
- 关键目录定义: - 内核编译目录:/mnt/linux-6.6.70/
- 系统rootfs目录:/mnt/hinas/
- DTS设备树目录:/mnt/linux-6.6.70/arch/arm64/boot/dts/rockchip/
 
- 内核编译目录:
2. 修改并编译内核
技术背景:ARM64架构需使用aarch64-linux-gnu-工具链完成编译。
- 操作步骤: - # 清理旧产物并生成默认配置 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- mrproper make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig # 编译生成内核及deb安装包 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc) bindeb-pkg- 设备树修改:在Makefile中添加dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-sx390.dtb配置项。
 
- 设备树修改:在Makefile中添加
3. 创建并分区空白镜像
技术背景:镜像需适配目标设备的存储布局。
- 镜像创建命令: - dd if=/dev/zero of=firmware.img bs=1M count=0 seek=1920 # 创建1920MB镜像
- 分区方案示例: - parted -s firmware.img unit s mkpart loader1 64 8063 parted -s firmware.img unit s mkpart loader2 16384 24575 parted -s firmware.img unit s mkpart trust 24576 32767 parted -s firmware.img unit s mkpart boot 32768 262143 parted -s firmware.img unit s mkpart rootfs 262144 3932126
4. 配置启动参数与文件复制
技术背景:需确保内核与设备树文件正确加载。
- 关键配置修改: - 将/mnt/img/extlinux/extlinux.conf中的dtb参数设为rk3399-sx390.dtb
- 优化启动参数:root=PARTUUID=b921b045-1d rootfstype=ext4
 
- 将
- 文件同步命令: - rsync -a /mnt/linux-6.6.70/arch/arm64/boot/Image /mnt/img/ rsync -a /mnt/linux-6.6.70/arch/arm64/boot/dts/rockchip/rk3399-sx390.dtb /mnt/img/
5. 系统级修改与部署
技术背景:通过chroot环境实现内核包的安装与文件系统同步。
- 内核安装流程: - dpkg -i linux-headers-6.6.70_6.6.70-1_arm64.deb \ linux-image-6.6.70_6.6.70-1_arm64.deb
- 最终同步命令: - rsync -a --exclude={/proc/*,/sys/*} /mnt/hinas/ /mnt/img/ # 排除虚拟文件系统
注意事项
- 驱动适配:若遇驱动缺失,可参考ophub等资源站的相近硬件驱动方案
- 分区扩展:镜像大小不足时,调整dd命令中的seek参数值
- 启动调试:启动失败时优先检查extlinux.conf中的root=路径与文件系统类型
总结
本文通过完整的步骤拆解与代码示例,系统展示了从内核编译到镜像部署的全流程操作。掌握这些技术要点,开发者可高效完成嵌入式Linux系统的定制化开发。该方案已在Hinas系统验证通过,具有普适的参考价值。
文章已完整保留原始文档的技术细节,并补充了技术背景说明与实战注意事项,可直接作为技术博客发布。如需调整结构或补充特定细节,可随时提出优化需求。
 
    
牛逼,这可以自定义设备了