完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
1. 前言
前面我们介绍了RK3399K以及其镜像烧写(https://blog.csdn.net/weixin_39510813/article/details/117261824),然后我们在开发完程序后,为了方便生产,我们直接备份整个固件方便批量生产。 这期间折腾了不少方法,最后总算是成功备份了整个rootfs,这里总结一下。 2. 获取分区表 连接设备并通过设备分区表功能获取设备分区,如下(关于如何连接设备请查看之前总结的镜像烧写部分): 3. 方式一:开发工具直接导出镜像 3.1 分区简单介绍及导出分区镜像 根据我们的需求通过导出镜像功能设置扇区后导出即可,这里再简单介绍下各个分区的功能,然后我们根据自己的情况导入不同镜像来备份升级即可。 https://wiki.t-firefly.com/Core-3328-JD4/linux_compile.html#da-bao-gu-jian
这样子看下来我目前最多备份rootfs就可以了,其它的基本不会动。 然后我们切换到高级功能根据获取到的分区表中扇区信息导出对应的镜像即可: 导出成功后的img在开发工具的同级目录的output文件夹下(注意:最好是将所有分区全部导出后合并成总的update.img后升级,因为像我的板子实际上有16G大小,其中rootfs分区占了14G,但是实际上我们烧写的rootfs分区只烧写了4G左右,其它的是剩余的,而导出各个分区后合并的update.img只有5G左右) 3.2 注意点以及可能的问题 我在使用2.61和2.65版本的工具发现导出都立刻失败了,是立刻失败,不是一段时间后失败,然后在论坛里找到了解决思路(https://dev.t-firefly.com/thread-99487-1-1.html “嗨,我也遇到了同样的问题,我的解决办法是使用低版本AndroidTool,我的版本是V2.42,我成功的将uboot 、trust、kernel等备份出来了”)我这里是换了低版本2.38可以导出镜像,但是官方下载速度慢的。。。(可以使用迅雷加速一下会好一些) 2.38版本的没有设备分区表功能,对应位置是低格功能。还有2.3x默认为中文,2.6x版本默认为英文,更换中文需要安装目录下修改config.ini文件,里面有切换中英文的说明。2.58的默认也是中文,而且分区表一次读取成功,是匹配Ubuntu系列的分区表的。 这个是给到的几个版本的开发工具,我估计各个版本对应不同产品,具体对应关系我目前还不是很清楚,只发现最适合rk系列的分区的似乎是2.58版本(通过这个文章尝试2.58的:https://blog.csdn.net/oxp7085915/article/details/80291057)。 这个是目前的开发工具的各个版本(https://www.t-firefly.com/doc/download/page/id/3.html): 不明白为何隐去了2.58版本?(http://download.t-firefly.com/product/RK3328/Tools/AndroidTool/AndroidTool_Release_V2.58.zip) 可以看到2.58版本的下面有很多rk系列的配置文件,这在其它版本开发工具下面是没有的,默认的分区也是和rk系列匹配的,所以最后我是使用的2.58版本的获取分区信息,然后使用2.38的获取固件,然后再使用2.58进行升级,所以如果你使用其它版本的开发工具升级固件失败之类的也可以换一下其它版本的试一下,很可能是开发工具版本不匹配。 所以,这里也可以导入不同的配置: 2.38: 2.65: 5. 方式二:fireflydev生成镜像 上述方式如果行不通的话可以试下如下方式,主要来自:https://wiki.t-firefly.com/zh_CN/Firefly-RK3399/ubuntu_manual.html 也就是说如果通过瑞芯微的开发工具导出rootfs及相关分区后不成功的话我们可以直接在我们已经部署好工作环境的设备上通过firefly提供的工具进行以下两步操作:
这种方式应该是最简单的,但是可惜需要firefly的设备,目前市面上大多都是基于开源的东西拼凑的,很多类似的工具都没有集成进去,所以很可能你的设备是不支持这种方式,没关系,我们还有第三种方式。 6. 方式三:dd命令直接制作 https://blog.csdn.net/RedKeyer/article/details/100032252 我们的目标一直没变,就是导出rootfs然后打包成可升级的固件,所以外部开发工具以及内部开发工具导出rootfs.img升级都行不通的情况下,我们直接将根文件系统/整个全部命令打包,采用最暴力的方式拷贝根目录后直接制作镜像,如果你的板子空间足够的话(未压缩的情况下Ubuntu18.04的大概4G左右)直接在板子上打包(不推荐),如果你的板子空间不足的话则可以使用rsync同步设备根目录到远端PC上来打包,这种方式应该是最通用的了。 6.1 配置RK3399设备ssh 默认root用户没有密码,且ssh无法远程登录,这个对部分文件上传有影响,需要修改一下。 $ sudo -s $ passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully 再设置sshd_config: sudo vim /etc/ssh/sshd_config 修改其中的Authenation下的PermitRootLogin为yes即可: ... # Authentication: #LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 ... 然后重启生效: /etc/init.d/ssh restart 6.2 同步根目录到远端PC # 保证板子root用户可建立ssh链接,PC可远程链接开发板 # rsync -avx root@设备ip:/ 存储目录 rsync -avx root@192.168.1.239:/ ubuntuBoard 6.3 PC上制作rootfs镜像 # 1. dd创建镜像文件,大小按照你的板子的/大小,通过df -h查看,我的是14G,所以ubuntu.img创建了14000 dd if=/dev/zero of=ubuntu.img bs=1M count=14000 # 2. 格式化镜像文件并加入卷标 sudo mkfs.ext4 -F -L linuxroot ubuntu.img # 3. 挂载镜像并拷贝分区内容 mkdir ubuntu-mount sudo mount ubuntu.img ubuntu-mount sudo cp -rfp ubuntuBoard/* ubuntu-mount 缷载镜像: sudo umount ubuntu-mount # 4. e2fsck检查并修复镜像文件 e2fsck -p -f ubuntu.img # 5. 减小镜像文件大小 resize2fs -M ubuntu.img 6.4 烧写rootfs 使用5.8版本的瑞芯微开发工具再一次读取分区后烧写rootfs分区: 经测试后发现烧写的镜像是正常的,我配置进去的系统配置和软件开发环境仍然保留了下来(但注意单独烧写rootfs时要包含parameter.txt文件,这个文件需要解压原始镜像获取,否则很可能会出问题)。 6.5 解包及打包update.img后烧写 最近又尝试了第二种方法,其中解包和打包的工具可以使用,结合第二种打包和解包的方式我们可以将原本的镜像解包生成各个img,然后将第三种方法生成的rootfs分区镜像再替换进去,最后再通过第二种方法的打包方法打包成update.img后整体烧写。 6.6 烧写后/dev/root大小不正确的问题解决 烧写后我们通过: df -h 查看分区情况,发现rootfs似乎不太对: rootfs的大小缩水了,上面显示只有6.2G,而我们通过parted查看理论上我们的根分区大小应该是14G大小才对,通过以下命令查看(建议使用parted,MBR和GPT分区表都能识别,目前由于磁盘容量的扩大,都在逐渐过渡到GPT分区表了): l***lk df -h parted /dev/mmcblk1 (parted) p 莫慌,这个是由于我们的文件系统大小没有设置成分区大小引起的,还记得我们烧写的时候对rootfs.img做的廋身操作吗,在那个位置我们对镜像文件结合内容进行了搜身,所以这里默认显示的是系统的大小,那么我们将其重新设置为分区大小即可,参考这里的命令: root@bionic:~# resize2fs /dev/mmcblk1p8 resize2fs 1.44.1 (24-Mar-2018) Filesystem at /dev/mmcblk1p8 is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/mmcblk1p8 is now 3670016 (4k) blocks long. ok,完成了最后一步: 如果你发现单独烧写rootfs.img后根文件系统的使用为100%,无法上传文件,那么就是少了这一步,我们烧写的根文件系统没有重新调整为整个分区的大小导致没有多余的空间了(制作update.img时也需要注意各个分区设置的大小)。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1924 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
2406 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
5193 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 22:25 , Processed in 0.601622 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号