[Android] [恢复]自动挂载系统分区

电脑杂谈  发布时间:2020-05-20 09:30:27  来源:网络整理

手机没有root sd卡不能分区挂载_recovery挂载分区_怎么使用recovery给手机挂载分好的分区

在上一篇文章中,Recovery打开了adb shell,并提到系统目录用于挂载系统/系统分区,因此它是一个空目录. 通过打开adb shell之后查看文件目录可以知道这一点.

因为原始缓存目录也为空,但是通过外壳程序,您可以看到/ cache目录中的文件与Android系统一致,这意味着该目录已安装. 因此,推测该系统也应该用于安装.

怎么使用recovery给手机挂载分好的分区_recovery挂载分区_手机没有root sd卡不能分区挂载

关于安装/系统,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;

手机没有root sd卡不能分区挂载_怎么使用recovery给手机挂载分好的分区_recovery挂载分区

但是,要实现引导安装,我们将查看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}

怎么使用recovery给手机挂载分好的分区_recovery挂载分区_手机没有root sd卡不能分区挂载

首先,我将访问init.recovery的内容. $ {ro.hardware} .rc,此文件不存在怎么使用recovery给手机挂载分好的分区,因此随后的过程不执行装入操作.

作为比较,请看一下Android系统的init文件

recovery挂载分区_手机没有root sd卡不能分区挂载_怎么使用recovery给手机挂载分好的分区

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

我们的系统在此表中. 因此,要挂载系统,只需添加Recovery init.rc:

wait /dev/block/bootdevice/by-name/system
mount ext4 /dev/block/bootdevice/by-name/system /system wait rw barrier=1

还要注意,挂载点(未经特别验证)应为空目录怎么使用recovery给手机挂载分好的分区,因此,如果在Recovery中打开外壳,则应将其删除.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-216377-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 刘雪祯
        刘雪祯

        不管击沉撞沉拦截还是其他方法一定要强硬

      热点图片
      拼命载入中...