Skip to content
Permalink
Browse files

DualBootPatcher is no longer in development

Signed-off-by: Andrew Gunnerson <andrewgunnerson@gmail.com>
  • Loading branch information...
chenxiaolong committed May 17, 2019
1 parent 299f5db commit 9c9318d60c0d62dfcf1fc595293841d4e01e52e0
@@ -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
@@ -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
@@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

_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
@@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

_prebuilts='https://dbp.noobdev.io/repo/prebuilts'
_prebuilts='https://downloads.sourceforge.net/project/dualbootpatcher/prebuilts'
_ver_libpng=8.1.0_r2-2

pkgname=freetype2
@@ -13,7 +13,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

_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

0 comments on commit 9c9318d

Please sign in to comment.
You can’t perform that action at this time.