From 8b7af4c0ee245c913ae00dbf052c85156fb1b68e Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Fri, 1 Jun 2018 11:58:54 +0900 Subject: Recovery image is self-contained Now recovery mode is self-contained, which means we don't need to mount system.img to run shell, etc. What is needed in recovery mode is all in the recovery ramdisk image. Since we no longer use /system as the mount point for the system.img, this allows us to have identical filesystem layout as the system.img. Executables and libs are installed to /system/bin and /system/lib. Right now, we only have adbd, sh, toybox in /system/bin but will move static executables from /sbin to /system/bin as soon as they are converted to dynamic executables. system.img is mounted to /mnt/system instead. Bug: 63673171 Test: `adb reboot recovery; adb devices` shows the device ID Test: `adb root && adb shell` and then $ lsof -p `pidof adbd` shows that libm.so, libc.so, etc. are loaded from the /lib directory. Change-Id: I801ebd18f3e0a112db3d9a11e4fbb4e49181652a --- fsck_unshare_blocks.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'fsck_unshare_blocks.cpp') diff --git a/fsck_unshare_blocks.cpp b/fsck_unshare_blocks.cpp index a100368e7..2e6b5b807 100644 --- a/fsck_unshare_blocks.cpp +++ b/fsck_unshare_blocks.cpp @@ -115,14 +115,6 @@ static bool run_e2fsck(const std::string& partition) { return true; } -static const char* get_system_root() { - if (android::base::GetBoolProperty("ro.build.system_root_image", false)) { - return "/system_root"; - } else { - return "/system"; - } -} - bool do_fsck_unshare_blocks() { // List of partitions we will try to e2fsck -E unshare_blocks. std::vector partitions = { "/odm", "/oem", "/product", "/vendor" }; @@ -130,10 +122,10 @@ bool do_fsck_unshare_blocks() { // Temporarily mount system so we can copy e2fsck_static. bool mounted = false; if (android::base::GetBoolProperty("ro.build.system_root_image", false)) { - mounted = ensure_path_mounted_at("/", "/system_root") != -1; + mounted = ensure_path_mounted_at("/", "/mnt/system") != -1; partitions.push_back("/"); } else { - mounted = ensure_path_mounted("/system") != -1; + mounted = ensure_path_mounted_at("/system", "/mnt/system") != -1; partitions.push_back("/system"); } if (!mounted) { @@ -144,7 +136,7 @@ bool do_fsck_unshare_blocks() { LOG(ERROR) << "Could not copy e2fsck to /tmp."; return false; } - if (umount(get_system_root()) < 0) { + if (umount("/mnt/system") < 0) { PLOG(ERROR) << "umount failed"; return false; } -- cgit v1.2.3