问题

最近在给 android 系统的 data 分区制作 ext4 镜像,但是发现系统启动后,文件的 user 和 group 都变成了 root,不是原有的属性。困扰了很久。

解决

make_ext4fs 有一个选项是 ‘-a’ ,即挂载点。这个选项是配合android/system/core/include/private/android_filesystem_config.h 用的,根据挂载点修改镜像中文件和目录的权限,比如:

static struct fs_path_config android_dirs[] = {    { 00770, AID_SYSTEM, AID_CACHE,  "cache" },    { 00771, AID_SYSTEM, AID_SYSTEM, "data/app" },    { 00771, AID_SYSTEM, AID_SYSTEM, "data/app-private" },    { 00771, AID_SYSTEM, AID_SYSTEM, "data/dalvik-cache" },    { 00771, AID_SYSTEM, AID_SYSTEM, "data/data" },    { 00771, AID_SHELL,  AID_SHELL,  "data/local/tmp" },    { 00771, AID_SHELL,  AID_SHELL,  "data/local" },    { 01771, AID_SYSTEM, AID_MISC,   "data/misc" },    { 00770, AID_DHCP,   AID_DHCP,   "data/misc/dhcp" },    { 00775, AID_MEDIA_RW, AID_MEDIA_RW, "data/media" },    { 00775, AID_MEDIA_RW, AID_MEDIA_RW, "data/media/Music" },    { 00771, AID_SYSTEM, AID_SYSTEM, "data" },    { 00750, AID_ROOT,   AID_SHELL,  "sbin" },    { 00755, AID_ROOT,   AID_SHELL,  "system/bin" },    { 00755, AID_ROOT,   AID_SHELL,  "system/vendor" },    { 00755, AID_ROOT,   AID_SHELL,  "system/xbin" },    { 00755, AID_ROOT,   AID_ROOT,   "system/etc/ppp" },    { 00777, AID_ROOT,   AID_ROOT,   "sdcard" },    { 00755, AID_ROOT,   AID_ROOT,   0 },};

那么,解决方法就有了:去掉 ‘-a’ 选项。

修改文件:android/build/core/Makefile

define build-userdataimage-target    $(call pretty,"Target userdata fs image: $(INSTALLED_USERDATAIMAGE_TARGET)")    @mkdir -p $(TARGET_OUT_DATA)    $(call build-userimage-ext-target,$(TARGET_OUT_DATA),$(INSTALLED_USERDATAIMAGE_TARGET),data,$(INTERNAL_USERIMAGES_EXT_VARIANT),$(BOARD_USERDATAIMAGE_PARTITION_SIZE))    $(hide) $(call assert-max-image-size,$(INSTALLED_USERDATAIMAGE_TARGET),$(BOARD_USERDATAIMAGE_PARTITION_SIZE),yaffs)endef

改为:

define build-userdataimage-target    $(call pretty,"Target userdata fs image: $(INSTALLED_USERDATAIMAGE_TARGET)")    @mkdir -p $(TARGET_OUT_DATA)    make_ext4fs -s -l $(BOARD_USERDATAIMAGE_PARTITION_SIZE) $(INSTALLED_USERDATAIMAGE_TARGET) $(TARGET_OUT_DATA)    $(hide) $(call assert-max-image-size,$(INSTALLED_USERDATAIMAGE_TARGET),$(BOARD_USERDATAIMAGE_PARTITION_SIZE),yaffs)endef

更多相关文章

  1. 利用 Android(安卓)Systrace 做performance 分析
  2. 从android studio安装配置,到写出第一个小程序
  3. android九种对话框
  4. Android中cannot be resolved or is not a field错误的解决办法
  5. android isDirectory()及listFiles()
  6. Android开发之PreferenceActivity的使用
  7. 制作android ramdisk.img镜像
  8. FileProvider 调用系统相机拍照 出现on a null object reference
  9. Android(安卓)log analysis

随机推荐

  1. Android系统自带样式(android:theme)
  2. 2019-05-23
  3. Android系统自带样式(android:theme)
  4. Android: 向最强看齐, 反编译 愤怒的小鸟
  5. android android:layout_weight (比重)
  6. android Theme使用总结
  7. Android(安卓)textview 跑马灯 要加的属
  8. Android:相对位置排版
  9. android系统自带样式Android:theme
  10. Android(安卓)SDK Android(安卓)NDK Andr