关于BOARD_SYSTEMIMAGE_PARTITION_SIZE【转】
本文转载自:https://blog.csdn.net/ttxgz/article/details/7542380
1. 系统需要,把需要预置在系统的所有apk放在目录 device/softwinner/crane-gm-g9/pre/下,在编译android源码时,出现下面错误:
1 make_ext4fs -l 268435456 -a system out/target/product/Mary/system.img.ext4 out/target/product/Mary/system
2 Creating filesystem with parameters:
3 Size: 167772160
4 Block size: 4096
5 Blocks per group: 32768
6 Inodes per group: 5120
7 Inode size: 256
8 Journal blocks: 1024
9 Label:
10 Blocks: 40960
11 Block groups: 2
12 Reserved block group size: 15
13 error: do_inode_allocate_extents: Failed to allocate 119 blocks
14
15 make: *** [out/target/product/Mary/obj/PACKAGING/systemimage_intermediates/system.img] 错误 4
16 make: *** 正在删除文件“out/target/product/Mary/obj/PACKAGING/systemimage_intermediates/system.img”
这个错误是由于增加了预置apk,导致system.img超过了分配的空间大小导致的。
修改device/softwinner/crane-gm-g9/BoardConfig.mk里BOARD_SYSTEMIMAGE_PARTITION_SIZE的大小为536870912,即把.img的文件大小从256M扩展为512M。在我们系统里,除了要修改此处,还要修改打包配置文件:lichee3.0/tools/pack/chips/sun4i/configs/crane/gm-g9/sys_config.fex把partition user/data的空间缩小,把system的空间开大(打包系统以后再记录)。
2. 为什么把apk放在目录device/softwinner/crane-gm-g9/pre/下就能把apk预置到系统呢?
首先看一下device/softwinner/crane-gm-g9/下面的几个mk文件:
AndroidBoard.mk
只定义了LOCAL_PATH, 为当前目录 device/softwinner/crane-gm-g9
crane-gm-g9.mk
定义宏PRODUCT_COPY_FILES, 加上了很多idc, rle, fstab,xml,init.rc等文件,也包含了当前目录下的所有apk;
-> 调用 find-copy-subdir-files(), 生成copy file的语义,而查看build/core/product_config.mk, 宏的定义如下:
find $(2) -name "$(1)" | $(SED_EXTENDED) "s:($(2)/?(.*)):\\1\\:$(3)/\\2:" | sed "s://:/:g"
举个例子,例如:
PRODUCT_COPY_FILES += $(call find-copy-subdir-files, *.apk, *(LOCAL_PATH)/pre, system/preinstall)
如果device/softwinner/crane-gm-g9/pre下有a.apk,b.apk,那么上述调用等价于:
PRODUCT_COPY_FILES += device/softwinner/crane-gm-g9/a.apk:system/preinstall/a.apk \
device/softwinner/crane-gm-g9/b.apk:system/preinstall/b.apk
所以,PRODUCT_COPY_FILES是定义了所有需要copy到生成系统时需要copy的文件。把预置的apk放在device/softwinner/crane-gm-g9/pre/,相当于把apk放在生成系统的system/preinstall下。
定义宏PRODUCT_PROPERTY_OVERRIDES, 定义了语言,区域等persist的内容
BoardConfig.mk
硬件和kernel相关的宏,例如CMDLINE,SYSTEMIMAGE_PARTITION_SIZE, sensor, wifi, gps, kernel base等设置
AndroidProducts.mk
定义宏 PRODUCT_MAKEFILES为crane_gm_g9.mk
3.BOARD_SYSTEMIMAGE_PARTITION_SIZE在哪里起作用呢?
在 build/core/Makefile里有下面一段:
ifeq ($(INTERNAL_USERIMAGES_USE_EXT),true)
## generate an ext image
# $(1): output file
define build-systemimage-target
@echo "Target system fs image: $(1)"
$(call build-userimage-ext-target,$(TARGET_OUT),$(1),system,$(INTERNAL_USERIMAGES_EXT_VARIANT),$(BOARD_SYSTEMIMAGE_PARTITION_SIZE))
endef
else # INTERNAL_USERIMAGES_USE_EXT != true
## generate a yaffs2 image
# $(1): output file
define build-systemimage-target
@echo "Target system fs image: $(1)"
@mkdir -p $(dir $(1))
$(hide) $(MKYAFFS2) -f $(mkyaffs2_extra_flags) $(TARGET_OUT) $(1)
endef
endif # INTERNAL_USERIMAGES_USE_EXT
$(BUILT_SYSTEMIMAGE): $(FULL_SYSTEMIMAGE_DEPS) $(INSTALLED_FILES_FILE)
$(call build-systemimage-target,$@)
INSTALLED_SYSTEMIMAGE := $(PRODUCT_OUT)/system.img
SYSTEMIMAGE_SOURCE_DIR := $(TARGET_OUT)
由上面代码可知,当需要生成ext格式的img时,会读入这个宏变量来生成system.img,否则生成yaffs2文件。
关于BOARD_SYSTEMIMAGE_PARTITION_SIZE【转】的更多相关文章
- Android 某些配置记录
1, system image 大小配置: devices/intel/baytrail/ffrd8/BoardConfig.mk : BOARD_SYSTEMIMAGE_PARTITION_SIZ ...
- I.MX6 Android 5.1 快速合成系统
/**************************************************************************** * I.MX6 Android 5.1 快速 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)
通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是Android系统的启动 ...
- Android常用的一些make命令(转载)--不错
原文网址:http://blog.sina.com.cn/s/blog_abc7e49a01011y0n.html 1.make -jXX XX表示数字,这个命令将编译Android系统并生成镜像, ...
- Android/Linux boot time优化
基于analyze_boot.py分析Android/Linux的kernel boot时间 1.修改HiKey的BoardConfig.mk文件,使能initcall_debug,增加dmesg b ...
- 编译recovery及过程中的部分错误解决
你必须使用32位或64位Ubuntu系统,关于如何建立编译环境和同步源码的指导,请自己查找有关指导的文章. 1, 安装所需要的包 2, 建立编译的环境,并同步CWM所需的源码,CyanogenMod源 ...
- 【转】高通平台android 环境配置编译及开发经验总结
原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...
- Android/Linux boot time分析优化
如果需要优化boot time,就需要一个量化的工具来分析每个阶段的时间消耗.这种类型的优化特别适合使用基于timeline的图表,有着明显的时间顺序.要求不但能给出整个流程消耗的时间,还要能对流程进 ...
- Android系统的镜像文件的打包过程
在前面一篇文章中,我们分析了Android模块的编译过程.当Android系统的所有模块都编译好之后,我们就可以对编译出来的模块文件进行打包了.打包结果是获得一系列的镜像文件,例如system.img ...
随机推荐
- SQLSetConnectAttr
SQLSetConnectAttr 函数定义: 用法类似于SQLSetEnvAttr,该函数是设置连接的各项属性用的 SQLRETURN SQLSetConnectAttr( SQLHDBC ...
- Java集合-----Set详解
Set是没有重复元素的集合,是无序的 1.HashSet HashSet它是线程不安全的 HashSet常用方法: add(E element) 将指定的元素添加到此集合(如果尚未存 ...
- Java基础语法(三)
七.方法 定义: 方法就是完成特定功能的代码块 在很多语言里面都有函数的定义 函数在Java中被称为方法 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 函数体; ...
- npm 代理的设置和取消
管理员权限下的控制台输入: 设置代理 npm config set proxy=http://127.0.0.1:8080 npm config set registry=http://registr ...
- Linux基础命令---显示域名ypdomainname
ypdomainname ypdomainname指令显示由函数“getdomainname”返回的主机域名,使用这个指令也可以设置一个主机NIS/YP域名. 此命令的适用范围:RedHat.RH ...
- VPS采用的几种常见技术(OVZ、Xen、KVM)介绍与对比
很多人看到同样配置的VPS价格相差很大,甚是不理解,其实VPS使用的虚拟技术种类有很多,如OpenVZ.Xen.KVM.Xen和HVM与PV. 在+XEN中pv是半虚拟化,hvm是全虚拟化,pv只能用 ...
- bzoj4445 小凸想跑步
题目链接 半平面交,注意直线方向!!! 对于凸包上任意一条边$LINE(p_i,p_{i+1})$都有$S_{\Delta{p_i} {p_{i + 1}}p} < S_{\Delta{p_0} ...
- python--表达式(运算表达式)
运算表达式 python 的表达式包括:算术运算符,赋值运算符,比较运算符,成员运算符 算术运算符 运算符 描述 + 加 - 两个对象相加 - 减 - 得到负数或是一个数减去另一个数 * 乘 - 两个 ...
- SQL语句执行性能
通过设置STATISTICS我们可以查看执行SQL时的系统情况.选项有PROFILE,IO ,TIME.介绍如下: SET STATISTICS PROFILE ON:显示分析.编译和执行查询所需的时 ...
- How to install john deere service advisor 4.2.005 on win 10 64bit
How to install john deere service advisor 4.2.005 with the February 2016 data base disks on a machin ...