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平台添加新分区相关推荐

  1. Android11.0(R) MTK平台添加新分区

    mtk 平台增加一个新分区test,修改文件列表如下 modified: device/mediatek/mt6765/init.mt6765.rcmodified: device/mediatek/ ...

  2. Android 1.5 -10.0 都有哪些新特性?

    点击上方"开发者技术前线",选择"星标" 13:21 在看 真爱 本文部分整理 公众号 终端研发部 作者:嘟嘟呢 https://blog.csdn.net/u ...

  3. Android 1.5到10.0 都有哪些新特性?

    文章转自:https://www.itcodemonkey.com/article/13183.html Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘:使用widgets实现桌面个 ...

  4. Android 十年总结:1.5 到 10.0 都有哪些新特性?面试常问题

    文热导读|   点击标题阅读 知识星球第三期开园了- 转自:嘟嘟呢 Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘:使用widgets实现桌面个性化:在线文件夹(Live Folde ...

  5. Ubuntu下添加新分区并设置挂载点

    Ubuntu下添加新分区并设置挂载点 最近在做Android项目,可是解压根文件系统以后,就报警说硬盘不够.当初设置使用的大小为15G.不过扩展分区还是很方便的.当然首先你得设置添加使用的硬盘大小,这 ...

  6. oracle无法分区,oracle已存在的表添加新分区的方法

    现在有一张表如下: create table WRITE_USER ( area_code              VARCHAR2(8), user_no                VARCH ...

  7. Android P 9.0 MTK平台 增加以太网静态IP功能

    前言 朋友们,最近又开始搞 Android P了,同样的以太网静态 IP 是少不了的功能,今天我们就开始来整一下.之前弄6.0 和 8.1 的都 ok 了. 没想到 9.0 改动还是略微有点大的.来来 ...

  8. MTK平台添加虚拟sensor

    一.添加一个新的sensor类型 HUB部分 1./vendor/mediatek/proprietary/tinysys/freertos/source/middleware/contexthub/ ...

  9. CentOS7下搭建CloudStack4.10.0云平台

    一篇学习性质的文章,关于CloudStack怎么实现这些功能一概不了解.只是跟着他人博客学着搭建一下.如有侵权,立删. 建议(使用4.11.0 更好,4.10.0 添加主机经常失败,不知是不是个人问题 ...

最新文章

  1. PhpMyAdmin的简单安装和一个mysql到Redis迁移的简单例子
  2. Hibernate:映射文件元素属性说明
  3. 《Windows核心编程》学习笔记(10)– 同步设备I/O与异步设备I/O
  4. 万字长文深入理解java中的集合-附PDF下载
  5. Java Spring log源代码学习
  6. 文本挖掘之 文本相似度判定
  7. php nb2br,PHP中基本符号及使用方法
  8. TensorFlow 笔记 (五)自定义训练: 演示
  9. D16 Group Decimort 2 Mac - 经典复古采样器
  10. [ios] - TommyBros(山寨马里奥) – 开源游戏
  11. 6.1.6 日志压缩
  12. matlab dll 通达信,通达信DLL插件实战篇,怎样制作我们想要的函数
  13. css —— 写炫酷动画
  14. 请教淘宝API sign签名问题,望高人指点!谢谢!
  15. 线性代数【10】 相似矩阵
  16. Java gateway process exited before sending its port number
  17. 4.12作业--CSS
  18. docker 磁盘满了问题排查
  19. 如何用AI做一个好看的图案
  20. 【深度学习】深度学习基础-Warm_up训练策略

热门文章

  1. 疫情过后,雨过天晴(复工指南)
  2. Professor Excel Tools Premium(excel插件工具箱)官方正式版V3.1 | Excel教授是excel最牛插件之一
  3. Java实现将多张图片保存至PDF
  4. 计算机应用研究》专业刊物论文,《计算机应用研究》CSCD核心期刊 2017年03期目录...
  5. dwf怎么合成一个_文章详细信息
  6. 米币中心服务器出错,体验MIUI:小米桌面(内有福利)
  7. hduoj 2034
  8. 阿里云OSS服务使用操作流程
  9. 如何做好企业文化建设?企业文化建设的一般原则和6个阶段
  10. 0035-量化第六天:QMT—板块收益排序后选取收益最高成分股