Commit Graph

81 Commits

Author SHA1 Message Date
topjohnwu a8478ace18 Use macros 2018-08-31 03:51:30 -04:00
topjohnwu 72cf5f3f9f Temporary disable module bootloop prevention
Some devices don't like it, need further tests before pushing to production
2018-08-31 03:23:59 -04:00
topjohnwu d8405f0d05 Make recovery installed on on system_root devices normal 2018-08-12 00:16:59 +08:00
topjohnwu afcb3d8f34 Fix XZ decompression in magiskinit 2018-08-10 15:04:32 +08:00
topjohnwu d4568aa0a7 Compress binaries and use xz-embedded in magiskinit 2018-08-10 05:57:12 +08:00
topjohnwu 5bac442b18 Reorganize sources 2018-08-10 03:49:25 +08:00
topjohnwu 6add682705 Remove high compression mode 2018-08-10 03:49:25 +08:00
topjohnwu 8b50d84a05 Hide unnecessary error log 2018-08-09 15:10:00 +08:00
topjohnwu d3858b81e2 Add new boot service: boot-complete 2018-08-09 14:52:44 +08:00
topjohnwu bdff9769be Move remount,ro back to post-fs-data mode 2018-08-09 03:57:29 +08:00
topjohnwu ada0f93686 Apply all sepolicy patches pre-init
Boot services tend to fail in the middle when the kernel loads a sepolicy live.
It seems that moving full patch (allow magisk * * *) to late_start is still not enough to fix service startup failures.
So screw it, apply all patched in magiskinit, which makes sure that all rules are only loaded in a single step.
The only down side is that some OEM with a HUGE set of secontexts (e.g. Samsung) might suffer a slightly longer boot time, which IS the reason why the rules are split to 2 parts in the first place.
2018-08-09 03:20:28 +08:00
topjohnwu c38533e0f8 Prevent problematic modules causing device stuck in bootloop
If boot failed after 2 times, it will enable core only mode (which disables all modules)
2018-08-07 04:41:48 +08:00
topjohnwu 9159f86a9e Improvements to system_root devices booting as recovery 2018-08-07 02:20:40 +08:00
topjohnwu 46aad00f16 Use buffer on stack 2018-08-03 21:30:44 +08:00
topjohnwu 252afe8932 Use mirror in post-fs-data scripts 2018-08-03 17:09:24 +08:00
topjohnwu 82e8375957 Respect filesystem type when mounting mirrors
Close #405
2018-08-03 04:45:07 +08:00
topjohnwu 169c0fe4af Stop use clashing names 2018-08-03 03:43:02 +08:00
topjohnwu cd6918e6eb Stop altering PATH to mirror 2018-08-03 03:38:36 +08:00
topjohnwu 5be035fd44 Try logging a little harder 2018-08-03 01:58:56 +08:00
topjohnwu d9564bd04c Delay full sepolicy patch loading time 2018-08-02 05:35:01 +08:00
topjohnwu 91818cfa1a Support compiling split cils via magiskpolicy CLI 2018-07-21 05:12:22 +08:00
topjohnwu 3ae959af95 Do not early mount on symlinks on half Treble devices
Fix #399
2018-07-19 17:43:37 +08:00
topjohnwu e11e88a9c5 Huawei hardcodes the slot suffix, don't append the suffix twice 2018-07-19 03:12:28 +08:00
topjohnwu d08f326990 Log fatal errors in debug mode only 2018-07-18 03:25:36 +08:00
topjohnwu adf95ce3a0 Read fstab from device tree
In previous versions, magiskinit will not early mount if /sepolicy is detected. However on OP5/5T latest betas, the devices are fully trebelized,
but for some reason the file /sepolicy still exists, making magiskinit think it is NOT a treble device and doesn't work properly.

So to properly fix this issue, I will have to use the "official" way - check fstab in device trees. Any block mentioned in the fstab in device trees
are supposed to be early mounted. Currently magiskinit will only mount system and vendor even if other partitions exists in the dtb fstab, since other
partitions are not used to construct sepolicy (currently).

These changes can also fix #373, since we dynamically detect PARTNAME from device trees.
2018-07-18 00:45:10 +08:00
topjohnwu 18d0fd9d2a MagiskInit optimizations 2018-07-17 06:18:36 +08:00
topjohnwu 2bde8a1975 EMUI's logcat will change output file's permission and break ADBD 2018-07-16 06:42:36 +08:00
topjohnwu f339a087a2 Let Magisk compile against SDK 16 2018-07-13 22:14:32 +08:00
topjohnwu 1affb91f17 Support compiling against lower SDK
Reduce even more size for static binaries
2018-07-13 05:41:29 +08:00
topjohnwu 1283167595 Maintain our own set of loop devices 2018-07-07 01:32:58 +08:00
topjohnwu 23c2e22910 Update image functions 2018-07-06 22:04:06 +08:00
topjohnwu f44b2dbd45 Rename log_monitor -> log_daemon 2018-07-06 07:57:18 +08:00
topjohnwu 46ee2c3f4e Improve handshake between the 2 daemons 2018-07-06 07:51:17 +08:00
topjohnwu 5d5ec08566 Test the log buffers before running command 2018-07-06 07:32:16 +08:00
topjohnwu ef175e3cbe Open log file in append mode 2018-07-04 23:46:40 +08:00
topjohnwu 52a2c6958b Optimize log daemon 2018-07-03 22:25:39 +08:00
topjohnwu 6c4d81b1e9 Invincible mode implemented in magisklogd 2018-07-03 01:38:19 +08:00
topjohnwu c88dc8795b Single log file 2018-07-02 22:48:26 +08:00
topjohnwu a8030c39b1 Separate logging into its own daemon 2018-07-02 22:11:28 +08:00
topjohnwu 7243b9e72f Improve log_monitor implementation 2018-07-01 18:18:12 +08:00
topjohnwu d149af9628 Fix bootloop when upgrading from older Magisk 2018-07-01 14:58:31 +08:00
topjohnwu 528634d755 Remove unused code 2018-06-27 06:04:16 +08:00
topjohnwu 7265450e2e Precise free space calculation for magisk.img
1. Introduce new applet: imgtool for better separation from the main program
2. Actually mount the image and check statvfs for free space in the image

This shall eliminate any possible module installation failure from image resizing issues.
2018-06-22 06:18:06 +08:00
npes87184 312466aaf8 Prevent setting zero over than bound
The &cmd will return a pointer which point to a pointer of cmdline.
It is a memory address which is usually 8 bytes in 64 bits machine.

However, the struct cmdline is 4 bytes. This will cause setting zero
beyond the bound.

Below is a simple example to show the differentiation:

struct cmdline {
        char skip_initramfs;
        char slot[3];
};

static void parse_cmdline(struct cmdline *cmd)
{
        printf("%lu\n", sizeof(*cmd)); /* 4 */
        printf("%lu\n", sizeof(&cmd)); /* 8 */
}

int main()
{
        struct cmdline cmd;
        parse_cmdline(&cmd);
        return 0;
}

This patch prevents this.

Signed-off-by: npes87184 <npes87184@gmail.com>
2018-06-19 14:22:11 -07:00
topjohnwu 4d5841332a Change to applet name to prevent showing magisk.bin 2018-06-17 01:47:55 +08:00
topjohnwu 9b41976252 Preserve last log 2018-06-17 01:38:58 +08:00
topjohnwu d08fd0561a Remove invincible mode 2018-06-17 01:28:29 +08:00
topjohnwu a6958ac139 Fix adbd on GSIs 2018-06-17 01:25:27 +08:00
topjohnwu d7d76f54cc Install stub APK when needed 2018-06-14 05:09:54 +08:00
topjohnwu 970a2e87b3 Bundle in stub APK into magiskinit 2018-06-14 02:54:38 +08:00