AndroidQ(10.0) MTK平台添加新分区
65 平台增加一个新分区,用于保存特殊数据,修改文件列表如下
modified: build/make/core/Makefilemodified: build/make/core/config.mkmodified: build/make/core/envsetup.mkmodified: build/make/core/main.mkmodified: build/make/tools/releasetools/build_image.pymodified: device/mediatek/build/build/tools/ptgen/MT6765/partition_table_MT6765_emmc.csvmodified: device/mediatek/build/build/tools/ptgen/MT6765/ptgen.plmodified: device/mediatek/sepolicy/bsp/non_plat/device.temodified: device/mediatek/sepolicy/bsp/non_plat/file.temodified: device/mediatek/sepolicy/bsp/non_plat/file_contextsmodified: device/mediatek/sepolicy/bsp/non_plat/fsck.temodified: device/mediatek/sepolicy/bsp/non_plat/init.temodified: device/mediatek/sepolicy/bsp/non_plat/system_app.temodified: device/mediateksample/k62v1_64_bsp/BoardConfig.mkmodified: device/mediateksample/k62v1_64_bsp/init.project.rcmodified: system/core/rootdir/Android.mkmodified: system/sepolicy/prebuilts/api/29.0/public/app.temodified: system/sepolicy/prebuilts/api/29.0/public/domain.temodified: system/sepolicy/public/app.temodified: system/sepolicy/public/domain.temodified: vendor/mediatek/proprietary/hardware/fstab/mt6765/fstab.in.mt6765
1、分区表中添加分区参数(配置分区文件格式、大小、对应img名称等)
配置表格式后缀为.csv,通过在 device 目录下搜索,找到目标平台文件夹下的配置表
device/mediatek/build/build/tools/ptgen/MT6765/partition_table_MT6765_emmc.csv
2、增加 klogo.img 对应编译代码
build/make/core/Makefile
$(if $(BOARD_KLOGOIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "klogo_fs_type=$(BOARD_KLOGOIMAGE_FILE_SYSTEM_TYPE)" >> $(1))
$(if $(BOARD_KLOGOIMAGE_PARTITION_SIZE),$(hide) echo "klogo_size=$(BOARD_KLOGOIMAGE_PARTITION_SIZE)" >> $(1))
$(if $(INTERNAL_USERIMAGES_EXT_VARIANT),$(hide) echo "fs_type=$(INTERNAL_USERIMAGES_EXT_VARIANT)" >> $(1))
编译规则
# -----------------------------------------------------------------
# klogo partition image
# ifdef BUILDING_KLOGO_IMAGE
ifdef BOARD_KLOGOIMAGE_FILE_SYSTEM_TYPE
INTERNAL_KLOGOIMAGE_FILES := \$(filter $(TARGET_OUT_KLOGO)/%,$(ALL_DEFAULT_INSTALLED_MODULES))klogoimage_intermediates := \$(call intermediates-dir-for,PACKAGING,klogo)
BUILT_KLOGOIMAGE_TARGET := $(PRODUCT_OUT)/klogo.imgdefine build-klogoimage-target$(call pretty,"Target klogo fs image: $(INSTALLED_KLOGOIMAGE_TARGET)")@mkdir -p $(TARGET_OUT_KLOGO)@mkdir -p $(klogoimage_intermediates) && rm -rf $(klogoimage_intermediates)/klogo_image_info.txt$(call generate-image-prop-dictionary, $(klogoimage_intermediates)/klogo_image_info.txt,cache,skip_fsck=true)$(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH \build/make/tools/releasetools/build_image.py \$(TARGET_OUT_KLOGO) $(klogoimage_intermediates)/klogo_image_info.txt $(INSTALLED_KLOGOIMAGE_TARGET) $(TARGET_OUT)$(hide) $(call assert-max-image-size,$(INSTALLED_KLOGOIMAGE_TARGET),$(BOARD_KLOGOIMAGE_PARTITION_SIZE))
endef# We just build this directly to the install location.
INSTALLED_KLOGOIMAGE_TARGET := $(BUILT_KLOGOIMAGE_TARGET)
$(INSTALLED_KLOGOIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_KLOGOIMAGE_FILES) $(BUILD_IMAGE_SRCS)$(build-klogoimage-target).PHONY: klogoimage-nodeps
klogoimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS)$(build-klogoimage-target)else # BOARD_KLOGOIMAGE_FILE_SYSTEM_TYPE
# we need to ignore the broken klogo link when doing the rsync
IGNORE_KLOGO_LINK := --exclude=klogo
endif # BOARD_KLOGOIMAGE_FILE_SYSTEM_TYPE# -----------------------------------------------------------------# -----------------------------------------------------------------
# odm partition image
ifdef BUILDING_ODM_IMAGE
$(BUILT_TARGET_FILES_PACKAGE): \$(INSTALLED_RAMDISK_TARGET) \$(INSTALLED_BOOTIMAGE_TARGET) \$(MTK_BOOTIMAGE_TARGET) \$(INSTALLED_RADIOIMAGE_TARGET) \$(INSTALLED_RECOVERYIMAGE_TARGET) \$(FULL_SYSTEMIMAGE_DEPS) \$(INSTALLED_USERDATAIMAGE_TARGET) \$(INSTALLED_CACHEIMAGE_TARGET) \$(INSTALLED_VENDORIMAGE_TARGET) \$(INSTALLED_PRODUCTIMAGE_TARGET) \$(INSTALLED_PRODUCT_SERVICESIMAGE_TARGET) \$(INSTALLED_VBMETAIMAGE_TARGET) \$(INSTALLED_KLOGOIMAGE_TARGET) \$(INSTALLED_ODMIMAGE_TARGET) \
build/make/core/config.mk
dont_bother_goals := out \snod systemimage-nodeps \stnod systemtarball-nodeps \userdataimage-nodeps userdatatarball-nodeps \cacheimage-nodeps \klogoimage-nodeps \bptimage-nodeps \
build/make/core/envsetup.mk
TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache
TARGET_OUT_KLOGO := $(PRODUCT_OUT)/klogo
.KATI_READONLY := TARGET_OUT_CACHE
build/make/core/main.mk
.PHONY: cacheimage
cacheimage: $(INSTALLED_CACHEIMAGE_TARGET).PHONY: klogoimage
klogoimage: $(INSTALLED_KLOGOIMAGE_TARGET)# Build files and then package it into the rom formats
.PHONY: droidcore
droidcore: $(filter $(HOST_OUT_ROOT)/%,$(modules_to_install)) \$(INSTALLED_SYSTEMIMAGE_TARGET) \$(INSTALLED_RAMDISK_TARGET) \$(MTK_BOOTIMAGE_TARGET) \$(INSTALLED_DEBUG_RAMDISK_TARGET) \$(INSTALLED_DEBUG_BOOTIMAGE_TARGET) \$(INSTALLED_RECOVERYIMAGE_TARGET) \$(INSTALLED_VBMETAIMAGE_TARGET) \$(INSTALLED_USERDATAIMAGE_TARGET) \$(INSTALLED_CACHEIMAGE_TARGET) \$(INSTALLED_KLOGOIMAGE_TARGET) \$(INSTALLED_BPTIMAGE_TARGET) \$(INSTALLED_VENDORIMAGE_TARGET) \$(INSTALLED_ODMIMAGE_TARGET) \
build/make/tools/releasetools/build_image.py
elif mount_point == "cache":copy_prop("cache_fs_type", "fs_type")copy_prop("cache_size", "partition_size")elif mount_point == "klogo":copy_prop("klogo_fs_type", "fs_type")copy_prop("klogo_size", "partition_size")...elif image_filename == "cache.img":mount_point = "cache"elif image_filename == "klogo.img":mount_point = "klogo"
device/mediateksample/k62v1_64_bsp/BoardConfig.mk
BOARD_KLOGOIMAGE_FILE_SYSTEM_TYPE := ext4
system/core/rootdir/Android.mk
ifdef BOARD_CACHEIMAGE_FILE_SYSTEM_TYPELOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/cache
elseLOCAL_POST_INSTALL_CMD += ; ln -sf /data/cache $(TARGET_ROOT_OUT)/cache
endif
ifdef BOARD_KLOGOIMAGE_FILE_SYSTEM_TYPELOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/klogo
endif
3、修改 fstab 文件添加分区的挂载和系统启动时挂载权限
device/mediateksample/k62v1_64_bsp/init.project.rc
on post-fs-data#/dev/ttyMT2 for Connectivity BT/FM/GPS usagechmod 777 /dev/ttyS0chmod 777 /dev/ttyS1chown system system /dev/ttyS0chown system system /dev/ttyS1chown system system /klogochmod 0771 /klogo
vendor/mediatek/proprietary/hardware/fstab/mt6765/fstab.in.mt6765
DEVPATH(nvdata) /mnt/vendor/nvdata ext4 FS_FLAG_DISCARD FSMGR_FLAG_FMT
DEVPATH(nvcfg) /mnt/vendor/nvcfg ext4 FS_FLAG_COMMIT FSMGR_FLAG_FMTDEVPATH(klogo) /klogo ext4 FS_FLAG_DISCARD FSMGR_FLAG_FMT
注意此处的类型设置为 FS_FLAG_DISCARD, 若为 FS_FLAG_COMMIT 卡在 logo 界面无法进入系统
抓取串口 log 如下
[ 30.764913] <1>.(1)[365:init]init 14: [libfs_mgr]__mount(source=/dev/block/platform/bootdevice/by-name/klogo,target=/klogo,type=ext4)=-1: Invalid argument
[ 30.767684] <3>.(3)[101:kworker/u16:1][name:pmic_auxadc&][name:pmic_auxadc&][CH3_DBG] bat_cur = -2018
[ 30.767717] <3>.(1)[365:init]init 14: [libfs_mgr]Running /system/bin/e2fsck on /dev/block/mmcblk0p34
[ 30.771264] <3>-(3)[101:kworker/u16:1]mt635x_auxadc_read_raw: 3 callbacks suppressed
[ 30.771278] <3>.(3)[101:kworker/u16:1]mt635x-auxadc mt-pmic:mt635x-auxadc: name:BAT_TEMP, channel=3, adc_out=0xffe, adc_result=1799
[ 30.774087] <3>.(3)[101:kworker/u16:1][name:mtk_battery&][name:mtk_battery&][force_get_tbat] ntc_disable_nafg -40 25
[ 30.832233] <3>.(3)[101:kworker/u16:1][name:lockdep&]lockdep: [name:lockdep&][00000000e4bcd0cb] (&chrdet_lock) held by pmic_thread/106/[2] on CPU#5/IRQ[on] from [18.439032]
[ 30.980652] <1>.(1)[365:init]EXT4-fs (mmcblk0p34): can't mount with commit=1, fs mounted w/o journal
[ 30.982259] <1>.(1)[365:init]init 14: [libfs_mgr]__mount(source=/dev/block/platform/bootdevice/by-name/klogo,target=/klogo,type=ext4)=-1: Invalid argument
[ 30.986183] <1>.(1)[365:init]init 14: [libfs_mgr]Failed to mount an un-encryptable or wiped partition on /dev/block/platform/bootdevice/by-name/klogo at /klogo options: noauto_da_alloc,commit=1,nodelalloc: Invalid argument
[ 31.025039] <0>.(0)[103:kworker/u16:2]mt635x-auxadc mt-pmic:mt635x-auxadc: name:VPROC_TEMP, channel=4, adc_out=0x60f, adc_result=681
[ 31.028433] <2>.(2)[101:kworker/u16:1]mt635x-auxadc mt-pmic:mt635x-auxadc: name:VCORE_TEMP, channel=4, adc_out=0x611, adc_result=682
4、添加挂载分区的selinux权限,否则系统启动无法挂载
device/mediatek/sepolicy/bsp/non_plat/device.te
# add for klogo
type klogo_device, dev_type;
type klogo_block_device, dev_type;
device/mediatek/sepolicy/bsp/non_plat/file.te
# add for klogo
type klogo_file, file_type, data_file_type;
device/mediatek/sepolicy/bsp/non_plat/file_contexts
/dev/block/platform/bootdevice/by-name/sdrpmb u:object_r:tkcore_block_device:s0/(vendor|system\/vendor)/bin/hw/android\.hardware\.keymaster@4\.0-service.trustkernel u:object_r:hal_keymaster_default_exec:s0+# add for klogo
/dev/block/platform/bootdevice/by-name/klogo u:object_r:klogo_block_device:s0
/klogo(/.*)? u:object_r:klogo_file:s0
device/mediatek/sepolicy/bsp/non_plat/fsck.te
# add for klogo
allow fsck klogo_block_device:blk_file rw_file_perms;
device/mediatek/sepolicy/bsp/non_plat/init.te
# add for klogo
allow init klogo_block_device:blk_file relabelto;
allow init klogo_file:dir mounton;
device/mediatek/sepolicy/bsp/non_plat/system_app.te
# add for klogo
allow system_app klogo_file:file { getattr unlink open read write create };
allow system_app klogo_file:dir rw_dir_perms;
5、烧写工具加载指定 img 文件路径
device/mediatek/build/build/tools/ptgen/MT6765/ptgen.pl
#download files%download_files = (preloader => "preloader_$ArgList{PRELOADER_PROJECT}.bin",srampreld => "sram_preloader_$ArgList{BASE_PROJECT}.bin",mempreld => "mem_preloader_$ArgList{BASE_PROJECT}.bin",lk => "lk.bin",boot => "boot.img",recovery => "recovery$recovery_download_file_suffix.img",logo => "logo.bin",vendor => "vendor.img",system => "system.img",cache => "cache.img",klogo => "klogo.img",userdata => "userdata.img",custom => "custom.img");
6、selinux 修改后编译检测报错修改
system/sepolicy/public/app.te
system/sepolicy/prebuilts/api/29.0/public/app.te
# Block device access.
+#neverallow appdomain dev_type:blk_file { read write };
android9.0 MTK平台添加分区表
MT8127_Android_scatter.txt 文件添加backup分区
AndroidQ(10.0) MTK平台添加新分区相关推荐
- Android11.0(R) MTK平台添加新分区
mtk 平台增加一个新分区test,修改文件列表如下 modified: device/mediatek/mt6765/init.mt6765.rcmodified: device/mediatek/ ...
- Android 1.5 -10.0 都有哪些新特性?
点击上方"开发者技术前线",选择"星标" 13:21 在看 真爱 本文部分整理 公众号 终端研发部 作者:嘟嘟呢 https://blog.csdn.net/u ...
- Android 1.5到10.0 都有哪些新特性?
文章转自:https://www.itcodemonkey.com/article/13183.html Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘:使用widgets实现桌面个 ...
- Android 十年总结:1.5 到 10.0 都有哪些新特性?面试常问题
文热导读| 点击标题阅读 知识星球第三期开园了- 转自:嘟嘟呢 Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘:使用widgets实现桌面个性化:在线文件夹(Live Folde ...
- Ubuntu下添加新分区并设置挂载点
Ubuntu下添加新分区并设置挂载点 最近在做Android项目,可是解压根文件系统以后,就报警说硬盘不够.当初设置使用的大小为15G.不过扩展分区还是很方便的.当然首先你得设置添加使用的硬盘大小,这 ...
- oracle无法分区,oracle已存在的表添加新分区的方法
现在有一张表如下: create table WRITE_USER ( area_code VARCHAR2(8), user_no VARCH ...
- Android P 9.0 MTK平台 增加以太网静态IP功能
前言 朋友们,最近又开始搞 Android P了,同样的以太网静态 IP 是少不了的功能,今天我们就开始来整一下.之前弄6.0 和 8.1 的都 ok 了. 没想到 9.0 改动还是略微有点大的.来来 ...
- MTK平台添加虚拟sensor
一.添加一个新的sensor类型 HUB部分 1./vendor/mediatek/proprietary/tinysys/freertos/source/middleware/contexthub/ ...
- CentOS7下搭建CloudStack4.10.0云平台
一篇学习性质的文章,关于CloudStack怎么实现这些功能一概不了解.只是跟着他人博客学着搭建一下.如有侵权,立删. 建议(使用4.11.0 更好,4.10.0 添加主机经常失败,不知是不是个人问题 ...
最新文章
- PhpMyAdmin的简单安装和一个mysql到Redis迁移的简单例子
- Hibernate:映射文件元素属性说明
- 《Windows核心编程》学习笔记(10)– 同步设备I/O与异步设备I/O
- 万字长文深入理解java中的集合-附PDF下载
- Java Spring log源代码学习
- 文本挖掘之 文本相似度判定
- php nb2br,PHP中基本符号及使用方法
- TensorFlow 笔记 (五)自定义训练: 演示
- D16 Group Decimort 2 Mac - 经典复古采样器
- [ios] - TommyBros(山寨马里奥) – 开源游戏
- 6.1.6 日志压缩
- matlab dll 通达信,通达信DLL插件实战篇,怎样制作我们想要的函数
- css —— 写炫酷动画
- 请教淘宝API sign签名问题,望高人指点!谢谢!
- 线性代数【10】 相似矩阵
- Java gateway process exited before sending its port number
- 4.12作业--CSS
- docker 磁盘满了问题排查
- 如何用AI做一个好看的图案
- 【深度学习】深度学习基础-Warm_up训练策略
热门文章
- 疫情过后,雨过天晴(复工指南)
- Professor Excel Tools Premium(excel插件工具箱)官方正式版V3.1 | Excel教授是excel最牛插件之一
- Java实现将多张图片保存至PDF
- 计算机应用研究》专业刊物论文,《计算机应用研究》CSCD核心期刊 2017年03期目录...
- dwf怎么合成一个_文章详细信息
- 米币中心服务器出错,体验MIUI:小米桌面(内有福利)
- hduoj 2034
- 阿里云OSS服务使用操作流程
- 如何做好企业文化建设?企业文化建设的一般原则和6个阶段
- 0035-量化第六天:QMT—板块收益排序后选取收益最高成分股