Commit Graph
100 Commits
Author SHA1 Message Date
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
Chris Renshaw a48ce68a7c Backend: avoid tar complaining when there is no recovery.log
- clean up needless $parent stuff
- recovery.log will only be in /tmp regardless of $home
2019-06-10 00:10:35 -03:00
Chris Renshaw 16b147e939 Backend: only take relevant files for debug .tgz
- per suggestion from eng.stk avoid archiving all of $home since /tmp in recovery might hold sensitive crypto data
- restrict tar to $home (i.e. /tmp/anykernel by default) and $parent/recovery.log (i.e. /tmp/recovery.log)
- probably no need to be verbose when making the archive, it kinda clutters up the end of the captured log
2019-06-09 23:41:07 -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 da324c430f Backend: fix debugging .tgz creation for booted installs
- some apps copy the zip to be flashed to the app cache, which would result in the .tgz going either somewhere unknown/inaccessbile to the user or get deleted when the app cleans up after flash, so instead send to /sdcard if the device is booted to Android
2019-06-07 20:22:03 -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 5fdf659d01 README: updates and touchups for AK3
- bring in line with XDA thread
2019-06-02 16:21:43 -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 a10312941a README: Update for AK3 2019-06-01 00:00:40 -03:00
osm0sis 8724d88159 anykernel: Update for AK3 2019-06-01 00:00:17 -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 6672e75f54 README: cosmetic changes to match XDA thread 2019-05-10 11:51:19 -03:00
osm0sis 1bd118035f AK2: underp opposite slot case 2019-05-10 02:35:10 -03:00
osm0sis ef2edf7e47 README: update for multi-slot zip instructions 2019-05-09 16:22:19 -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 a24e07f0d2 README: update for Intel OSIP mboot, customdd, touchups 2019-04-18 22:19:05 -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
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
osm0sis c109065a3d AK2: fix ramdisk repack and mtk signing when uncompressed cpio 2019-02-08 23:19:21 -04:00
osm0sis b7f18eadfd README: document cpio compression support 2019-02-07 13:02:59 -04:00
osm0sis 82e7c0345b AK2: add support for uncompressed cpio ramdisks
ramdisk_compression=cpio or =none to force
2019-02-07 13:00:42 -04:00
osm0sis a1f20c0d53 Backend: support all half-sensible ROM version formats
9
9.0
9.0.0

Anything else is insanity.
2019-01-02 17:08:22 -04:00
osm0sis 34d8a65fbe Backend: workaround bad ROM versioning practices in supported check
- some ROMs have taken it upon themselves to go against AOSP, i.e. where starting with Pie AOSP now versions it as only 9, some ROMs are still making it 9.0
- introduce integer 2 float function that will add a decimal place to all for comparisons
- this should support the majority of ROMs, but anything crazy like 9.0.0, or crazier like 09.0.0 should be frowned upon by the community and the ROM devs should be made to get it together and follow AOSP
2018-12-20 13:46:52 -04:00
osm0sis 9d49de1caf Backend: clean up mounting
- only mount system when not already mounted (avoids harmless stderr during booted flashes)
- optimize module targeting and mount logic further
2018-12-16 23:38:21 -04:00
osm0sis 2ec3b8cf72 README: touchups to supported.versions documentation
(Android 8.1 was 8.1.0 in build.prop ;) )
2018-12-16 19:14:03 -04:00
osm0sis 414a9dcea0 Revert "anykernel: fix ramdisk/sbin permissions"
This reverts commit c545e6779e.

Magisk and SuperSU actually keep these as the proper 750 within the boot.img ramdisk itself, and so should we
2018-12-16 18:37:29 -04:00
osm0sis 614be6510b README: document supported.versions 2018-12-16 18:37:15 -04:00
osm0sis ddf0e59256 anykernel: add supported.versions 2018-12-16 18:36:54 -04:00
osm0sis a31d03f2ce Backend: introduce Android version check
- checks the supported.versions prop in anykernel.sh and matches against it to prevent users flashing incorrect kernels for ROM versions
- supported.versions can be a list, e.g. "7.1.2, 8.0, 8.1" or a range, e.g. "8.1 - 9" of versions in the correct formatting for that Android version in ro.build.version.release in /system/build.prop
2018-12-16 18:31:53 -04:00
osm0sis 9e24ea91f1 README: add replace_string scope + note re: extra device.name# entries 2018-12-16 14:23:33 -04:00
osm0sis d9acb3384d AK2: allow replace_string to optionally global scope replace 2018-12-16 14:03:47 -04:00
osm0sis 1d58385b26 AK2+Backend: fix file_getprop truncating if prop value contained =
See comments: https://github.com/osm0sis/AnyKernel2/pull/35#issuecomment-447648900
2018-12-16 13:53:33 -04:00
osm0sis 56b4244d53 Backend: cleanups 2018-12-15 09:00:36 -04:00
osm0sis 77fe6bffeb Backend: more robust getprop checks and replacements
- getprop failures are not only a system-as-root device issue, as it now also happens on OnePlus 5T in recovery when ROM is Pie Open Beta
- this appears to come down to a libc mismatch between recovery and ROM resulting in direct property checks failing but getprop without arguments printing all properties working
- revert most of https://github.com/osm0sis/AnyKernel2/commit/b1524da099efa716616a8eb3357876bca6a73540 since this should remain resolved with the new implementation
- keep the old check and file_getprop fallback for devices without getprop entirely
- add new getprop fallback that parses the full getprop output
2018-12-14 16:29:53 -04:00
osm0sis dda2ee9bbf README: document device.name<num> limit removal 2018-12-14 15:46:22 -04:00
osm0sis da8c2d1e6c Backend: allow infinite device.name<num>= device check properties (#34) 2018-12-14 15:43:25 -04:00
osm0sis fd881bd8d7 Backend: only attempt module bind remount if already mounted
- blindly attempting to remount broke module placement on some ROMs (e.g. Pocophone MIUI stock)
2018-12-11 13:34:37 -04:00
osm0sis 6d5332e054 Backend: attempt remounting module location as well
- some custom ROMs on some devices (e.g. Lineage on Pocophone) bind mount modules in /system over modules on /vendor, so remount rw at the bind target to ensure the bind source is also remounted and replaced
- toybox mount doesn't accept the /. prefixed paths from find so ensure we use busybox for mounts

Thanks franciscofranco and topjohnwu for the tips!
2018-12-11 02:35:15 -04:00
osm0sis e1ae4412f5 AK2: add AOSP boot_img_hdr_v1 support 2018-10-28 19:30:59 -03:00
osm0sis 301ed77319 tools: update to latest builds, including busybox (1.29.3), lz4 (1.8.3)
Compiled from my own updated forks:
https://github.com/osm0sis/mkbootimg
https://github.com/osm0sis/android-busybox-ndk

ARM binaries; see AIK-mobile v3.4 for other architectures and optional binaries:
https://forum.xda-developers.com/showthread.php?t=2073775
2018-10-28 19:28:03 -03:00
osm0sis 9d7f85807f AK2: fix stupid copy pasta error
thanks eng.stk for catching it
2018-10-01 13:18:43 -03:00
osm0sis 3ab879b71a AK2: add Android Pie /dev/block/by-name location to partition search list 2018-09-30 14:44:00 -03:00
osm0sis 361712b5e2 tools: update to latest builds, including busybox (1.29.2)
Compiled from my own updated forks:
https://github.com/osm0sis/mkbootimg
https://github.com/osm0sis/android-busybox-ndk

ARM binaries; see my Busybox Installer for busybox in other architectures:
https://github.com/Magisk-Modules-Repo/Busybox-Installer
2018-09-08 15:50:34 -03:00
osm0sis 30cca512d9 tools: bring back busybox 1.29.1 built with the broken gzip rolled back
https://bugs.busybox.net/show_bug.cgi?id=11171
2018-07-24 13:19:55 -03:00
osm0sis 8aa7b787e1 tools: revert to busybox 1.28.4 until an issue with 1.29.1 gzip can be resolved
- gzip in busybox 1.29.1 doesn't seem to use compression anymore, with -1 and -9 both coming
out to the same size, generally dramatically larger than previously resulting in
boot-new.img exceeding the partition size on some devices so then failing the check.

e.g. 28mb ramdisk.cpio -> 11.2mb ramdisk.cpio.gz in 1.28.4, is now 20mb in 1.29.1

thanks nathanchance for reporting
2018-07-23 23:03:44 -03:00
osm0sis a53e3f765c tools: update to latest builds, including busybox (1.29.1), lz4 (1.8.2) and xz (5.2.4)
Compiled from my own updated forks:
https://github.com/osm0sis/mkbootimg
https://github.com/osm0sis/android-busybox-ndk

ARM binaries; see AIK-mobile v3.3 for other architectures and optional binaries:
https://forum.xda-developers.com/showthread.php?t=2073775
2018-07-23 10:39:04 -03:00
osm0sis b1524da099 Backend: move system_root mounting to after device check
- adapted from https://github.com/nathanchance/AnyKernel2/commit/3dfba3dcabff3cf1f859276e1851ae35891d8801
- works around odd behaviors in TWRP on system-as-root devices, but retains working fallback using /system/system/build.prop if getprop also fails
- simplify unmount_all stderr redirection

Please see the above linked commit for further details.
Thanks to nathanchance for reporting, the device-specific workaround, and much testing
2018-07-19 21:30:56 -03:00
osm0sis 0b8b09f29e AK2: fix repacked ramdisk check now that compext is local to repack_ramdisk
Thanks eng.stk for reporting and testing the fix
2018-07-16 23:16:26 -03:00
osm0sis 303e50e371 Example: fix more things confusing to new adopters
DO NOT MERGE if you have already updated your ramdisk/anykernel.sh properly for your device
2018-07-16 14:27:08 -03:00
osm0sis 6714cd3250 README: document patch_ueventd 2018-07-16 14:01:23 -03:00
osm0sis 955f3ce488 AK2: add patch_ueventd
- introduce function to modify or add entries to ueventd.rc using its spaced columns format, matched using the device node
2018-07-16 14:00:23 -03:00
osm0sis 1811b87a19 AK2: fix slot detection broken by block auto detection 2018-07-16 13:54:49 -03:00
osm0sis 915cdaff1b AK2: fix replace_section and remove_section functions
- was broken with search strings containing paths (a limitation with busybox sed)
- now matches blank lines and lines containing only white space for next-empty-line matching
- include end-of-file as the final possible end-point for next-empty-line matching
2018-07-14 16:48:45 -03:00
osm0sis 8ed75ed99c README: touch up new block= documentation to show full paths are still supported 2018-07-14 16:20:14 -03:00
osm0sis 56373a6a1c AK2: use local variables for ramdisk editing functions 2018-07-13 02:08:44 -03:00
osm0sis 5fbae260c0 Revert "Support more locations for dtbo img (#24)"
This reverts commit bafe4bd586.

A certain level of functioning recovery is expected by AnyKernel2 (versus this patch's source, the Magisk installer, which is extremely pessimistic).
2018-07-13 01:29:33 -03:00
osm0sis c545e6779e anykernel: fix ramdisk/sbin permissions
- while stock uses 750, Magisk and SuperSU both use 755 for sbin and contained binaries, so we had better do so as well
2018-07-13 01:27:54 -03:00
osm0sis 23a088f4c8 README: document block=auto, fix zip exclusions 2018-07-13 01:27:20 -03:00
osm0sis 75986e14d1 AK2: add auto detection of named block (e.g. boot, recovery) partitions (#19, #26)
- search using a list of known ramdisk/kernel or recovery by-name partition names
- block=auto is equivalent to block=boot
- for use with broad, device non-specific AK2-based mod zips
2018-07-13 01:20:04 -03:00
osm0sis 2a34450ba9 AK2+Backend: move system_root setup and tear down to backend
- abstract out unmounting and expand to support undoing system_root
- also preserve and restore LD_PRELOAD
2018-07-03 20:49:31 -03:00
osm0sis 25d93de829 anykernel: fix special characters in prop values breaking shell execution 2018-05-30 00:01:57 -03:00
osm0sis caf289b584 Backend: misc fixes
- remove "kernel" from "Installing" wording since AK2 is also used on recoveries, and multi-partition Treble devices and this could be misleading
- fix getprop build.prop fallback on /system/system devices
2018-05-29 23:57:29 -03:00
Chris Renshaw f2ee53b843 AK2: fix AVBv1 auto signing
- BootSignature.jar uses stderr to print VALID on image verification, so the grep was always failing
2018-05-22 01:08:01 -03:00
Chris Renshaw b648bd74d6 Merge pull request #27 from googlebleh/googlebleh
README: fix command to match filename in repo
2018-05-19 12:46:18 -03:00
osm0sis 14826f628f AK2: fix elftool repack of ELF without cmdline 2018-03-24 11:31:39 -03:00
osm0sis a4cc13af28 tools: update to latest lz4 (1.8.1.2)
ARM binary; see AIK-mobile v3.2 for other architectures and optional binaries:
https://forum.xda-developers.com/showthread.php?t=2073775
2018-03-23 13:42:54 -03:00
osm0sis 6e14f5cfe9 Backend: fix modules support regression for /vendor
thanks @nathanchance for the quick heads-up
2018-03-23 13:29:55 -03:00
osm0sis e686f1f76c README: document multi-partition setup and auto slot detection 2018-03-23 12:31:00 -03:00
osm0sis 19a49f1f34 AK2: allow is_slot_device=auto (#21)
- for use with broad, device non-specific AK2-based mod zips
2018-03-23 12:19:08 -03:00
osm0sis 79b4c2c593 Backend: fix modules support regression on /system/system devices 2018-03-23 11:51:48 -03:00
osm0sis 966cea0d57 AK2: more multi-partition support improvements
- check for and remove patch for multi-partition/reset_ak (so removal of ramdisk/ and patch/ with the addition of $(basename block)-files is now the full trigger)
- wipe $(basename block)-files/ramdisk to ensure proper copied output, as the original contents are retained in the copied rdtmp
- for ramdisk-only changes that don't require added files or patch snippets, create the $(basename block)-files subfolder for proper output backup with reset_ak
2018-03-23 11:32:59 -03:00
osm0sis d7c56e9c06 AK2: improve/expand multi-partition use cases
- if no ramdisk is found in the zip, check for and copy files in from "$(basename $block)-files", e.g. boot-files + recovery-files subfolders, each which can contain their own zImage, and ramdisk and patch subfolders, etc.
- as part of the reset_ak command, copy the output files back to the corresponding *-files subfolder for use in debugging
* when ak2-core.sh gets run again by reset_ak after changing block= in anykernel.sh the above process begins again
2018-03-22 18:51:01 -03:00
osm0sis 1176e19406 AK2: only AVB sign if dumped original dumped image is signed (#20)
- avoids issues for broad AK2-based mod zips on devices where AVB 1.0 signed images cause issues, while maintaining signing on AVB 1.0 devices
2018-03-22 14:14:23 -03:00
osm0sis a4332bda2a README: document restore_file, add mkbootfs warning, fixes 2018-03-22 13:51:43 -03:00
osm0sis 4a7014d5aa AK2: add restore_file for use with ramdisk-only in a restore zip (#19)
thanks @Zackptg5
2018-03-22 13:42:57 -03:00
osm0sis 3baf2a564a README: update now that elftool is available in AIK-mobile 2018-03-20 00:11:23 -03:00
osm0sis ab830140ca README: add support thread 2018-03-17 13:41:27 -03:00
osm0sis 0acab592bb README: update for file_getprop 2018-03-07 15:17:12 -04:00
osm0sis 865564032d AK2: add file_getprop
- was only available in the update-binary, so allow in anykernel.sh as well, for use with checking /system/build.prop, /default.prop, $ramdisk/default.prop, etc.
2018-03-07 15:15:41 -04:00
osm0sis 07cc7c31ce AK2: fix section functions with "" for next-blank-line end search 2018-03-07 14:24:39 -04:00
osm0sis 55ab97f6ec AK2: improve section functions, improve size check
- clean up false error output where sections are already removed on repeat flashes
- move size check to just before flash since we must compare against the fully repacked, signed boot-new.img
2018-03-07 10:52:14 -04:00
osm0sis c81b3d5658 AK2: add Nook HD+ and Nook Tablet signing loader support 2018-03-05 17:09:51 -04:00
osm0sis 1e3d48355e README: update for banner and version file support 2018-02-28 09:14:35 -04:00
Chris Renshaw 14e73ecbec AK2: fix cpio extraction with busybox 1.28+
"cpio: skipping unsafe symlink to '/system/vendor' in archive, set EXTRACT_UNSAFE_SYMLINKS=1 to extract", introduced by https://git.busybox.net/busybox/commit/?id=bc9bbeb2b81001e8731cd2ae501c8fccc8d87cc7 
Thanks @nathanchance for the quick heads up
2018-02-27 00:47:57 -04:00
osm0sis 12289267c5 Backend: touch up install whitespace now that we have banner/version display 2018-02-26 13:03:50 -04:00