This patch is to refactor twrpDigest using polymorphism
and inheritance to use the same call patterns for creating and
reading a digest. Now a library.
Use SHA2 from libcrypto. SHA2 is default if device has libcrypto.
Change string MD5 everywhere to use digest or Digest instead. Updated
string tags to digest. Translation will be required.
Switch out digest code into a driver class from partitionmanager.
SHA2 is better for digest creation due to decreased collision space
compared to MD5 and SHA1.
See https://en.wikipedia.org/wiki/SHA-2
Change-Id: I74b5546789990b12aa4ce2e389d25f80a3fe213f
* Relink libf2fs.so in all cases except PLATFORM_SDK_VERSION=23
with no CM_PLATFORM_SDK_VERSION set as 4 or above.
Change-Id: I58bcc7daeb2d67d41b8912cea73690d94f26dd56
These changes are needed by any ROM where devices are configured to
use TOOLBOX/TOYBOX instead of BUSYBOX (i.e., TW_USE_TOOLBOX := true).
Change-Id: I68b88cc9fb857f32864556c4b6c9c8e6ee744051
Note: I will have to add a build flag for excluding the app later for
watches and maybe Android TV. I will also have to add support in the
tablet and watch layouts later. I will merge this for the initial roll out
to select devices and finish up later.
Change-Id: Ia4ce5522fae542afa1539b10c0691315392a19ab
android-6.0 branch of ntfs-3g matches the cm-13.0 version now,
check platform version instead of CM_SDK version.
Change-Id: Ic4aed613084d530c814611678f70d75260b9adc4
Functionality for client side to backup
tar and image streams over adbd to the client under backup.ab.
Using adb backup on the client side you can backup the partitions
TWRP knows about.
On the client side you can do the following:
adb backup -f <filename> --twrp <options> where options are
--compress: compress data
system: backup system
cache: backup cache
data: backup data
boot: backup boot
etc for each partition.
You can string multiple options,
i.e. adb backup -f <filename> --twrp --compress cache system data
adb backup in TWRP will take any option corresponding
to TWRP fstab partitions, e.g. efs boot as well.
If you do not specify the filename with the -f option,
adb will backup your data to a filename backup.ab on the client.
You can then rename the file and encrypt it with desktop tools.
If you don't want to use command line arguments:
adb backup --twrp
will bring up the gui and allow you to choose partitions
from the backup page.
To restore the backup use the following convention:
adb restore <filename>
Structures are used to store metadata in binary inside
of the file itself. If the metadata structure is modified,
update the adb version so that it will invalidate older
backups and not cause issues on restore. When restoring,
we currently do not support picking specific partitions.
It's all or nothing.
Change-Id: Idb92c37fc9801dc8d89ed2a4570e9d12e76facf8
logd, the init.recovery.logd.rc, and other related files were
included by default if your device configs specified
TARGET_USES_LOGD := true which would be the case for any device
that has a full ROM tree instead of a minimal TWRP tree.
Change-Id: Ia1e55703631f0f22beab2f4d4479599b88539e1a
Developers and device maintainers may find it useful to have access
to logcat in recovery. This patch set adds the following build flags:
TARGET_USES_LOGD - This is an Android build flag that enables logd
support. Devices that don't have built in kernel logging to dev/log/*
will need this flag for logcat. We'll also use this to include the
necessary support files for logd in TWRP.
TWRP_INCLUDE_LOGCAT - This enables logcat support in recovery.
I pulled the init entries from my HTC One M8 GPE boot.img,
so I'm not certain whether these will work for all devices
or if they're all necessary.
Feedback is welcome.
PS2: Use "TARGET_USES_LOGD" instead as this flag already exists, and
previous flag was named incorrectly (logd isn't kernel logging)
PS3: Start logd service on load_persist_props action, needed for 6.0+
PS4: More info on "TARGET_USES_LOGD" flag as related to liblog
compilation can be found at the below links:
https://android.googlesource.com/platform/system/core/+/android-6.0.1_r10/liblog/Android.mk#27https://android.googlesource.com/platform/system/core/+/android-6.0.1_r10/liblog/Android.mk#50
Whether or not this flag is needed for logcat in TWRP is dependent
on whether liblog was compiled with this flag.
PS5: Update commit message to better describe "TARGET_USES_LOGD" flag
PS6: Another commit message update
Change-Id: Iaac6c6c822dc93fbe4b6eadcf24eef6995dd6b50
if the image has the right magic bytes to be a sparse image,
use simg2img to flash the image
create a rule to make a fully dynamic simg2img which results in a
much smaller increase in gzip ramdisk size (2KB vs 40KB)
Change-Id: I1b0f6bc127da46103888b1154a9bddd8ac02c01d
Add script to compare string values between 2 language xml files
which will make it easier to identify strings that are missing
between the 2 files.
Move relink-binaries.sh to scripts folder and update it to handle
relinking 64 bit binaries.
Change-Id: Ia7a8bdbeea02256b3b864ab77e15912795275d33
Fix permissions rarely fixed anything on more recent versions of
Android and usually made things worse. Instead we will replace it
with a more dumbed down option that should fix contexts on
/data/media with a few improvements to ensure that contexts get
fixed for multiple users and on adopted storage.
Change-Id: If5523781936a0b04196e2ad871cae767ebae2583
Chances are there are not many themes in widespread use that are
using jpeg images, but this will be easy to revert back or even
just temporarily modify if we need jpeg support in a pinch.
Change-Id: If17b05ce3ebccce724fd74b26ed8ea91b287c3cf
-Detects, decrypts, and mounts an adopted SD card if a
secondary block device is defined (usually mmcblk1)
-Handles unified storage
-Displays the adopted storage in MTP along with internal
-Factory Reset - wiped just like a data media device, we
retain the keys folder and the storage.xml during a
factory reset
-Backup / Restore
-Disable mass storage when adopted storage is present
-Read storage nickname from storage.xml and apply it to
display names in the GUI
-Read storage.xml and determine what storage location is in
use for /sdcard and remap accordingly
libgpt_twrp is source code mostly kanged from an efimanager
project. It is GPL v2 or higher, so we will opt for GPL v3.
Change-Id: Ieda0030bec5155ba8d2b9167dc0016cebbf39d55
-Improve code for partitioning sdcards
-Allow user to select a device for partitioning (must be removable)
-Use sgdisk to partition sdcards
-Set default sizes for ext and swap to 0
-Change increments for ext to 256MB and swap to 64MB
Note: sgdisk is included in 6.0. I have included a static prebuilt
sgdisk for trees that do not have sgdisk, however the prebuilt
sgdisk is a decent bit larger than the old parted binary. The old
parted binary is quite old at this point and we only have it for
armv7a. sgdisk should be maintained by AOSP and can be built from
source so it should work across architectures.
Change-Id: Ib80882d9b5776e5e9358b11340fba392e6f1ae09
CM-13 tree completely changes the names of the binaries that are created
for ntfs-3g. If we are using a CM-13 tree (CM SDK 4) make sure the
dependencies and relinking are adjusted accordingly.
Also, adapt partition code so it can make use of whichever set of
binaries are present.
Change-Id: I810caafa818f18281fd29dcf8f31b3053133b5ed
* Usage of fsck.exfat is already included in partition.cpp, but the
tool is missing.
* Update the path to mkexfatfs so the button is available when changing
filesystem.
Change-Id: I5f4e27357c6b5a8606043d1bdc2488cc83e55d90
* Make sure fsck.f2fs and mkfs.f2fs are built for CM12.1/13.0
* Add CM13.0 rule for relinking mkfs.f2fs
* Minor cleanup of nested if/else in prebuilts
Note on CM SDKs: 3=cm-12.1, 4=cm-13.0
I'm not yet sure whether it is possible that the CMSDK increments
within the same branch of CM.
Change-Id: I7b521159a8b5d0e0ea639f5e0fdd885100612df0
* Version 3.0.28
* Update filenames in source
* Remove unnecessary symlink to fsck
* Commit "Recode short filenames from DOS codepage (default 437)." has
been reverted since we do not have access to iconv
* Commits cherry-picked on top of 3.0.28:
- mkfs.fat: fix incorrect int type
- Prevent out of bound array read in date_dos2unix()
Change-Id: I50310235c62ec2e6bc90afcd10f2814d3afb5113
In order to maintain compatibility with older trees, we now have
minadbd.old and minui.old. I had to use a TARGET_GLOBAL_CFLAG to
handle ifdef issues in minui/minui.d because healthd includes
minui/minui.h and there was no other alternative to make minui.h
compatible with older trees without having to modify healthd rules
which is outside of TWRP.
Note that the new minui does not currently have support for qcom
overlay graphics. Support for this graphics mode will likely be
added in a later patch set. If you are building in a 6.0 tree and
have a device that needs qcom overlay graphics, be warned, as off
mode charging may not work properly. A dead battery in this case
could potentially brick your device if it is unable to charge as
healthd handles charging duties.
Update rules for building toolbox and add rules for making toybox
Use permissive.sh in init.rc which will follow symlinks so we do
not have to worry about what binary is supplying the setenforce
functionality (toolbox, toybox, or busybox).
Fix a few warnings in the main recovery binary source code.
Fix a few includes that were missing that prevented compiling in
6.0
Change-Id: Ia67aa2107d260883da5e365475a19bea538e8b97
Note: Only works on ext2/3/4 partitions. Only tested on ext4.
We can use this in some cases to resize the data partition if an
incorrect fstab caused recovery to not reserve the 16KB for a
crypto footer.
Sometimes the BoardConfig for a custom ROM does not have the
correct size for the system partition and if the ROM flashes a
raw system image, that image will not take up the full block
device. Running resize2fs can fix the size and may allow more
room in the system partition for customizations like busybox or
a larger gapps package.
Sometimes flashing a factory image may flash userdata with an
image with a file system that does not take up the full size of
the block device (e.g. factory images for the Nexus 6 will flash
userdata with a ~24GB userdata image, wasting ~30GB of space).
Using resize2fs we can easily fix this issue without having to do
a full format data.
Change-Id: I631f5c6f567bbc6a9241e5dd95f1e435820a1b13
Also add a short while loop to wait for fb0 to be created as was
needed on the x86-64 target for the Android emulator.
Change-Id: Ib1b87bea028ac3eac0541283334a0157cdfbce11
AOSP and other ROM trees now do a rm -rf of the res folder during
the ramdisk creation process that removes the TWRP resources.
Using /twres instead of /res works around this issue making TWRP
more compatible with AOSP and other build trees.
Change-Id: I0d4c7e06ca381ac5aa0069b6f2b8c47f7dec49e7
* Bionic tries to load it, and if it isn't in /sbin and /system
is mounted, it loads it from there and prevents it from unmouting
Change-Id: I33d0b6ba4503f2822d96033fa26d53e10b8ce1c5
Signed-off-by: Vojtech Bocek <vbocek@gmail.com>
Break libblkid into 4 libraries: libblkid, libuuid, libutil-linux and libfdisk.
This should help in later patch updates.
Change-Id: I680d9a7feb031e5c29a603e9c58aff4b65826262