Commit Graph

202 Commits

Author SHA1 Message Date
695e7e6da0 Create product mirror if /system/product exist 2019-09-23 06:52:24 -04:00
b44f5122fd Pass int directly as pointer 2019-09-19 00:13:42 -04:00
fe644e10d0 Make sure post-fs-data is first ran
Close #1601
2019-09-17 00:21:07 -04:00
e31e687602 Allow ADB shell to remove modules and reboot 2019-09-13 03:14:21 -04:00
86bfb22d4c Override module when .replace is found 2019-09-12 16:08:30 -04:00
dd35224f92 Minor adjustments to exec_sql 2019-09-01 13:58:50 +08:00
64ebc977e9 Small magic mount adjustments 2019-08-31 21:53:47 +08:00
e89c50d934 Support /system/product wihtout /product
Fix #1676
2019-08-29 22:56:34 +08:00
736729f5ef Maintain a list of pre-init mounts
Keep track of everything to unmount
2019-07-16 23:54:52 -07:00
41045b62dc Introduce more randomness
- Use C++ random generator instead of old and broken rand()
- Randomize string length to piss off stupid detectors
2019-07-14 17:42:49 -07:00
7233285437 Use relative symbolic links 2019-07-04 17:58:46 -07:00
ff3710de66 Minor code changes across all sources 2019-06-30 19:09:31 -07:00
e8b73ba6d1 Add separate product partition support 2019-06-29 14:19:10 -07:00
1e94517a72 MagiskHide is coming back strong 2019-06-27 00:28:34 -07:00
98f60216ac Temporary disable MagiskHide by default
Latest Android Q beta does not like when zygote is ptraced on
boot. Disable it for now until further investigation.
2019-06-25 23:32:07 -07:00
e29b712108 Start Magisk in SAR 2019-06-25 23:31:59 -07:00
4cc7aced15 Add new util function 2019-06-23 03:53:41 -07:00
cfec0db947 Delay mounting sbin overlay 2019-06-22 03:14:33 -07:00
8ebd9c8927 Use original file type when creating device nodes 2019-06-10 21:41:17 -07:00
4fcdcd9a8a Detect UID from data directories 2019-06-03 23:32:49 -07:00
7918fc3528 Support building individual applets 2019-05-30 21:17:58 -07:00
76c88913f9 Ensure Magisk environment normal 2019-05-27 16:29:54 -07:00
845d1e02b0 Separate magiskinit components 2019-05-27 00:29:43 -07:00
23d3e56967 Add new util function 2019-05-25 21:42:51 -07:00
80cd85b061 Try to use broadcast for su logging and notify
In commit 8d4c407, native Magisk always launches an activity for
communicating with Magisk Manager. While this works extremely well,
since it also workaround stupid OEMs that blocks broadcasts, it has a
problem: launching an activity will claim the focus of the device,
which could be super annoying in some circumstances.

This commit adds a new feature to run a broadcast test on boot complete.
If Magisk Manager successfully receives the broadcast, it will toggle
a setting in magiskd so all future su loggings and notifies will always
use broadcasts instead of launching activities.

Fix #1412
2019-05-13 02:01:10 -07:00
415ff23be5 Fix error mounting /data partition
For devices come with two /data mount points, magisk will bind the one in tmpfs and failed to load modules since this partition is empty.

Signed-off-by: Shaka Huang <shakalaca@gmail.com>
2019-05-09 20:29:10 -07:00
61ebc335c4 Add hi6250 support
not only hi3660 and kirin970,980 need this, also kirin 659 does
2019-05-05 11:45:21 -07:00
781ec810d9 Remove unnecessary applets of MagiskInit 2019-05-01 13:55:59 -04:00
00a9f18a1e Build with -Wall 2019-04-29 21:26:43 -04:00
a2fa8d8be1 Stop fdsan complains 2019-04-29 20:04:39 -04:00
70a3c78ebb Simplify magiskinit logging 2019-04-29 19:53:22 -04:00
003e44fb84 Remove requirement to use early-init daemon
We used to construct /sbin tmpfs overlay in early-init stage after
SELinux is properly initialized. However the way it is implemented
(forking daemon from magiskinit with complicated file waiting triggers)
is extremely complicated and error prone.

This commit moves the construction of the sbin overlay to pre-init
stage. The catch is that since SELinux is not present at that point,
proper selabel has to be reconstructed afterwards. Some additional
SEPolicy rules are added to make sure init can access magisk binaries,
and the secontext relabeling task is assigned to the main Magisk daemon.
2019-04-24 00:13:48 -04:00
f2b52755d6 Track all input devices with KEY_VOLUMEUP
This should in theory should support more devices for detecting the
volume up press on boot.

Close #1346
2019-04-21 19:09:08 -04:00
f24df4f43d Don't allow cloning root nodes
The root nodes are /system and /vendor. Adding new files into these
directories, although works on some devices, mostly bootloops on many
devices out there. So don't allow it, which also makes the whole magic
mounting logic much easier and extensible.
2019-04-08 12:30:57 -04:00
dab32e1599 Use our own device nodes for mirrors 2019-04-08 01:40:04 -04:00
befe1a83b5 Use real system_root mirror 2019-04-07 14:22:45 -04:00
82ea9db9fd Don't override arguments 2019-04-06 17:19:47 -04:00
24f5bc98d8 Add boot_complete trigger back
Samsung does not like running cmd before system services are started.
Instead of failing, it will enter an infinite wait on binder.
Move APK installation to boot complete to make sure pm can be run
without blocking process.
2019-04-05 07:00:30 -04:00
86789a8694 Add logging in magiskinit 2019-04-04 00:26:16 -04:00
a385e5cd92 Use wrapper script on system with APEX
Thanks to moving libandroidicu.so to APEX runtime linker namespace,
we need a wrapper to link against libsqlite.so on Q
2019-04-03 17:25:47 -04:00
cc77a24502 Prevent accidental magiskinit execution
Close #1281
2019-04-01 17:14:18 -04:00
71a91ac7a7 Boot to recovery if volume up key is held
Forseeing the future that more and more A only system-as-root devices
would have similar bootloader behavior as the latest Samsung devices
(that is, no ramdisk will be loaded into memory when booting from
the boot partition), a solution/workaround has to be made when Magisk
is installed to the recovery partition, making custom recoveries
unable to co-exist with Magisk.

This commit allows magiskinit to read input device events from the
kernel to detect when a user holds volume key up to toggle whether
system-as-root mode is enabled. When system-as-root mode is disabled,
magiskinit will boot with ramdisk instead of cloning rootfs from system,
which in this case will boot to the recovery.
2019-04-01 03:01:05 -04:00
1b0c36dbd5 Remove outdated comments 2019-03-31 15:40:55 -04:00
c577a9525d Remove simple mount mode
This mode is proven to have no difference than normal post-fs-data
module mounting. No reason to keep this code in the sources.
2019-03-31 15:10:01 -04:00
0149b1368d Several improvements 2019-03-31 06:32:33 -04:00
cd6bcb97ef Cleanup stuffs 2019-03-31 00:48:22 -04:00
df4161ffcc Reboot to recovery when running as recovery 2019-03-30 06:49:29 -04:00
7a133eaf03 Block vaultkeeper and flash_recovery service 2019-03-30 04:13:45 -04:00
1cd45b53b1 Support recovery based Magisk
Some devices (mainly new Samsung phones we're talking here...) using
A only system-as-root refuse to load ramdisk when booted with boot
no matter what we do. With many A only system-as-root devices, even
though their boot image is kernel only, we can still be able to add
a ramdisk section into the image and force the kernel to use it as
rootfs. However the bootloader on devices like the S10 simply does
not load anything within boot image into memory other than the kernel.
This gives as the only option is to install Magisk on the recovery
partition. This commits adds proper support for these kind of scenarios.
2019-03-30 00:49:48 -04:00
8de03eef3f Allow modules to have custom uninstaller script 2019-03-23 03:50:55 -04:00