Commit Graph
155 Commits
Author SHA1 Message Date
osm0sis ccb19a8337 tools: update magisk utils to v20.4-ed58cf95(20304) canary
- fix lzop detection use-case of magiskboot decompress which was broken in the generic stream refactor
2020-02-03 13:30:13 -04:00
osm0sis e666adc66f AK3+Backend: mount and output fixes
- fix case where TWRP has /system_root mountpoint but ROM is non-SAR
- fix regression in ui_print when final character is \
2020-01-31 20:11:52 -04:00
osm0sis c35c7ce358 AK3+Backend: /postinstall and opposite slot awareness for FlashAfterUpdate addon.d-v2 support
- for A/B OTAs my FlashAfterUpdate addon.d script requires the zip to know about addon.d-v2 and act accordingly
- signify support with #FLASHAFTERUPDATEV2 tag in updater-script to pass whitelist check since the majority of zips will not work correctly
2020-01-27 16:25:21 -04:00
osm0sis b37d7e225f AK3+Backend: introduce systemless kernel modules support
- with do.systemless prop enabled in anykernel.sh, will push the contents of modules/ to create a simple "ak3-helper" Magisk module, where testing on devices thus far shows it loads early enough that even replacement kernel object .ko modules will get loaded
- the ak3-helper module info is populated from the kernel.string and parsed kernel version from the kernel being flashed, and if at boot time a different kernel is detected the module automatically removes itself before being loaded to avoid conflicts
- since logical partitions and ext4-dedup on Android 10 now prevent mounting /system or /vendor rw under any circumstances, this feature gives kernel developers back the freedom they had before all this to improve kernel .ko modules, .conf files, etc. with the added bonus of it cleaning up after itself
2020-01-18 07:21:46 -04:00
osm0sis 0a712cce0d AK3: add stderr hints for signing debugging 2020-01-16 01:20:48 -04:00
osm0sis 21ee68f5a8 AK3: clean up and simplify Magisk patch logic
- only repatch when there is an Image* (i.e. don't attempt on ramdisk-only mods)
- make sure new ramdisk is already copied before trying to detect Magisk patch state in case it changed
- clean up Magisk patch state and exported variables immediately
2020-01-16 01:00:32 -04:00
osm0sis 3f60a5e1e2 AK3: fix false positive Magisk detection after reset_ak 2020-01-15 11:04:36 -04:00
osm0sis d3d853ac82 AK3: only attempt to dump .magisk config if patch found 2020-01-13 01:17:19 -04:00
osm0sis 23dd83d8e4 AK3: auto kernel patch improvements
- also check patch status as part of repack_ramdisk() to avoid any issues if developer is forcing a compression format change
- get full Magisk patch status value and extract Magisk config to export correct environment variables for dtb patching
2020-01-13 01:03:22 -04:00
osm0sis bf9e9fd487 AK3: only attempt fallback kernel decompression if format was identified 2020-01-12 23:32:26 -04:00
osm0sis 4bae117013 AK3: fix AVBv1 signing on Android 10 2020-01-12 16:14:39 -04:00
osm0sis ef24a09b51 AK3: auto split Image.*-dtb to kernel/kernel_dtb + re-patch for Magisk 2020-01-12 15:30:42 -04:00
osm0sis d2e55da124 tools: update magisk utils to v20.3(20300) stable 2020-01-09 21:59:36 -04:00
osm0sis dd041bafe9 tools: update magisk utils to v20.2(20200) stable 2020-01-02 12:17:25 -04:00
osm0sis 9ece27131a tools: update magisk utils to v20.1(20100) stable 2019-11-03 03:22:30 -04:00
osm0sis 02f4d2d35e tools: update to latest busybox (1.31.1)
Compiled from my own updated fork:
https://github.com/osm0sis/android-busybox-ndk
2019-11-03 03:20:42 -04:00
osm0sis 0e3b7304e6 AK3: fix partition detection taking first match on older devices
- `test -e` could fail due to unexpanded *'s in $target
2019-08-06 18:53:08 -03:00
osm0sis f3f80014cc AK3+Backend: fix multi-line abort outputs 2019-08-04 01:16:54 -03:00
osm0sis 958b2c873a AK3: reset_ak: don't remove $ramdisk unless has already been unpacked
- running reset_ak before an unpack would remove any included ramdisk files from zip, so only remove if $split_img is detected suggesting an unpack has already occurred
2019-07-20 23:12:51 -03:00
osm0sis 84d9032606 AK3: add file/directory attributes functions
- from my "Complete Shell Script Flashable Zip Replacement" reference thread: https://forum.xda-developers.com/android/software-hacking/dev-complete-shell-script-flashable-zip-t2934449
2019-07-20 20:50:50 -03:00
osm0sis d3363b7dcb tools: update magisk utils to v19.4-05658caf(19305) canary 2019-06-30 23:56:41 -03:00
osm0sis 46614b2f84 tools: update magisk utils to v19.4-1058aeb0(19302) canary 2019-06-24 12:31:49 -03:00
osm0sis 4e403f12e5 AK3: better living through sed
- clean up magiskboot compression type output parsing
2019-06-17 23:01:04 -03:00
osm0sis 3685456911 AK3: fix support for forced uncompressed cpio ramdisk repacks
- resolves https://github.com/osm0sis/AnyKernel3/commit/698682123053cab9e3277c9c9df783a97b3e8958 "IMPORTANT NOTE" 1
2019-06-15 21:27:44 -03:00
osm0sis 6b8b178c12 tools: update magiskboot to v19.4-ee407472(19301)
- resolves https://github.com/osm0sis/AnyKernel3/commit/698682123053cab9e3277c9c9df783a97b3e8958 "IMPORTANT NOTE" 2, and allows 1 to be supported (via script change in subsequent commit)
2019-06-15 21:27:10 -03:00
Chris Renshaw 7ccf4d62ce AK3: fix signing derp
Thanks @Zackptg5

Closes #40
2019-06-12 16:52:29 -03:00
osm0sis 6d25afd03a AK3: allow ChromeOS auto-detect, clean up signing, fixes
- since magiskboot has built-in detection for the ChromeOS image pre-header signature, allow it to be auto-detected and if futility and signing files are present re-sign automatically (thanks @Zackptg5 for the nudge)
- simplify signing and error catching
- fix typo breaking ramdisk_recovery partition detection
- hide expected stderr for formats where some files may not exist (cmdline for ELF, etc.)
2019-06-10 23:12:00 -03:00
osm0sis e4497f231e AK3: clean up "OG AK" mode stderr on images with no kernel/ramdisk present 2019-06-07 23:28:18 -03:00
osm0sis bf38d208c8 AK3: be clear when unpack_ramdisk fails because there is no ramdisk
- previously this was failing a bit too spectacularly for my liking since $comp would erroneously get set to "fopen: ramdisk.cpio failed with 2: No such file or directory"
- on devices where there is no ramdisk.cpio unless rooted with Magisk this will indicate better to developers working on the device that they should be using "OG AK" mode to avoid trying to unpack a ramdisk which may or may not exist
2019-06-07 21:35:10 -03:00
osm0sis 76d59d67e6 AK3: also make mtd partition detection variables local 2019-06-06 16:04:43 -03:00
osm0sis ad665cc95f AK3: cleanups and fixes to config/setup functions
- simplify rdtmp and $ramdisk creation and keep only in `unpack_ramdisk`
- fix `reset_ak` and `setup_ak` behavior if run before $block is set
- only save boot.img and boot-new.img in *-files subdirectories on multi-partition setups since otherwise the tmpfs (in recovery) and ext4 .img (when booted) size usage gets quickly out of hand
- fix slot_select=inactive when used with block=auto or block=boot partition detection
2019-06-06 15:42:40 -03:00
osm0sis 725e3a0006 tools: update magisk tools to v19.3(19300) stable 2019-06-05 20:33:59 -03:00
osm0sis 192ccc94d3 AK3: support MTK /dev/bootimg and /dev/recovery partition matching
(note these probably require nanddump and nandwrite to access correctly)
2019-06-04 23:45:47 -03:00
osm0sis 97de781a55 AK3: resolve non-zero return code introduced by cat <img> /dev/zero > <block>
- the expected "cat: write error: No space left on device" gives a non-zero return code so always return true
- devices that flash dtbo abort since the return code would get passed back to the Backend and silently fail as the final command in anykernel.sh (via `write_boot`), so catch seperately with a proper error message for other image write methods
2019-06-02 19:15:47 -03:00
osm0sis 24032c0732 AK3: allow workaround for dtbo devices with cat /dev/zero issues
- some device recoveries (e.g. TWRP for wahoo) seem to have issues with the new `cat <image> /dev/zero > <block>` method of flashing, so allow setting customdd="bs=1048576" shell variable in anykernel.sh to work around this by reverting back to dd wipe+flash for dtbo as it does with boot
2019-06-02 15:44:49 -03:00
Chris Renshaw c8d087bbad AK3: fix elftool repack cmdline handling 2019-06-01 01:30:56 -03:00
osm0sis cba94d3103 tools: rename ak2-core.sh to ak3-core.sh 2019-05-31 23:59:39 -03:00
osm0sis 6986821230 Welcome to AK3: AnyKernel2 + Magisk = AnyKernel3!
- abstract out execution directory as $home to fascilitate testing individual scripts (defaults to /tmp/anykernel)
- general script clean ups for uniformity, readability, speed and simplicity
- simplify consecutive `ui_print` commands where possible

Backend only fixes:
- use busybox umount and mount whenever possible to avoid linker warnings in stderr during system-as-root setup
- use `busybox --install -s` for bin/* setup
- consolidate setup to abort earlier if there are issues
- add backwards compatible symlinks for those who might not have updated their anykernel.sh with ak3-core.sh (to be renamed in subsequent commit)

Tools only fixes:
- add magiskboot to replace separate support for AOSP and PXA-AOSP formats, with MTK headers, BLOB, DHTB, SEAndroid and Nook signing
- add magiskpolicy to allow for easy sepolicy patching
- remove xz and lz4 since magiskboot supports these

AK3 Core only fixes:
- use full `ui_print` function implementation like the backend
- add `abort` function to simplify exit on errors
- fix $patch directory being excluded from `reset_ak`
- update $ramdisk_compression handling for magiskboot
- magiskboot also resolves long-standing request for built-in Bump support (#18)
- update Sony ELF and related support for initial repack as AOSP by using mkbootimg as plug-and-play optional add-in binary
- update Sony ELF MTK header support using mkmtkhdr only when ELF is initially unpacked by unpackelf
- add support for MTK RECOVERY ramdisk header type with Sony ELF
- simplify U-Boot dumpimage/mkimage and Sony ELF unpackelf/mkbootimg split_img file handling
- update patch_cmdline to handle both magiskboot as header prop file, and unpackelf or mboot as cmdline.txt
- use `cp -fp` for `backup_file` and `restore_file` to hopefully better preserve attributes if used outside of the ramdisk
- refactor setup into `setup_ak` to simplify `reset_ak` trigger to find slot and block again
- add fallback to busybox for compression formats (i.e. lzop) which magiskboot cannot handle

IMPORTANT NOTES:
1) forcing repack with uncompressed cpio ramdisk is not currently supported by magiskboot
2) forcing repack with lzop ramdisk when previously another format is not currently supported by magiskboot
2019-05-31 23:49:19 -03:00
osm0sis 1bd118035f AK2: underp opposite slot case 2019-05-10 02:35:10 -03:00
osm0sis 1a143d7306 AK2: add support for multi-slot zips
- extend `reset_ak` with `reset_ak keep` which will keep files to be available to patch the other slot
- add optional slot_select=inactive shell variable to force inactive slot during slot detection
2019-05-09 16:13:47 -03:00
osm0sis c3e298ecc6 AK2: add U-Boot RAMDisk uImage support 2019-05-01 11:04:13 -03:00
osm0sis a38790caed AK2: add $OS$ header Android image format support
- add built-in support for mboot for Intel OSIP devices (see: https://github.com/osm0sis/mboot)
2019-04-18 21:56:30 -03:00
osm0sis d3792a4856 AK2: fix dump failures for unpackelf and dumpimage (with ramdisk) 2019-04-18 21:53:23 -03:00
osm0sis 525a1bd826 AK2: add AOSP boot_img_hdr_v2 support (READ NOTES)
- AOSP has added --dtb, so to avoid conflicts *unpackbootimg and unpackelf have had what was previously dumped as *-dtb renamed to *-dt
- the same corresponds to any replacement version of these included in the zip root, i.e. they are now dt or dt.img for the old style from before hdr_v1, and dtb or dtb.img for the new style for hdr_v2

Note: You MUST update to the newer mkbootimg and unpackbootimg for this commit if you are using architectures other than the included ARM builds!

See AIK-mobile v3.5 for updated unpackelf, and mkbootimg/unpackbootimg binaries:
https://forum.xda-developers.com/showthread.php?t=2073775
2019-04-18 10:29:05 -03:00
osm0sis e11482bdec AK2: fix unpack for latest U-Boot tools (v2019.04) update
- v2019.04 changed the order and arguments for the U-Boot dumpimage tool

See AIK-mobile v3.5 for updated dumpimage/mkimage binaries:
https://forum.xda-developers.com/showthread.php?t=2073775
2019-04-18 09:43:01 -03:00
osm0sis 62392072b2 tools: update to latest builds, including busybox (1.30.1), lz4 (1.9.0)
Compiled from my own updated forks:
https://github.com/osm0sis/mkbootimg
https://github.com/osm0sis/android-busybox-ndk

ARM binaries; see AIK-mobile v3.5 for other architectures and optional binaries:
https://forum.xda-developers.com/showthread.php?t=2073775
2019-04-18 09:35:40 -03:00
osm0sis ac441a6eaa AK2: fix customdd detection logic 2019-04-06 21:46:23 -03:00
osm0sis a40fe9c65b AK2: add backwards compat for crazy devices hacking their mmcblk0
see comments here: https://github.com/osm0sis/AnyKernel2/pull/38#issuecomment-479577751

This will allow the current way people were adding arguments to dd via block= but also allow them to control this directly by adding customdd= to anykernel.sh.
2019-04-05 21:24:52 -03:00
Park Ju Hyung 3998baa529 AK2: optimize write operations
- dd uses bs=512 by default, which is far from optimal for sequential reads.
   Use bs=1048576(1M) for initial dump.
   This improves read performance by a measurable amount.

 - Zero-fill only the remaining blocks.
   There's no need to zero-fill all blocks,
   not to mention the additional/unnecessary wear and tear
   to the flash storage.

   Linux pipe uses bs=4096 by default. By using cat for this,
   we additionally gain much better write performance.

   On the OnePlus 6T, final write operation took 7.1 seconds in total with
   2 consecutive dd commands. With cat, it now takes 0.08 seconds.

Signed-off-by: Park Ju Hyung <qkrwngud825@gmail.com>
2019-04-03 14:07:15 -03:00
osm0sis 3ea64d006a AK2: workaround for U-Boot dumpimage failing on untrimmed uImage dumps
https://lists.denx.de/pipermail/u-boot/2019-January/355670.html
2019-03-21 17:13:56 -03:00