QCOM 平台增加分区流程 及 注意事项

本文以qcom msm8909 为例增加carrier分区,留文以备后忘:


1、修改分区表partition.xml


diff --git a/non_hlos/common/config/emmc/partition.xml b/non_hlos/common/config/emmc/partition.xml
index 74ca036..11f38bc 100755
--- a/non_hlos/common/config/emmc/partition.xml
+++ b/non_hlos/common/config/emmc/partition.xml
@@ -36,7 +36,9 @@
     <partition label="boot" size_in_kb="32768" type="20117F86-E985-4357-B9EE-374BC1D8487D" bootable="false" readonly="true" filename="boot.img"/>    
-    <partition label="system" size_in_kb="819200" type="97D7B011-54DA-4835-B3C4-917AD6E73D74" bootable="false" readonly="true" filename="system.img" sparse="true"/>
+    <partition label="system" size_in_kb="716800" type="97D7B011-54DA-4835-B3C4-917AD6E73D74" bootable="false" readonly="true" filename="system.img" sparse="true"/>
+    <partition label="carrier" size_in_kb="40960" type="044f61e9-5826-4d9a-838a-dba8407859b8" bootable="false" readonly="false" filename=""/>
     <partition label="persist" size_in_kb="32768" type="6C95E238-E343-4BA8-B489-8681ED22AD0B" bootable="false" readonly="true" filename="persist.img" sparse="true"/>
    
注: 如上的添加方式后续导致 wifi 无法开启的问题,后续通过如下修改解决,即将新增的分区(readonly="false")远离 system(readonly="true")分区,原因待查。

2、修改 fstab ,添加新分区


注意:
    1)、针对 normal boot 和 recovery 两种情况,使用了不同的 fstab 文件,需要同步修改
    2)、当 fstab.qcom 中添加的新分区是空白可写分区时,需要同步添加 formattable 标签,无此标签可能会导致手机无法启动

diff --git a/qcom/x400/default/fstab_AB_dynamic_partition.qti b/qcom/x400/default/fstab_AB_dynamic_partition.qti
index 1c2d443..1d51c8e 100644
--- a/qcom/x400/default/fstab_AB_dynamic_partition.qti
+++ b/qcom/x400/default/fstab_AB_dynamic_partition.qti
@@ -44,6 +44,7 @@ product                                                 /product
 # Add fs_mgr flag - sysfs_path=/sys/devices/platform/soc/xxxx.[ufshc|sdhci] to userdata entry, based on UFS|eMMC device.
 /dev/block/bootdevice/by-name/userdata                  /data                  f2fs    noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,inlinecrypt  latemount,wait,check,formattable,quota,reservedsize=128M,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized+wrappedkey_v0,metadata_encryption=aes-256-xts:wrappedkey_v0,keydirectory=/metadata/vold/metadata_encryption,checkpoint=fs
 /dev/block/bootdevice/by-name/persist                   /mnt/vendor/persist    ext4    noatime,nosuid,nodev,barrier=1                       wait
+/dev/block/bootdevice/by-name/carrier                   /mnt/carrier           ext4    noatime,nosuid,nodev,barrier=1                       wait,check,formattable
 /dev/block/bootdevice/by-name/misc                      /misc                  emmc    defaults                                             defaults
 /devices/platform/soc/4784000.sdhci/mmc_host*           /storage/sdcard1       vfat    nosuid,nodev                                         wait,voldmanaged=sdcard1:auto,encryptable=footer
 /devices/platform/soc/1da4000.ufshc_card/host*          /storage/sdcard1       vfat    nosuid,nodev                                         wait,voldmanaged=sdcard1:auto,encryptable=footer
diff --git a/qcom/x400/emmc/fstab_AB_dynamic_partition.qti b/qcom/x400/emmc/fstab_AB_dynamic_partition.qti
index d5683f6..bfe6a66 100644
--- a/qcom/x400/emmc/fstab_AB_dynamic_partition.qti
+++ b/qcom/x400/emmc/fstab_AB_dynamic_partition.qti
@@ -44,6 +44,7 @@ product                                                 /product
 # Add fs_mgr flag - sysfs_path=/sys/devices/platform/soc/xxxx.[ufshc|sdhci] to userdata entry, based on UFS|eMMC device.
 /dev/block/bootdevice/by-name/userdata                  /data                  f2fs    noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier,inlinecrypt  latemount,wait,check,formattable,quota,reservedsize=128M,fileencryption=aes-256-xts:aes-256-cts:v2+emmc_optimized+wrappedkey_v0,metadata_encryption=aes-256-xts:wrappedkey_v0,keydirectory=/metadata/vold/metadata_encryption,checkpoint=fs
 /dev/block/bootdevice/by-name/persist                   /mnt/vendor/persist    ext4    noatime,nosuid,nodev,barrier=1                       wait
+/dev/block/bootdevice/by-name/carrier                   /mnt/carrier           ext4    noatime,nosuid,nodev,barrier=1                       wait,check,formattable
 /dev/block/bootdevice/by-name/misc                      /misc                  emmc    defaults                                             defaults
 /devices/platform/soc/4784000.sdhci/mmc_host*           /storage/sdcard1       vfat    nosuid,nodev                                         wait,voldmanaged=sdcard1:auto,encryptable=footer
 /devices/platform/soc/1da4000.ufshc_card/host*          /storage/sdcard1       vfat    nosuid,nodev                                         wait,voldmanaged=sdcard1:auto,encryptable=footer
 


diff --git a/fstab.qcom b/fstab.qcom
index 2a063a1..4cd3d70 100755
--- a/fstab.qcom
+++ b/fstab.qcom
@@ -11,3 +11,6 @@
 /dev/block/zram0             none         swap    defaults zramsize=268435456
 /devices/platform/soc/7864900.sdhci/mmc_host*        /storage/sdcard   vfat    nosuid,nodev         wait,voldmanaged=sdcard:auto,encryptable=footer
 /dev/block/bootdevice/by-name/config         /frp  emmc  defaults defaults
+
+/dev/block/bootdevice/by-name/carrier        /carrier     ext4    nosuid,nodev,noatime,barrier=1,noauto_da_alloc,discard      wait,check,formattable
diff --git a/recovery.fstab b/recovery.fstab
index 4368425..55d5155 100644
--- a/recovery.fstab
+++ b/recovery.fstab
@@ -51,3 +51,5 @@
 /dev/block/bootdevice/by-name/sec          /sec            emmc    defaults                                                        defaults
 /dev/block/bootdevice/by-name/devinfo      /devinfo        emmc    defaults                                                        defaults
+/dev/block/bootdevice/by-name/carrier      /carrier        ext4    noatime,nosuid,nodev,barrier=1,data=ordered                     wait,check


3、修改rc权限


在当前项目的 init rc 中添加新增分区挂载目录的用户组修改和读写权限修改语句
注意:这里曾尝试将 mount 语句直接添加在如下 init rc 文件内,而不是添加在上述的 fstab 文件中,但是实测未能成功 mount,原因未知。
diff --git a/init.target.rc b/init.target.rc
index dd71e45..48f7368 100755
--- a/init.target.rc
+++ b/init.target.rc
@@ -58,6 +58,21 @@
     wait /dev/block/bootdevice/by-name/modem
     mount vfat /dev/block/bootdevice/by-name/modem /firmware ro context=u:object_r:firmware_file:s0,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337
 
+    # XXX BEGIN
+    wait /dev/block/bootdevice/by-name/carrier
+    chown system system /carrier
+    chmod 0771 /carrier
+    restorecon_recursive /carrier
+    # XXX END
 
 on post-fs-data
     mkdir /data/tombstones 0771 system system

4、其他分区大小修正     


qc8x09/platform/vendor/qcom/ferrum (path: ./LINUX/android/device/qcom/msm8909/)
由于项目没有多余的空间,需要从其它已有分区中匀出空间来给新分区,这里选则了 system 分区,重定义 system 分区大小如下
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 6fcd82c..070da13 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -114,7 +114,11 @@
 
 BOARD_BOOTIMAGE_PARTITION_SIZE := 0x01000000
 BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x01000000
-BOARD_SYSTEMIMAGE_PARTITION_SIZE := 838860800
+# XXX BEGIN
+# modify by xxx 20200630  
+# shrink system from 800M to 700M for new added partitions carrier(40M)
+BOARD_SYSTEMIMAGE_PARTITION_SIZE := 734003200
+# XXX END
 BOARD_USERDATAIMAGE_PARTITION_SIZE := 1038090240
 BOARD_USBIMAGE_PARTITION_SIZE := 1020000000
 BOARD_CACHEIMAGE_PARTITION_SIZE := 268435456
 


5、增加selinux权限 


qc8x09/device/qcom/sepolicy (path: ./LINUX/android/device/qcom/sepolicy/)
为新分区添加必要的 selinux 规则语句
diff --git a/Android.mk b/Android.mk
index f7836f6..7a1e140 100644
--- a/Android.mk
+++ b/Android.mk
@@ -5,5 +5,6 @@
        device/qcom/sepolicy \
        device/qcom/sepolicy/common \
        device/qcom/sepolicy/test \
-       device/qcom/sepolicy/$(TARGET_BOARD_PLATFORM)
+       device/qcom/sepolicy/$(TARGET_BOARD_PLATFORM) \
+       device/qcom/sepolicy/$(TARGET_PRODUCT)
 endif

diff --git a/x400/file_contexts b/x400/file_contexts
new file mode 100644
index 0000000..04ca251
--- /dev/null
+++ b/x400/file_contexts
@@ -0,0 +1,6 @@
+##################################
+# Primary storage device nodes
+
+/carrier(/.*)?                                                      u:object_r:persist_file:s0

附录:
qcom 建议步骤:how to add a new partition?

这个是高通 case 中给出的新增分区步骤
If customer want to create a new partition for their own use, here are some steps can be followed.
1.add a new line in partition.xml, you can following the above item of partition.
2.replace the GUID for your partition, you can generate a unique GUID from www.guidgen.com website.
3.set the correct partition size and name.
4.set the correct property of this partition for "bootable" and "readonly" items.
Here is an example of oem partition:
<partition label="oem" size_in_kb="4096" type="A695B44A-F1D3-4558-8D37-65CFC0596ABD" bootable="false" readonly="true" filename=""/>
5.
6.run the python script to generate the GPT header file and rawprogram*.xml for download.
# python ../common/build/build.py
7.
kba-200507195814_2_how_to_add_one_new_partition_in_dynamic_partition_for_android_q..pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

家用洗地机十大品牌什么牌子好用?2024十大爆款洗地机分享

在快节奏的生活中&#xff0c;清洁家居成为了一项繁琐却必不可少的任务。而洗地机的出现&#xff0c;无疑给忙碌的都市人带来了福音。选择一款优质的洗地机可以大大提升我们清洁的效率&#xff0c;改善我们的生活品质。那么&#xff0c;哪家洗地机清洁力最强&#xff0c;更适合…

ONLYOFFICE 桌面编辑器 8.1 版发布:全面提升文档处理效率的新体验

文章目录 什么是ONLYOFFICE &#xff1f;ONLYOFFICE 桌面编辑器 8.1 发布&#xff1a;新功能和改进功能强大的 PDF 编辑器幻灯片版式功能从右至左语言支持多媒体功能增强无缝切换工作模式其他改进和优化总结 什么是ONLYOFFICE &#xff1f; https://www.onlyoffice.com/zh/off…

JavaScript的学习之图片的切换

目录 一、寻找素材 二、编写简单的静态html页面 代码示例 效果展示 三、JS功能的实现 JS代码 完整代码 效果展示 一、寻找素材 随便去网上找几张图片素材 二、编写简单的静态html页面 代码示例 <!doctype html> <html><head><meta charset"…

svn明明都在环境变量中添加了,但还是无法在cmd中生效

svn明明都在环境变量中添加了&#xff0c;但还是无法在cmd中生效 cmd显示原因问题解决 cmd显示 svn不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件 原因 安装svn一直点下一步下一步…&#xff0c;没有勾选command line client。 问题解决 1.按下winx&…

Linux CMakeLists编写之静态库

目录 1 概述2 文件命名3 实例4 代码分析 1 概述 编译工具有很多(make/cmake/BJam)。cmake是跨平台&#xff0c;使用cmake编译需要编写CMakeLists.txt。本文编写CMakeLists.txt来生成C静态库。 2 文件命名 文件命名为CMakeLists.txt,是一个文本文件,可以使用任何编辑器编辑。 …

如何加密电脑文件?电脑重要文件怎么加密?

在电脑中&#xff0c;我们会存储很多重要文件&#xff0c;包括个人隐私视频、照片&#xff0c;企业机密数据&#xff0c;工作数据等。为了避免重要文件泄露&#xff0c;我们需要加密保护电脑文件。下面我们就来了解一下电脑文件怎么加密&#xff1f; 超级加密3000 当需要加密电…

[其他]MBTI各个字母分表代表什么

一、什么是MBTI&#xff1f; MBTI&#xff08;Myers-Briggs Type Indicator&#xff09;&#xff0c;一种迫选型、自我报告式的性格评估测试&#xff0c;用以衡量和描述人们在获取信息、作出决策、对待生活等方面的心理活动规律和性格类型。 二、MBTI各字母含义 MBTI倾向显示…

赶紧收藏!2024 年最常见的操作系统面试题(六)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见的操作系统面试题&#xff08;五&#xff09;-CSDN博客 十一、什么是I/O操作&#xff1f;请解释缓冲I/O和直接I/O的区别。 I/O操作&#xff0c;即输入/输出操作&#xff0c;是计算机科学中指数据在计算机系统内部和外…

Python语法基础三

12.range()函数 python 的 range() 函数可用来创建一个整数列表&#xff0c;一般用在 for 循环中. **range()语法&#xff1a;**range(start, stop[, step])**start&#xff1a;**计数从start开始,默认是从0开始(闭区间),如:range(5)等价于range(0,5).**stop&#xff1a;**计…

vue 实现 word/excel/ppt/pdf 等文件格式预览操作

效果图&#xff1a; 问题描述&#xff1a;一般情况下使用iframe标签就可以实现文件预览&#xff0c;但是这个标签只针对于ppt和pdf是有效的。对于doc文件就需要借助第三方插件&#xff08;vue-office/docx&#xff09;来实现预览了。下面介绍使用方法。 安装插件&#xff1a;n…

Lua C API

Lua 5.4 Reference Manual - contents官方网站

力扣爆刷第155天之TOP100五连刷41-45(下一个排列、正序数组中位数、归并排序链表)

力扣爆刷第155天之TOP100五连刷41-45&#xff08;下一个排列、正序数组中位数、归并排序链表&#xff09; 文章目录 力扣爆刷第155天之TOP100五连刷41-45&#xff08;下一个排列、正序数组中位数、归并排序链表&#xff09;一、31. 下一个排列二、4. 寻找两个正序数组的中位数三…

量化交易策略:定义及其重要性

量化交易是华尔街和硅谷的秘密结合点&#xff0c;在这里数学和算法与金钱和市场相遇。虽然它曾经是金融巨头的专属领域&#xff0c;但现在它比以往任何时候都更易于接触。 但不要被愚弄&#xff0c;量化交易仍然是一种高速、高压的游戏&#xff0c;在毫秒间可以赚到或失去财富…

FlashST 短期交通预测领域的插件式创新

FlashST: A Simple and Universal Prompt-Tuning Framework for Traffic Prediction&#xff1a;一篇在短期交通预测领域的插件式创新&#xff0c;主要解决不同数据集和任务下的分布漂移问题。 方法&#xff1a;采用二阶段训练的方法&#xff0c;一阶段在PEMS03478数据集上进行…

STM32CubeIDE复制工程文档

目录 1. 粘贴复制2. 重命名 1. 粘贴复制 复制粘贴 重命名&#xff0c;别重名&#xff0c;点击- copy 结果 2. 重命名 重命名 ioc文件 编译 OK

IDEA 安装与激活详细教程最新(附最新激活码)2099年亲测有效!

我们先从 IDEA 官网下载 IDEA 2024.1 版本的安装包&#xff0c;下载链接如下&#xff1a; https://www.jetbrains.com/idea/download/ 点击下载(下载Ultimate版)&#xff0c;静心等待其下载完毕即可。 激活方式&#xff1a; 正版专属激活码领取

教程:Spring Boot中如何集成GraphQL

教程&#xff1a;Spring Boot中如何集成GraphQL 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 引言 随着现代应用程序的复杂性增加&#xff0c;API的设计和…

基本的网络设备:集线器、中继器、网桥、交换机、路由器、防火墙等

基本的网络设备&#xff1a;集线器、中继器、网桥、交换机、路由器、防火墙等 基本功能、原理、优缺点集线器&#xff08;Hub&#xff09;中继器&#xff08;Repeater&#xff09;网桥&#xff08;Bridge&#xff09;交换机&#xff08;Switch&#xff09;路由器&#xff08;Ro…

手机越用越慢?试试这4个秘籍,让手机流畅如新

智能手机作为日常生活的得力助手&#xff0c;最初总是以惊人的速度和流畅性给我们留下深刻印象。 但你有没有发现&#xff0c;随着时间的推移&#xff0c;手机似乎开始变得不那么敏捷&#xff0c;甚至出现了反应迟缓和卡顿的情况&#xff1f; 别让这个问题困扰你,下面是四个关…

Linux关闭swap分区操作[适用于CDH报警等]

1.查看swap分区挂载路径(没卵用) swapon -s 2.设置配置文件的swap配置 echo “vm.swappiness 0” > /etc/sysctl.conf 3.设置内存中的swap状态。有时候配置文件为0&#xff0c;但集群或服务仍然使用了swap分区&#xff0c;可能原因就是内存没有同步配置 echo “0” > …