内容简介:前一篇因为原本关于挂载
前一篇 Recovery打开adb shell
里提到system目录是用来挂载系统 /system
分区的,所以是一个空目录。这一点是通过打开adb shell后,查看文件目录知道的。
因为原本 cache
目录也是空的,但是通过 shell 能看到 /cache
目录里的文件和Android系统是一致的,也就说明,这个目录是挂载进来的。因此推测 system
也应该是用来挂载的。
关于挂载 /system
,在Recovery里有实现代码动态挂载:
// bootable/recovery/recovery.cpp case Device::MOUNT_SYSTEM: char system_root_image[PROPERTY_VALUE_MAX]; property_get("ro.build.system_root_image", system_root_image, ""); // For a system image built with the root directory (i.e. // system_root_image == "true"), we mount it to /system_root, and symlink /system // to /system_root/system to make adb shell work (the symlink is created through // the build system). // Bug: 22855115 if (strcmp(system_root_image, "true") == 0) { if (ensure_path_mounted_at("/", "/system_root") != -1) { ui->Print("Mounted /system.\n"); } } else { if (ensure_path_mounted("/system") != -1) { ui->Print("Mounted /system.\n"); } } break;
但是实现开机挂载,我们就要去看init.rc了。
mvim /bootable/recovery/etc/init.rc import /init.recovery.${ro.hardware}.rc on early-init # Set the security context of /postinstall if present. restorecon /postinstall start ueventd start healthd on init export ANDROID_ROOT /system export ANDROID_DATA /data export EXTERNAL_STORAGE /sdcard symlink /system/etc /etc mkdir /sdcard mkdir /udisk mkdir /system mkdir /data mkdir /cache mkdir /sideload mkdir /firmware mount tmpfs tmpfs /tmp chown root shell /tmp chmod 0775 /tmp write /proc/sys/kernel/panic_on_oops 1 write /proc/sys/vm/max_map_count 1000000 on fs mkdir /dev/usb-ffs 0770 shell shell mkdir /dev/usb-ffs/adb 0770 shell shell mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000 write /sys/class/android_usb/android0/enable 0 write /sys/class/android_usb/android0/idVendor 18D1 write /sys/class/android_usb/android0/idProduct D001 write /sys/class/android_usb/android0/f_ffs/aliases adb write /sys/class/android_usb/android0/functions adb write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer} write /sys/class/android_usb/android0/iProduct ${ro.product.model} write /sys/class/android_usb/android0/iSerial ${ro.serialno}
首先会去访问 init.recovery.${ro.hardware}.rc
的内容,这个文件不存在,然后后面的流程也没有做mount操作。
作为对比,看一下Android系统的init文件
mvim /device/qcom/xxxx/imit.target.rc on fs wait /dev/block/bootdevice mount_all fstab.qcom write /proc/sys/vm/swappiness 100
好了,Android系统启动的时候做了一个mount_all操作。来看一下fstab.qcom文件
# Android fstab file. # The filesystem that contains the filesystem checker binary (typically /system) cannot # specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK #TODO: Add 'check' as fs_mgr_flags with data partition. # Currently we dont have e2fsck compiled. So fs check would failed. #<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags> /dev/block/bootdevice/by-name/system /system ext4 ro,barrier=1,discard wait, verify /dev/block/bootdevice/by-name/userdata /data ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,forceencrypt=footer /devices/soc/7864900.sdhci/mmc_host* /storage/sdcard1 vfat nosuid,nodev wait,voldmanaged=sdcard1:auto,noemulatedsd,encryptable=footer /devices/soc/78db000.usb/msm_hsusb_host* /storage/usbotg vfat nosuid,nodev wait,voldmanaged=usbotg:auto /dev/block/bootdevice/by-name/config /frp emmc defaults defaults /dev/block/bootdevice/by-name/misc /misc emmc defaults defaults
我们的system就在这个表里。所以要挂载 system
,只需要在Recovery的init.rc添加:
wait /dev/block/bootdevice/by-name/system mount ext4 /dev/block/bootdevice/by-name/system /system wait rw barrier=1
然后还要注意,挂载点应该(没专门验证)是空目录,所以如果在Recovery开启了shell,要把它删掉。
以上所述就是小编给大家介绍的《[Recovery]自动挂载system分区》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- linux批量新增自动分区挂载大于2T磁盘脚本
- Centos服务器如何分区挂载第二块磁盘详细图解教程
- [CentOS] 使用s3fs-fuse挂载S3Bucket到本地分区
- 文件系统挂载
- vue 源码学习 - 实例挂载
- linux 磁盘管理与文件挂载
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learning Vue.js 2
Olga Filipova / Packt Publishing / 2017-1-5 / USD 41.99
About This Book Learn how to propagate DOM changes across the website without writing extensive jQuery callbacks code.Learn how to achieve reactivity and easily compose views with Vue.js and unders......一起来看看 《Learning Vue.js 2》 这本书的介绍吧!