在使用Ubuntu系统进行软件开发,开发完成后需要批量生产,就会产生这个需求,因为Ubuntu系统可以通过apt-get命令来获取安装自己所开发软件所需要的一些运行环境。 这边提供将修改后的Ubuntu文件系统生成Update.img文件以供直接烧写到新的开发板或者核心板上的思路。 将ubuntu.img挂载到做完更改的板子上,将文件系统的内容替换然后将更改后的ubuntu.img放在源码目录下进行编译生成Update.img。这样就可以直接给开发板烧写做完更改后的Ubuntu系统。 将ubuntu.img挂载到开发板文件的方式有很多种,请选择自己熟悉的方式进行操作,这边只列举一个简单而麻烦的方式。 将初始ubuntu.img文件copy到开发板中(ftp、U盘等方式),然后在终端进行操作,mount ubuntu.img target(target为文件夹名字,可自己更改创建),然后将根目录下的文件替换target挂载的文件,然后umount target卸载镜像。然后将镜像copy到VMware中,替换源码目录下的ubuntu.img(源码目录为OK3399-desktop-release/rootfs/ubuntu.img),然后运行builid脚本按照手册描述进行编译烧录。 以上方式有一点不足是如果自己所做的更改较大,在将根目录文件替换到挂载镜像的文件夹时,挂载镜像的大小不足以容纳所更改的项目,下边提供一个给镜像扩容的方法。(以下操作在虚拟机中完成,扩容后再将镜像copy到开发板中挂载) 镜像文件的扩容用到两个命令 sudo fsck.ext3 -f IMAGE sudo resize2fs IMAGE SIZE 第一个命令为检测IMAGE文件现在的大小和目录结构等,完成检测后才可以对IMAGE文件大小进行操作。操作时SIZE为块的数量、一个块的大小为4K(即当SIZE为783770时,783770*4=3135080,大概为3.2G,1250000时为5G) 镜像文件的扩容需要在挂载之前进行操作,此时验证的ubuntu.img最大为5.1G,超过此容量在进行编译等操作时不会出现报错,但是最终在开发板上运行时会导致无法正常启动的情况,所以目前情况下,请不要将其容量设置为5G以上。 最后提供一个思路,是将开发板的文件系统通过rsync挂载到服务器上通过dd指令来直接复制文件系统到新镜像中,这边只提供最后一种思路的理论方法,有兴趣的可以自行尝试。 创建一个新镜像,然后复制内容 以下命令中 new.img
oldtarget newtarget 请按照实际情况自行更改 1、 新建镜像文件 dd if=/dev/zero of=new.img bs=1M count=5120 2、 分别创建新旧镜像挂载点 mkdir oldtarget mkdir newtarget 3、 分别将新旧镜像与loop设备关联 losetup /dev/loop0 ubuntu.img losetup /dev/loop1 new.img 4、 创建新镜像的文件系统 mke2fs -j /dev/loop1 5、 挂载镜像 mount /dev/loop0 oldtarget mount /dev/loop1 newtarget 6、 将数据填充到新镜像中 (cd oldtarget; tar czf -) | (cd newtarget; xzf) 7、 卸载文件系统以及释放loop设备 umount /dev/loop0 umount /dev/loop1 losetup -d /dev/loop0 losetup -d /dev/loop1 在执行数据填充(cd oldtarget; tar czf -) | (cd newtarget; xzf)这个命令时,如果出现tar:在读取文件时文件发生了改变,则说明操作不成功。请检查命令行的路径。操作正常时无提示息,并需要等待较长的一段时间,请耐心等待。 |
|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )
GMT+8, 2024-12-26 21:39
Powered by Discuz! X3.4
© 2001-2013 Comsenz Inc.