diff --git a/README.md b/README.md index 2ace77cea..b8c7996bf 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,23 @@ -[![Build Status](https://jenkins.noobdev.io/job/DualBootPatcher_Master/badge/icon)](https://jenkins.noobdev.io/job/DualBootPatcher_Master/) +Due to recent changes in Android P, as well as upcoming changes in Android Q, DualBootPatcher is no longer being developed. These two releases change some fundamental assumptions that DBP makes about the host device. -DualBootPatcher -=============== +With devices that ship with Android 9.0+, the [system-as-root partition layout](https://source.android.com/devices/bootloader/system-as-root) is mandatory. This means that the system partition includes everything that traditionally went in the boot image's ramdisk. DBP relies on being able to modify the ramdisk to add its binaries as well as some config files that specify the ROM ID and device specific information (eg. partitions). To switch between ROMs, DBP simply flashes the ROM's patched boot image. -DualBootPatcher is an open-source app that allows multiple ROMs to be installed on a single Android device. It does its best to work with existing code and does not require explicit support from ROMs. There are currently more than 250 supported devices and their variations. The list of supported devices can be found [here](https://dbp.noobdev.io/supported_devices.html). +With the system-as-root partition layout, most of the files could potentially live on the system partition, but the ROM ID must be stored in the boot image. With some devices, like Google Pixels, a ramdisk can be added back by including it in the boot image and patching the kernel image to ignore the `skip_initramfs` cmdline option. However, on other devices, like the Samsung Galaxy S10 series, the bootloader will always ignore the ramdisk section in the boot image. Storing the ROM ID in the cmdline field is also not feasible because many devices' bootloaders ignore the whole field. -Website: [link](https://dbp.noobdev.io/) -XDA thread: [link](http://forum.xda-developers.com/showthread.php?t=2447534) +With the Android Q preview builds, some devices, such as the Google Pixel 3 series, switched to using [dm-linear](https://www.linuxplumbersconf.org/event/2/contributions/225/attachments/49/56/06._Dynamic_Partitions_-_LPC_Android_MC_v2.pdf) for handling the partition layout of the read-only OS partitions (system, vendor, etc.). With this setup, a single GPT partition is split up and is mapped to device-mapper block devices by a userspace tool. With Android's `/init`, this is done via the `liblp` library, which parses the metadata on disk and configures dm-linear. DBP would have to implement something equivalent to this to be able to mount the Android partitions. It currently assumes that the kernel will provide a mountable block device after going throug the uevent device probing phase. +Neither of these changes are impossible to work around, but I have simply lost any interest in doing so. I have not used DBP on my primary devices for a couple of years now. Those interested in continuing development are free to fork the project. Any work that had been done for the 10.0.0 release has been pushed to the `10.0.0-staging` branch. + +All downloads have been moved to SourceForge at https://sourceforge.net/projects/dualbootpatcher/files/. I will work on splitting out some of the more useful parts of DBP, such as libmbbootimg (boot image parser) and libmbsystrace (syscall injection/modification library), so that they can be used in other projects, but DBP itself will no longer be developed. + +Huge thanks to everyone who helped out with this project the past six years! + +--- Downloads --------- -Downloads can be found [here](https://dbp.noobdev.io/downloads/). +All previous builds can be found [here](https://sourceforge.net/projects/dualbootpatcher/files/). Compiling from Source diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index 55262c8a2..fe5c61b39 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -1,12 +1,11 @@ # All of the files here are built from the PKGBUILD files in thirdparty/*/PKGBUILD. -# All of the files are signed with my GPG key and correct hashes are provided -# at https://dbp.noobdev.io/repo/prebuilts, but if you don't trust me or -# my binaries, you can use your own builds builds by copying your own prebuilts -# to thirdparty/prebuilts and updating the checksums here. It is not necessary -# to upload the files to a server as CMake will not download the files if the -# checksums match. +# All of the files are signed with my GPG key and correct hashes are provided, +# but if you don't trust me or my binaries, you can use your own builds builds +# by copying your own prebuilts to thirdparty/prebuilts and updating the checksums +# here. It is not necessary to upload the files to a server as CMake will not +# download the files if the checksums match. -set(URL_BASE "https://dbp.noobdev.io/repo/prebuilts") +set(URL_BASE "https://downloads.sourceforge.net/project/dualbootpatcher/prebuilts") set(MBP_PREBUILTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/prebuilts" CACHE PATH "Prebuilts download directory") @@ -368,7 +367,7 @@ if(MBP_TOP_LEVEL_BUILD) file( DOWNLOAD #"http://forum.xda-developers.com/devdb/project/dl/?id=286&task=get" - "https://dbp.noobdev.io/mirror/aroma-${AROMA_VER}.zip" + "https://downloads.sourceforge.net/project/dualbootpatcher/old_mirror/aroma-${AROMA_VER}.zip" ${MBP_PREBUILTS_DIR}/aroma-${AROMA_VER}.zip EXPECTED_HASH MD5=a77c4993803db28d53cd7e6a37ec73b5 EXPECTED_HASH SHA512=44abff7bd536908ae8cde9a17e1fb334b59561e115f54b23bf910e1f7920b6f35ab078d3353db65c3526e25c0be27cd592470145063cafd4e05418e4bece775f diff --git a/thirdparty/android-system-core/PKGBUILD b/thirdparty/android-system-core/PKGBUILD index fcb7e065d..fd95d9092 100644 --- a/thirdparty/android-system-core/PKGBUILD +++ b/thirdparty/android-system-core/PKGBUILD @@ -13,7 +13,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -_prebuilts='https://dbp.noobdev.io/repo/prebuilts' +_prebuilts='https://downloads.sourceforge.net/project/dualbootpatcher/prebuilts' _ver_safe_iop=8.1.0_r2-2 pkgname=android-system-core diff --git a/thirdparty/freetype2/PKGBUILD b/thirdparty/freetype2/PKGBUILD index eb97682c7..9b704ba52 100644 --- a/thirdparty/freetype2/PKGBUILD +++ b/thirdparty/freetype2/PKGBUILD @@ -13,7 +13,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -_prebuilts='https://dbp.noobdev.io/repo/prebuilts' +_prebuilts='https://downloads.sourceforge.net/project/dualbootpatcher/prebuilts' _ver_libpng=8.1.0_r2-2 pkgname=freetype2 diff --git a/thirdparty/libarchive/PKGBUILD b/thirdparty/libarchive/PKGBUILD index 4a54cf0db..763219ebd 100644 --- a/thirdparty/libarchive/PKGBUILD +++ b/thirdparty/libarchive/PKGBUILD @@ -13,7 +13,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -_prebuilts='https://dbp.noobdev.io/repo/prebuilts' +_prebuilts='https://downloads.sourceforge.net/project/dualbootpatcher/prebuilts' _ver_liblzma=5.2.4-1 _ver_lz4=1.8.3-1