做网站教学书,我们常见的网站有哪些方面,网站搜索框,wordpress百度云伪静态系列文章转如下链接#xff1a;
Android Display Graphics系列文章-汇总
Android实战经验篇-系列文章汇总
本文主要包括部分#xff1a; 一、Android分区说明
1.1 系统分区查看
1.2 分区表修改
1.3 验证新分区
二、源码修改
2.1 generate_extra_images
2.2 fstab
2…系列文章转如下链接
Android Display Graphics系列文章-汇总
Android实战经验篇-系列文章汇总
本文主要包括部分 一、Android分区说明
1.1 系统分区查看
1.2 分区表修改
1.3 验证新分区
二、源码修改
2.1 generate_extra_images
2.2 fstab
2.3 file_contexts等 Android 系统上添加新的可挂载分区包括如何修改分区表和 Android 源码及如何验证新分区。本操作经验在Android13、Android14上已验证。 一、Android分区说明
1.1 系统分区查看
从设备端看一般用df -h 可以查看各分区的情况 使用mount查看各分区的挂载情况。
例如以下是基线代码原始分区情况
lahaina:/ # df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 3.5G 1.7M 3.5G 1% /dev
tmpfs 3.5G 0 3.5G 0% /mnt
/dev/block/sda9 11M 196K 11M 2% /metadata
/dev/block/dm-2 0.9G 998M 3.0M 100% /
/dev/block/dm-5 3.1G 309M 2.8G 10% /mnt/scratch
overlay 3.1G 309M 2.8G 10% /system
overlay 3.1G 309M 2.8G 10% /system_ext
overlay 3.1G 309M 2.8G 10% /product
overlay 3.1G 309M 2.8G 10% /vendor
overlay 3.1G 309M 2.8G 10% /odm
tmpfs 3.5G 12K 3.5G 1% /apex
tmpfs 3.5G 488K 3.5G 1% /linkerconfig
/dev/block/sdf8 27M 1.7M 25M 7% /mnt/vendor/persist
/dev/block/sdg1 220M 163M 57M 75% /vendor/firmware_mnt
/dev/block/sdg5 59M 31M 28M 52% /vendor/dsp
/dev/block/sdf9 64M 2.6M 61M 5% /vendor/bt_firmware
/dev/block/sdg17 30M 0 30M 0% /mnt/vendor/qmcs
/dev/block/dm-6 101G 7.6G 94G 8% /data
tmpfs 3.5G 0 3.5G 0% /data_mirror
/dev/fuse 101G 7.6G 94G 8% /mnt/user/0/emulated
1.2 分区表修改
Qcom的分区表一般位于解包工具的common/config/目录下例如partition_ext_ddm.xml 位于对应版本的工具包的common/config/ufs 路径下。 如果新增一个4194304KB(4096MB)的new分区需要在partition_ext_ddm.xml中修改如下。Xml中分区表的配置
!-- This is LUN 0 - HLOS LUN --
physical_partitionpartition labelmisc size_in_kb1024 type82ACC91F-357C-4A68-9C8F-689E1B1A23A1 bootablefalse readonlyfalse filename /partition labelnew size_in_kb4194304 type88036CD5-03D5-42BB-8ED1-37E5A88BAA45 bootablefalse readonlyfalse filenamenew.img /partition labelmetadata size_in_kb16384 type 988A98C9-2910-4123-AAEC-1CF6B1BC28F9 bootablefalse readonlyfalse filenamemetadata.img sparsetrue/partition labelvbmeta_system_a size_in_kb64 type1344859D-3A6A-4C14-A316-9E696B3A5400 bootablefalse readonlytrue filenamevbmeta_system.img/partition labelvbmeta_system_b size_in_kb64 typeFE3AB853-5B66-4D4A-BF85-8D90AF1C2C4A bootablefalse readonlytrue filenamevbmeta_system.img/partition labelteedata size_in_kb16384 type4A5DE742-745E-4FDD-BFD8-B6A7AC638772 bootablefalse readonlyfalse filename /partition labelsuper size_in_kb3276800 type89A12DE1-5E41-4CB3-8B4C-B1441EB5DA38 bootablefalse readonlyfalse filenamesuper.img sparsetrue/
/physical_partition
分区表参数描述 参数 描述 label 标签表示分区名称。 size_in_kb 分区大小单位KB。 type 分区类型。每个分区对应的值不同用户设置时可自行修改修改时长 度与其他分区保持一致且有别于其他分区 type 值即可。 bootable 分区是否可启动。建议将其设置为 false。 false不可启动 true可启动 readonly 分区的可读写性取值如下 false可读写分区 true只读分区 filename 镜像文件。用于设置在使用 QFIL 工具下载时是否需要下载该镜像文件。 若不需要下载设置为空即可。 sparse 打包过程中是否拆分分区镜像。 true拆分 false不拆分
说明这里把new分区添加到了misc 和metadata之间在super之前可以避免后续因为super变动影响到这个分区。
1.3 验证新分区
在 Windows 下执行如下 ADB 命令验证分区是否添加成功
adb shell
su
ls -al dev/block/by-name/ | grep new
若出现如下图所示 new 分区表示分区添加成功
lahaina:/ # ls -al dev/block/by-name/ | grep new
lrwxrwxrwx 1 root root 15 1970-01-03 07:22 new - /dev/block/sda9
执行如下命令验证已添加分区是否正常挂载
adb shell
su
mount | grep new
若命令 mount 后显示有内容则表示分区挂载成功。从该命令行回显的内容中可以看到新分区 new 挂载在/mnt/vendor/new 目录下
lahaina:/ # mount | grep new
/dev/block/sda9 on /mnt/vendor/new type ext4 (rw,seclabel,nosuid,nodev,noatime)
执行如下命令检查新分区是否具有所需操作权限
adb shell //执行 adb 命令进入设备
su //获取 su 权限
cd mnt/vendor/new //进入挂载路径
touch new.txt //创建 new 文件表示具有创建文件的权限
mkdir new //创建 new 文件夹表示具有创建文件夹的权限
ls -al //查看 new 文件和 new 文件夹是否创建成功
rm -rf * //删除此目录下的所有内容表示具有删除权限
ls -al //查看是否删除成功
二、源码修改
2.1 generate_extra_images
修改target_ap/device/qcom/common/generate_extra_images.mk文件在编译时生成new.img b/UM.9.14/device/qcom/common/generate_extra_images.mk-99,6 99,36 metadataimage: $(INSTALLED_METADATAIMAGE_TARGET)endififneq ($(strip $(BOARD_NEWIMAGE_PARTITION_SIZE)),)TARGET_OUT_NEW : $(PRODUCT_OUT)/newINSTALLED_NEWIMAGE_TARGET : $(PRODUCT_OUT)/new.imgdefine build-newimage-target$(call pretty,Target new fs image: $(INSTALLED_NEWIMAGE_TARGET))mkdir -p $(TARGET_OUT_NEW)$(hide)PATH$(HOST_OUT_EXECUTABLES):$${PATH} $(MKEXTUSERIMG) $(TARGET_OUT_NEW) $ ext4 new $(BOARD_NEWIMAGE_PARTITION_SIZE)$(hide) chmod ar $$(hide) $(call assert-max-image-size,$(INSTALLED_NEWIMAGE_TARGET),$(BOARD_NEWIMAGE_PARTITION_SIZE))
endef
#$(hide) $(call assert-max-image-size,$(INSTALLED_NEWIMAGE_TARGET),$(BOARD_NEWIMAGE_PARTITION_SIZE))
#$(hide)PATH$(HOST_OUT_EXECUTABLES):$${PATH} $(MKEXTUSERIMG) -s $(TARGET_OUT_NEW) $ ext4 new $(BOARD_NEWIMAGE_PARTITION_SIZE)#$(INSTALLED_NEWIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS)
# $(build-newimage-target)
$(INSTALLED_NEWIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS)$(build-newimage-target)ALL_DEFAULT_INSTALLED_MODULES $(INSTALLED_NEWIMAGE_TARGET)
ALL_MODULES.$(LOCAL_MODULE).INSTALLED $(INSTALLED_NEWIMAGE_TARGET)
droidcore: $(INSTALLED_NEWIMAGE_TARGET).PHONY: newimage
newimage: $(INSTALLED_NEWIMAGE_TARGET)endif
2.2 fstab
修改fstab使init在挂载分区时可以挂载new分区并挂载到/mnt/vendor/new路径下。 /dev/block/bootdevice/by-name/persist /mnt/vendor/persist ext4 noatime,nosuid,nodev,barrier1 wait
/dev/block/bootdevice/by-name/new /mnt/vendor/new ext4 noatime,nosuid,nodev,barrier1
2.3 file_contexts等
修改init.rc 使其创建 /mnt/vendor/new/路径并restorecon此路径。 在target_ap/device/qcom/sepolicy_vndr/qva/vendor/lahaina/file_contexts 文件中增加设备的context
注意这里的/dev/block/platform/soc/4744000.sdhci 具体路径要根据自己项目来。
例如 /(vendor|system/vendor)/bin/qwesd u:object_r:vendor_qwesd_exec:s0
/dev/block/platform/soc/4744000.sdhci/by-name/new u:object_r:vendor_persist_block_device:s0
详细patch修改见如下链接
Android Display Graphics系列文章-汇总
Android实战经验篇-系列文章汇总