summaryrefslogtreecommitdiffstats
path: root/roots.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Move install to separate modulexunchang2019-03-291-287/+0
| | | | | | | | Build libinstall as a shared library. Also drop the dependency on the global variables in common.h. Test: unit tests pass, sideload an OTA Change-Id: I30a20047768ce00689fc0e7851c1c5d712a365a0
* Remove the extern declaration of `sehandle` from roots.cpp.Tao Bao2019-03-281-2/+0
| | | | | | | | | It has become obsolete since we replaced the call to make_ext4 with e2fsprogs (commit ded2dac082fd703f1cd7a5c3de59450cd3dc2530, which landed into P). Test: mmma -j bootable/recovery Change-Id: I09141322874213dcb0f1280bba239376e71a4d17
* Add android::fs_mgr namespace for new Fstab codeTom Cherry2019-01-311-4/+5
| | | | | | | | | | | | | | | Also add libfstab dependencies where needed. Previously the `typedef struct FstabEntry Volume;` line served to both define a `struct FstabEntry` as well as alias Volume to it. With the new namespace for android::fs_mgr::FstabEntry, `struct FstabEntry` isn't compatible anymore, so we need to alias Volume to the real android::fs_mgr::FstabEntry. In doing so, we need to include <fstab/fstab.h> and this requires libfstab as a library, which a few modules did not have before. Test: treehugger Change-Id: I655209a0efb304b3e0568db0748bd5cf7cecbdb7
* Use dynamically linked f2fs executables.Tao Bao2018-12-201-19/+13
| | | | | | | | | | It also reduces the space cost for devices using f2fs (e.g. crosshatch). /sbin/mkfs.f2fs 722560 => /system/bin/make_f2fs 49568 /sbin/sload.f2fs 1182456 => /system/bin/sload_f2fs 150032 Test: Build and boot recovery on crosshatch. Factory reset. Test: Install a non-A/B OTA package that formats a f2fs partition. Change-Id: Ibe70c8d91a1d07e1c78ff9eac19b1f7955800161
* Clean up the arg setup for exec(3).Tao Bao2018-12-201-7/+3
| | | | | | Test: Build and boot into recovery on marlin. Factory reset. Test: Build and install a non-A/B OTA that calls format. Change-Id: I72416e775e237fc15ca5eff1036175a9eef43b76
* roots.cpp: convert to C++ FstabYifan Hong2018-12-191-48/+44
| | | | | | | | | Convert code to use C++ Fstab struct and C++ std::strings. Bug: 62292478 Bug: 118634720 Test: boots Change-Id: Ibdc1df5831bc885d7c1574419f41af026e49a137
* Move parts of roots.cpp to libfs_mgrYifan Hong2018-12-191-124/+7
| | | | | | | | | | | Move some mounting functionalities to libfs_mgr. Test: run recovery tests Bug: 118634720 Bug: 113182233 Change-Id: Ie59376664a744992429f0262ec96d13a1aed30f9
* Merge "SYSTEM_ROOT -> get_system_root"Yifan Hong2018-11-301-0/+9
|\
| * SYSTEM_ROOT -> get_system_rootYifan Hong2018-11-281-0/+9
| | | | | | | | | | | | | | | | | | | | | | Add a get_system_root() function in roots.cpp which returns / or /system based on fstab. This factors out the 'if' check from recovery.cpp and fsck_unshare_blocks.cpp. Test: boot recovery, mount system Bug: 118634720 Change-Id: If4947cba3a3f08dbe695fd2b50a9354cd302ee03
* | Update for long long -> off64_t for fstab.lengthTom Cherry2018-11-291-1/+2
| | | | | | | | | | Test: boot Change-Id: I755a5dd48f1d5be2cbd8e494b9c405674b12cebb
* | make_f2fs: use -g android by defaultJaegeuk Kim2018-11-211-6/+1
|/ | | | | | Bug: 119875846 Change-Id: Ibff18ea6f92620852222fff4073379ec8afd0e10 Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
* recovery: Fix mounting /system with dynamic partitions.David Anderson2018-10-301-0/+25
| | | | | | | | | | | | | | | When using dynamic partitions, the blk_device field in fstab_rec must be translated to a /dev/block/dm-N node with fs_mgr_update_logical_partition. However, init will not have created these nodes to begin with since CreateLogicalPartitions is not called in recovery. This patch addresses both issues. Note that flashing system through fastbootd will not work while /system is mounted. Bug: 118634720 Test: manual test Change-Id: I06c83309d09eab6b65245b1ed10c51d05398f23e
* support mounting f2fs in recovery modeLianjun Huang2018-09-031-1/+1
| | | | | Change-Id: Ic03b3e95c4b5cd49b92cb3ec697e327a59421549 Signed-off-by: Lianjun Huang <huanglianjun@vivo.com>
* Merge "e2fsdroid and mke2fs are dynamic executable in recovery partition"Jiyong Park2018-06-211-8/+2
|\ | | | | | | | | | | am: 9b5d4ea20f Change-Id: I017a76c320f29baff3183b0156c1fdf2deed66bf
| * e2fsdroid and mke2fs are dynamic executable in recovery partitionJiyong Park2018-06-201-8/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The two utilities are now converted to dynamic executables as shared libraries are supported in recovery mode. As part of the conversion, their location has moved from /sbin to /system/bin. Reflect the change in the program 'recovery' Bug: 79146551 Test: adb reboot recovery, and select 'Wipe data/factory reset'. The data partition is formatted and there is no selinux denial. Change-Id: Ie7cfc4c50ab1e6767e4a5170533ccf826ec7d7f3
* | Merge "Merge libmounts into libotautil." am: 686353215fandroid-build-prod (mdb)2018-04-281-1/+1
|\| | | | | | | | | | | am: cddf5dbf67 Change-Id: I57bcd1195084d2e60861aa5b410e2eb50c41c3c3
| * Merge libmounts into libotautil.Tao Bao2018-04-281-1/+1
| | | | | | | | | | | | | | | | | | Export its header (mounts.h) from there, and drop the dot dot dependency from libupdater / updater. Test: mmma bootable/recovery Test: recovery_component_test Change-Id: Ic26a6b9b78a34dbe1f178b138f3abaafffbec44c
| * mkfs.f2fs: specify sector size for target image sizeJaegeuk Kim2018-04-041-5/+20
| | | | | | | | | | | | | | | | | | | | The total sectors that we want to format is used in different meanings from various users. This notifies its size based on 4096 bytes explicitly. Bug: 76407663 Change-Id: I3392646648264ad1ca78e4b87240edc9385a0cc4 Reported-by: katao@xiaomi.com Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
* | recovery: enable fsverity feature bitJaegeuk Kim2018-04-061-0/+1
| | | | | | | | | | | | | | Bug: 74604441 Bug 67380979 Change-Id: Iab1cc9aef356f0ddf6e2491578a2bd53009182ce Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
* | mkfs.f2fs: specify sector size for target image sizeJaegeuk Kim2018-04-041-5/+20
|/ | | | | | | | | | | The total sectors that we want to format is used in different meanings from various users. This notifies its size based on 4096 bytes explicitly. Bug: 76407663 Change-Id: I3392646648264ad1ca78e4b87240edc9385a0cc4 Merged-In: I3392646648264ad1ca78e4b87240edc9385a0cc4 Reported-by: katao@xiaomi.com Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
* Replace vfork() with fork().George Burgess IV2018-02-231-1/+1
| | | | | | | | | | | | | | | The static analyzer complained about the function calls we were doing here to vector::data() and vector::operator[]: bootable/recovery/roots.cpp:193:11: warning: This function call is prohibited after a successful vfork Since it's not clear that vfork() is needed here, just use fork() instead. Bug: None Test: Reran the static analyzer with only this patch applied. Bug disappeared Change-Id: I580f8243a21899f1e1678c8aee6948dfa7f69a1d
* add sload.f2fs for recovery formatJaegeuk Kim2017-12-051-6/+13
| | | | | Change-Id: Iddfe54b2b36f2d531925cbe61c98dbfb4903c0d1 Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
* Merge "root: Fix an issue when volume length from fs_mgr is negative."Treehugger Robot2017-11-201-4/+7
|\
| * root: Fix an issue when volume length from fs_mgr is negative.Jin Qian2017-11-191-4/+7
| | | | | | | | | | | | | | | | | | fs_mgr passes negative length as offset for crypt_footer. We need to compute the actual device size for this case in addition to when length is zero. Bug: 68949069 Change-Id: I803955dd9591ad7752cee0dea9b683be8f4fd4ba
* | recovery: format f2fs with encrypt/quotaJaegeuk Kim2017-11-131-1/+3
|/ | | | | Change-Id: Ia393b7b78b45f09964449ec0e255aa26bb3b8ddf Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
* roots: Fix an issue with volume_for_path().Tao Bao2017-10-021-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | The earlier commit in 2dfc1a38982c4052bb32bc7fc06edeadf3908fb9 unintentionally changed the behavior. It gives a different result when looking up non-existent mount points (e.g. /cache on marlin). The logic behind volume_for_path("/xyz") is unclear: - It's fine to return non-null value if it's called by ensure_path_mounted() before accessing that file "/xyz". (Just based on the function name, we're not actually having this case.) - It should return nullptr if the caller is interested in the existence of that particular mount point "/xyz". This CL renames the function to volume_for_mount_point(), which does an exact match by querying the given mount point from libfs_mgr. The former volume_for_path() has been moved down to function scope for serving ensure_path_mounted() only. Test: Build and boot into recovery on bullhead and marlin respectively. 'View recovery logs'. Test: 'Mount /system' Test: 'Apply update from ADB' Change-Id: I1a16390f57540cae08a2b8f3d439d17886975217
* roots: Remove #include "common.h".Tao Bao2017-09-291-2/+2
| | | | | | | | | | And add the missing include of <string.h> (e.g. for strcmp(3)). Minor update to the arg of fs_mgr_get_entry_for_mount_point(), which now accepts std::string. Test: mmma bootable/recovery Change-Id: I9cb8c31fe71b5a053f4d84bf1aba00e96c02ed03
* Merge "Integer overflow observed while formatting volume"Treehugger Robot2017-09-291-5/+12
|\
| * Integer overflow observed while formatting volumeAbhishek Arpure2017-09-121-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | While calculating volume size, get_block_device_size() returns u64 value but the returned value is assigned in ssize_t variable. This may cause integer overflow if the volume size is beyond ssize_t limit. Use int64_t instead of ssize_t in get_file_size() and explicitly check for overflow to fix the issue. Bug: 65001754 Test: mmma bootable/recovery Change-Id: I91eb30bff0bf7dcc48678efc2f414d2b79af6d0d
* | roots: volume_for_path() parses and tries prefixes.Tao Bao2017-09-271-1/+20
|/ | | | | | | | | | | | | | | | Commit cc323958f99e40fea06c511656c69c0b2e2d47f7 in system/core has changed fs_mgr_get_entry_for_mount_point() to do an exact match only, which breaks the behavior in volume_for_path(). This CL changes the volume_for_path() implementation to parse and pass prefixes locally. For a given path like "/cache/recovery/last_log", it will in turn attempt the prefixes of "/cache/recovery/last_log", "/cache/recovery", "/cache", "/" and return the first hit. Bug: 63912287 Test: Build and boot into recovery image on bullhead. 'View recovery logs' works. Change-Id: Ic8635b0939649dd5cc9ca501ebc3a2d1fbf5849d
* roots.cpp: Clean up format_volume().Tao Bao2017-07-261-129/+121
| | | | | | Test: m -j bootable/recovery Test: Wipe data/cache in recovery Change-Id: I11a4bf34015e903992ae2fb100d0b59a9fb75e03
* recovery: handle security footer before passing size to mke2fsJin Qian2017-07-251-11/+28
| | | | | | | | | | mke2fs doesn't take negative size as reserved size. If footer is specified, compute fs size to be (max partition size - reserved footer size) / block_size Bug: 23686092 Bug: 63968011 Change-Id: Iac4e143bd26a70cfc81eb52a399d687e19b1049c
* roots.cpp: Reformatting the file.Tao Bao2017-07-251-101/+93
| | | | | | | | | | Mostly cosmetic changes. Removed the use of errno, and added constness to a few pointers. format_volume() and exec_cmd() will be cleaned up in a separate CL. Test: mmma -j bootable/recovery Change-Id: Ia12ce25a91c0bdd0e319f6da02ce1dc8377f265d
* Remove the obsolete reference to /file_contexts.Tao Bao2017-07-231-3/+1
| | | | | | | | | | | | | | | | This file no longer exists: - /file_contexts has been split into plat_file_contexts and nonplat_file_contexts since commit b236eb6ca204cefcb926e19bd5682f9dcad4021d (system/sepolicy). - It was named /file_contexts.bin prior to the split. '-S file_contexts' is also no longer required by e2fsdroid, since commit 2fff6fb036cbbb6dedd7da3d208b312a9038a5ce (external/e2fsprogs). It will load the file contexts via libselinux. Test: Trigger the path by performing a data wipe for converting to FBE. Change-Id: I179939da409e5c0415ae0ea0bf5ddb23f9e6331e (cherry picked from commit 7af933b6a6fd687bd17710ef6fda0ad5483e4d6d)
* recovery: replace make_ext4 with e2fsprogsJin Qian2017-07-201-6/+56
| | | | | | | | | | Execute mke2fs to create empty ext4 filesystem. Execute e2fsdroid to add files to filesystem. Test: enter recovery mode and wipe data Bug: 35219933 Change-Id: I10a9f4c1f4754ad864b2df45b1f879180ab33876 (cherry picked from commit ac31808cd37cfb98755e5821dbb2efb5fe5cb12a)
* recovery: Skip "/" in setup_install_mounts().Tao Bao2017-05-101-19/+22
| | | | | | | | We don't want to do anything for "/" when preparing for an install. Bug: 36686818 Test: adb sideload on angler/marlin respectively. Change-Id: Id854dd0a743a0e163a8f13baf2514105091ddc67
* recovery: update mkfs.f2fs args to match f2fs-tools 1.8.0Jin Qian2017-05-051-3/+3
| | | | | | | | | | mkfs.f2fs in 1.8.0 returns error if number of sectors is 0. Skip this argument to let mkfs detect device size. 0 sector is also not necessary for 1.4.1. Test: format userdata to f2fs and boot Bug: 37758867 Change-Id: If120988dfb678596c973d183572f870eb0b72a27
* recovery: switch to fs_mgr_read_fstab_default()Bowgo Tsai2017-03-291-2/+2
| | | | | | | | | fs_mgr_read_fstab_default() is now aware of recovery mode so it's ok to switch to this new API. Bug: 35811655 Test: recovery boot sailfish Change-Id: I1025b606fd96e74a893ae99cefc1da01e4b27a23
* recovery: replacing fs_mgr_read_fstab() with new fs_mgr APIsBowgo Tsai2017-03-101-1/+1
| | | | | | | | | | | | | | | | | | | The fstab settings of early-mounted partitions (e.g., /vendor) will be in kernel device tree. Switch to the new API to get the whole settings with those in device tree: fs_mgr_read_fstab_with_dt("/etc/recovery.fstab") The original default /fstab.{ro.hardware} might be moved to /vendor/etc/. or /odm/etc/. Use another new API to get the default fstab instead of using the hard-coded /fstab.{ro.hardware}. This API also includes the settings from device tree: fs_mgr_read_fstab_default() Bug: 35811655 Test: boot sailfish recovery Change-Id: Iaa56ac7f7b4c4dfc7180c65f03e9a37b94f1de09
* Replace _exit(-1) with _exit(EXIT_FAILURE).Tao Bao2017-02-031-1/+1
| | | | | | | | | -1 is not a valid exit status. Also replace a few exit(1) with exit(EXIT_FAILURE). Test: mmma bootable/recovery Change-Id: I4596c8328b770bf95acccc06a4401bd5cabd4bfd
* Use flash erase & logical block size for userdata wipeConnor O'Brien2017-01-251-1/+6
| | | | | | | | | | If flash erase and logical block size are available, then pass them to libext4_utils when rebuilding userdata. Test: Factory reset marlin in recovery, confirmed params passed correctly Bug: 33243520 Change-Id: I6bed976a73e7a64a80eaac50f48fbacb6d812517 Signed-off-by: Connor O'Brien <connoro@google.com>
* Update the header path for ext4_utils.Tao Bao2016-10-091-3/+3
| | | | | Test: `mmma bootable/recovery` Change-Id: I70ccddb3ddf46bb012fdc5f632afc46ebdd5473e
* Switch recovery to libbase loggingTianjie Xu2016-09-011-26/+31
| | | | | | | | Clean up the recovery image and switch to libbase logging. Bug: 28191554 Change-Id: Icd999c3cc832f0639f204b5c36cea8afe303ad35 Merged-In: Icd999c3cc832f0639f204b5c36cea8afe303ad35
* Merge "Format formattable partitions if mount fails"Johan Harvyl2016-08-151-1/+14
|\ | | | | | | | | | | am: cb76857147 Change-Id: I50c2045f56693e445922d30af72867e7ac55b61f
| * Format formattable partitions if mount failsJohan Harvyl2016-08-121-1/+14
| | | | | | | | | | | | | | If mount fails and the partition has the formattable flag set in fstab it is formatted and another attempt at the mount is made. Change-Id: I44edafac7d7ff663489072c66b7e210466316b14
* | resolve merge conflicts of 179c0d8 to stage-aosp-masterElliott Hughes2016-06-161-54/+13
|\| | | | | | | Change-Id: Iba5aec266444cabf83f600f2bdb45a3c027e5995
| * Remove obsolete MTD support.Elliott Hughes2016-06-101-54/+13
| | | | | | | | | | Bug: http://b/29250988 Change-Id: Ia97ba9082a165c37f74d6e1c3f71a367adc59945
* | Create convert_fbe breadcrumb file to support conversion to FBEPaul Lawrence2015-11-131-2/+6
|/ | | | Change-Id: I38b29e1e34ea793e4b87cd27a1d39fa905fddf7a
* recovery: Allow "Mount /system" for system_root_image.Tao Bao2015-07-311-8/+18
| | | | | | | | | | | When system images contain the root directory, there is no entry of "/system" in the fstab. Change it to look for "/" instead if ro.build.system_root_image is true. We actually mount the partition to /system_root instead, and create a symlink to /system_root/system for /system. This allows "adb shell" to work properly. Bug: 22855115 Change-Id: Ibac493a5a9320c98ee3b60bd2cc635b925f5454a
* recovery: Switch applypatch/ and updater/ to cpp.Tao Bao2015-07-141-2/+0
| | | | | | Mostly trivial changes to make cpp compiler happy. Change-Id: I69bd1d96fcccf506007f6144faf37e11cfba1270
* Allow mounting squashfs partitionsMohamad Ayyash2015-07-071-0/+1
| | | | | | | Change-Id: Ifb8f84063a406db7aad3f9ef12c349ea09a54e07 Signed-off-by: Mohamad Ayyash <mkayyash@google.com> (cherry picked from commit 0ddfa329acb1e6464fe5d66b58257013abf21116)
* Merge "always use volume mount option when mounting a partition"Tao Bao2015-04-011-1/+1
|\
| * always use volume mount option when mounting a partitionGaelle Nassiet2015-03-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From ROS, if enable adb using the vol.up and vol.down buttons, the /system partition is mounted by the function ensure_path_mounted() but with hardcoded mount options. As a consequence, the blocks are modified and the reboot in MOS is blocked by the dm_verity feature that detects a corruption. This patch forces the function ensure_path_mounted() to use the mount options from the volume structure, that were previously read from the fstab. Change-Id: I748d32c14cb821f4aae5bcc430089dab45375515 Signed-off-by: Gaelle Nassiet <gaellex.nassiet@intel.com> Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
* | Revert "Erase PST partition if its marked to be erased."Andres Morales2015-03-311-37/+0
|/ | | | | | | | | | | This now gets done at the framework level. Doing it here breaks the signature on the partition. This reverts commit ee19387905650cab5da7dd97ada5502cd17ac93d. Bug: 19967123 Change-Id: I2a977cb0f0ba94defa1bf9091219398ddc1d3528 (cherry picked from commit 037444642bc32d8fed3bb996823b6a62faa57195)
* Merge "Erase PST partition if its marked to be erased." into lmp-devAndres Morales2014-08-051-0/+37
|\
| * Erase PST partition if its marked to be erased.Andres Morales2014-08-061-0/+37
| | | | | | | | | | | | | | | | | | | | | | We need to wipe the challenges on this partition if OEM unlock is enabled, as this is a signal that the user has opted out of factory reset protection. go/factory-reset Bug: 16633064 Change-Id: Icb8f1433bf99ca57813f5b72d5a3dd15fa94a263
* | Fix length printing + formatsJP Abgrall2014-08-051-3/+3
|/ | | | | | | | | Fix wrong argument order. Fix for 32 vs 64 bit. (reported by htc) Change-Id: Ie37a280bed2848199bcc075500e1326e371cd326
* Support F2FS for the data partitionJP Abgrall2014-06-171-13/+49
| | | | | | | | | | | | This adds F2FS support - for wiping a device - for the install "format" command. Note: crypto data in "footer" with a default/negative length is not supported, unlike with "ext4". Change-Id: I8d141a0d4d14df9fe84d3b131484e9696fcd8870 Signed-off-by: JP Abgrall <jpa@google.com>
* am ecf1f6c9: am 558f2700: Merge "Change filesystem add entry API call."Sasha Levitskiy2014-04-121-1/+1
|\ | | | | | | | | * commit 'ecf1f6c9299c0cae2f2bf1647f5d7d3a2690f819': Change filesystem add entry API call.
| * Change filesystem add entry API call.Sasha Levitskiy2014-04-111-1/+1
| | | | | | | | | | | | Needs fs_mgr matching change from: Icf23e659265d71d5226d527c2b40cfbc132320ee Change-Id: I9adb470b04e4301989d128c9c3097b21b4dea431 Signed-off-by: Sasha Levitskiy <sanek@google.com>
* | do verification and extraction on memory, not filesDoug Zongker2014-01-161-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes minzip and recovery's file signature verification to work on memory regions, rather than files. For packages which are regular files, install.cpp now mmap()s them into memory and then passes the mapped memory to the verifier and to the minzip library. Support for files which are raw block maps (which will be used when we have packages written to encrypted data partitions) is present but largely untested so far. Bug: 12188746 Change-Id: I12cc3e809834745a489dd9d4ceb558cbccdc3f71
* | recovery: wipe encryption metadata along with data partitionDoug Zongker2013-12-131-1/+26
|/ | | | | | | | | This assumes that the metadata is correctly defined in fstab. Which apparently some devices don't do. Bug: 8766487 Bug: 12112624 Change-Id: I1b14b9d4c888e9348527984be3dce04bdd9f4de0
* recovery: install packages in a known mount environmentDoug Zongker2013-08-211-0/+19
| | | | | | | | | | | When installing a package, we should have /tmp and /cache mounted and nothing else. Ensure this is true by explicitly mounting them and unmounting everything else as the first step of every install. Also fix an error in the progress bar that crops up when you do multiple package installs in one instance of recovery. Change-Id: I4837ed707cb419ddd3d9f6188b6355ba1bcfe2b2
* Move to using the new unified fstab in recovery.Ken Sumrall2013-02-201-110/+30
| | | | | | | Instead of reading it's own fstab, have recovery invoke fs_mgr to read the unified fstab. Change-Id: I80c75d2c53b809ac60a4a69f0ef7ebfa707c39e9
* resolved conflicts for merge of 0b1fee1b to masterKenny Root2012-03-311-1/+3
| | | | Change-Id: I2e8298ff5988a96754f56f80a5186c9605ad9928
* turn recovery into a C++ binaryDoug Zongker2011-10-311-0/+282
Change-Id: I423a23581048d451d53eef46e5f5eac485b77555