Android System分区大小异常
平台:Freescale / Android 4.2.2
问题描述:
用 df 命令,看到/system分区大小275M。
用 busybox fdisk -l /dev/block/mmcblk0p5,看到 536M。
Freescale的刷机工具是Mfgtool,分区的动作在mksdcard-android.sh里面完成。
SYSTEM_ROM_SIZE=512dd if=/dev/zero of=${node} bs=1024 count=1sfdisk --force -uM ${node} << EOF ,${boot_rom_sizeb},83 ,${RECOVERY_ROM_SIZE},83 ,${extend_size},5 ,${data_size},83 ,${SYSTEM_ROM_SIZE},83 ,${CACHE_SIZE},83 ,${VENDER_SIZE},83 ,${MISC_SIZE},83 EOF
注: dd 命令
格式:起始,大小,ID
起始 = 起始柱面(如果不进行指定则为第一可用柱面),大小 = 柱面数量(如果不进行指定则指所有柱面),ID号 = 分区类型(L: Linux, S: Swap, E:扩展分区)
Mfgtool的配置文件是ucl2.xml
其中,刷System.img的命令是:
<CMD state="Updater" type="push" body="pipe dd of=/dev/mmcblk0p5 bs=512" file="files/android/system.img">Sending and writting system.img</CMD>
可以看到,这边使用了 dd 命令,blocksize是512byte,将system.img拷贝到了/dev/mmcblk0p5分区。
但是,dd 命令的会改变分区的大小,改变后的分区大小就是system.img文件的实际大小。
所以,使用 df 命令会看到 275M。
解决方式:
修改 device/fsl/imx6/BoardConfigCommon.mk :
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 524288000
BOARD_SYSTEMIMAGE_PARTITION_SIZE 会在 build/core/Makefile 中使用到:
define build-systemimage-target@echo "Target system fs image: $(1)"@mkdir -p $(dir $(1)) $(systemimage_intermediates) && rm -rf $(systemimage_intermediates)/system_image_info.txt$(call generate-userimage-prop-dictionary, $(systemimage_intermediates)/system_image_info.txt)$(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH \./build/tools/releasetools/build_image.py \$(TARGET_OUT) $(systemimage_intermediates)/system_image_info.txt $(1) endef
generate-userimage-prop-dictionary 方法会对 system_image_info.txt 赋值:
define generate-userimage-prop-dictionary $(if $(INTERNAL_USERIMAGES_EXT_VARIANT),$(hide) echo "fs_type=$(INTERNAL_USERIMAGES_EXT_VARIANT)" >> $(1)) $(if $(BOARD_SYSTEMIMAGE_PARTITION_SIZE),$(hide) echo "system_size=$(BOARD_SYSTEMIMAGE_PARTITION_SIZE)" >> $(1)) $(if $(BOARD_USERDATAIMAGE_PARTITION_SIZE),$(hide) echo "userdata_size=$(BOARD_USERDATAIMAGE_PARTITION_SIZE)" >> $(1)) $(if $(BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "cache_fs_type=$(BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE)" >> $(1)) $(if $(BOARD_CACHEIMAGE_PARTITION_SIZE),$(hide) echo "cache_size=$(BOARD_CACHEIMAGE_PARTITION_SIZE)" >> $(1)) $(if $(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG),$(hide) echo "extfs_sparse_flag=$(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG)" >> $(1)) $(if $(mkyaffs2_extra_flags),$(hide) echo "mkyaffs2_extra_flags=$(mkyaffs2_extra_flags)" >> $(1)) $(if $(TARGET_MKUBIFS_ARGS),$(hide) echo "mkfsubifs_flags=$(TARGET_MKUBIFS_ARGS)" >> $(1)) $(if $(filter true, $(strip $(HAVE_SELINUX))), echo "selinux_fc=$(TARGET_ROOT_OUT)/file_contexts" >> $(1)) endef
关键词汇是:system_size
随后调用了./build/tools/releasetools/build_image.py,传入的参数就是system_image_info.txt:
if mount_point == "system":copy_prop("fs_type", "fs_type")copy_prop("system_size", "partition_size")...... ......if fs_type.startswith("ext"):build_command = ["mkuserimg.sh"]if "extfs_sparse_flag" in prop_dict:build_command.append(prop_dict["extfs_sparse_flag"])run_fsck = Truebuild_command.extend([in_dir, out_file, fs_type,prop_dict["mount_point"]])if "partition_size" in prop_dict:build_command.append(prop_dict["partition_size"])if "selinux_fc" in prop_dict:build_command.append(prop_dict["selinux_fc"]) exit_code = RunCommand(build_command)
转来转去又调用了 mkuserimg.sh,记住 partition_size 是作为第五个参数传进去的:
OUTPUT_FILE=$2 EXT_VARIANT=$3 MOUNT_POINT=$4 SIZE=$5 FC=$6MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE $FCOPT -l $SIZE -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR"
终于看到核心了,使用了make_ext4fs来制作img了。
转载于:https://www.cnblogs.com/all-for-fiona/p/3925091.html
Android System分区大小异常相关推荐
- android system 分区大小,Android System分区大小异常
平台:Freescale / Android 4.2.2 问题描述: 用 df 命令,看到/system分区大小275M. 用 busybox fdisk -l /dev/block/mmcblk0p ...
- android各分区大小,扫盲:安卓系统各大分区介绍1
1. bootloader 当我们拿到一款手机,第一件事应该就是按下 电源键开机,那么从开机到进入到桌面程序这中 间发生了些什么呢, 大 家可以简单的把手机的ROM存储类比为我 们电脑上的硬盘,这个硬 ...
- android 读取各分区大小,Android userData分区大小查看
首先,可以用个命令 cat /proc/partitions 查看分区大小如下所示:(单位KBytes) cat /proc/partitions major minor #blocks name ...
- Android Flash分区大小查看
正常的8G Flash有多少可以用的 这样算吧: 硬盘和U盘厂家的算法:8GB*1000=8000MB*1000=8000000KB*1000=8000000000B 电脑系统的算法:80000000 ...
- Android system 分区讲解
Android软家系统架构图 核心应用层 -------------------------------------- 框架层 JNI层 dalvik虚拟机 本地库 HAL 厂家适配层 ------- ...
- Android未找到分区,Android System分区文件丢失分析
客户节前报告system分区出现文件丢失的情况,看了一些log,有如下几种情况: (1)文件系统的inode变量或数据被修改,如目录长度变量,应该是一个几百的数值,被修改成错误的数据"1&q ...
- android gpt分区大小,[MTK] 如何确认各个分区起始偏移与大小
[MTK] 如何确认各个分区起始偏移与大小 无标签 2020-05-15 阅读:2972 分区表中(partition_table_MTXXXX_emmc.csv)中包含各分区预设大小信息,但是 (1 ...
- Android 修改分区大小
这里以android的cache分区为例. 查看当前使用cache大小: python device/rockchip/common/get_partition_size.py rockdev/Ima ...
- android system image 编译出错,Android framework 编译常见错误
常见错误: 1) 添加系统API或者修改@hide的API后,需要执行 make update-api,然后再make 2) 修改公共api后,需要 make update-api 比较framew ...
最新文章
- 动效设计的物理法则:动画的一切皆在于时间点和空间幅度(转)
- 替代还是扩展:云的下一站真是雾计算?
- 从封装函数到实现简易版自用jQuery (一)
- 2021年春季学期-信号与系统-第八次作业参考答案-第十小题
- js/jq基础(日常整理记录)-3-一个自定义表格
- vue 属性 computed
- C++引用计数(reference counting)技术简介(2)
- loop在python中什么意思_在python中使用loop打开多个文件
- 共享单车需求预测问题:建模篇
- jQuery中的gt和lt
- 小米工作室AIoT开发平台高校创新赛报名启动
- stokes方程matlab,Navier-Stokes matlab 238万源代码下载- www.pudn.com
- win服务器系统下的软路由,如何用Windows 2000 Server充当软路由
- JFreeChart展示柱状图和折线图的组合
- 不能同吃的食物组合(你知道吗?)
- python绘制表格并保存为图片_Python3基于plotly模块保存图片表格
- SQL学习之full outer join关键字
- vue在移动端实现电子签名手写板
- 鸿蒙系统真实评测,华为鸿蒙系统对比安卓系统评测
- C 程序设计语言——第四章练习题
热门文章
- 使用.Net 1.1的项目,TreeView控件不能正常显示
- android 仿qq it蓝豹,《IT蓝豹》listview实现各种版面设计功能
- python自动导出数据脚本_利用python生成一个导出数据库的bat脚本文件的方法
- python适合开发游戏吗_用python能制作游戏吗
- 内卷之下,前端工程师如何自救
- 学习、掌握运营岗位必备的基本能力和思维
- oracle 9i 手工建库,简单记录Oracle 9i数据库手工建库过程
- cstringw转lpctstr_新手必看:CString 和 LPCTSTR等之间的转换大全 | 求索阁
- 怎样打开计算机音频服务器,win10系统音频服务器未运行的修复步骤
- linux多进程 段错误,关于段错误