Commit Graph

537 Commits

Author SHA1 Message Date
a9ee2d7d18 Fix xperm parsing logic 2024-03-20 23:13:54 -07:00
d654b9cb97 Several code cleanups in sepolicy 2024-03-20 23:09:22 -07:00
4d2921e742 Rewrite sepolicy statement parsing in Rust 2024-03-20 10:12:23 -07:00
ecc74d45d1 Let magic mount optional 2024-03-19 23:21:41 -07:00
5de597f079 No need to unshare 2024-03-19 23:21:41 -07:00
156b0e67ca No need extra tmpfs for worker 2024-03-19 23:21:41 -07:00
10069215f4 Rename dir name 2024-03-19 23:21:41 -07:00
92b305a389 Remove unnecessary mirror for magic mount
Mirror was previously used for accessing the original file during
magic mount when we are using a tmpfs to cover the target. However,
since we introduce atomic mount, we switch all tmpfs mount in
worker and then move to the target at once. It means that we can
still access the original file when we are constructing the tmpfs
mount point. Thus we no longer need mirror.
2024-03-19 23:21:41 -07:00
d20b30c771 Update libsepol
Close #7915
2024-03-19 02:54:01 -07:00
73c3d741a7 Reorganize some code 2024-03-06 18:07:01 -08:00
991802ab82 Add no decompression flag to magiskboot split 2024-03-06 16:15:30 -08:00
825c6c4316 Reverse format template argument order 2024-03-06 01:39:16 -08:00
f00408c793 Fix zygote restart monitor 2024-03-06 01:39:16 -08:00
a6ff3672af Update crt0 2024-03-04 16:42:25 -08:00
2290ddeb89 Fix segfault when sepolicy.rule has empty line 2024-03-02 06:15:45 -08:00
74af79ad03 Update crt0 2024-03-02 05:57:48 -08:00
b6c24a3a8a No more sony init.real tricks
Co-authored-by: canyie <a1364259@163.com>
Co-authored-by: vvb2060 <vvb2060@gmail.com>
2024-02-29 23:40:00 -08:00
a8c2ae223a Avoid hexpatch /init for 2SI when possible
Previous we hexpatch /init from /system/bin/init to /data/magiskinit
to redirect the second stage init. However, some devices like sony
has /init that does not directly invoke /system/bin/init, and thus
the hexpatch fails.

In this patch, we further make use of AOSP `SwitchRoot` to help us
bind mount /data/magisk to /system/bin/init after `SwitchRoot`.

Two important assumption about 2SI are i) that the second stage init
is always /system/bin/init and ii) that the /sdcard (path after
`SwitchRoot`) is always a symlink to `/storage/self/primary`. When
these assumptions hold, during first stage init (before `SwitchRoot`)
we can bind mount magiskinit to /sdcard, and create a symlink
/storage/self/primary to /system/system/bin/init. By these steps,
during `SwitchRoot`, AOSP init will try to mount move /sdcard to
/system/sdcard. And /system/sdcard is symlink to /storage/self/primary,
it will try to mount move /sdcard to /storage/self/primary. And
/storage/self/primary in ramfs is now a symlink that points to
/system/system/bin/init, thus AOSP will try to mount move /sdcard
(which is a bind mount to magiskinit) to /system/system/bin/init.
After chroot done by AOSP init, we then have a magiskinit bind mount
on /system/bin/init, which is the second stage init.

An edge case is that some devices (like meizu) use 2SI but
does not switch root. In this case, they must already have a /sdcard
in the ramfs, thus we can check if /sdcard exists and fallback to
hexpatch.
2024-02-29 23:40:00 -08:00
24e46a5971 Build magiskboot with crt0 2024-02-29 02:36:05 -08:00
b1297c4192 Less usage of C stdio 2024-02-28 15:52:03 -08:00
9ae328fd84 Further reduce code size 2024-02-28 11:19:56 -08:00
625a1d6f44 Remove seek support from streams 2024-02-28 11:07:53 -08:00
987e5f5413 Address clippy warnings 2024-02-27 21:03:34 -08:00
715284b70d Reorganize code 2024-02-27 18:14:30 -08:00
62fc7868ac Use self implemented parse_mount_info 2024-02-27 17:03:22 -08:00
1a70796339 Replace all parse_mount_info usage with Rust 2024-02-27 03:49:17 -08:00
af6965eefa Update init logging implementation
Use less std::fs
2024-02-26 17:49:11 -08:00
8f7d2e38f7 Make crt0 an external submodule 2024-02-26 17:34:17 -08:00
be433fa667 Use Rust for formatting
The fprintf implementation included in crt0 is too rudimental
2024-02-26 00:26:23 -08:00
0ccd6e7381 Fix fread and fwrite implementation 2024-02-25 23:20:30 -08:00
907bbbda41 Remove usage of patched static lib 2024-02-25 22:11:34 -08:00
4393bc077d Implement string routines 2024-02-25 21:12:19 -08:00
365b373480 Make it easy to build without crt0 2024-02-24 22:32:22 -08:00
47e6dd286d Minor fixes 2024-02-24 22:00:09 -08:00
0dbaf52566 Make all platforms build properly 2024-02-24 05:10:54 -08:00
66f49dfab5 Remove unnecessary lock usage 2024-02-24 04:20:28 -08:00
f8967e9274 Implement strerror 2024-02-24 04:02:46 -08:00
a4f008fde5 Reorganize files 2024-02-24 03:41:22 -08:00
e9980c778b Implement stub functions 2024-02-24 03:41:03 -08:00
06b6fb0c33 Add setenv 2024-02-24 03:27:09 -08:00
38cb3d4105 Add dirent implementation 2024-02-24 03:26:53 -08:00
db99caf258 Use execve directly 2024-02-24 01:47:11 -08:00
39dbffadfe Complete stdio 2024-02-24 01:28:58 -08:00
b7505c3c9c Remove fopen usage in magiskinit 2024-02-24 00:45:07 -08:00
3185e5a7ca Introduce string/mem functions 2024-02-23 23:56:31 -08:00
e0cbe28711 Add the generic syscall function 2024-02-23 18:41:39 -08:00
66cee19cea Add printf and sscanf family 2024-02-23 17:44:12 -08:00
2ec29ade79 Add all missing syscalls 2024-02-23 14:35:12 -08:00
c865d4e187 Add memory allocator 2024-02-22 21:22:27 -08:00
a42a0a53ce Declare more symbols 2024-02-22 21:22:27 -08:00