Skip to content
This repository has been archived by the owner on Sep 11, 2023. It is now read-only.

Commit

Permalink
DualBootPatcher is no longer in development
Browse files Browse the repository at this point in the history
Signed-off-by: Andrew Gunnerson <[email protected]>
  • Loading branch information
chenxiaolong committed May 18, 2019
1 parent 299f5db commit 9c9318d
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 18 deletions.
19 changes: 12 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
15 changes: 7 additions & 8 deletions thirdparty/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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")
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion thirdparty/android-system-core/PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion thirdparty/freetype2/PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion thirdparty/libarchive/PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down

0 comments on commit 9c9318d

Please sign in to comment.