Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

Firefly Ubuntu开发入门之(4)打包Ubuntu镜像

950

积分

95

威望

72

贡献

超级版主

Rank: 8Rank: 8

积分
950

Firefly Ubuntu开发入门之(4)打包Ubuntu镜像

发表于 2016-9-23 10:15:10      浏览:45020 | 回复:15        打印      只看该作者   [复制链接] 楼主
本帖最后由 牛头 于 2016-9-23 10:31 编辑

    很多朋友希望在拿到Firelfy发布的Ubuntu镜像后,会想自己加驱动或自己编译的内核等等,但做的过程中难免出现各种各样的问题。网上各种教程都不那么切题,讲解都不是那么细致,让人感到迷茫,又或许是无助。Firefly团队努力地在帮助开发者打破此困局,整理策划了系列教程,让开发者可以通过Firefly开源平台可以快速上手开发,并快速打造出成熟产品。
    创新 开源 分享 定制”是我们的口号,我们一直在努力。

    之前讲到如何从打包的固件镜像出发去分析系统的一些信息,其中主要的步骤就是用固件解包工具去拆分固件。既然讲到解包固件,可能就朋友就会想到要如何去生成打包的固件,本文就讲讲如何打包生成可烧录的Ubuntu固件
    一直来都是用打包后的固件去刷机,既然Ubuntu各分区的镜像我们通过解包的操作已经得到,那我们先试试通过刷分区的方式给开发板刷Ubuntu,试试看是否正常。

    先用工具给固件解包得到各分区的镜像,具体的步骤请看上一篇教程。
    待解包好后,点击Download Image标签,按下图填好分区的信息和选择正确的分区镜像。这里有配置好的工具,并配置好打包脚本,使用方便。点击下载
    下载前,先给开发板做个低格清空Flash,确保我们实验的结果准确无误。
    点击下载,3GB多的固件下载比较慢,我不得不又吐槽一次:
    下载成功,等系统正常跑起来,Firefly Ubuntu系统酷酷的桌面壁纸就出来了。

    转入正题,马上尝试打包固件。
    之前已经编译生成了boot.img,现在用这个新的boot.img重新打包一个固件出来,虽然boot.img里我们还没有改什么。
    打包固件,我们会用到几个工具,放在Output\Android目录,如图:
    图中的3个文件就是用来打包的工具,3个文件的作用如下:
mkupdate.bat 是生成打包固件的批处理脚本,用来解放程序猿的大脑
AFPTool.exe 看名字可能是android firmware pack tool的意思
RKImageMaker.exe 看名字可能是RK平台格式镜像生成器的意思
    上述解释并非出自官方,未从考证,纯属我个人瞎猜脑补而来。

    再查看下mkupdate.bat文件的内容。注意千万别直接双击,因为双击就运行了,运行起来打包过程很漫长的。但是如果不小心双击了,也别慌,请静静地关闭窗口。
    脚本的内容主要就是调用两个程序:
    第一步用Afptool打包本目录下的相关镜像,生成firmware.img文件,打包的内容由目录里的package-file控制。
    第二步用RKImageMaker生成RK平台格式的可烧录镜像,镜像内容有RKLoader和上一步生成的android firmware,输出的镜像文件为update.img
   
    看到这里,应该可以和之前解包而来的firmware.imgAndroid目录里的文件联系起来了吧。有兴趣的朋友可以把脚本里del firmware.img语句删除,保留此文件,和之前解包生成的firmware.img对比。

    了解打包流程后,可以准备生成新的固件了。
    把之前编译好的boot.img改名为linux-boot.img后,拷贝替换Android目录里同名文件,双击mkupdate.bat
    程序在打包过程中,还输出了一些LOG,感兴趣的朋友可以去看看,可以了解到RK固件的更多信息。
   
    正常的话,会在本目录下生成update.img,这个就是打包后的固件:
    烧录固件:
    经过漫长的等待,烧录终于完成,有接串口工具的朋友就已经可以看到开发板在愉快的吐LOG了。

    但是好像进不了系统!!!心凉了一大截,赶紧接上串口看看:
    又是根文件系统没正常挂载,翻翻解包后的parameter文件内容:
    坑在这里!!!修改为:
    为什么有这个坑,我也还没搞明白。
    关闭烧录工具,重新打包固件,并烧录固件。

    这次系统终于顺利跑了起来,进入了Firefly酷酷的桌面。再次确认下系统内核情况:
    从内核信息看,确实是没错哈,是我新编译的内核~

    到这里已经可以做不少事情了哦,可以折腾起来了。
    生命在于折腾~

回复

使用道具 举报

950

积分

95

威望

72

贡献

超级版主

Rank: 8Rank: 8

积分
950
发表于 2016-9-23 10:15:11        只看该作者  沙发
沙发
回复

使用道具 举报

64

积分

0

威望

0

贡献

技术小白

积分
64
发表于 2016-9-24 11:12:35        只看该作者  板凳
原来你也遇到这个问题了啊,昨天没看这个帖子,害得我昨天自己查了好久。

应该是initrd被改动了吧?
回复

使用道具 举报

380

积分

0

威望

0

贡献

技术达人

Rank: 2

积分
380
发表于 2016-9-24 13:06:41        只看该作者  地板
版主以后可否介绍下,如何从sd卡启动,sd启动的流程,以及sd卡镜像文件的制作相关的信息呢?
官方wiki上介绍的miniroot一直没成功。
回复

使用道具 举报

950

积分

95

威望

72

贡献

超级版主

Rank: 8Rank: 8

积分
950
发表于 2016-9-24 15:26:13        只看该作者  5#
readsa 发表于 2016-9-24 11:12
原来你也遇到这个问题了啊,昨天没看这个帖子,害得我昨天自己查了好久。

应该是initrd被改动了吧?

应该是做了些优化,下次换个方法来填这坑。
回复

使用道具 举报

950

积分

95

威望

72

贡献

超级版主

Rank: 8Rank: 8

积分
950
发表于 2016-9-24 15:26:54        只看该作者  6#
csersoft 发表于 2016-9-24 13:06
版主以后可否介绍下,如何从sd卡启动,sd启动的流程,以及sd卡镜像文件的制作相关的信息呢?
官方wiki上介 ...

可以考虑后面增加这部分的内容。
回复

使用道具 举报

16

积分

0

威望

0

贡献

游客

积分
16
发表于 2016-10-14 14:59:02        只看该作者  7#
本帖最后由 Angel  CL 于 2016-10-14 15:02 编辑

版主你好,root除了是/dev/mmcblk0p3外,还有可能有其他的值吗?我按照你讲解的步骤烧录update.img结果还是不能成功,我是从Firefly-RK3288_Ubuntu14.04_201607222032.img这个固件版本解包的。谢谢。
回复

使用道具 举报

950

积分

95

威望

72

贡献

超级版主

Rank: 8Rank: 8

积分
950
发表于 2016-10-15 14:12:03        只看该作者  8#
可以ls看一下都有什么节点
回复

使用道具 举报

发表于 2017-2-16 18:38:38        只看该作者  9#
版主,你好。我按照你的方法制作镜像的时候出现了如下错误:

我只是替换了linux-boot.img这个文件。是不是因为这个文件太大了?还是哪里的参数需要修改

360桌面截图20170216183545.jpg (87.7 KB, 下载次数: 1706)

360桌面截图20170216183545.jpg
回复

使用道具 举报

37

积分

0

威望

0

贡献

游客

积分
37
发表于 2017-3-15 16:30:50        只看该作者  10#
请教版主一个问题:
我的下载下来的升级工具中包含这些工具,里面的一个文件夹(rockdev)里面的一个文件(mkupdate.bat)如下所示:
=================================================
Afptool -pack .\backupimage backupimage\backup.img
Afptool -pack ./ Image\update.img


RKImageMaker.exe -RK32 RK3288UbootLoader_V2.19.10.bin  Image\update.img update.img -os_type:androidos

rem update.img is new format, Image\update.img is old format, so delete older format
del  Image\update.img

pause
=================================================
请问 如果我想将Firefly-RK3288_Ubuntu14.04_201611211031.img解包出来的文件重新自己打包需要自己修改
这个mkupdate.bat文件的吧。如指定自己的芯片类型 UBOOT LOADER 文件 , 最疑惑的是最后一个参数
(-os_type:androidos)需要修改么,如果改应该改成什么,这个是个ubuntu的固件呢。

点评

你好,请问成功了吗?  发表于 2020-4-23 09:04
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表